eggpipe 0.3.0__tar.gz → 0.3.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 (216) hide show
  1. {eggpipe-0.3.0 → eggpipe-0.3.1}/CHANGELOG.md +8 -0
  2. {eggpipe-0.3.0 → eggpipe-0.3.1}/CONTRIBUTING.md +17 -0
  3. eggpipe-0.3.1/PKG-INFO +121 -0
  4. eggpipe-0.3.1/README-pypi.md +79 -0
  5. {eggpipe-0.3.0 → eggpipe-0.3.1}/README.md +2 -2
  6. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/ai/context.md +1 -1
  7. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/ai/llms-full.txt +3 -3
  8. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/ai/manifest.json +1 -1
  9. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/user/status.md +2 -2
  10. {eggpipe-0.3.0 → eggpipe-0.3.1}/engineering/adr/0014-beta-status-and-compatibility.md +1 -1
  11. {eggpipe-0.3.0 → eggpipe-0.3.1}/engineering/plan-v2.md +2 -2
  12. {eggpipe-0.3.0 → eggpipe-0.3.1}/engineering/release.md +5 -3
  13. {eggpipe-0.3.0 → eggpipe-0.3.1}/engineering/system-design/index.md +2 -2
  14. {eggpipe-0.3.0 → eggpipe-0.3.1}/pyproject.toml +2 -2
  15. {eggpipe-0.3.0 → eggpipe-0.3.1}/src/eggpipe/version.py +1 -1
  16. {eggpipe-0.3.0 → eggpipe-0.3.1}/tests/test_artifact_writer.py +1 -1
  17. {eggpipe-0.3.0 → eggpipe-0.3.1}/tests/test_check_wheel.py +3 -3
  18. {eggpipe-0.3.0 → eggpipe-0.3.1}/tests/test_package.py +1 -1
  19. {eggpipe-0.3.0 → eggpipe-0.3.1}/tools/check_docs.py +1 -0
  20. {eggpipe-0.3.0 → eggpipe-0.3.1}/tools/check_wheel.py +1 -0
  21. eggpipe-0.3.0/PKG-INFO +0 -251
  22. {eggpipe-0.3.0 → eggpipe-0.3.1}/.gitignore +0 -0
  23. {eggpipe-0.3.0 → eggpipe-0.3.1}/LICENSE +0 -0
  24. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/ai/diagnostics.json +0 -0
  25. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/ai/index.md +0 -0
  26. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/ai/invariants.md +0 -0
  27. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/ai/llms.txt +0 -0
  28. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/ai/schemas/config.schema.json +0 -0
  29. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/ai/schemas/manifest.schema.json +0 -0
  30. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/ai/schemas/model.schema.json +0 -0
  31. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/ai/schemas/report.schema.json +0 -0
  32. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/ai/tasks.md +0 -0
  33. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/assets/brand/favicon.ico +0 -0
  34. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/assets/brand/lockup/eggpipe-lockup-dark.png +0 -0
  35. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/assets/brand/lockup/eggpipe-lockup-dark.svg +0 -0
  36. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/assets/brand/lockup/eggpipe-lockup-light.png +0 -0
  37. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/assets/brand/lockup/eggpipe-lockup.svg +0 -0
  38. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/assets/brand/lockup/eggpipe-wordmark-dark.png +0 -0
  39. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/assets/brand/lockup/eggpipe-wordmark-dark.svg +0 -0
  40. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/assets/brand/lockup/eggpipe-wordmark-light.png +0 -0
  41. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/assets/brand/lockup/eggpipe-wordmark.svg +0 -0
  42. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/assets/brand/png/android-chrome-192x192.png +0 -0
  43. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/assets/brand/png/android-chrome-512x512.png +0 -0
  44. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/assets/brand/png/apple-touch-icon.png +0 -0
  45. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/assets/brand/png/eggpipe-icon-1024.png +0 -0
  46. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/assets/brand/png/eggpipe-icon-128.png +0 -0
  47. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/assets/brand/png/eggpipe-icon-16.png +0 -0
  48. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/assets/brand/png/eggpipe-icon-256.png +0 -0
  49. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/assets/brand/png/eggpipe-icon-32.png +0 -0
  50. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/assets/brand/png/eggpipe-icon-48.png +0 -0
  51. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/assets/brand/png/eggpipe-icon-512.png +0 -0
  52. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/assets/brand/png/eggpipe-icon-64.png +0 -0
  53. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/assets/brand/png/eggpipe-icon-dark-1024.png +0 -0
  54. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/assets/brand/png/eggpipe-icon-dark-512.png +0 -0
  55. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/assets/brand/png/eggpipe-icon-mono-512.png +0 -0
  56. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/assets/brand/png/eggpipe-icon-mono-light-512.png +0 -0
  57. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/assets/brand/png/eggpipe-icon-original-1024.png +0 -0
  58. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/assets/brand/preview-small-sizes.png +0 -0
  59. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/assets/brand/preview.png +0 -0
  60. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/assets/brand/social/eggpipe-social-1280x640.png +0 -0
  61. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/assets/brand/svg/eggpipe-icon-dark.svg +0 -0
  62. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/assets/brand/svg/eggpipe-icon-mono-light.svg +0 -0
  63. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/assets/brand/svg/eggpipe-icon-mono.svg +0 -0
  64. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/assets/brand/svg/eggpipe-icon-original.svg +0 -0
  65. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/assets/brand/svg/eggpipe-icon-small-egg-p.svg +0 -0
  66. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/assets/brand/svg/eggpipe-icon-small-ep.svg +0 -0
  67. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/assets/brand/svg/eggpipe-icon-small-p.svg +0 -0
  68. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/assets/brand/svg/eggpipe-icon-square-dark.svg +0 -0
  69. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/assets/brand/svg/eggpipe-icon-square-mono-light.svg +0 -0
  70. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/assets/brand/svg/eggpipe-icon-square-mono.svg +0 -0
  71. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/assets/brand/svg/eggpipe-icon-square.svg +0 -0
  72. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/assets/brand/svg/eggpipe-icon.svg +0 -0
  73. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/img/favicon.ico +0 -0
  74. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/index.md +0 -0
  75. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/user/api/format.md +0 -0
  76. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/user/api/generator.md +0 -0
  77. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/user/api/index.md +0 -0
  78. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/user/api/models.md +0 -0
  79. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/user/cli.md +0 -0
  80. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/user/concepts.md +0 -0
  81. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/user/configuration.md +0 -0
  82. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/user/cookbook/index.md +0 -0
  83. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/user/faq.md +0 -0
  84. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/user/index.md +0 -0
  85. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/user/plugins.md +0 -0
  86. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/user/quickstart.md +0 -0
  87. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/user/reference/diagnostics.md +0 -0
  88. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/user/troubleshooting.md +0 -0
  89. {eggpipe-0.3.0 → eggpipe-0.3.1}/docs/user/tutorial.md +0 -0
  90. {eggpipe-0.3.0 → eggpipe-0.3.1}/engineering/adr/0001-composition-merge-semantics.md +0 -0
  91. {eggpipe-0.3.0 → eggpipe-0.3.1}/engineering/adr/0002-type-checker-pyrefly.md +0 -0
  92. {eggpipe-0.3.0 → eggpipe-0.3.1}/engineering/adr/0003-null-semantics.md +0 -0
  93. {eggpipe-0.3.0 → eggpipe-0.3.1}/engineering/adr/0004-ownership-manifest-cleanup.md +0 -0
  94. {eggpipe-0.3.0 → eggpipe-0.3.1}/engineering/adr/0005-library-api.md +0 -0
  95. {eggpipe-0.3.0 → eggpipe-0.3.1}/engineering/adr/0006-format-extension.md +0 -0
  96. {eggpipe-0.3.0 → eggpipe-0.3.1}/engineering/adr/0007-format-inheritance.md +0 -0
  97. {eggpipe-0.3.0 → eggpipe-0.3.1}/engineering/adr/0008-model-units-and-source-layouts.md +0 -0
  98. {eggpipe-0.3.0 → eggpipe-0.3.1}/engineering/adr/0009-global-manifest-ownership.md +0 -0
  99. {eggpipe-0.3.0 → eggpipe-0.3.1}/engineering/adr/0010-decorator-generator-api.md +0 -0
  100. {eggpipe-0.3.0 → eggpipe-0.3.1}/engineering/adr/0011-public-api-v2-identity.md +0 -0
  101. {eggpipe-0.3.0 → eggpipe-0.3.1}/engineering/adr/0012-english-only-source.md +0 -0
  102. {eggpipe-0.3.0 → eggpipe-0.3.1}/engineering/adr/0013-diagnostic-code-namespace.md +0 -0
  103. {eggpipe-0.3.0 → eggpipe-0.3.1}/engineering/adr/index.md +0 -0
  104. {eggpipe-0.3.0 → eggpipe-0.3.1}/engineering/brand-assets.md +0 -0
  105. {eggpipe-0.3.0 → eggpipe-0.3.1}/engineering/decisions/eggpipe.md +0 -0
  106. {eggpipe-0.3.0 → eggpipe-0.3.1}/engineering/decisions/logo-brief.md +0 -0
  107. {eggpipe-0.3.0 → eggpipe-0.3.1}/engineering/i18n/README.md +0 -0
  108. {eggpipe-0.3.0 → eggpipe-0.3.1}/engineering/i18n/ru-docstrings.yaml +0 -0
  109. {eggpipe-0.3.0 → eggpipe-0.3.1}/engineering/i18n/ru-messages.yaml +0 -0
  110. {eggpipe-0.3.0 → eggpipe-0.3.1}/engineering/index.md +0 -0
  111. {eggpipe-0.3.0 → eggpipe-0.3.1}/engineering/requirements/index.md +0 -0
  112. {eggpipe-0.3.0 → eggpipe-0.3.1}/engineering/requirements/v1.0.md +0 -0
  113. {eggpipe-0.3.0 → eggpipe-0.3.1}/engineering/requirements/v1.1.md +0 -0
  114. {eggpipe-0.3.0 → eggpipe-0.3.1}/engineering/requirements/v1.2.md +0 -0
  115. {eggpipe-0.3.0 → eggpipe-0.3.1}/engineering/requirements/v1.3.md +0 -0
  116. {eggpipe-0.3.0 → eggpipe-0.3.1}/engineering/requirements/v1.4.md +0 -0
  117. {eggpipe-0.3.0 → eggpipe-0.3.1}/engineering/requirements/v2.0.md +0 -0
  118. {eggpipe-0.3.0 → eggpipe-0.3.1}/engineering/requirements/v2.1.md +0 -0
  119. {eggpipe-0.3.0 → eggpipe-0.3.1}/engineering/requirements/v2.2.md +0 -0
  120. {eggpipe-0.3.0 → eggpipe-0.3.1}/engineering/reviews/2026-11-10-project-review.md +0 -0
  121. {eggpipe-0.3.0 → eggpipe-0.3.1}/engineering/reviews/2026-11-12-v2-review.md +0 -0
  122. {eggpipe-0.3.0 → eggpipe-0.3.1}/engineering/reviews/2026-11-13-code-quality-review.md +0 -0
  123. {eggpipe-0.3.0 → eggpipe-0.3.1}/engineering/reviews/2026-11-13-patterns-review.md +0 -0
  124. {eggpipe-0.3.0 → eggpipe-0.3.1}/engineering/reviews/2026-11-13-project-review.md +0 -0
  125. {eggpipe-0.3.0 → eggpipe-0.3.1}/examples/reference-generator/README.md +0 -0
  126. {eggpipe-0.3.0 → eggpipe-0.3.1}/examples/reference-generator/pyproject.toml +0 -0
  127. {eggpipe-0.3.0 → eggpipe-0.3.1}/examples/reference-generator/src/reference_generator/__init__.py +0 -0
  128. {eggpipe-0.3.0 → eggpipe-0.3.1}/examples/tpc-h/.eggpipe.split.yaml +0 -0
  129. {eggpipe-0.3.0 → eggpipe-0.3.1}/examples/tpc-h/.eggpipe.yaml +0 -0
  130. {eggpipe-0.3.0 → eggpipe-0.3.1}/examples/tpc-h/README.md +0 -0
  131. {eggpipe-0.3.0 → eggpipe-0.3.1}/examples/tpc-h/expected/schema.sql +0 -0
  132. {eggpipe-0.3.0 → eggpipe-0.3.1}/examples/tpc-h/expected/tpch_models.py +0 -0
  133. {eggpipe-0.3.0 → eggpipe-0.3.1}/examples/tpc-h/model/customer/base.yaml +0 -0
  134. {eggpipe-0.3.0 → eggpipe-0.3.1}/examples/tpc-h/model/lineitem/base.yaml +0 -0
  135. {eggpipe-0.3.0 → eggpipe-0.3.1}/examples/tpc-h/model/nation/base.yaml +0 -0
  136. {eggpipe-0.3.0 → eggpipe-0.3.1}/examples/tpc-h/model/orders/base.yaml +0 -0
  137. {eggpipe-0.3.0 → eggpipe-0.3.1}/examples/tpc-h/model/part/base.yaml +0 -0
  138. {eggpipe-0.3.0 → eggpipe-0.3.1}/examples/tpc-h/model/partsupp/base.yaml +0 -0
  139. {eggpipe-0.3.0 → eggpipe-0.3.1}/examples/tpc-h/model/region/base.yaml +0 -0
  140. {eggpipe-0.3.0 → eggpipe-0.3.1}/examples/tpc-h/model/supplier/base.yaml +0 -0
  141. {eggpipe-0.3.0 → eggpipe-0.3.1}/examples/tpc-h-generator/README.md +0 -0
  142. {eggpipe-0.3.0 → eggpipe-0.3.1}/examples/tpc-h-generator/pyproject.toml +0 -0
  143. {eggpipe-0.3.0 → eggpipe-0.3.1}/examples/tpc-h-generator/src/tpch_generator/__init__.py +0 -0
  144. {eggpipe-0.3.0 → eggpipe-0.3.1}/examples/tpc-h-generator/src/tpch_generator/ddl.py +0 -0
  145. {eggpipe-0.3.0 → eggpipe-0.3.1}/examples/tpc-h-generator/src/tpch_generator/generator.py +0 -0
  146. {eggpipe-0.3.0 → eggpipe-0.3.1}/examples/tpc-h-generator/src/tpch_generator/metadata.py +0 -0
  147. {eggpipe-0.3.0 → eggpipe-0.3.1}/examples/tpc-h-generator/src/tpch_generator/pydantic_models.py +0 -0
  148. {eggpipe-0.3.0 → eggpipe-0.3.1}/examples/tpc-h-generator/src/tpch_generator/templates/pydantic.py.j2 +0 -0
  149. {eggpipe-0.3.0 → eggpipe-0.3.1}/examples/tpc-h-generator/src/tpch_generator/templates/schema.sql.j2 +0 -0
  150. {eggpipe-0.3.0 → eggpipe-0.3.1}/mkdocs.yml +0 -0
  151. {eggpipe-0.3.0 → eggpipe-0.3.1}/pyrightconfig.json +0 -0
  152. {eggpipe-0.3.0 → eggpipe-0.3.1}/src/eggpipe/__init__.py +0 -0
  153. {eggpipe-0.3.0 → eggpipe-0.3.1}/src/eggpipe/cli/__init__.py +0 -0
  154. {eggpipe-0.3.0 → eggpipe-0.3.1}/src/eggpipe/cli/main.py +0 -0
  155. {eggpipe-0.3.0 → eggpipe-0.3.1}/src/eggpipe/config/__init__.py +0 -0
  156. {eggpipe-0.3.0 → eggpipe-0.3.1}/src/eggpipe/config/app_config.py +0 -0
  157. {eggpipe-0.3.0 → eggpipe-0.3.1}/src/eggpipe/config/logging.py +0 -0
  158. {eggpipe-0.3.0 → eggpipe-0.3.1}/src/eggpipe/config/project_config.py +0 -0
  159. {eggpipe-0.3.0 → eggpipe-0.3.1}/src/eggpipe/core/__init__.py +0 -0
  160. {eggpipe-0.3.0 → eggpipe-0.3.1}/src/eggpipe/core/composition.py +0 -0
  161. {eggpipe-0.3.0 → eggpipe-0.3.1}/src/eggpipe/core/discovery.py +0 -0
  162. {eggpipe-0.3.0 → eggpipe-0.3.1}/src/eggpipe/core/document.py +0 -0
  163. {eggpipe-0.3.0 → eggpipe-0.3.1}/src/eggpipe/core/format_registry.py +0 -0
  164. {eggpipe-0.3.0 → eggpipe-0.3.1}/src/eggpipe/core/layers.py +0 -0
  165. {eggpipe-0.3.0 → eggpipe-0.3.1}/src/eggpipe/core/model.py +0 -0
  166. {eggpipe-0.3.0 → eggpipe-0.3.1}/src/eggpipe/core/naming.py +0 -0
  167. {eggpipe-0.3.0 → eggpipe-0.3.1}/src/eggpipe/core/parser.py +0 -0
  168. {eggpipe-0.3.0 → eggpipe-0.3.1}/src/eggpipe/core/paths.py +0 -0
  169. {eggpipe-0.3.0 → eggpipe-0.3.1}/src/eggpipe/core/provenance.py +0 -0
  170. {eggpipe-0.3.0 → eggpipe-0.3.1}/src/eggpipe/core/slicing.py +0 -0
  171. {eggpipe-0.3.0 → eggpipe-0.3.1}/src/eggpipe/core/validator.py +0 -0
  172. {eggpipe-0.3.0 → eggpipe-0.3.1}/src/eggpipe/engine/__init__.py +0 -0
  173. {eggpipe-0.3.0 → eggpipe-0.3.1}/src/eggpipe/engine/artifact_writer.py +0 -0
  174. {eggpipe-0.3.0 → eggpipe-0.3.1}/src/eggpipe/engine/engine.py +0 -0
  175. {eggpipe-0.3.0 → eggpipe-0.3.1}/src/eggpipe/engine/plugin_loader.py +0 -0
  176. {eggpipe-0.3.0 → eggpipe-0.3.1}/src/eggpipe/engine/policy.py +0 -0
  177. {eggpipe-0.3.0 → eggpipe-0.3.1}/src/eggpipe/engine/report.py +0 -0
  178. {eggpipe-0.3.0 → eggpipe-0.3.1}/src/eggpipe/interfaces/__init__.py +0 -0
  179. {eggpipe-0.3.0 → eggpipe-0.3.1}/src/eggpipe/interfaces/diagnostics.py +0 -0
  180. {eggpipe-0.3.0 → eggpipe-0.3.1}/src/eggpipe/interfaces/formats.py +0 -0
  181. {eggpipe-0.3.0 → eggpipe-0.3.1}/src/eggpipe/interfaces/generator.py +0 -0
  182. {eggpipe-0.3.0 → eggpipe-0.3.1}/src/eggpipe/py.typed +0 -0
  183. {eggpipe-0.3.0 → eggpipe-0.3.1}/src/eggpipe/templating.py +0 -0
  184. {eggpipe-0.3.0 → eggpipe-0.3.1}/src/eggpipe/utils/__init__.py +0 -0
  185. {eggpipe-0.3.0 → eggpipe-0.3.1}/src/eggpipe/utils/exceptions.py +0 -0
  186. {eggpipe-0.3.0 → eggpipe-0.3.1}/src/eggpipe/utils/yaml.py +0 -0
  187. {eggpipe-0.3.0 → eggpipe-0.3.1}/src/eggpipe/watch/__init__.py +0 -0
  188. {eggpipe-0.3.0 → eggpipe-0.3.1}/src/eggpipe/watch/watcher.py +0 -0
  189. {eggpipe-0.3.0 → eggpipe-0.3.1}/tests/golden/fixtures/expected/basic.json +0 -0
  190. {eggpipe-0.3.0 → eggpipe-0.3.1}/tests/golden/fixtures/models/basic.yaml +0 -0
  191. {eggpipe-0.3.0 → eggpipe-0.3.1}/tests/golden/test_golden.py +0 -0
  192. {eggpipe-0.3.0 → eggpipe-0.3.1}/tests/property/test_properties.py +0 -0
  193. {eggpipe-0.3.0 → eggpipe-0.3.1}/tests/test_check_docs.py +0 -0
  194. {eggpipe-0.3.0 → eggpipe-0.3.1}/tests/test_cli.py +0 -0
  195. {eggpipe-0.3.0 → eggpipe-0.3.1}/tests/test_composition.py +0 -0
  196. {eggpipe-0.3.0 → eggpipe-0.3.1}/tests/test_config.py +0 -0
  197. {eggpipe-0.3.0 → eggpipe-0.3.1}/tests/test_contract.py +0 -0
  198. {eggpipe-0.3.0 → eggpipe-0.3.1}/tests/test_determinism.py +0 -0
  199. {eggpipe-0.3.0 → eggpipe-0.3.1}/tests/test_engine.py +0 -0
  200. {eggpipe-0.3.0 → eggpipe-0.3.1}/tests/test_engine_composition.py +0 -0
  201. {eggpipe-0.3.0 → eggpipe-0.3.1}/tests/test_formats.py +0 -0
  202. {eggpipe-0.3.0 → eggpipe-0.3.1}/tests/test_generator_api.py +0 -0
  203. {eggpipe-0.3.0 → eggpipe-0.3.1}/tests/test_layers.py +0 -0
  204. {eggpipe-0.3.0 → eggpipe-0.3.1}/tests/test_model.py +0 -0
  205. {eggpipe-0.3.0 → eggpipe-0.3.1}/tests/test_naming.py +0 -0
  206. {eggpipe-0.3.0 → eggpipe-0.3.1}/tests/test_parser.py +0 -0
  207. {eggpipe-0.3.0 → eggpipe-0.3.1}/tests/test_plugin_loader.py +0 -0
  208. {eggpipe-0.3.0 → eggpipe-0.3.1}/tests/test_provenance.py +0 -0
  209. {eggpipe-0.3.0 → eggpipe-0.3.1}/tests/test_slicing.py +0 -0
  210. {eggpipe-0.3.0 → eggpipe-0.3.1}/tests/test_templating.py +0 -0
  211. {eggpipe-0.3.0 → eggpipe-0.3.1}/tests/test_tpch_example.py +0 -0
  212. {eggpipe-0.3.0 → eggpipe-0.3.1}/tests/test_validator.py +0 -0
  213. {eggpipe-0.3.0 → eggpipe-0.3.1}/tests/test_watch.py +0 -0
  214. {eggpipe-0.3.0 → eggpipe-0.3.1}/tests/test_watch_integration.py +0 -0
  215. {eggpipe-0.3.0 → eggpipe-0.3.1}/tools/__init__.py +0 -0
  216. {eggpipe-0.3.0 → eggpipe-0.3.1}/tools/build_ai_docs.py +0 -0
@@ -5,6 +5,14 @@
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [0.3.1] - 2026-11-13
9
+
10
+ ### Changed
11
+
12
+ - PyPI-страница использует отдельный пользовательский `README-pypi.md` без инженерной
13
+ документации и команд разработки.
14
+ - Основной `README.md` остаётся полным описанием для GitHub.
15
+
8
16
  ## [0.3.0] - 2026-11-13
9
17
 
10
18
  ### Changed
@@ -47,6 +47,23 @@ uv run python tools/check_wheel.py dist
47
47
  - При изменении версии обнови `engineering/requirements/index.md`, System Design, README,
48
48
  `.session-context.md` и harness-файлы, где указана актуальная версия.
49
49
 
50
+ ## Ветки и main
51
+
52
+ `main` защищён: прямые коммиты и push запрещены. Любое изменение идёт через отдельную
53
+ ветку и pull request.
54
+
55
+ ```bash
56
+ git switch -c type/short-description
57
+ # изменения и коммиты
58
+ git push -u origin type/short-description
59
+ ```
60
+
61
+ Затем открой PR в `main`. Merge разрешён только после зелёных проверок `ci` и `docs`.
62
+ Force-push в `main` и удаление ветки `main` запрещены.
63
+
64
+ Для соло-разработки достаточно PR без обязательного внешнего approval: проверки CI
65
+ и самостоятельный review остаются обязательными.
66
+
50
67
  ## Pull request
51
68
 
52
69
  - Один PR — одна логическая задача.
eggpipe-0.3.1/PKG-INFO ADDED
@@ -0,0 +1,121 @@
1
+ Metadata-Version: 2.5
2
+ Name: eggpipe
3
+ Version: 0.3.1
4
+ Summary: CLI tool and library for metadata-driven code generation
5
+ Project-URL: Homepage, https://github.com/SpiGit/eggpipe
6
+ Project-URL: Documentation, https://github.com/SpiGit/eggpipe/tree/main/docs
7
+ Project-URL: Repository, https://github.com/SpiGit/eggpipe
8
+ Project-URL: Changelog, https://github.com/SpiGit/eggpipe/blob/main/CHANGELOG.md
9
+ Project-URL: Issues, https://github.com/SpiGit/eggpipe/issues
10
+ License-Expression: MIT
11
+ License-File: LICENSE
12
+ Keywords: code-generation,metadata,pydantic,yaml
13
+ Classifier: Development Status :: 4 - Beta
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Programming Language :: Python :: 3.13
18
+ Classifier: Programming Language :: Python :: 3.14
19
+ Classifier: Programming Language :: Python :: 3.15
20
+ Classifier: Typing :: Typed
21
+ Requires-Python: >=3.11
22
+ Requires-Dist: pydantic-settings>=2.2.0
23
+ Requires-Dist: pydantic>=2.6.0
24
+ Requires-Dist: rich>=13.7.0
25
+ Requires-Dist: ruamel-yaml>=0.18.6
26
+ Requires-Dist: typer>=0.12.0
27
+ Requires-Dist: typing-extensions>=4.10.0
28
+ Provides-Extra: dev
29
+ Requires-Dist: hypothesis>=6.100.0; extra == 'dev'
30
+ Requires-Dist: jinja2>=3.1.0; extra == 'dev'
31
+ Requires-Dist: mkdocs>=1.6.0; extra == 'dev'
32
+ Requires-Dist: pyrefly>=1.4.0; extra == 'dev'
33
+ Requires-Dist: pytest-cov>=4.1.0; extra == 'dev'
34
+ Requires-Dist: pytest>=8.0.0; extra == 'dev'
35
+ Requires-Dist: ruff>=0.4.0; extra == 'dev'
36
+ Requires-Dist: watchdog>=4.0.0; extra == 'dev'
37
+ Provides-Extra: jinja
38
+ Requires-Dist: jinja2>=3.1.0; extra == 'jinja'
39
+ Provides-Extra: watch
40
+ Requires-Dist: watchdog>=4.0.0; extra == 'watch'
41
+ Description-Content-Type: text/markdown
42
+
43
+ # Eggpipe
44
+
45
+ <p align="center">
46
+ <img src="https://raw.githubusercontent.com/SpiGit/eggpipe/main/docs/assets/brand/lockup/eggpipe-wordmark-light.png" alt="Eggpipe" width="420">
47
+ </p>
48
+
49
+ Eggpipe generates SQL, Python, TypeScript, OpenAPI and other artifacts from a single
50
+ YAML model description.
51
+
52
+ > **Beta (0.x).** Until 1.0, the public API, CLI, config format and generated artifacts
53
+ > may change without backward compatibility. Pin the version for production and read
54
+ > the changelog before upgrading.
55
+
56
+ ## Install
57
+
58
+ ```bash
59
+ pip install eggpipe
60
+ ```
61
+
62
+ Python 3.11+ is required.
63
+
64
+ Optional extras:
65
+
66
+ ```bash
67
+ pip install "eggpipe[watch]" # watch mode
68
+ pip install "eggpipe[jinja]" # Jinja2 helper for plugins
69
+ ```
70
+
71
+ ## CLI
72
+
73
+ ```bash
74
+ eggpipe init
75
+ eggpipe generate model.yaml
76
+ eggpipe generate --plan
77
+ eggpipe generate --check
78
+ eggpipe watch model.yaml
79
+ ```
80
+
81
+ ## Library
82
+
83
+ ```python
84
+ from eggpipe import AppConfig, Engine, ProjectConfigLoader
85
+
86
+ rules = ProjectConfigLoader().load(".eggpipe.yaml")
87
+ engine = Engine(AppConfig(), rules)
88
+
89
+ report = engine.build() # parse, validate and generate without writing
90
+ report = engine.generate() # build + write artifacts
91
+ report = engine.check() # check drift without writing
92
+
93
+ if not report.success:
94
+ for diagnostic in report.diagnostics:
95
+ print(diagnostic.code, diagnostic.message)
96
+ ```
97
+
98
+ ## Plugins
99
+
100
+ Generators and document formats are plugins registered through entry points:
101
+
102
+ ```toml
103
+ [project.entry-points."eggpipe.generators"]
104
+ my-generator = "my_package:my_generator"
105
+
106
+ [project.entry-points."eggpipe.formats"]
107
+ sql-model = "my_package:SqlModelFormat"
108
+ ```
109
+
110
+ ## Documentation
111
+
112
+ - [Documentation](https://github.com/SpiGit/eggpipe/tree/main/docs)
113
+ - [Quick start](https://github.com/SpiGit/eggpipe/blob/main/docs/user/quickstart.md)
114
+ - [CLI reference](https://github.com/SpiGit/eggpipe/blob/main/docs/user/cli.md)
115
+ - [Plugin guide](https://github.com/SpiGit/eggpipe/blob/main/docs/user/plugins.md)
116
+ - [Changelog](https://github.com/SpiGit/eggpipe/blob/main/CHANGELOG.md)
117
+ - [Issues](https://github.com/SpiGit/eggpipe/issues)
118
+
119
+ ## License
120
+
121
+ MIT
@@ -0,0 +1,79 @@
1
+ # Eggpipe
2
+
3
+ <p align="center">
4
+ <img src="https://raw.githubusercontent.com/SpiGit/eggpipe/main/docs/assets/brand/lockup/eggpipe-wordmark-light.png" alt="Eggpipe" width="420">
5
+ </p>
6
+
7
+ Eggpipe generates SQL, Python, TypeScript, OpenAPI and other artifacts from a single
8
+ YAML model description.
9
+
10
+ > **Beta (0.x).** Until 1.0, the public API, CLI, config format and generated artifacts
11
+ > may change without backward compatibility. Pin the version for production and read
12
+ > the changelog before upgrading.
13
+
14
+ ## Install
15
+
16
+ ```bash
17
+ pip install eggpipe
18
+ ```
19
+
20
+ Python 3.11+ is required.
21
+
22
+ Optional extras:
23
+
24
+ ```bash
25
+ pip install "eggpipe[watch]" # watch mode
26
+ pip install "eggpipe[jinja]" # Jinja2 helper for plugins
27
+ ```
28
+
29
+ ## CLI
30
+
31
+ ```bash
32
+ eggpipe init
33
+ eggpipe generate model.yaml
34
+ eggpipe generate --plan
35
+ eggpipe generate --check
36
+ eggpipe watch model.yaml
37
+ ```
38
+
39
+ ## Library
40
+
41
+ ```python
42
+ from eggpipe import AppConfig, Engine, ProjectConfigLoader
43
+
44
+ rules = ProjectConfigLoader().load(".eggpipe.yaml")
45
+ engine = Engine(AppConfig(), rules)
46
+
47
+ report = engine.build() # parse, validate and generate without writing
48
+ report = engine.generate() # build + write artifacts
49
+ report = engine.check() # check drift without writing
50
+
51
+ if not report.success:
52
+ for diagnostic in report.diagnostics:
53
+ print(diagnostic.code, diagnostic.message)
54
+ ```
55
+
56
+ ## Plugins
57
+
58
+ Generators and document formats are plugins registered through entry points:
59
+
60
+ ```toml
61
+ [project.entry-points."eggpipe.generators"]
62
+ my-generator = "my_package:my_generator"
63
+
64
+ [project.entry-points."eggpipe.formats"]
65
+ sql-model = "my_package:SqlModelFormat"
66
+ ```
67
+
68
+ ## Documentation
69
+
70
+ - [Documentation](https://github.com/SpiGit/eggpipe/tree/main/docs)
71
+ - [Quick start](https://github.com/SpiGit/eggpipe/blob/main/docs/user/quickstart.md)
72
+ - [CLI reference](https://github.com/SpiGit/eggpipe/blob/main/docs/user/cli.md)
73
+ - [Plugin guide](https://github.com/SpiGit/eggpipe/blob/main/docs/user/plugins.md)
74
+ - [Changelog](https://github.com/SpiGit/eggpipe/blob/main/CHANGELOG.md)
75
+ - [Issues](https://github.com/SpiGit/eggpipe/issues)
76
+
77
+ ## License
78
+
79
+ MIT
@@ -205,5 +205,5 @@ uv run python tools/check_docs.py --strict
205
205
 
206
206
  ## Статус
207
207
 
208
- **Стадия:** Eggpipe 0.3.0, ТЗ v2.2. Реализованы E0–E8 и E9: пакет/CLI/config/state,
209
- форматы и слои, decorator API, глобальный manifest, CLI/JSON v2, CI и release workflow.
208
+ **Стадия:** Eggpipe 0.3.1, ТЗ v2.2. Реализованы E0–E9, пакет опубликован на PyPI:
209
+ CLI/config/state, форматы и слои, decorator API, глобальный manifest, CLI/JSON v2, CI и release workflow.
@@ -8,7 +8,7 @@
8
8
  - Package/import/CLI: `eggpipe`.
9
9
  - Конфиг: `.eggpipe.yaml`; state: `.eggpipe/`.
10
10
  - Актуальное ТЗ: `engineering/requirements/v2.2.md`.
11
- - Версия пакета: `0.3.0`; версия ТЗ: `2.2`.
11
+ - Версия пакета: `0.3.1`; версия ТЗ: `2.2`.
12
12
  - Статус: beta (0.x); до 1.0 breaking changes возможны (ADR-0014).
13
13
  - Brand assets: `docs/assets/brand/`.
14
14
 
@@ -14,7 +14,7 @@
14
14
  - Package/import/CLI: `eggpipe`.
15
15
  - Конфиг: `.eggpipe.yaml`; state: `.eggpipe/`.
16
16
  - Актуальное ТЗ: `engineering/requirements/v2.2.md`.
17
- - Версия пакета: `0.3.0`; версия ТЗ: `2.2`.
17
+ - Версия пакета: `0.3.1`; версия ТЗ: `2.2`.
18
18
  - Статус: beta (0.x); до 1.0 breaking changes возможны (ADR-0014).
19
19
  - Brand assets: `docs/assets/brand/`.
20
20
 
@@ -289,13 +289,13 @@ generators:
289
289
 
290
290
  ## Как обновляться
291
291
 
292
- 1. Зафиксируйте точную версию, например `eggpipe==0.3.0`.
292
+ 1. Зафиксируйте точную версию, например `eggpipe==0.3.1`.
293
293
  2. Прочитайте `CHANGELOG.md` перед обновлением.
294
294
  3. Прогоните `eggpipe generate --check` в CI, чтобы поймать drift артефактов.
295
295
 
296
296
  ## Миграция с v1.x
297
297
 
298
- Публичного релиза v1.x не было, поэтому миграция не требуется. Все версии до 0.3.0
298
+ Публичного релиза v1.x не было, поэтому миграция не требуется. Все версии до 0.3.1
299
299
  относятся к разработке проекта.
300
300
 
301
301
  ## После 1.0
@@ -98,7 +98,7 @@
98
98
  "path": "engineering/system-design/index.md"
99
99
  }
100
100
  ],
101
- "package_version": "0.3.0",
101
+ "package_version": "0.3.1",
102
102
  "project": "eggpipe",
103
103
  "public_api": [
104
104
  "AppConfig",
@@ -19,13 +19,13 @@
19
19
 
20
20
  ## Как обновляться
21
21
 
22
- 1. Зафиксируйте точную версию, например `eggpipe==0.3.0`.
22
+ 1. Зафиксируйте точную версию, например `eggpipe==0.3.1`.
23
23
  2. Прочитайте `CHANGELOG.md` перед обновлением.
24
24
  3. Прогоните `eggpipe generate --check` в CI, чтобы поймать drift артефактов.
25
25
 
26
26
  ## Миграция с v1.x
27
27
 
28
- Публичного релиза v1.x не было, поэтому миграция не требуется. Все версии до 0.3.0
28
+ Публичного релиза v1.x не было, поэтому миграция не требуется. Все версии до 0.3.1
29
29
  относятся к разработке проекта.
30
30
 
31
31
  ## После 1.0
@@ -27,7 +27,7 @@ CI-проверки и автоматизация.
27
27
  может расширяться, а условия срабатывания — уточняться.
28
28
  - Сгенерированные файлы не являются публичным API: шаблоны и структура вывода могут
29
29
  меняться между версиями.
30
- - Для production рекомендуется фиксировать точную версию (`eggpipe==0.3.0`) и читать
30
+ - Для production рекомендуется фиксировать точную версию (`eggpipe==0.3.1`) и читать
31
31
  `CHANGELOG.md` перед обновлением.
32
32
  - После выпуска **1.0** проект переходит на обычные гарантии SemVer: breaking changes —
33
33
  только в major-версиях.
@@ -188,7 +188,7 @@
188
188
  - [x] `uv build`/`check_wheel`.
189
189
  - [x] CI: example install, config names.
190
190
  - [x] Release docs: PyPI name `eggpipe`, trusted publisher, repo name.
191
- - [x] Версия пакета: 0.3.0.
191
+ - [x] Версия пакета: 0.3.1.
192
192
 
193
193
  **Критерий:** все проверки зелёные; release workflow готов.
194
194
 
@@ -240,6 +240,6 @@
240
240
  - [x] `check_docs --strict`, `mkdocs --strict`.
241
241
  - [x] `ruff`, `pyrefly`, `pytest --cov`.
242
242
  - [x] `uv build`, `check_wheel`.
243
- - [ ] `eggpipe` install/run из PyPI.
243
+ - [x] `eggpipe` install/run из PyPI.
244
244
  - [x] TPC-H golden.
245
245
  - [x] Release checklist обновлён.
@@ -26,11 +26,13 @@
26
26
 
27
27
  ## Публикация
28
28
 
29
+ Тег ставится только на `main` после merge release PR. Прямой push в `main` запрещён.
30
+
29
31
  Релиз запускается тегом:
30
32
 
31
33
  ```bash
32
- git tag v0.3.0
33
- git push origin v0.3.0
34
+ git tag v0.3.1
35
+ git push origin v0.3.1
34
36
  ```
35
37
 
36
38
  Workflow `.github/workflows/release.yml`:
@@ -56,7 +58,7 @@ Workflow `.github/workflows/release.yml`:
56
58
  5. Запушить тег:
57
59
 
58
60
  ```bash
59
- git push origin v0.3.0
61
+ git push origin v0.3.1
60
62
  ```
61
63
 
62
64
  Без `PYPI_PUBLISH=true` артефакты публикуются только в GitHub Release.
@@ -1249,7 +1249,7 @@ class ExecutionPlan:
1249
1249
  {
1250
1250
  "generator": "oracle-ddl",
1251
1251
  "output_dir": "output/oracle",
1252
- "eggpipe_version": "0.3.0",
1252
+ "eggpipe_version": "0.3.1",
1253
1253
  "plugin_version": "1.2.0",
1254
1254
  "formats": [{"name": "entity-model", "version": "1.0"}],
1255
1255
  "generated_at": "2026-11-11T12:34:56Z",
@@ -1478,7 +1478,7 @@ def test_invalid_models_produce_expected_code(data) -> None:
1478
1478
  ```toml
1479
1479
  [project]
1480
1480
  name = "eggpipe"
1481
- version = "0.3.0"
1481
+ version = "0.3.1"
1482
1482
  description = "CLI tool and library for metadata-driven code generation"
1483
1483
  readme = "README.md"
1484
1484
  license = "MIT"
@@ -4,9 +4,9 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "eggpipe"
7
- version = "0.3.0"
7
+ version = "0.3.1"
8
8
  description = "CLI tool and library for metadata-driven code generation"
9
- readme = "README.md"
9
+ readme = "README-pypi.md"
10
10
  license = "MIT"
11
11
  license-files = ["LICENSE"]
12
12
  requires-python = ">=3.11"
@@ -1,3 +1,3 @@
1
1
  """Package version in one place."""
2
2
 
3
- __version__ = "0.3.0"
3
+ __version__ = "0.3.1"
@@ -14,7 +14,7 @@ from eggpipe.utils.exceptions import LockError, ManifestError
14
14
 
15
15
 
16
16
  def writer(tmp_path: Path) -> ArtifactWriter:
17
- return ArtifactWriter(eggpipe_version="0.3.0", config_dir=tmp_path)
17
+ return ArtifactWriter(eggpipe_version="0.3.1", config_dir=tmp_path)
18
18
 
19
19
 
20
20
  def plan_for(
@@ -14,9 +14,9 @@ def test_dependency_name_normalizes_distribution_names() -> None:
14
14
  def test_relative_sdist_names_strips_root_prefix() -> None:
15
15
  names = relative_sdist_names(
16
16
  [
17
- "eggpipe-0.3.0/pyproject.toml",
18
- "eggpipe-0.3.0/src/eggpipe/__init__.py",
19
- "eggpipe-0.3.0",
17
+ "eggpipe-0.3.1/pyproject.toml",
18
+ "eggpipe-0.3.1/src/eggpipe/__init__.py",
19
+ "eggpipe-0.3.1",
20
20
  ]
21
21
  )
22
22
  assert names == {
@@ -6,7 +6,7 @@ import eggpipe
6
6
 
7
7
 
8
8
  def test_version() -> None:
9
- assert eggpipe.__version__ == "0.3.0"
9
+ assert eggpipe.__version__ == "0.3.1"
10
10
 
11
11
 
12
12
  def test_public_api_exports_core_models() -> None:
@@ -50,6 +50,7 @@ REQUIRED_FILES = (
50
50
  ".github/workflows/release.yml",
51
51
  "AGENTS.md",
52
52
  "README.md",
53
+ "README-pypi.md",
53
54
  "CHANGELOG.md",
54
55
  "CONTRIBUTING.md",
55
56
  "LICENSE",
@@ -30,6 +30,7 @@ REQUIRED_WHEEL_FILES = {
30
30
  REQUIRED_SDIST_FILES = {
31
31
  "pyproject.toml",
32
32
  "README.md",
33
+ "README-pypi.md",
33
34
  "LICENSE",
34
35
  "src/eggpipe/__init__.py",
35
36
  "src/eggpipe/py.typed",