Skip to content

Version 0.5.7 - #3

Merged
AriasBros merged 14 commits into
mainfrom
dev
Jul 25, 2026
Merged

Version 0.5.7#3
AriasBros merged 14 commits into
mainfrom
dev

Conversation

@AriasBros

Copy link
Copy Markdown
Contributor

No description provided.

Copilot AI review requested due to automatic review settings July 25, 2026 15:51
@github-code-quality

github-code-quality Bot commented Jul 25, 2026

Copy link
Copy Markdown

Code Coverage Overview

Languages: Python

Python / code-coverage/pytest

The overall coverage in commit db2f8d6 in the dev branch is 86%. The coverage in commit 28bce5c in the main branch is 84%.

Show a code coverage summary of the most impacted files.
File main 28bce5c dev db2f8d6 +/-
orm/sqlalchemy/...c_repository.py 28% 27% -1%
orm/sqlalchemy/...uery_builder.py 45% 45% 0%
__init__.py 100% 100% 0%
container/container.py 100% 100% 0%
http/resources/collection.py 100% 100% 0%
orm/sqlalchemy/repository.py 28% 34% +6%
orm/sqlalchemy/connector.py 92% 99% +7%
orm/sqlalchemy/schema.py 63% 100% +37%
orm/sqlalchemy/model.py 59% 100% +41%
orm/__init__.py 0% 100% +100%

Updated July 25, 2026 15:52 UTC

@codecov

codecov Bot commented Jul 25, 2026

Copy link
Copy Markdown

Welcome to Codecov 🎉

Once you merge this PR into your default branch, you're all set! Codecov will compare coverage reports and display results in all future pull requests.

ℹ️ You can also turn on project coverage checks and project coverage reporting on Pull Request comment

Thanks for integrating Codecov - We've got you covered ☂️

@AriasBros
AriasBros merged commit 92c844e into main Jul 25, 2026
9 checks passed

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR bumps the framework to 0.5.7 and modernizes several public-facing APIs and test suites, notably around config contracts, the IoC container’s resolution API, and the SQLAlchemy ORM integration.

Changes:

  • Fixes the long-standing respository import typo by introducing pyrannic.contracts.config.repository and updating imports across code/tests.
  • Refactors SQLAlchemy connector/repository/query-builder APIs (including renames and filter behavior), and adds/updates unit tests for Schema/Model/QueryBuilder behavior.
  • Extends the IoC container contract/implementation with make() (alias to resolve) and supports passing positional/named parameters in resolution; adds tests for these flows.

Reviewed changes

Copilot reviewed 52 out of 54 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
tests/unit/support/facades/test_config_facade.py Fixes config repository contract import path.
tests/unit/orm/utils.py Removes old ORM test utilities.
tests/unit/orm/test_abstract_model.py Removes old AbstractModel tablename test.
tests/unit/orm/sqlalchemy/utils.py Updates SQLAlchemy model utilities and adds a migration helper.
tests/unit/orm/sqlalchemy/test_sa_schema.py Adds Schema create/drop tests (sync + async) and logging behavior test.
tests/unit/orm/sqlalchemy/test_sa_query_builder.py Updates QueryBuilder tests for connector rename and Config facade import.
tests/unit/orm/sqlalchemy/test_sa_model.py Adds SQLAlchemy Model behavior tests (tablename, PK, dirty/clean).
tests/unit/orm/sqlalchemy/conftest.py Adds repository fixture wiring DB manager + connector.
tests/unit/orm/abstract_model/test_tablename_abstract_model.py Replaces old AbstractModel tests with broader coverage (suffixes, intermediate tables).
tests/unit/http/resources/test_collection.py Updates assertions for improved ResourceCollection error messaging.
tests/unit/database/test_database_provider.py Updates connector type expectations to renamed Connector class.
tests/unit/container/container/test_resolve.py Adds resolve tests for generics and positional/named params.
tests/unit/container/container/test_make.py Adds tests for new make() alias and parameter passing.
tests/unit/container/conftest.py Adds new test-only classes for generic/parameterized resolution.
tests/unit/config/repository/test_integer.py Fixes config repository contract import path.
tests/unit/config/repository/test_float.py Fixes config repository contract import path.
tests/unit/config/repository/test_config_repository_set_method.py Fixes config repository contract import path.
tests/unit/config/repository/test_config_repository_has_method.py Fixes config repository contract import path.
tests/unit/config/repository/test_config_repository_get_method.py Fixes config repository contract import path.
tests/unit/config/repository/test_config_repository_all_method.py Fixes config repository contract import path.
tests/unit/config/repository/test_boolean.py Fixes config repository contract import path.
tests/unit/config/repository/conftest.py Fixes config repository contract import path.
tests/unit/config/provider/test_provider.py Fixes config repository contract import path.
tests/unit/bootstrap/manager/test_start_critical_services.py Fixes config repository contract import path.
tests/unit/bootstrap/manager/test_lifespan_method.py Fixes config repository contract import path + minor provider ordering.
tests/unit/bootstrap/manager/providers.py Fixes config repository contract import path.
tests/conftest.py Switches to importing ApplicationInterface from pyrannic.contracts.
pyrannic/support/facades/config.py Fixes config repository contract import path.
pyrannic/orm/sqlalchemy/schema.py Tightens typing for blueprint parameters and updates docstrings.
pyrannic/orm/sqlalchemy/repository.py Ensures all() prepares query before get().
pyrannic/orm/sqlalchemy/connector.py Renames connector classes and updates Alembic script_location resolution.
pyrannic/orm/sqlalchemy/async_repository.py Renames async repository interface and ensures all() prepares query.
pyrannic/orm/sqlalchemy/abstract_query_builder.py Refactors imports and updates filter() API/typing.
pyrannic/orm/sqlalchemy/init.py Updates ORM exports (connectors, schema, sessions).
pyrannic/orm/abstract_model.py Extends tablename generation and adds intermediate-table support hook.
pyrannic/orm/init.py Exports AbstractModel from pyrannic.orm.
pyrannic/http/resources/collection.py Improves RuntimeError message guidance for required meta.
pyrannic/database/provider.py Switches service provider singleton to renamed Connector class.
pyrannic/contracts/orm/query_builder.py Updates QueryBuilderInterface filter() overload signatures.
pyrannic/contracts/orm/async_repository.py Renames async repository interface to AsyncRepositoryInterface.
pyrannic/contracts/orm/init.py Adds convenience export for RepositoryInterface.
pyrannic/contracts/database/connector.py Removes redundant pass bodies in abstract methods.
pyrannic/contracts/database/init.py Adds convenience exports for database contracts.
pyrannic/contracts/container/container.py Adds make() and extends resolve() signature to accept args/kwargs.
pyrannic/contracts/container/init.py Adds convenience exports for container contracts.
pyrannic/contracts/config/repository.py Introduces canonical ConfigRepositoryInterface contract module.
pyrannic/contracts/init.py Updates top-level contract exports (incl. config repository path and ORM interfaces).
pyrannic/container/params.py Updates dependency wrapper to pass request= kwarg into container resolution.
pyrannic/container/container.py Adds make() alias and extends resolve/call to accept args/kwargs.
pyrannic/config/repository.py Fixes config repository contract import path.
pyrannic/config/provider.py Fixes config repository contract import path.
pyrannic/init.py Bumps version to 0.5.7 and adjusts exports/import ordering.
.gitignore Adds typings to ignore list.
.github/workflows/tests.yml Updates Codecov input name (report_type) and sets upload-code-coverage fail behavior.
Comments suppressed due to low confidence (1)

tests/unit/container/container/test_make.py:85

  • Avoid print() in unit tests; it adds noise to CI logs and isn’t needed because pytest will show assertion/exception output when the test fails.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +146 to 153
@overload
def filter(self, **kwargs: Any) -> Self:
self._prepare_query()

if isinstance(self._query, (Select, Delete)):
filters = tuple(v for v in filters if v is not None)
self._query = self._query.where(*filters)
self._query = self._query.filter_by(**kwargs)

return self
Comment on lines +142 to +148
schema = Schema(connector.engine, logger)

await schema.create(BarModel)
assert "Failed to create bars table:" in caplog.text

await schema.drop(BarModel)
assert "Failed to drop bars table:" in caplog.text
Comment on lines +73 to +75
error = str(exc_info.value)
print(error)
assert "No binding found for interface FooInterface" in error
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants