mirror of
https://github.com/hanzoai/pack.git
synced 2026-09-30 23:43:13 +00:00
* feat: detect psycopg[binary] and skip apt packages When using psycopg2-binary or psycopg[binary], the PostgreSQL client libraries (libpq-dev, libpq5) are not needed because these variants ship with pre-compiled binaries. This change: - Adds usesBinaryPsycopg() to detect binary variants - Updates usesPostgres() to return false when binary variants are used - Skips libpq-dev (build) and libpq5 (runtime) apt package installation - Adds comprehensive unit tests for binary psycopg detection This reduces image size and build time for projects using binary variants. * test: add psycopg[binary] integration test Adds a dedicated test example for psycopg[binary] to verify that the bracket syntax for optional dependencies is correctly detected. This ensures the binary detection works for both psycopg2-binary and psycopg[binary] variants. Test coverage now includes: - psycopg2-binary (existing python-system-deps example) - psycopg[binary] (new python-psycopg-binary example) - psycopg non-binary (existing python-latest-psycopg example) - psycopg2 non-binary (existing python-django example) * test: snapshot update * test: add binary pyscogp test * test: ensure libpq is installed for pyscog operation * build: add helper for running the current dir tests * test: check to make sure the libpg library is not installed when a binary postgres connection is requested * test: update snapshot --------- Co-authored-by: Hanzo Dev <[email protected]>
26 lines
714 B
Python
26 lines
714 B
Python
import os
|
|
import psycopg
|
|
import ctypes.util
|
|
|
|
print(f"psycopg version: {psycopg.__version__}")
|
|
|
|
# Verify libpq is not installed on the system
|
|
libpq_path = ctypes.util.find_library('pq')
|
|
if libpq_path:
|
|
print(f"ERROR: Found system libpq at {libpq_path}. It should not be present.")
|
|
exit(1)
|
|
print("System libpq not found")
|
|
|
|
database_url = os.environ["DATABASE_URL"]
|
|
|
|
print("Connecting to database...")
|
|
with psycopg.connect(database_url) as conn:
|
|
print("Successfully connected to PostgreSQL!")
|
|
|
|
with conn.cursor() as cur:
|
|
cur.execute("SELECT 1 + 1 AS result;")
|
|
result = cur.fetchone()[0]
|
|
print(f"Test query result: 1 + 1 = {result}")
|
|
|
|
print("Connection closed successfully")
|