feat: add psagentai agent with deployment and configuration
Initial project setup including the main agent script, configuration files, profile JSON state, systemd service unit, startup script, deployment documentation, and Python dependencies. Includes .env, venv/, and __pycache__/ which should likely be excluded via .gitignore to avoid committing secrets and artifacts.
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
#
|
||||
# The Python Imaging Library.
|
||||
# $Id$
|
||||
#
|
||||
# XV Thumbnail file handler by Charles E. "Gene" Cash
|
||||
# (gcash@magicnet.net)
|
||||
#
|
||||
# see xvcolor.c and xvbrowse.c in the sources to John Bradley's XV,
|
||||
# available from ftp://ftp.cis.upenn.edu/pub/xv/
|
||||
#
|
||||
# history:
|
||||
# 98-08-15 cec created (b/w only)
|
||||
# 98-12-09 cec added color palette
|
||||
# 98-12-28 fl added to PIL (with only a few very minor modifications)
|
||||
#
|
||||
# To do:
|
||||
# FIXME: make save work (this requires quantization support)
|
||||
#
|
||||
from __future__ import annotations
|
||||
|
||||
from . import Image, ImageFile, ImagePalette
|
||||
from ._binary import o8
|
||||
|
||||
_MAGIC = b"P7 332"
|
||||
|
||||
# standard color palette for thumbnails (RGB332)
|
||||
PALETTE = b""
|
||||
for r in range(8):
|
||||
for g in range(8):
|
||||
for b in range(4):
|
||||
PALETTE = PALETTE + (
|
||||
o8((r * 255) // 7) + o8((g * 255) // 7) + o8((b * 255) // 3)
|
||||
)
|
||||
|
||||
|
||||
def _accept(prefix: bytes) -> bool:
|
||||
return prefix.startswith(_MAGIC)
|
||||
|
||||
|
||||
##
|
||||
# Image plugin for XV thumbnail images.
|
||||
|
||||
|
||||
class XVThumbImageFile(ImageFile.ImageFile):
|
||||
format = "XVThumb"
|
||||
format_description = "XV thumbnail image"
|
||||
|
||||
def _open(self) -> None:
|
||||
# check magic
|
||||
assert self.fp is not None
|
||||
|
||||
if not _accept(self.fp.read(6)):
|
||||
msg = "not an XV thumbnail file"
|
||||
raise SyntaxError(msg)
|
||||
|
||||
# Skip to beginning of next line
|
||||
self.fp.readline()
|
||||
|
||||
# skip info comments
|
||||
while True:
|
||||
s = self.fp.readline()
|
||||
if not s:
|
||||
msg = "Unexpected EOF reading XV thumbnail file"
|
||||
raise SyntaxError(msg)
|
||||
if s[0] != 35: # ie. when not a comment: '#'
|
||||
break
|
||||
|
||||
# parse header line (already read)
|
||||
w, h = s.strip().split(maxsplit=2)[:2]
|
||||
|
||||
self._mode = "P"
|
||||
self._size = int(w), int(h)
|
||||
|
||||
self.palette = ImagePalette.raw("RGB", PALETTE)
|
||||
|
||||
self.tile = [
|
||||
ImageFile._Tile("raw", (0, 0) + self.size, self.fp.tell(), self.mode)
|
||||
]
|
||||
|
||||
|
||||
# --------------------------------------------------------------------
|
||||
|
||||
Image.register_open(XVThumbImageFile.format, XVThumbImageFile, _accept)
|
||||
Reference in New Issue
Block a user