Conversation
Without needing to call "select" beforehand.
Without needing to call "select" beforehand.
Code Coverage OverviewLanguages: Python Python / code-coverage/pytestThe overall coverage in commit db2f8d6 in the Show a code coverage summary of the most impacted files.
Updated |
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 ☂️ |
There was a problem hiding this comment.
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
respositoryimport typo by introducingpyrannic.contracts.config.repositoryand 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 toresolve) 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.
| @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 |
| 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 |
| error = str(exc_info.value) | ||
| print(error) | ||
| assert "No binding found for interface FooInterface" in error |
No description provided.