Python libraries
FastAPI, PostgreSQL and async building blocks, and the Authly identity service
5 repositories
Quietasync-task-workerPython · Async Task Worker with Cache | Release v0.4.4 | GitHub | MIT | 1 open issues | 9 open pull requests | 3 findings | Health 65Watch | |
|---|---|---|---|---|---|---|---|---|
QuietauthlyPython · Authorization & User Token Handling Layer for You | 0.5.7 | PyPI | MIT | 1 open issues | 19 open pull requests | 3 findings | Health 65Watch | |
Recentfastapi-testingPython · FastAPI Testing | 0.3.3 | PyPI | MIT | 1 open issues | 5 open pull requests | 2 findings | Health 75Watch | |
Quietpsycopg-toolkitPython · Psycopg Database Library | 0.3.1 | PyPI | MIT | 1 open issues | 3 open pull requests | 3 findings | Health 65Watch | |
Quietscript-utilsVarious Utility Scripts | none | – | APL2 | 0 open issues | 0 open pull requests | 1 finding | Health 90Good |
Health
Health 71Watch5 repositories weighed: 0 at attention, 4 to watch
- Unreleased, medium, costs 20 points: authly: Unreleased changes since 0.5.7, released 15 months ago
- Unreleased, medium, costs 20 points: fastapi-testing: Unreleased changes since 0.3.3, released 4 months ago
- Quiet, low, costs 10 points: authly: No change by a person for 12 months
- Unreleased, medium, costs 20 points: async-task-worker: Unreleased changes since v0.4.4, released 17 months ago
- Unreleased, medium, costs 20 points: psycopg-toolkit: Unreleased changes since 0.3.1, released 12 months ago
- Old updates, low, costs 5 points: authly: 9 dependency updates open for more than 30 days
- Quiet, low, costs 10 points: async-task-worker: No change by a person for 14 months
- Old updates, low, costs 5 points: fastapi-testing: 1 dependency update open for more than 30 days
- Quiet, low, costs 10 points: psycopg-toolkit: No change by a person for 12 months
- Quiet, low, costs 10 points: script-utils: No change for 7 months
- Old updates, low, costs 5 points: async-task-worker: 4 dependency updates open for more than 30 days
- Old updates, low, costs 5 points: psycopg-toolkit: 3 dependency updates open for more than 30 days
Pull requests
33 waiting for a reviewchore(deps): Lock file maintenance
Needs review, waits for a reviewasync-task-worker #5renovate[bot] (automation)
chore(deps): Lock file maintenance
Needs review, waits for a reviewpsycopg-toolkit #12renovate[bot] (automation)
chore(deps): update pytest to 9.0.3 [SECURITY]
Needs review, waits for a reviewpsycopg-toolkit #16renovate[bot] (automation)
chore(deps): update cryptography to 50.0.0 [SECURITY]
Needs review, waits for a reviewauthly #37renovate[bot] (automation)
chore(deps): update python-multipart to 0.0.31 [SECURITY]
Needs review, waits for a reviewauthly #36renovate[bot] (automation)
Issues
4 needing triageNeeds triage, waits for a maintainer to look at itpsycopg-toolkit #3renovate[bot] (automation)idle
Needs triage, waits for a maintainer to look at itfastapi-testing #1renovate[bot] (automation)idle
Needs triage, waits for a maintainer to look at itauthly #1renovate[bot] (automation)idle
Needs triage, waits for a maintainer to look at itasync-task-worker #1renovate[bot] (automation)idle
Releases
Up to date- descoped/fastapi-testingv0.3.3Release v0.3.3 by oranheim
Release notes
Maintenance & Dependency Release
The library API is unchanged from v0.3.2 —
src/fastapi_testingis byte-identical. This release modernizes dependencies (security fixes + latest compatible versions) and CI tooling.Dependencies
- Security updates:
starlette,pygments, andpytestmoved to patched releases. - Minimums raised to the latest releases that still support Python ≥ 3.11:
- Runtime:
fastapi>=0.137.2,starlette>=1.3.1,uvicorn>=0.49.0,websockets>=16.0 - Dev/build:
pytest>=9.1.0,pytest-asyncio>=1.4.0,pytest-cov>=7.1.0,pydantic>=2.13.4,ruff>=0.15.17,hatchling>=1.30.1
- Runtime:
Note for consumers: installing
fastapi-testing0.3.3 now pulls in the newer FastAPI / Starlette / Uvicorn minimums listed above.CI / Tooling
- GitHub Actions upgraded to current majors:
checkoutv7,setup-pythonv6,setup-uvv8.2.0,codecov-actionv7,attest-build-provenancev4. - Fixed the pinned uv version in CI (
0.5.11→0.11.13) so it can parse the currentrevision = 3lockfile. - "Build and Test" now runs on pull requests.
Compatibility
- Python 3.11–3.13. No public API changes; no migration required.
Full Changelog: https://github.com/descoped/fastapi-testing/compare/v0.3.2...v0.3.3
- Security updates:
- descoped/psycopg-toolkitv0.3.1Release v0.3.1 by oranheim
Release notes
🎯 Simplified pgvector Support
This release simplifies pgvector integration by removing the pgvector-python library dependency and using native JSON parsing instead. This results in zero external dependencies, better Pydantic compatibility, and simpler code.
✨ What's Changed
Removed Dependencies
- Removed pgvector-python dependency - No longer required for vector support
- Removed numpy dependency - Vector data returned as native Python
list[float]
Simplified Implementation
- PostgreSQL returns vectors as strings like
'[0.1,0.2,0.3]' - Automatically parsed to
list[float]using built-in JSON parsing - Removed 28 lines of adapter registration complexity
- No async adapter registration needed
Performance
- Negligible overhead: <0.1ms per vector for JSON parsing
- For 1000 vectors: ~10-100ms difference vs adapter (1-10% overhead)
- Completely acceptable for typical LLM embedding use cases
🚀 Key Benefits
✅ Zero External Dependencies - No pgvector-python, no numpy required ✅ Simpler Code - Removed async adapter registration logic ✅ Perfect Pydantic Compatibility - Returns
list[float], notnumpy.ndarray✅ No Breaking Changes - Same public API, drop-in upgrade ✅ All Tests Passing - 227 tests with zero regressions📦 Installation
pip install psycopg-toolkit==0.3.1💻 Usage Example
from pydantic import BaseModel from psycopg_toolkit import BaseRepository from uuid import UUID class DocumentEmbedding(BaseModel): id: UUID document_id: UUID embedding: list[float] # Auto-detected as vector field metadata: dict[str, Any] | None = None class EmbeddingRepository(BaseRepository[DocumentEmbedding, UUID]): def __init__(self, db_connection): super().__init__( db_connection=db_connection, table_name="embeddings", model_class=DocumentEmbedding, primary_key="id", auto_detect_vector=True, # Automatically detects list[float] ) # Usage - works seamlessly with PostgreSQL pgvector extension embedding_vector = [0.1] * 384 # 384-dimensional vector doc = DocumentEmbedding( id=uuid4(), document_id=uuid4(), embedding=embedding_vector, metadata={"model": "all-MiniLM-L6-v2"} ) created = await repo.create(doc) assert isinstance(created.embedding, list) # Returns list[float]!🔧 Technical Details
Before (v0.3.0):
- Required
pgvector-python>=0.4.1dependency - Used
register_vector_async()adapter registration - Returned vectors as
numpy.ndarray - Required numpy as transitive dependency
After (v0.3.1):
- No external dependencies needed
- Simple JSON parsing with
JSONHandler.deserialize() - Returns vectors as native Python
list[float] - Direct Pydantic compatibility
📝 Full Changelog
Commits:
82ad82a- refactor: Remove pgvector-python dependency, use JSON parsing for vectors- Updated documentation in
.claude/CLAUDE.md - Removed adapter registration from
BaseRepository - Added vector field parsing in
_postprocess_data()
Files Changed: 4 files (+37, -152 lines)
pyproject.toml- Removed pgvector dependencysrc/psycopg_toolkit/repositories/base.py- Simplified vector handling.claude/CLAUDE.md- Updated documentationuv.lock- Dependency updates
🧪 Testing
All 227 tests passing:
- 12 vector field unit tests
- 4 pgvector integration tests
- 211 other tests (JSONB, arrays, dates, transactions, etc.)
- Zero regressions
⚠️ Breaking Changes
None - This is a drop-in replacement for v0.3.0. The public API remains identical.
Full Changelog: https://github.com/descoped/psycopg-toolkit/compare/v0.3.0...v0.3.1
- descoped/authlyv0.5.7Release v0.5.7 by oranheim
Release notes
🎯 Highlights
This release focuses on improving the standalone Docker container experience with enhanced admin account management, better modularization, updated dependencies, and optimized CI/CD workflows.
✨ New Features
Admin Account Management
- New unlock-admin-account CLI command - Directly unlock the admin account via database connection when locked out
- Added convenient wrapper scripts for better container CLI experience
- Improved admin account security with better rate limiting defaults (100 requests/60 seconds)
Standalone Container Improvements
- Refactored Dockerfile.standalone for better maintainability with modular setup scripts
- Added version identifier to /health endpoint response for easier deployment tracking
- Optimized container build process with better caching and reduced image size
- Consolidated to single optimized Dockerfile (removed minimal variant)
- Database connections now use dedicated authly user instead of postgres superuser
🔧 Infrastructure & DevOps
CI/CD Improvements
- Optimized Docker builds with PostgreSQL builder caching strategy
- Separated postgres-builder stage for better caching
- Multi-stage caching reduces build times significantly
- Cached builder images stored in GitHub Container Registry
- Python 3.13 adoption in CI/CD pipelines
- Updated conformance tests to use Python 3.13
- Modernized test runner configurations
- Enhanced release workflow
- Split Docker builds into production and standalone variants
- Improved deployment summaries with clearer instructions
- Better image tagging and metadata handling
Build System
- Modularized container setup into separate scripts:
configure-all.sh- Main configuration orchestratorsetup-environment.sh- Environment variables setupsetup-postgres.sh- PostgreSQL configurationsetup-python.sh- Python environment setupsetup-s6-services.sh- S6 supervision configurationsetup-wrappers.sh- CLI wrapper scripts
Testing
- Added PostgreSQL builder cache testing script
- Enhanced health check endpoint with version information
- Removed "90% Target" from OIDC conformance tests (now achieving 100% compliance)
📦 Dependencies
- Python: Updated to 3.13.6
- Docker base images: Updated to latest versions
- UV lock file: Refreshed with latest compatible dependencies
📚 Documentation
- Archived completed AI assistant instructions
- Updated Gemini project memory
- Enhanced Docker standalone documentation
- Added comprehensive implementation notes for Docker improvements
🔄 Changes Summary
- 11 commits since v0.5.6
- 34 files changed: 1,408 insertions(+), 635 deletions(-)
- Major refactoring of standalone Docker implementation
- Improved developer experience with better CLI tools
- Optimized CI/CD pipeline with better caching strategies
New Admin Unlock Feature
If the admin account gets locked due to failed login attempts:
# Direct database unlock ./scripts/unlock-admin-account.sh # Or within container docker exec authly-standalone authly-unlock-admin📝 Notes
- The minimal Dockerfile variant has been removed in favor of a single optimized build
- Rate limiting defaults have been adjusted to 100 requests per 60 seconds for better security
- The health endpoint now returns version information for easier deployment verification
- CI/CD builds now leverage multi-stage caching for faster deployments
Full Changelog: https://github.com/descoped/authly/compare/v0.5.6...v0.5.7
- descoped/async-task-workerv0.4.4Release v0.4.4 by oranheim
Release notes
Release Notes v0.4.4
🚀 New Features
Cache Metadata Tracking
- Added
from_cachemetadata field to all task responses and status objects - Tasks now indicate whether their results were served from cache (
true) or freshly computed (false) - Available in all API endpoints:
/api/v1/tasks,/api/v1/tasks/{task_id}, and task listings
Enhanced Completion Callbacks
- Updated completion callback signature to include cache metadata:
(task_id, result, from_cache) - Backward compatibility maintained - existing callbacks without the
from_cacheparameter continue to work - Cache hits and fresh computations are now distinguishable in callback handlers
🔧 Improvements
API Enhancements
- All task response models now include the
from_cacheboolean field - Task serialization (
.to_dict()) includes cache metadata - Consistent cache metadata across all task management operations
Testing
- Added comprehensive test coverage for cache metadata functionality
- Tests verify cache metadata in both direct task execution and API responses
- Ensures cache metadata is properly serialized and deserialized
📦 Dependencies
- Updated redis:
6.1.0→6.2.0
🔄 Breaking Changes
None - This release maintains full backward compatibility with existing code.
💡 Usage Examples
Checking if a result came from cache:
task_info = await worker.get_task_info(task_id) if task_info.from_cache: print("Result was served from cache") else: print("Result was freshly computed")Using the enhanced completion callback:
async def on_task_complete(task_id: str, result: Any, from_cache: bool): if from_cache: logger.info(f"Cache hit for task {task_id}") else: logger.info(f"Fresh computation for task {task_id}") # Old callbacks still work: async def legacy_callback(task_id: str, result: Any): logger.info(f"Task {task_id} completed")API Response Example:
{ "id": "task-123", "status": "completed", "result": {"value": "computed_result"}, "from_cache": true, "progress": 1.0, "metadata": {} }This release enhances observability and debugging capabilities while maintaining full backward compatibility with existing applications.
- Added
Latest commits
Up to datechore(deps): update astral-sh/setup-uv action to v10.3.3 (#19)5 additions and 5 deletions in 2 files
descoped/async-task-workerrenovate[bot] c223ed2
chore(deps): update astral-sh/setup-uv action to v10.3.3 (#52)5 additions and 5 deletions in 2 files
descoped/authlyrenovate[bot] 0af0945
chore(deps): update astral-sh/setup-uv action to v10.3.3 (#20)5 additions and 5 deletions in 2 files
descoped/fastapi-testingrenovate[bot] 162ece7
chore(deps): update astral-sh/setup-uv action to v10.3.2 (#28)6 additions and 6 deletions in 3 files
descoped/psycopg-toolkitrenovate[bot] 82c786c
chore(deps): update astral-sh/setup-uv action to v10.3.2 (#18)5 additions and 5 deletions in 2 files
descoped/async-task-workerrenovate[bot] 37cf758
chore(deps): update astral-sh/setup-uv action to v10.3.2 (#51)5 additions and 5 deletions in 2 files
descoped/authlyrenovate[bot] 614178b
chore(deps): update astral-sh/setup-uv action to v10.3.2 (#19)5 additions and 5 deletions in 2 files
descoped/fastapi-testingrenovate[bot] a9ba3c7
chore(deps): update astral-sh/setup-uv action to v10.3.0 (#18)5 additions and 5 deletions in 2 files
descoped/fastapi-testingrenovate[bot] c5f5313
chore(deps): update github-actions (#50)6 additions and 6 deletions in 3 files
descoped/authlyrenovate[bot] d94bfd1
chore(deps): update github-actions (#27)7 additions and 7 deletions in 3 files
descoped/psycopg-toolkitrenovate[bot] 01b8c39