ferro-orm 0.2.0__tar.gz → 0.2.1__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.
Files changed (130) hide show
  1. ferro_orm-0.2.1/.github/ISSUE_TEMPLATE/bug_report.md +43 -0
  2. ferro_orm-0.2.1/.github/ISSUE_TEMPLATE/feature_request.md +37 -0
  3. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/.github/workflows/publish-docs.yml +2 -1
  4. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/.gitignore +2 -0
  5. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/CHANGELOG.md +48 -0
  6. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/Cargo.lock +330 -229
  7. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/Cargo.toml +1 -1
  8. ferro_orm-0.2.1/DOCS_COMPLETE.md +226 -0
  9. ferro_orm-0.2.1/DOCS_RESTRUCTURE_SUMMARY.md +213 -0
  10. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/PKG-INFO +1 -1
  11. ferro_orm-0.2.1/docs/TEST_RESULTS.md +208 -0
  12. ferro_orm-0.2.1/docs/api/fields.md +21 -0
  13. ferro_orm-0.2.1/docs/api/model.md +29 -0
  14. ferro_orm-0.2.1/docs/api/query.md +24 -0
  15. ferro_orm-0.2.1/docs/api/relationships.md +28 -0
  16. ferro_orm-0.2.1/docs/api/transactions.md +36 -0
  17. ferro_orm-0.2.1/docs/api/utilities.md +75 -0
  18. ferro_orm-0.2.1/docs/changelog.md +36 -0
  19. ferro_orm-0.2.1/docs/coming-soon.md +514 -0
  20. ferro_orm-0.2.1/docs/concepts/architecture.md +330 -0
  21. ferro_orm-0.2.1/docs/concepts/identity-map.md +285 -0
  22. ferro_orm-0.2.1/docs/concepts/performance.md +221 -0
  23. ferro_orm-0.2.1/docs/concepts/type-safety.md +159 -0
  24. ferro_orm-0.2.1/docs/faq.md +255 -0
  25. ferro_orm-0.2.1/docs/getting-started/installation.md +90 -0
  26. ferro_orm-0.2.1/docs/getting-started/next-steps.md +159 -0
  27. ferro_orm-0.2.1/docs/getting-started/tutorial.md +388 -0
  28. ferro_orm-0.2.1/docs/guide/database.md +266 -0
  29. ferro_orm-0.2.1/docs/guide/migrations.md +411 -0
  30. ferro_orm-0.2.1/docs/guide/models-and-fields.md +184 -0
  31. ferro_orm-0.2.1/docs/guide/mutations.md +461 -0
  32. ferro_orm-0.2.1/docs/guide/queries.md +329 -0
  33. ferro_orm-0.2.1/docs/guide/relationships.md +332 -0
  34. ferro_orm-0.2.1/docs/guide/transactions.md +357 -0
  35. ferro_orm-0.2.1/docs/howto/multiple-databases.md +74 -0
  36. ferro_orm-0.2.1/docs/howto/pagination.md +353 -0
  37. ferro_orm-0.2.1/docs/howto/soft-deletes.md +86 -0
  38. ferro_orm-0.2.1/docs/howto/testing.md +123 -0
  39. ferro_orm-0.2.1/docs/howto/timestamps.md +57 -0
  40. ferro_orm-0.2.1/docs/index.md +142 -0
  41. ferro_orm-0.2.1/docs/migration-sqlalchemy.md +150 -0
  42. ferro_orm-0.2.1/docs/stylesheets/extra.css +27 -0
  43. ferro_orm-0.2.1/docs/why-ferro.md +206 -0
  44. ferro_orm-0.2.1/mkdocs.yml +161 -0
  45. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/pyproject.toml +2 -2
  46. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/scripts/demo_queries.py +3 -3
  47. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/src/ferro/__init__.py +2 -2
  48. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/src/ferro/fields.py +35 -24
  49. ferro_orm-0.2.1/src/ferro/metaclass.py +391 -0
  50. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/src/ferro/models.py +9 -0
  51. ferro_orm-0.2.1/src/ferro/query/__init__.py +6 -0
  52. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/src/ferro/query/builder.py +2 -2
  53. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/src/ferro/relations/__init__.py +15 -13
  54. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/src/ferro/relations/descriptors.py +22 -24
  55. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/tests/conftest.py +4 -3
  56. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/tests/test_alembic_bridge.py +4 -4
  57. ferro_orm-0.2.1/tests/test_auto_migrate.py +78 -0
  58. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/tests/test_crud.py +25 -25
  59. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/tests/test_docs_examples.py +3 -0
  60. ferro_orm-0.2.1/tests/test_documentation_features.py +830 -0
  61. ferro_orm-0.2.1/tests/test_metaclass_internals.py +340 -0
  62. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/tests/test_one_to_one.py +2 -2
  63. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/tests/test_relationship_engine.py +76 -11
  64. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/tests/test_schema_constraints.py +8 -6
  65. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/uv.lock +1 -1
  66. ferro_orm-0.2.0/docs/api/core-models.md +0 -6
  67. ferro_orm-0.2.0/docs/api/field-metadata.md +0 -17
  68. ferro_orm-0.2.0/docs/api/global-functions.md +0 -21
  69. ferro_orm-0.2.0/docs/api/query-builder.md +0 -11
  70. ferro_orm-0.2.0/docs/api.md +0 -10
  71. ferro_orm-0.2.0/docs/connection.md +0 -48
  72. ferro_orm-0.2.0/docs/fields.md +0 -80
  73. ferro_orm-0.2.0/docs/index.md +0 -3
  74. ferro_orm-0.2.0/docs/migrations.md +0 -52
  75. ferro_orm-0.2.0/docs/models.md +0 -64
  76. ferro_orm-0.2.0/docs/queries.md +0 -89
  77. ferro_orm-0.2.0/docs/relations.md +0 -85
  78. ferro_orm-0.2.0/docs/transactions.md +0 -57
  79. ferro_orm-0.2.0/mkdocs.yml +0 -104
  80. ferro_orm-0.2.0/src/ferro/metaclass.py +0 -216
  81. ferro_orm-0.2.0/src/ferro/query/__init__.py +0 -6
  82. ferro_orm-0.2.0/tests/test_auto_migrate.py +0 -37
  83. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/.github/PERMISSIONS.md +0 -0
  84. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/.github/PYPI_CHECKLIST.md +0 -0
  85. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/.github/PYPI_SETUP.md +0 -0
  86. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/.github/generated/wheels.generated.yml +0 -0
  87. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/.github/pull_request_template.md +0 -0
  88. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/.github/workflows/ci.yml +0 -0
  89. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/.github/workflows/packaging-smoke.yml +0 -0
  90. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/.github/workflows/publish.yml +0 -0
  91. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/.github/workflows/release.yml +0 -0
  92. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/.pre-commit-config.yaml +0 -0
  93. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/.python-version +0 -0
  94. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/CONTRIBUTING.md +0 -0
  95. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/LICENSE +0 -0
  96. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/README.md +0 -0
  97. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/docs/contributing.md +0 -0
  98. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/justfile +0 -0
  99. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/src/connection.rs +0 -0
  100. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/src/ferro/_core.pyi +0 -0
  101. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/src/ferro/base.py +0 -0
  102. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/src/ferro/migrations/__init__.py +0 -0
  103. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/src/ferro/migrations/alembic.py +0 -0
  104. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/src/ferro/py.typed +0 -0
  105. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/src/ferro/query/nodes.py +0 -0
  106. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/src/ferro/state.py +0 -0
  107. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/src/lib.rs +0 -0
  108. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/src/operations.rs +0 -0
  109. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/src/query.rs +0 -0
  110. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/src/schema.rs +0 -0
  111. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/src/state.rs +0 -0
  112. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/tests/test_aggregation.py +0 -0
  113. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/tests/test_alembic_autogenerate.py +0 -0
  114. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/tests/test_alembic_type_mapping.py +0 -0
  115. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/tests/test_bulk_update.py +0 -0
  116. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/tests/test_connection.py +0 -0
  117. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/tests/test_constraints.py +0 -0
  118. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/tests/test_deletion.py +0 -0
  119. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/tests/test_field_wrapper.py +0 -0
  120. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/tests/test_helpers.py +0 -0
  121. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/tests/test_hydration.py +0 -0
  122. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/tests/test_metadata.py +0 -0
  123. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/tests/test_models.py +0 -0
  124. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/tests/test_query_builder.py +0 -0
  125. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/tests/test_refresh.py +0 -0
  126. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/tests/test_schema.py +0 -0
  127. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/tests/test_string_search.py +0 -0
  128. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/tests/test_structural_types.py +0 -0
  129. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/tests/test_temporal_types.py +0 -0
  130. {ferro_orm-0.2.0 → ferro_orm-0.2.1}/tests/test_transactions.py +0 -0
@@ -0,0 +1,43 @@
1
+ ---
2
+ name: Bug report
3
+ about: Report a bug or unexpected behavior
4
+ title: "`bug` "
5
+ labels: bug
6
+ assignees: Ox54
7
+
8
+ ---
9
+
10
+ ## Summary
11
+
12
+ <!-- Brief description of the bug. -->
13
+
14
+ ## Environment
15
+
16
+ - **Ferro version:** <!-- e.g. 0.1.0 or git commit -->
17
+ - **Python version:**
18
+ - **OS:** <!-- e.g. macOS 14, Ubuntu 22.04 -->
19
+ - **Database:** <!-- e.g. SQLite 3.43, PostgreSQL 15 -->
20
+
21
+ ## Steps to reproduce
22
+
23
+ 1.
24
+ 2.
25
+ 3.
26
+
27
+ ## Expected behavior
28
+
29
+ <!-- What should happen. -->
30
+
31
+ ## Actual behavior
32
+
33
+ <!-- What actually happens. Include error messages or tracebacks if relevant. -->
34
+
35
+ ## Minimal example (optional)
36
+
37
+ ```python
38
+ # Minimal code that reproduces the issue
39
+ ```
40
+
41
+ ## Additional context
42
+
43
+ <!-- Logs, screenshots, or other details that might help. -->
@@ -0,0 +1,37 @@
1
+ ---
2
+ name: Feature request
3
+ about: Suggest a new feature or enhancement for Ferro
4
+ title: "`feat` "
5
+ labels: feature
6
+ assignees: Ox54
7
+
8
+ ---
9
+
10
+ ## Summary
11
+
12
+ <!-- One or two sentences describing the feature and why it would be useful. -->
13
+
14
+ ## Current state
15
+
16
+ **Status:** <!-- e.g. Not implemented / Partially implemented -->
17
+
18
+ <!-- If partially implemented, list what works and what does not. -->
19
+
20
+ **Documentation references:**
21
+ - <!-- e.g. docs/coming-soon.md, docs/guide/queries.md (lines X–Y) -->
22
+
23
+ **Current workaround:** <!-- How can users achieve this today, if at all? -->
24
+
25
+ ## Proposed API (examples)
26
+
27
+ ```python
28
+ # Example of how the feature would be used
29
+ ```
30
+
31
+ <!-- Describe how this would integrate with the existing API (query builder, models, etc.). -->
32
+
33
+ ## Acceptance criteria
34
+
35
+ - [ ]
36
+ - [ ]
37
+ - [ ] Docs updated (e.g. remove from Coming Soon, add to relevant guide).
@@ -1,6 +1,7 @@
1
1
  name: Publish Docs
2
2
 
3
3
  on:
4
+ workflow_dispatch:
4
5
  workflow_call:
5
6
  inputs:
6
7
  ref:
@@ -41,7 +42,7 @@ jobs:
41
42
 
42
43
  - name: Build MkDocs site
43
44
  run: |
44
- uv run mkdocs build --strict
45
+ uv run --no-sync mkdocs build
45
46
 
46
47
  - name: Upload Pages artifact
47
48
  uses: actions/upload-pages-artifact@v3
@@ -241,3 +241,5 @@ ferro_test.db
241
241
  .cursor
242
242
  playground.ipynb
243
243
  IMPLEMENTATION.md
244
+ Cargo.lock
245
+ demo.db
@@ -1,6 +1,54 @@
1
1
  # CHANGELOG
2
2
 
3
3
 
4
+ ## v0.2.1 (2026-04-20)
5
+
6
+ ### Bug Fixes
7
+
8
+ - Defer annotations resolution
9
+ ([`edd39ab`](https://github.com/syn54x/ferro-orm/commit/edd39abdec7b34410040394d430fd30833e02aee))
10
+
11
+ ### Chores
12
+
13
+ - Update patch_tags in pyproject.toml to include refactor
14
+ ([`36c29a7`](https://github.com/syn54x/ferro-orm/commit/36c29a71f0f95845d50d1dd6fdbc14b2c4b20ac2))
15
+
16
+ ### Continuous Integration
17
+
18
+ - Fix release & mkdocs publish workflows
19
+ ([`630dc7c`](https://github.com/syn54x/ferro-orm/commit/630dc7cea32da02602acc037e1d8da722d3fb593))
20
+
21
+ ### Documentation
22
+
23
+ - Restructure documentation following Diátaxis framework
24
+ ([`b3c2cde`](https://github.com/syn54x/ferro-orm/commit/b3c2cde1d0bde589ad0f08a34002202bca81e5e5))
25
+
26
+ - Update BackRef references and enhance field documentation
27
+ ([`baf73ba`](https://github.com/syn54x/ferro-orm/commit/baf73ba03abd554ca8159bc718aa1785b08691ae))
28
+
29
+ - Update model field annotations to support optional back references
30
+ ([`2044896`](https://github.com/syn54x/ferro-orm/commit/20448966854d33e64c03a97831f640af279e93b4))
31
+
32
+ ### Refactoring
33
+
34
+ - Enhance model relationship descriptors and improve field handling
35
+ ([`6275ebb`](https://github.com/syn54x/ferro-orm/commit/6275ebb9be3ce7a419fb84c381c0a90eec22a5e9))
36
+
37
+ - Modularize metaclass __new__ method for easier testing and maintenance
38
+ ([`e514b95`](https://github.com/syn54x/ferro-orm/commit/e514b950cb94e333418f7bd556b8e5b48bf7298e))
39
+
40
+ - Rename BackRelationship to BackRef and add back_ref to Field
41
+ ([`d24d32d`](https://github.com/syn54x/ferro-orm/commit/d24d32d3402b51cb738ac2a2c8f396b98d4de632))
42
+
43
+ - Update demo_queries to use BackRef instead of BackRelationship
44
+ ([`51799ad`](https://github.com/syn54x/ferro-orm/commit/51799adc1a0b90f937cab7651cf8276f53a16100))
45
+
46
+ ### Testing
47
+
48
+ - Update references from BackRelationship to BackRef in test files
49
+ ([`60a1d87`](https://github.com/syn54x/ferro-orm/commit/60a1d87d88fe93996dc0b479c75d40aad3ff143b))
50
+
51
+
4
52
  ## v0.2.0 (2026-02-14)
5
53
 
6
54
  ### Chores