pico-sqlalchemy 0.2.1.dev0__tar.gz → 0.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pico_sqlalchemy-0.3.0/.github/ISSUE_TEMPLATE/bug_report.yml +32 -0
- pico_sqlalchemy-0.3.0/.github/ISSUE_TEMPLATE/feature_request.yml +18 -0
- pico_sqlalchemy-0.3.0/.github/PULL_REQUEST_TEMPLATE.md +10 -0
- pico_sqlalchemy-0.3.0/.github/dependabot.yml +11 -0
- {pico_sqlalchemy-0.2.1.dev0 → pico_sqlalchemy-0.3.0}/.github/workflows/ci.yml +24 -3
- pico_sqlalchemy-0.3.0/.github/workflows/codeql.yml +28 -0
- {pico_sqlalchemy-0.2.1.dev0 → pico_sqlalchemy-0.3.0}/.github/workflows/docs.yml +5 -5
- {pico_sqlalchemy-0.2.1.dev0 → pico_sqlalchemy-0.3.0}/.github/workflows/publish-to-pypi.yml +3 -3
- {pico_sqlalchemy-0.2.1.dev0 → pico_sqlalchemy-0.3.0}/.github/workflows/sync-keywords.yml +2 -2
- {pico_sqlalchemy-0.2.1.dev0/docs → pico_sqlalchemy-0.3.0}/CHANGELOG.md +7 -0
- {pico_sqlalchemy-0.2.1.dev0 → pico_sqlalchemy-0.3.0}/CLAUDE.md +1 -1
- pico_sqlalchemy-0.3.0/CODE_OF_CONDUCT.md +31 -0
- pico_sqlalchemy-0.3.0/CONTRIBUTING.md +34 -0
- {pico_sqlalchemy-0.2.1.dev0 → pico_sqlalchemy-0.3.0}/PKG-INFO +19 -8
- {pico_sqlalchemy-0.2.1.dev0 → pico_sqlalchemy-0.3.0}/README.md +14 -7
- pico_sqlalchemy-0.3.0/SECURITY.md +23 -0
- {pico_sqlalchemy-0.2.1.dev0 → pico_sqlalchemy-0.3.0/docs}/CHANGELOG.md +7 -0
- pico_sqlalchemy-0.3.0/docs/architecture.md +464 -0
- {pico_sqlalchemy-0.2.1.dev0 → pico_sqlalchemy-0.3.0}/docs/development/project-tooling.md +3 -3
- pico_sqlalchemy-0.3.0/docs/faq.md +406 -0
- pico_sqlalchemy-0.3.0/docs/hooks.py +8 -0
- pico_sqlalchemy-0.3.0/docs/how-to/alembic.md +153 -0
- pico_sqlalchemy-0.3.0/docs/how-to/multiple-databases.md +217 -0
- pico_sqlalchemy-0.3.0/docs/how-to/testing.md +284 -0
- pico_sqlalchemy-0.3.0/docs/migration.md +198 -0
- {pico_sqlalchemy-0.2.1.dev0 → pico_sqlalchemy-0.3.0}/docs/overview.md +1 -1
- {pico_sqlalchemy-0.2.1.dev0 → pico_sqlalchemy-0.3.0}/docs/quickstart.md +1 -1
- pico_sqlalchemy-0.3.0/docs/reference/configuration.md +139 -0
- {pico_sqlalchemy-0.2.1.dev0 → pico_sqlalchemy-0.3.0}/docs/reference/declarative-base.md +6 -1
- {pico_sqlalchemy-0.2.1.dev0 → pico_sqlalchemy-0.3.0}/docs/reference/repository.md +2 -183
- {pico_sqlalchemy-0.2.1.dev0 → pico_sqlalchemy-0.3.0}/docs/reference/transactions.md +6 -0
- {pico_sqlalchemy-0.2.1.dev0 → pico_sqlalchemy-0.3.0}/docs/requirements.txt +1 -0
- pico_sqlalchemy-0.3.0/docs/skills.md +59 -0
- pico_sqlalchemy-0.3.0/examples/crud-async/README.md +25 -0
- pico_sqlalchemy-0.3.0/examples/crud-async/app/__init__.py +0 -0
- pico_sqlalchemy-0.3.0/examples/crud-async/app/main.py +53 -0
- pico_sqlalchemy-0.3.0/examples/crud-async/app/models.py +12 -0
- pico_sqlalchemy-0.3.0/examples/crud-async/app/repositories.py +42 -0
- pico_sqlalchemy-0.3.0/examples/crud-async/app/services.py +26 -0
- pico_sqlalchemy-0.3.0/examples/crud-async/config.yml +3 -0
- pico_sqlalchemy-0.3.0/examples/crud-async/requirements.txt +3 -0
- {pico_sqlalchemy-0.2.1.dev0 → pico_sqlalchemy-0.3.0}/mkdocs.yml +14 -2
- {pico_sqlalchemy-0.2.1.dev0 → pico_sqlalchemy-0.3.0}/pyproject.toml +27 -1
- pico_sqlalchemy-0.3.0/src/pico_sqlalchemy/__init__.py +50 -0
- pico_sqlalchemy-0.3.0/src/pico_sqlalchemy/_version.py +1 -0
- pico_sqlalchemy-0.3.0/src/pico_sqlalchemy/base.py +38 -0
- pico_sqlalchemy-0.3.0/src/pico_sqlalchemy/config.py +91 -0
- pico_sqlalchemy-0.3.0/src/pico_sqlalchemy/decorators.py +275 -0
- pico_sqlalchemy-0.3.0/src/pico_sqlalchemy/factory.py +93 -0
- {pico_sqlalchemy-0.2.1.dev0 → pico_sqlalchemy-0.3.0}/src/pico_sqlalchemy/interceptor.py +53 -3
- pico_sqlalchemy-0.3.0/src/pico_sqlalchemy/paging.py +115 -0
- pico_sqlalchemy-0.3.0/src/pico_sqlalchemy/py.typed +0 -0
- pico_sqlalchemy-0.3.0/src/pico_sqlalchemy/repository_interceptor.py +358 -0
- pico_sqlalchemy-0.3.0/src/pico_sqlalchemy/session.py +403 -0
- {pico_sqlalchemy-0.2.1.dev0 → pico_sqlalchemy-0.3.0}/src/pico_sqlalchemy.egg-info/PKG-INFO +19 -8
- {pico_sqlalchemy-0.2.1.dev0 → pico_sqlalchemy-0.3.0}/src/pico_sqlalchemy.egg-info/SOURCES.txt +24 -1
- pico_sqlalchemy-0.3.0/tests/conftest.py +46 -0
- pico_sqlalchemy-0.3.0/tests/test_coverage_boost_v2.py +276 -0
- {pico_sqlalchemy-0.2.1.dev0 → pico_sqlalchemy-0.3.0}/tests/test_interceptor.py +5 -21
- {pico_sqlalchemy-0.2.1.dev0 → pico_sqlalchemy-0.3.0}/tests/test_ioc_integration.py +10 -26
- {pico_sqlalchemy-0.2.1.dev0 → pico_sqlalchemy-0.3.0}/tests/test_pagination_sort.py +18 -40
- {pico_sqlalchemy-0.2.1.dev0 → pico_sqlalchemy-0.3.0}/tests/test_repository_interceptor_coverage.py +30 -41
- {pico_sqlalchemy-0.2.1.dev0 → pico_sqlalchemy-0.3.0}/tests/test_repository_query.py +12 -35
- {pico_sqlalchemy-0.2.1.dev0 → pico_sqlalchemy-0.3.0}/tests/test_session_propagation.py +5 -16
- {pico_sqlalchemy-0.2.1.dev0 → pico_sqlalchemy-0.3.0}/tests/test_transaction_manager.py +4 -6
- pico_sqlalchemy-0.2.1.dev0/docs/architecture.md +0 -232
- pico_sqlalchemy-0.2.1.dev0/docs/faq.md +0 -136
- pico_sqlalchemy-0.2.1.dev0/docs/reference/configuration.md +0 -106
- pico_sqlalchemy-0.2.1.dev0/docs/skills.md +0 -117
- pico_sqlalchemy-0.2.1.dev0/manage.sh +0 -65
- pico_sqlalchemy-0.2.1.dev0/src/pico_sqlalchemy/__init__.py +0 -27
- pico_sqlalchemy-0.2.1.dev0/src/pico_sqlalchemy/_version.py +0 -1
- pico_sqlalchemy-0.2.1.dev0/src/pico_sqlalchemy/base.py +0 -8
- pico_sqlalchemy-0.2.1.dev0/src/pico_sqlalchemy/config.py +0 -22
- pico_sqlalchemy-0.2.1.dev0/src/pico_sqlalchemy/decorators.py +0 -111
- pico_sqlalchemy-0.2.1.dev0/src/pico_sqlalchemy/factory.py +0 -41
- pico_sqlalchemy-0.2.1.dev0/src/pico_sqlalchemy/paging.py +0 -50
- pico_sqlalchemy-0.2.1.dev0/src/pico_sqlalchemy/repository_interceptor.py +0 -184
- pico_sqlalchemy-0.2.1.dev0/src/pico_sqlalchemy/session.py +0 -212
- {pico_sqlalchemy-0.2.1.dev0 → pico_sqlalchemy-0.3.0}/.coveragerc +0 -0
- {pico_sqlalchemy-0.2.1.dev0 → pico_sqlalchemy-0.3.0}/AGENTS.md +0 -0
- {pico_sqlalchemy-0.2.1.dev0 → pico_sqlalchemy-0.3.0}/LICENSE +0 -0
- {pico_sqlalchemy-0.2.1.dev0 → pico_sqlalchemy-0.3.0}/MANIFEST.in +0 -0
- {pico_sqlalchemy-0.2.1.dev0 → pico_sqlalchemy-0.3.0}/docs/index.md +0 -0
- {pico_sqlalchemy-0.2.1.dev0 → pico_sqlalchemy-0.3.0}/docs/javascripts/extra.js +0 -0
- {pico_sqlalchemy-0.2.1.dev0 → pico_sqlalchemy-0.3.0}/docs/stylesheets/extra.css +0 -0
- {pico_sqlalchemy-0.2.1.dev0 → pico_sqlalchemy-0.3.0}/setup.cfg +0 -0
- {pico_sqlalchemy-0.2.1.dev0 → pico_sqlalchemy-0.3.0}/src/pico_sqlalchemy.egg-info/dependency_links.txt +0 -0
- {pico_sqlalchemy-0.2.1.dev0 → pico_sqlalchemy-0.3.0}/src/pico_sqlalchemy.egg-info/entry_points.txt +0 -0
- {pico_sqlalchemy-0.2.1.dev0 → pico_sqlalchemy-0.3.0}/src/pico_sqlalchemy.egg-info/requires.txt +0 -0
- {pico_sqlalchemy-0.2.1.dev0 → pico_sqlalchemy-0.3.0}/src/pico_sqlalchemy.egg-info/top_level.txt +0 -0
- {pico_sqlalchemy-0.2.1.dev0 → pico_sqlalchemy-0.3.0}/tox.ini +0 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
name: Bug Report
|
|
2
|
+
description: Report a bug in pico-sqlalchemy
|
|
3
|
+
labels: ["bug"]
|
|
4
|
+
body:
|
|
5
|
+
- type: textarea
|
|
6
|
+
id: description
|
|
7
|
+
attributes:
|
|
8
|
+
label: Description
|
|
9
|
+
description: What happened?
|
|
10
|
+
validations:
|
|
11
|
+
required: true
|
|
12
|
+
- type: textarea
|
|
13
|
+
id: reproduction
|
|
14
|
+
attributes:
|
|
15
|
+
label: Steps to Reproduce
|
|
16
|
+
description: Minimal code or steps to reproduce the issue.
|
|
17
|
+
validations:
|
|
18
|
+
required: true
|
|
19
|
+
- type: input
|
|
20
|
+
id: version
|
|
21
|
+
attributes:
|
|
22
|
+
label: pico-sqlalchemy version
|
|
23
|
+
placeholder: "0.2.0"
|
|
24
|
+
validations:
|
|
25
|
+
required: true
|
|
26
|
+
- type: input
|
|
27
|
+
id: python-version
|
|
28
|
+
attributes:
|
|
29
|
+
label: Python version
|
|
30
|
+
placeholder: "3.11"
|
|
31
|
+
validations:
|
|
32
|
+
required: true
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
name: Feature Request
|
|
2
|
+
description: Suggest an enhancement for pico-sqlalchemy
|
|
3
|
+
labels: ["enhancement"]
|
|
4
|
+
body:
|
|
5
|
+
- type: textarea
|
|
6
|
+
id: problem
|
|
7
|
+
attributes:
|
|
8
|
+
label: Problem
|
|
9
|
+
description: What problem does this solve?
|
|
10
|
+
validations:
|
|
11
|
+
required: true
|
|
12
|
+
- type: textarea
|
|
13
|
+
id: solution
|
|
14
|
+
attributes:
|
|
15
|
+
label: Proposed Solution
|
|
16
|
+
description: How should it work?
|
|
17
|
+
validations:
|
|
18
|
+
required: true
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
## Summary
|
|
2
|
+
|
|
3
|
+
<!-- Brief description of the changes -->
|
|
4
|
+
|
|
5
|
+
## Checklist
|
|
6
|
+
|
|
7
|
+
- [ ] Tests pass (`pytest tests/ -v`)
|
|
8
|
+
- [ ] Code formatted (`ruff format src/ tests/`)
|
|
9
|
+
- [ ] Lint clean (`ruff check src/ tests/`)
|
|
10
|
+
- [ ] CHANGELOG.md updated (if user-facing change)
|
|
@@ -3,8 +3,23 @@ name: CI & Coverage
|
|
|
3
3
|
on:
|
|
4
4
|
push:
|
|
5
5
|
branches: [ main ]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ main ]
|
|
6
8
|
|
|
7
9
|
jobs:
|
|
10
|
+
lint:
|
|
11
|
+
name: Lint & Format
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
steps:
|
|
14
|
+
- uses: actions/checkout@v6
|
|
15
|
+
- uses: actions/setup-python@v6
|
|
16
|
+
with:
|
|
17
|
+
python-version: '3.11'
|
|
18
|
+
cache: pip
|
|
19
|
+
- run: pip install ruff
|
|
20
|
+
- run: ruff check src/ tests/
|
|
21
|
+
- run: ruff format --check src/ tests/
|
|
22
|
+
|
|
8
23
|
tests:
|
|
9
24
|
name: Tests (Python ${{ matrix.python-version }})
|
|
10
25
|
runs-on: ubuntu-latest
|
|
@@ -15,12 +30,12 @@ jobs:
|
|
|
15
30
|
|
|
16
31
|
steps:
|
|
17
32
|
- name: Checkout
|
|
18
|
-
uses: actions/checkout@
|
|
33
|
+
uses: actions/checkout@v6
|
|
19
34
|
with:
|
|
20
35
|
fetch-depth: 0
|
|
21
36
|
|
|
22
37
|
- name: Set up Python ${{ matrix.python-version }}
|
|
23
|
-
uses: actions/setup-python@
|
|
38
|
+
uses: actions/setup-python@v6
|
|
24
39
|
with:
|
|
25
40
|
python-version: ${{ matrix.python-version }}
|
|
26
41
|
cache: pip
|
|
@@ -30,6 +45,12 @@ jobs:
|
|
|
30
45
|
python -m pip install --upgrade pip
|
|
31
46
|
pip install tox
|
|
32
47
|
|
|
48
|
+
- name: Cache tox environments
|
|
49
|
+
uses: actions/cache@v5
|
|
50
|
+
with:
|
|
51
|
+
path: .tox
|
|
52
|
+
key: tox-${{ matrix.python-version }}-${{ hashFiles('pyproject.toml', 'tox.ini') }}
|
|
53
|
+
|
|
33
54
|
- name: Install build dependencies
|
|
34
55
|
run: |
|
|
35
56
|
sudo apt-get update
|
|
@@ -58,7 +79,7 @@ jobs:
|
|
|
58
79
|
needs: tests
|
|
59
80
|
steps:
|
|
60
81
|
- name: Checkout (for repo context)
|
|
61
|
-
uses: actions/checkout@
|
|
82
|
+
uses: actions/checkout@v6
|
|
62
83
|
|
|
63
84
|
- name: Download all coverage artifacts
|
|
64
85
|
uses: actions/download-artifact@v4
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
name: CodeQL
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ main ]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ main ]
|
|
8
|
+
schedule:
|
|
9
|
+
- cron: '0 6 * * 1'
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
analyze:
|
|
13
|
+
name: Analyze (Python)
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
permissions:
|
|
16
|
+
security-events: write
|
|
17
|
+
contents: read
|
|
18
|
+
|
|
19
|
+
steps:
|
|
20
|
+
- uses: actions/checkout@v6
|
|
21
|
+
|
|
22
|
+
- name: Initialize CodeQL
|
|
23
|
+
uses: github/codeql-action/init@v4
|
|
24
|
+
with:
|
|
25
|
+
languages: python
|
|
26
|
+
|
|
27
|
+
- name: Perform CodeQL Analysis
|
|
28
|
+
uses: github/codeql-action/analyze@v4
|
|
@@ -29,11 +29,11 @@ jobs:
|
|
|
29
29
|
if: github.event_name == 'pull_request'
|
|
30
30
|
runs-on: ubuntu-latest
|
|
31
31
|
steps:
|
|
32
|
-
- uses: actions/checkout@
|
|
32
|
+
- uses: actions/checkout@v6
|
|
33
33
|
with:
|
|
34
34
|
fetch-depth: 0
|
|
35
35
|
|
|
36
|
-
- uses: actions/setup-python@
|
|
36
|
+
- uses: actions/setup-python@v6
|
|
37
37
|
with:
|
|
38
38
|
python-version: '3.11'
|
|
39
39
|
cache: 'pip'
|
|
@@ -51,7 +51,7 @@ jobs:
|
|
|
51
51
|
pip install linkchecker
|
|
52
52
|
python -m http.server --directory site 8000 &
|
|
53
53
|
sleep 3
|
|
54
|
-
linkchecker http://127.0.0.1:8000 --check-extern
|
|
54
|
+
linkchecker http://127.0.0.1:8000 --check-extern
|
|
55
55
|
|
|
56
56
|
deploy:
|
|
57
57
|
if: github.event_name != 'pull_request'
|
|
@@ -61,11 +61,11 @@ jobs:
|
|
|
61
61
|
url: ${{ steps.deployment.outputs.page_url }}
|
|
62
62
|
|
|
63
63
|
steps:
|
|
64
|
-
- uses: actions/checkout@
|
|
64
|
+
- uses: actions/checkout@v6
|
|
65
65
|
with:
|
|
66
66
|
fetch-depth: 0
|
|
67
67
|
|
|
68
|
-
- uses: actions/setup-python@
|
|
68
|
+
- uses: actions/setup-python@v6
|
|
69
69
|
with:
|
|
70
70
|
python-version: '3.11'
|
|
71
71
|
cache: 'pip'
|
|
@@ -12,12 +12,12 @@ jobs:
|
|
|
12
12
|
contents: read
|
|
13
13
|
|
|
14
14
|
steps:
|
|
15
|
-
- uses: actions/checkout@
|
|
15
|
+
- uses: actions/checkout@v6
|
|
16
16
|
with:
|
|
17
17
|
fetch-depth: 0
|
|
18
18
|
|
|
19
19
|
- name: Set up Python
|
|
20
|
-
uses: actions/setup-python@
|
|
20
|
+
uses: actions/setup-python@v6
|
|
21
21
|
with:
|
|
22
22
|
python-version: '3.x'
|
|
23
23
|
|
|
@@ -32,5 +32,5 @@ jobs:
|
|
|
32
32
|
with:
|
|
33
33
|
skip-existing: true
|
|
34
34
|
verify-metadata: true
|
|
35
|
-
attestations:
|
|
35
|
+
attestations: true
|
|
36
36
|
|
|
@@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.h
|
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
+
## [0.3.0] - 2026-02-20
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
- **Breaking:** Renamed `DatabaseConfigurer.configure(engine)` to `configure_database(engine)` to avoid protocol collision with `FastApiConfigurer.configure(app)` in structural typing.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
10
17
|
## [0.2.0] - 2026-02-06
|
|
11
18
|
|
|
12
19
|
### Added
|
|
@@ -11,7 +11,7 @@ pico-sqlalchemy provides SQLAlchemy integration for pico-ioc. It uses:
|
|
|
11
11
|
## Key Reminders
|
|
12
12
|
|
|
13
13
|
- pico-ioc dependency: `>= 2.2.0`
|
|
14
|
-
- `version_scheme
|
|
14
|
+
- **NEVER change `version_scheme`** in pyproject.toml. It MUST remain `"post-release"`. Changing it to `"guess-next-dev"` causes `.dev0` versions to leak to PyPI. This was already fixed once — do not revert it.
|
|
15
15
|
- requires-python >= 3.11
|
|
16
16
|
- Commit messages: one line only
|
|
17
17
|
- `@transactional` works both with and without parentheses (like `@repository`)
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Contributor Covenant Code of Conduct
|
|
2
|
+
|
|
3
|
+
## Our Pledge
|
|
4
|
+
|
|
5
|
+
We as members, contributors, and leaders pledge to make participation in our
|
|
6
|
+
community a harassment-free experience for everyone.
|
|
7
|
+
|
|
8
|
+
## Our Standards
|
|
9
|
+
|
|
10
|
+
Examples of behavior that contributes to a positive environment:
|
|
11
|
+
|
|
12
|
+
* Using welcoming and inclusive language
|
|
13
|
+
* Being respectful of differing viewpoints and experiences
|
|
14
|
+
* Gracefully accepting constructive criticism
|
|
15
|
+
* Focusing on what is best for the community
|
|
16
|
+
|
|
17
|
+
Examples of unacceptable behavior:
|
|
18
|
+
|
|
19
|
+
* Trolling, insulting or derogatory comments, and personal or political attacks
|
|
20
|
+
* Public or private harassment
|
|
21
|
+
* Publishing others' private information without explicit permission
|
|
22
|
+
|
|
23
|
+
## Enforcement
|
|
24
|
+
|
|
25
|
+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
|
26
|
+
reported to **dperezcabrera@gmail.com**. All complaints will be reviewed
|
|
27
|
+
and investigated promptly and fairly.
|
|
28
|
+
|
|
29
|
+
## Attribution
|
|
30
|
+
|
|
31
|
+
This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org/), version 2.1.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Contributing to Pico-SQLAlchemy
|
|
2
|
+
|
|
3
|
+
## Development Setup
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
python -m venv .venv
|
|
7
|
+
source .venv/bin/activate
|
|
8
|
+
pip install -e ".[test]"
|
|
9
|
+
pip install ruff
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## Running Tests
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
pytest tests/ -v # Run tests
|
|
16
|
+
tox # Full matrix (3.11-3.14)
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Code Style
|
|
20
|
+
|
|
21
|
+
- Python 3.11+
|
|
22
|
+
- Format with `ruff format src/ tests/`
|
|
23
|
+
- Lint with `ruff check src/ tests/`
|
|
24
|
+
|
|
25
|
+
## Pull Requests
|
|
26
|
+
|
|
27
|
+
1. Fork the repository
|
|
28
|
+
2. Create a feature branch
|
|
29
|
+
3. Ensure tests pass and code is formatted
|
|
30
|
+
4. Submit a PR with a clear description
|
|
31
|
+
|
|
32
|
+
## Reporting Issues
|
|
33
|
+
|
|
34
|
+
Use [GitHub Issues](https://github.com/dperezcabrera/pico-sqlalchemy/issues) for bugs and feature requests.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pico-sqlalchemy
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.0
|
|
4
4
|
Summary: Pico-ioc integration for SQLAlchemy. Adds Spring-style transactional support, configuration, and helpers.
|
|
5
5
|
Author-email: David Perez Cabrera <dperezcabrera@gmail.com>
|
|
6
6
|
License: MIT License
|
|
@@ -28,6 +28,8 @@ License: MIT License
|
|
|
28
28
|
Project-URL: Homepage, https://github.com/dperezcabrera/pico-sqlalchemy
|
|
29
29
|
Project-URL: Repository, https://github.com/dperezcabrera/pico-sqlalchemy
|
|
30
30
|
Project-URL: Issue Tracker, https://github.com/dperezcabrera/pico-sqlalchemy/issues
|
|
31
|
+
Project-URL: Documentation, https://dperezcabrera.github.io/pico-sqlalchemy/
|
|
32
|
+
Project-URL: Changelog, https://github.com/dperezcabrera/pico-sqlalchemy/blob/main/CHANGELOG.md
|
|
31
33
|
Keywords: ioc,di,dependency injection,sqlalchemy,transaction,orm,inversion of control,asyncio
|
|
32
34
|
Classifier: Development Status :: 4 - Beta
|
|
33
35
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
@@ -38,8 +40,10 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
38
40
|
Classifier: Programming Language :: Python :: 3.12
|
|
39
41
|
Classifier: Programming Language :: Python :: 3.13
|
|
40
42
|
Classifier: Programming Language :: Python :: 3.14
|
|
43
|
+
Classifier: Intended Audience :: Developers
|
|
41
44
|
Classifier: License :: OSI Approved :: MIT License
|
|
42
45
|
Classifier: Operating System :: OS Independent
|
|
46
|
+
Classifier: Typing :: Typed
|
|
43
47
|
Requires-Python: >=3.11
|
|
44
48
|
Description-Content-Type: text/markdown
|
|
45
49
|
License-File: LICENSE
|
|
@@ -333,16 +337,23 @@ async def test_service():
|
|
|
333
337
|
|
|
334
338
|
-----
|
|
335
339
|
|
|
336
|
-
##
|
|
340
|
+
## AI Coding Skills
|
|
337
341
|
|
|
338
|
-
|
|
342
|
+
Install [Claude Code](https://code.claude.com) or [OpenAI Codex](https://openai.com/index/introducing-codex/) skills for AI-assisted development with pico-sqlalchemy:
|
|
339
343
|
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
+
```bash
|
|
345
|
+
curl -sL https://raw.githubusercontent.com/dperezcabrera/pico-skills/main/install.sh | bash -s -- sqlalchemy
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
| Command | Description |
|
|
349
|
+
|---------|-------------|
|
|
350
|
+
| `/add-repository` | Add SQLAlchemy entities and repositories with transactions |
|
|
351
|
+
| `/add-component` | Add components, factories, interceptors, settings |
|
|
352
|
+
| `/add-tests` | Generate tests for pico-framework components |
|
|
353
|
+
|
|
354
|
+
All skills: `curl -sL https://raw.githubusercontent.com/dperezcabrera/pico-skills/main/install.sh | bash`
|
|
344
355
|
|
|
345
|
-
See [
|
|
356
|
+
See [pico-skills](https://github.com/dperezcabrera/pico-skills) for details.
|
|
346
357
|
|
|
347
358
|
---
|
|
348
359
|
|
|
@@ -278,16 +278,23 @@ async def test_service():
|
|
|
278
278
|
|
|
279
279
|
-----
|
|
280
280
|
|
|
281
|
-
##
|
|
281
|
+
## AI Coding Skills
|
|
282
282
|
|
|
283
|
-
|
|
283
|
+
Install [Claude Code](https://code.claude.com) or [OpenAI Codex](https://openai.com/index/introducing-codex/) skills for AI-assisted development with pico-sqlalchemy:
|
|
284
284
|
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
285
|
+
```bash
|
|
286
|
+
curl -sL https://raw.githubusercontent.com/dperezcabrera/pico-skills/main/install.sh | bash -s -- sqlalchemy
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
| Command | Description |
|
|
290
|
+
|---------|-------------|
|
|
291
|
+
| `/add-repository` | Add SQLAlchemy entities and repositories with transactions |
|
|
292
|
+
| `/add-component` | Add components, factories, interceptors, settings |
|
|
293
|
+
| `/add-tests` | Generate tests for pico-framework components |
|
|
294
|
+
|
|
295
|
+
All skills: `curl -sL https://raw.githubusercontent.com/dperezcabrera/pico-skills/main/install.sh | bash`
|
|
289
296
|
|
|
290
|
-
See [
|
|
297
|
+
See [pico-skills](https://github.com/dperezcabrera/pico-skills) for details.
|
|
291
298
|
|
|
292
299
|
---
|
|
293
300
|
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Security Policy
|
|
2
|
+
|
|
3
|
+
## Supported Versions
|
|
4
|
+
|
|
5
|
+
| Version | Supported |
|
|
6
|
+
|---------|--------------------|
|
|
7
|
+
| 0.2.x | Yes |
|
|
8
|
+
|
|
9
|
+
## Reporting a Vulnerability
|
|
10
|
+
|
|
11
|
+
If you discover a security vulnerability, please report it responsibly:
|
|
12
|
+
|
|
13
|
+
1. **Do NOT open a public issue.**
|
|
14
|
+
2. Email **dperezcabrera@gmail.com** with:
|
|
15
|
+
- Description of the vulnerability
|
|
16
|
+
- Steps to reproduce
|
|
17
|
+
- Potential impact
|
|
18
|
+
3. You will receive a response within 7 days.
|
|
19
|
+
4. A fix will be released as soon as possible, with credit to the reporter (unless anonymity is preferred).
|
|
20
|
+
|
|
21
|
+
## Scope
|
|
22
|
+
|
|
23
|
+
This policy covers the `pico-sqlalchemy` Python package distributed via PyPI.
|
|
@@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.h
|
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
+
## [0.3.0] - 2026-02-20
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
- **Breaking:** Renamed `DatabaseConfigurer.configure(engine)` to `configure_database(engine)` to avoid protocol collision with `FastApiConfigurer.configure(app)` in structural typing.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
10
17
|
## [0.2.0] - 2026-02-06
|
|
11
18
|
|
|
12
19
|
### Added
|