instant-python 0.19.0__tar.gz → 0.19.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.
- {instant_python-0.19.0 → instant_python-0.19.1}/CHANGELOG.md +115 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/PKG-INFO +1 -1
- instant_python-0.19.1/instant_python/__init__.py +1 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/event_bus/event_aggregate.py +2 -1
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/pyproject.toml +1 -1
- instant_python-0.19.1/instant_python/templates/project_structure/clean_architecture/layers/application.yml.j2 +3 -0
- instant_python-0.19.1/instant_python/templates/project_structure/clean_architecture/layers/delivery.yml.j2 +8 -0
- instant_python-0.19.1/instant_python/templates/project_structure/clean_architecture/layers/domain.yml.j2 +10 -0
- instant_python-0.19.1/instant_python/templates/project_structure/clean_architecture/layers/infra.yml.j2 +12 -0
- instant_python-0.19.1/instant_python/templates/project_structure/clean_architecture/layers/test_application.yml.j2 +3 -0
- instant_python-0.19.1/instant_python/templates/project_structure/clean_architecture/layers/test_delivery.yml.j2 +3 -0
- instant_python-0.19.1/instant_python/templates/project_structure/clean_architecture/layers/test_domain.yml.j2 +3 -0
- instant_python-0.19.1/instant_python/templates/project_structure/clean_architecture/layers/test_infra.yml.j2 +9 -0
- instant_python-0.19.1/instant_python/templates/project_structure/clean_architecture/main_structure.yml.j2 +38 -0
- instant_python-0.19.1/instant_python/templates/project_structure/clean_architecture/source.yml.j2 +9 -0
- instant_python-0.19.1/instant_python/templates/project_structure/clean_architecture/test.yml.j2 +9 -0
- {instant_python-0.19.0/instant_python/templates/project_structure/domain_driven_design → instant_python-0.19.1/instant_python/templates/project_structure/domain_driven_design/layers}/bounded_context.yml.j2 +0 -3
- instant_python-0.19.1/instant_python/templates/project_structure/domain_driven_design/layers/delivery.yml.j2 +8 -0
- instant_python-0.19.1/instant_python/templates/project_structure/domain_driven_design/layers/shared.yml.j2 +18 -0
- instant_python-0.19.1/instant_python/templates/project_structure/domain_driven_design/layers/shared_domain.yml.j2 +10 -0
- instant_python-0.19.1/instant_python/templates/project_structure/domain_driven_design/layers/shared_infra.yml.j2 +12 -0
- instant_python-0.19.1/instant_python/templates/project_structure/domain_driven_design/layers/test_shared.yml.j2 +8 -0
- instant_python-0.19.1/instant_python/templates/project_structure/domain_driven_design/layers/test_shared_delivery.yml.j2 +3 -0
- instant_python-0.19.1/instant_python/templates/project_structure/domain_driven_design/layers/test_shared_domain.yml.j2 +3 -0
- instant_python-0.19.1/instant_python/templates/project_structure/domain_driven_design/layers/test_shared_infra.yml.j2 +9 -0
- instant_python-0.19.1/instant_python/templates/project_structure/domain_driven_design/main_structure.yml.j2 +38 -0
- instant_python-0.19.1/instant_python/templates/project_structure/domain_driven_design/source.yml.j2 +10 -0
- instant_python-0.19.1/instant_python/templates/project_structure/domain_driven_design/test.yml.j2 +9 -0
- {instant_python-0.19.0/instant_python/templates/project_structure → instant_python-0.19.1/instant_python/templates/project_structure/events}/event_bus_domain.yml.j2 +0 -8
- instant_python-0.19.1/instant_python/templates/project_structure/events/mock_event_bus.yml.j2 +4 -0
- instant_python-0.19.1/instant_python/templates/project_structure/macros.j2 +73 -0
- instant_python-0.19.1/instant_python/templates/project_structure/persistence/alembic_migrator.yml.j2 +6 -0
- instant_python-0.19.1/instant_python/templates/project_structure/persistence/async_engine_conftest.yml.j2 +4 -0
- {instant_python-0.19.0/instant_python/templates/project_structure → instant_python-0.19.1/instant_python/templates/project_structure/persistence}/async_sqlalchemy.yml.j2 +1 -1
- instant_python-0.19.1/instant_python/templates/project_structure/standard_project/layers/source_features.yml.j2 +13 -0
- instant_python-0.19.1/instant_python/templates/project_structure/standard_project/layers/test_event_bus.yml.j2 +6 -0
- instant_python-0.19.1/instant_python/templates/project_structure/standard_project/layers/test_features.yml.j2 +6 -0
- instant_python-0.19.1/instant_python/templates/project_structure/standard_project/main_structure.yml.j2 +38 -0
- instant_python-0.19.1/instant_python/templates/project_structure/standard_project/source.yml.j2 +5 -0
- instant_python-0.19.1/instant_python/templates/project_structure/standard_project/test.yml.j2 +5 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/pyproject.toml +1 -1
- {instant_python-0.19.0 → instant_python-0.19.1}/uv.lock +1 -1
- instant_python-0.19.0/instant_python/__init__.py +0 -1
- instant_python-0.19.0/instant_python/templates/project_structure/alembic_migrator.yml.j2 +0 -6
- instant_python-0.19.0/instant_python/templates/project_structure/clean_architecture/main_structure.yml.j2 +0 -39
- instant_python-0.19.0/instant_python/templates/project_structure/clean_architecture/source.yml.j2 +0 -51
- instant_python-0.19.0/instant_python/templates/project_structure/clean_architecture/test.yml.j2 +0 -36
- instant_python-0.19.0/instant_python/templates/project_structure/domain_driven_design/main_structure.yml.j2 +0 -39
- instant_python-0.19.0/instant_python/templates/project_structure/domain_driven_design/source.yml.j2 +0 -57
- instant_python-0.19.0/instant_python/templates/project_structure/domain_driven_design/test.yml.j2 +0 -36
- instant_python-0.19.0/instant_python/templates/project_structure/macros.j2 +0 -6
- instant_python-0.19.0/instant_python/templates/project_structure/standard_project/main_structure.yml.j2 +0 -39
- instant_python-0.19.0/instant_python/templates/project_structure/standard_project/source.yml.j2 +0 -28
- instant_python-0.19.0/instant_python/templates/project_structure/standard_project/test.yml.j2 +0 -23
- {instant_python-0.19.0 → instant_python-0.19.1}/.github/FUNDING.yml +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/.github/actions/python_setup/action.yml +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/.github/pull_request_template.md +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/.github/workflows/ci.yml +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/.github/workflows/pages.yml +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/.github/workflows/release.yml +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/.gitignore +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/.pre-commit-config.yaml +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/.python-version +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/CITATION.cff +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/LICENSE +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/README.md +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/SECURITY.md +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/codeql-config.yml +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/docs/assets/favicon.svg +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/docs/assets/logo.svg +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/docs/changelog/.components/changelog_header.md.j2 +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/docs/changelog/.components/changelog_init.md.j2 +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/docs/changelog/.components/changelog_update.md.j2 +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/docs/changelog/.components/changes.md.j2 +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/docs/changelog/.components/first_release.md.j2 +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/docs/changelog/.components/macros.md.j2 +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/docs/changelog/.components/versioned_changes.md.j2 +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/docs/changelog/.release_notes.md.j2 +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/docs/changelog/CHANGELOG.md.j2 +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/docs/development/contributing.md +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/docs/development/releases.md +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/docs/development/security.md +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/docs/downloads_macro.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/docs/getting_started/first_steps.md +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/docs/getting_started/installation.md +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/docs/guide/command_config.md +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/docs/guide/command_init.md +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/docs/guide/custom_projects.md +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/docs/guide/default_features.md +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/docs/guide/index.md +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/docs/home/index.md +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/cli/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/cli/cli.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/cli/instant_python_typer.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/config/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/config/application/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/config/application/config_generator.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/config/delivery/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/config/delivery/cli.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/config/domain/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/config/domain/config_writer.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/config/domain/question_wizard.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/config/infra/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/config/infra/question_wizard/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/config/infra/question_wizard/questionary_console_wizard.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/config/infra/question_wizard/step/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/config/infra/question_wizard/step/dependencies_step.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/config/infra/question_wizard/step/general_step.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/config/infra/question_wizard/step/git_step.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/config/infra/question_wizard/step/questionary.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/config/infra/question_wizard/step/steps.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/config/infra/question_wizard/step/template_step.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/config/infra/writer/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/config/infra/writer/yaml_config_writer.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/initialize/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/initialize/application/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/initialize/application/project_initializer.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/initialize/delivery/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/initialize/delivery/cli.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/initialize/domain/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/initialize/domain/config_repository.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/initialize/domain/env_manager.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/initialize/domain/node.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/initialize/domain/project_formatter.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/initialize/domain/project_renderer.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/initialize/domain/project_structure.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/initialize/domain/project_writer.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/initialize/domain/version_control_configurer.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/initialize/infra/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/initialize/infra/env_manager/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/initialize/infra/env_manager/env_manager_factory.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/initialize/infra/env_manager/pdm_env_manager.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/initialize/infra/env_manager/system_console.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/initialize/infra/env_manager/uv_env_manager.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/initialize/infra/formatter/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/initialize/infra/formatter/ruff_project_formatter.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/initialize/infra/persistence/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/initialize/infra/persistence/yaml_config_repository.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/initialize/infra/renderer/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/initialize/infra/renderer/jinja_environment.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/initialize/infra/renderer/jinja_project_renderer.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/initialize/infra/version_control/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/initialize/infra/version_control/git_configurer.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/initialize/infra/writer/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/initialize/infra/writer/file_system_project_writer.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/shared/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/shared/application_error.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/shared/domain/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/shared/domain/config_schema.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/shared/domain/dependency_config.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/shared/domain/general_config.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/shared/domain/git_config.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/shared/domain/template_config.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/shared/supported_built_in_features.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/shared/supported_licenses.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/shared/supported_managers.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/shared/supported_python_versions.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/shared/supported_templates.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/.gitignore +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/.pre-commit-config.yml +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/.python-version +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/CITATION.cff +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/LICENSE +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/README.md +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/SECURITY.md +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/event_bus/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/event_bus/domain_event.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/event_bus/domain_event_json_deserializer.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/event_bus/domain_event_json_serializer.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/event_bus/domain_event_subscriber.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/event_bus/event_bus.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/event_bus/exchange_type.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/event_bus/mock_event_bus.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/event_bus/rabbit_mq_configurer.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/event_bus/rabbit_mq_connection.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/event_bus/rabbit_mq_consumer.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/event_bus/rabbit_mq_event_bus.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/event_bus/rabbit_mq_queue_formatter.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/event_bus/rabbit_mq_settings.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/exceptions/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/exceptions/base_error.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/exceptions/domain_error.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/exceptions/domain_event_type_not_found_error.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/exceptions/rabbit_mq_connection_not_established_error.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/exceptions/required_value_error.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/fastapi/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/fastapi/application.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/fastapi/error_handlers.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/fastapi/error_response.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/fastapi/fastapi_log_middleware.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/fastapi/lifespan.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/fastapi/success_response.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/github/action.yml +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/github/bug_report.yml +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/github/ci.yml +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/github/feature_request.yml +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/github/release.yml +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/logger/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/logger/file_logger.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/logger/file_rotating_handler.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/logger/json_formatter.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/mypy.ini +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/persistence/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/persistence/alembic_migrator.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/persistence/async/README.md +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/persistence/async/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/persistence/async/alembic.ini +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/persistence/async/async_engine_fixture.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/persistence/async/async_session.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/persistence/async/env.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/persistence/async/models_metadata.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/persistence/async/postgres_settings.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/persistence/async/script.py.mako +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/persistence/async/sqlalchemy_repository.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/persistence/base.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/persistence/synchronous/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/persistence/synchronous/session_maker.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/persistence/synchronous/sqlalchemy_repository.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/pytest.ini +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/scripts/add_dependency.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/scripts/create_aggregate.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/scripts/insert_template.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/scripts/integration.sh +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/scripts/local_setup.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/scripts/makefile +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/scripts/post-merge.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/scripts/pre-commit.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/scripts/pre-push.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/scripts/remove_dependency.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/scripts/unit.sh +0 -0
- {instant_python-0.19.0/instant_python/templates/project_structure → instant_python-0.19.1/instant_python/templates/project_structure/config_files}/gitignore.yml.j2 +0 -0
- {instant_python-0.19.0/instant_python/templates/project_structure → instant_python-0.19.1/instant_python/templates/project_structure/config_files}/mypy.yml.j2 +0 -0
- {instant_python-0.19.0/instant_python/templates/project_structure → instant_python-0.19.1/instant_python/templates/project_structure/config_files}/pyproject.yml.j2 +0 -0
- {instant_python-0.19.0/instant_python/templates/project_structure → instant_python-0.19.1/instant_python/templates/project_structure/config_files}/pytest.yml.j2 +0 -0
- {instant_python-0.19.0/instant_python/templates/project_structure → instant_python-0.19.1/instant_python/templates/project_structure/config_files}/python_version.yml.j2 +0 -0
- {instant_python-0.19.0/instant_python/templates/project_structure → instant_python-0.19.1/instant_python/templates/project_structure/documentation}/citation.yml.j2 +0 -0
- {instant_python-0.19.0/instant_python/templates/project_structure → instant_python-0.19.1/instant_python/templates/project_structure/documentation}/license.yml.j2 +0 -0
- {instant_python-0.19.0/instant_python/templates/project_structure → instant_python-0.19.1/instant_python/templates/project_structure/documentation}/readme.yml.j2 +0 -0
- {instant_python-0.19.0/instant_python/templates/project_structure → instant_python-0.19.1/instant_python/templates/project_structure/documentation}/security.yml.j2 +0 -0
- /instant_python-0.19.0/instant_python/templates/project_structure/value_objects.yml.j2 → /instant_python-0.19.1/instant_python/templates/project_structure/errors.yml.j2 +0 -0
- {instant_python-0.19.0/instant_python/templates/project_structure → instant_python-0.19.1/instant_python/templates/project_structure/events}/event_bus_infra.yml.j2 +0 -0
- {instant_python-0.19.0/instant_python/templates/project_structure → instant_python-0.19.1/instant_python/templates/project_structure/fastapi}/fastapi_app.yml.j2 +0 -0
- {instant_python-0.19.0/instant_python/templates/project_structure → instant_python-0.19.1/instant_python/templates/project_structure/fastapi}/fastapi_domain.yml.j2 +0 -0
- {instant_python-0.19.0/instant_python/templates/project_structure → instant_python-0.19.1/instant_python/templates/project_structure/fastapi}/fastapi_infra.yml.j2 +0 -0
- {instant_python-0.19.0/instant_python/templates/project_structure → instant_python-0.19.1/instant_python/templates/project_structure/github}/github_action.yml.j2 +0 -0
- {instant_python-0.19.0/instant_python/templates/project_structure → instant_python-0.19.1/instant_python/templates/project_structure/github}/github_issues_template.yml.j2 +0 -0
- {instant_python-0.19.0/instant_python/templates/project_structure → instant_python-0.19.1/instant_python/templates/project_structure/github}/makefile.yml.j2 +0 -0
- {instant_python-0.19.0/instant_python/templates/project_structure → instant_python-0.19.1/instant_python/templates/project_structure/github}/precommit_hook.yml.j2 +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/project_structure/logger.yml.j2 +0 -0
- {instant_python-0.19.0/instant_python/templates/project_structure → instant_python-0.19.1/instant_python/templates/project_structure/persistence}/async_alembic.yml.j2 +0 -0
- {instant_python-0.19.0/instant_python/templates/project_structure → instant_python-0.19.1/instant_python/templates/project_structure/persistence}/persistence.yml.j2 +0 -0
- {instant_python-0.19.0/instant_python/templates/project_structure → instant_python-0.19.1/instant_python/templates/project_structure/persistence}/synchronous_sqlalchemy.yml.j2 +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/makefile +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/mkdocs.yml +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/mypy.ini +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/scripts/add_dependency.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/scripts/remove_dependency.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/cli/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/cli/test_version_command.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/config/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/config/application/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/config/application/test_config_generator.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/config/infra/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/config/infra/writer/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/config/infra/writer/test_yaml_config_writer.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/initialize/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/initialize/application/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/initialize/application/test_project_initializer.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/initialize/delivery/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/initialize/delivery/approvaltests_config.json +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/initialize/delivery/approved_files/TestInitCli.test_should_initialize_project_with_custom_project_structure.approved.txt +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/initialize/delivery/approved_files/TestInitCli.test_should_initialize_project_with_general_section_combinations.approved.txt +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/initialize/delivery/approved_files/TestInitCli.test_should_initialize_project_with_git_section_combinations.approved.txt +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/initialize/delivery/approved_files/TestInitCli.test_should_initialize_project_with_predefined_dependencies_and_different_managers.approved.txt +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/initialize/delivery/approved_files/TestInitCli.test_should_initialize_project_with_template_section_combinations.approved.txt +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/initialize/delivery/test_init_cli.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/initialize/domain/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/initialize/domain/mothers/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/initialize/domain/mothers/node_mother.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/initialize/domain/mothers/project_structure_mother.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/initialize/domain/test_node.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/initialize/infra/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/initialize/infra/env_manager/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/initialize/infra/env_manager/mother/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/initialize/infra/env_manager/mother/command_execution_result_mother.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/initialize/infra/env_manager/test_pdm_env_manager.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/initialize/infra/env_manager/test_system_console.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/initialize/infra/env_manager/test_uv_env_manager.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/initialize/infra/formatter/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/initialize/infra/formatter/test_ruff_project_formatter.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/initialize/infra/persistence/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/initialize/infra/persistence/approvaltests_config.json +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/initialize/infra/persistence/approved_files/TestYamlConfigRepository.test_should_read_existing_config_file.approved.txt +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/initialize/infra/persistence/test_yaml_config_repository.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/initialize/infra/renderer/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/initialize/infra/renderer/test_jinja_environment.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/initialize/infra/renderer/test_jinja_project_renderer.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/initialize/infra/version_control/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/initialize/infra/version_control/test_git_configurer.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/initialize/infra/writer/TestFileSystemProjectWriter.test_should_create_file_in_file_system.approved.txt +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/initialize/infra/writer/TestFileSystemProjectWriter.test_should_create_python_module_in_file_system.approved.txt +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/initialize/infra/writer/TestFileSystemProjectWriter.test_should_create_standard_directory_in_file_system.approved.txt +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/initialize/infra/writer/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/initialize/infra/writer/test_file_system_project_writer.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/random_generator.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/resources/base_ipy_config.yml +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/resources/domain_error_template.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/resources/hello_world.j2 +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/resources/main_structure.yml.j2 +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/resources/standard_project/main_structure.yml.j2 +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/shared/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/shared/domain/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/shared/domain/mothers/__init__.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/shared/domain/mothers/config_schema_mother.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/shared/domain/mothers/dependency_config_mother.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/shared/domain/mothers/general_config_mother.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/shared/domain/mothers/git_config_mother.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/shared/domain/mothers/template_config_mother.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/shared/domain/test_config_schema.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/shared/domain/test_dependency_config.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/shared/domain/test_general_config.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/shared/domain/test_git_config.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/shared/domain/test_template_configuration.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/test/utils.py +0 -0
- {instant_python-0.19.0 → instant_python-0.19.1}/tox.ini +0 -0
|
@@ -2,6 +2,121 @@
|
|
|
2
2
|
|
|
3
3
|
<!-- version list -->
|
|
4
4
|
|
|
5
|
+
## v0.19.1 (2025-11-27)
|
|
6
|
+
|
|
7
|
+
### 🪲 Bug Fixes
|
|
8
|
+
|
|
9
|
+
- **templates**: Correct indentation level for source and test templates in standard project
|
|
10
|
+
([`54b36ca`](https://github.com/dimanu-py/instant-python/commit/54b36cac14dc9a12157223207b47236b063262ef))
|
|
11
|
+
|
|
12
|
+
- **templates**: Remove aggregate and value object file from event bus folder structure now that
|
|
13
|
+
these implementation have delegated to sindripy
|
|
14
|
+
([`13a7780`](https://github.com/dimanu-py/instant-python/commit/13a7780f0263edf83ac5751c26bf6d5f04073b2a))
|
|
15
|
+
|
|
16
|
+
- **templates**: Modify EventAggregate template to use Aggregate from sindripy instead of legacy
|
|
17
|
+
aggregate that doesn't exist anymore
|
|
18
|
+
([`dcbf2d3`](https://github.com/dimanu-py/instant-python/commit/dcbf2d3f913327a2f909ab48526f32c958e26db2))
|
|
19
|
+
|
|
20
|
+
- **templates**: Include sindripy dependency when event bus feature is selected to be able to use
|
|
21
|
+
the Aggregate implementation
|
|
22
|
+
([`b5c3000`](https://github.com/dimanu-py/instant-python/commit/b5c30002596fc639316f93d403b4bedc18cb1e7c))
|
|
23
|
+
|
|
24
|
+
### ♻️ Refactoring
|
|
25
|
+
|
|
26
|
+
- **templates**: Rename value objects template to errors now that it only contains errors and value
|
|
27
|
+
objects are handled with sindripy
|
|
28
|
+
([`df8458b`](https://github.com/dimanu-py/instant-python/commit/df8458b18497574f48a075550e3d75e0a11e58e1))
|
|
29
|
+
|
|
30
|
+
- **templates**: Move new advanced macros to root of templates folder and use it along project
|
|
31
|
+
structure templates
|
|
32
|
+
([`736314c`](https://github.com/dimanu-py/instant-python/commit/736314c5612b7d7518e780d8026951372a189755))
|
|
33
|
+
|
|
34
|
+
- **templates**: Remove legacy templates now that they are better organized
|
|
35
|
+
([`c1b6c44`](https://github.com/dimanu-py/instant-python/commit/c1b6c44a04837f06db6a4db91d1e6d389b352be5))
|
|
36
|
+
|
|
37
|
+
- **templates**: Update main templates for standard project structure using new macros and organized
|
|
38
|
+
templates folder
|
|
39
|
+
([`4fe22f3`](https://github.com/dimanu-py/instant-python/commit/4fe22f3b4bb4efca55531b52b8612aa29d2a3047))
|
|
40
|
+
|
|
41
|
+
- **templates**: Add advanced macros to be able to reuse render logic for templates and avoid
|
|
42
|
+
conditionals
|
|
43
|
+
([`76cc909`](https://github.com/dimanu-py/instant-python/commit/76cc9090ef73f7e17ef7736ec64a50a86d6dea65))
|
|
44
|
+
|
|
45
|
+
- **templates**: Separate and modularize structure of standard project template in layers
|
|
46
|
+
([`7123c85`](https://github.com/dimanu-py/instant-python/commit/7123c85bfbbabecd0ad1245b58ac668546343721))
|
|
47
|
+
|
|
48
|
+
- **templates**: Update main templates for ddd project structure using new macros and organized
|
|
49
|
+
templates folder
|
|
50
|
+
([`613f361`](https://github.com/dimanu-py/instant-python/commit/613f36175902befddf45d8a0b56ef9069ae30df1))
|
|
51
|
+
|
|
52
|
+
- **templates**: Add advanced macros to be able to reuse render logic for templates and avoid
|
|
53
|
+
conditionals
|
|
54
|
+
([`f96a178`](https://github.com/dimanu-py/instant-python/commit/f96a1787d978e6e56fae478a26ddf6d858f14da9))
|
|
55
|
+
|
|
56
|
+
- **templates**: Separate and modularize structure of ddd template in layers
|
|
57
|
+
([`66044d5`](https://github.com/dimanu-py/instant-python/commit/66044d56011e28b695b5a0b7af591415732ad426))
|
|
58
|
+
|
|
59
|
+
- **templates**: Move config files for projects templates to specific folder for better organization
|
|
60
|
+
([`5bc4e15`](https://github.com/dimanu-py/instant-python/commit/5bc4e15fcbdd6f20eaf69ffe24ae92866175c138))
|
|
61
|
+
|
|
62
|
+
- **templates**: Move github related templates to specific folder for better organization
|
|
63
|
+
([`ee42c25`](https://github.com/dimanu-py/instant-python/commit/ee42c2556037af6ba69bb0a973cf67c0659b9e0e))
|
|
64
|
+
|
|
65
|
+
- **templates**: Move fastapi templates to specific folders for better organization
|
|
66
|
+
([`7437c95`](https://github.com/dimanu-py/instant-python/commit/7437c9513f7e963e41f51a28a6ba90a432cef12c))
|
|
67
|
+
|
|
68
|
+
- **templates**: Move documentation templates such as readme, citation and security to specific
|
|
69
|
+
folders for better organization
|
|
70
|
+
([`3608d27`](https://github.com/dimanu-py/instant-python/commit/3608d2777cd324a51f3d841cd5c92a651d6ee7e5))
|
|
71
|
+
|
|
72
|
+
- **templates**: Modify test structure to include application folder too
|
|
73
|
+
([`b0bc458`](https://github.com/dimanu-py/instant-python/commit/b0bc45873d3ee57b86282fccba8ddc89b54a1d80))
|
|
74
|
+
|
|
75
|
+
- **templates**: Remove conditional logic to include features in infra tests for clean architecture
|
|
76
|
+
and use render_children_for macro to make it clearer and easier to extend
|
|
77
|
+
([`87fe7fc`](https://github.com/dimanu-py/instant-python/commit/87fe7fc32b65f8933699402d508a4770f5a0c748))
|
|
78
|
+
|
|
79
|
+
- **templates**: Update test infra template to include mock event bus from template
|
|
80
|
+
([`20fd887`](https://github.com/dimanu-py/instant-python/commit/20fd88768cd12acaea632bb6af16de37d9a1ae96))
|
|
81
|
+
|
|
82
|
+
- **templates**: Do not include mock event bus in test domain folder for clean architecture template
|
|
83
|
+
([`20e1d73`](https://github.com/dimanu-py/instant-python/commit/20e1d73cf632f022d8541b3ed625217cb17b15b1))
|
|
84
|
+
|
|
85
|
+
- **templates**: Modify template paths for event features pointing to better organized folders
|
|
86
|
+
([`35e56ac`](https://github.com/dimanu-py/instant-python/commit/35e56ac685d7d88fe7d0a3b2dcd54c9c409bde8a))
|
|
87
|
+
|
|
88
|
+
- **templates**: Organize events templates inside a specific folder to keep them better organized
|
|
89
|
+
([`2552a60`](https://github.com/dimanu-py/instant-python/commit/2552a60e49df586ec890a628e51db10002820907))
|
|
90
|
+
|
|
91
|
+
- **templates**: Update template paths in clean architecture project structure to use new organized
|
|
92
|
+
persistence templates
|
|
93
|
+
([`ad4fced`](https://github.com/dimanu-py/instant-python/commit/ad4fced04cc5c127acbd2b2c96d79e514454d9ac))
|
|
94
|
+
|
|
95
|
+
- **templates**: Organize persistence templates inside a specific folder to keep them better
|
|
96
|
+
organized
|
|
97
|
+
([`b3ff817`](https://github.com/dimanu-py/instant-python/commit/b3ff8170ad24c280796a3f21dac341bd4e7be95f))
|
|
98
|
+
|
|
99
|
+
- **templates**: Remove legacy templates for clean architecture structure now that new version is
|
|
100
|
+
stable
|
|
101
|
+
([`d5293fc`](https://github.com/dimanu-py/instant-python/commit/d5293fc4ca28164859521978532554d34f22fa0b))
|
|
102
|
+
|
|
103
|
+
- **templates**: Modify jinja macro to be able to handle cases where one template file has to be
|
|
104
|
+
included in more than once scenario so it's not get created two times
|
|
105
|
+
([`99e6572`](https://github.com/dimanu-py/instant-python/commit/99e6572e16e9388dc5e3491a1b8bc3dbfc11a25e))
|
|
106
|
+
|
|
107
|
+
- **templates**: Rename old main structure, source and test templates files to mark them as legacy
|
|
108
|
+
but having them as backup
|
|
109
|
+
([`2ea3614`](https://github.com/dimanu-py/instant-python/commit/2ea361497d722b2eb15ad57d5bdaf2e44a2c1e6f))
|
|
110
|
+
|
|
111
|
+
- **templates**: Separate clean architecture source and test structure in separate folders to handle
|
|
112
|
+
easily each folder and its features
|
|
113
|
+
([`f92b499`](https://github.com/dimanu-py/instant-python/commit/f92b4992b57ecdf62689b58a044264e298591452))
|
|
114
|
+
|
|
115
|
+
- **templates**: Write advanced macros to render children blocks and built in features for clean
|
|
116
|
+
architecture
|
|
117
|
+
([`720bf69`](https://github.com/dimanu-py/instant-python/commit/720bf694ebfa12105d58f46549977dc072c786aa))
|
|
118
|
+
|
|
119
|
+
|
|
5
120
|
## v0.19.0 (2025-11-24)
|
|
6
121
|
|
|
7
122
|
### ✨ Features
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: instant-python
|
|
3
|
-
Version: 0.19.
|
|
3
|
+
Version: 0.19.1
|
|
4
4
|
Summary: Instant boilerplate generation for Python projects
|
|
5
5
|
Project-URL: documentation, https://dimanu-py.github.io/instant-python/
|
|
6
6
|
Project-URL: repository, https://github.com/dimanu-py/instant-python/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.19.1"
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
+
from sindripy.value_objects import Aggregate
|
|
1
2
|
from {{ general.source_name }}{{ "shared.domain.event.domain_event" | resolve_import_path(template.name) }} import DomainEvent
|
|
2
|
-
from {{ general.source_name }}{{ "shared.domain.value_objects.aggregate" | resolve_import_path(template.name) }} import Aggregate
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
class EventAggregate(Aggregate):
|
|
6
6
|
_domain_events: list[DomainEvent]
|
|
7
7
|
|
|
8
8
|
def __init__(self) -> None:
|
|
9
|
+
super().__init__()
|
|
9
10
|
self._domain_events = []
|
|
10
11
|
|
|
11
12
|
def record(self, event: DomainEvent) -> None:
|
{instant_python-0.19.0 → instant_python-0.19.1}/instant_python/templates/boilerplate/pyproject.toml
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{% set feature_to_main_dependencies = {
|
|
2
2
|
"async_sqlalchemy": ["sqlalchemy", "asyncpg", "psycopg2-binary", "pydantic", "pydantic-settings"],
|
|
3
3
|
"async_alembic": ["alembic", "pydantic", "pydantic-settings"],
|
|
4
|
-
"event_bus": ["pika"],
|
|
4
|
+
"event_bus": ["pika", "sindripy"],
|
|
5
5
|
"fastapi_application": ["fastapi[standard]"],
|
|
6
6
|
"value_objects": ["sindripy"]
|
|
7
7
|
} %}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{% import "macros.j2" as macros with context %}
|
|
2
|
+
{%- set delivery_features = [
|
|
3
|
+
{"feature": "fastapi_application", "template": "fastapi/fastapi_app.yml.j2"}
|
|
4
|
+
] %}
|
|
5
|
+
- name: delivery
|
|
6
|
+
type: directory
|
|
7
|
+
python: True
|
|
8
|
+
{{ macros.render_children_for(delivery_features, 2) }}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{% import "macros.j2" as macros with context %}
|
|
2
|
+
{%- set domain_features = [
|
|
3
|
+
{"feature": "value_objects", "template": "errors.yml.j2"},
|
|
4
|
+
{"feature": "event_bus", "template": "events/event_bus_domain.yml.j2"},
|
|
5
|
+
{"feature": "fastapi_application", "template": "fastapi/fastapi_domain.yml.j2"}
|
|
6
|
+
] %}
|
|
7
|
+
- name: domain
|
|
8
|
+
type: directory
|
|
9
|
+
python: True
|
|
10
|
+
{{ macros.render_children_for(domain_features, 2) }}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{% import "macros.j2" as macros with context %}
|
|
2
|
+
{%- set infra_features = [
|
|
3
|
+
{"feature": "event_bus", "template": "events/event_bus_infra.yml.j2"},
|
|
4
|
+
{"feature": "logger", "template": "logger.yml.j2"},
|
|
5
|
+
{"feature": "async_sqlalchemy", "template": "persistence/async_sqlalchemy.yml.j2"},
|
|
6
|
+
{"feature": "async_alembic", "template": "persistence/alembic_migrator.yml.j2"},
|
|
7
|
+
{"feature": "fastapi_application", "template": "fastapi/fastapi_infra.yml.j2"}
|
|
8
|
+
] %}
|
|
9
|
+
- name: infra
|
|
10
|
+
type: directory
|
|
11
|
+
python: True
|
|
12
|
+
{{ macros.render_children_for(infra_features, 2) }}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{% import "macros.j2" as macros with context %}
|
|
2
|
+
{%- set infra_features = [
|
|
3
|
+
{"feature": "event_bus", "template": "events/mock_event_bus.yml.j2"},
|
|
4
|
+
{"feature": "async_sqlalchemy", "template": "persistence/async_engine_conftest.yml.j2"},
|
|
5
|
+
] %}
|
|
6
|
+
- name: infra
|
|
7
|
+
type: directory
|
|
8
|
+
python: True
|
|
9
|
+
{{ macros.render_children_for(infra_features, 2) }}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{% import "macros.j2" as macros with context %}
|
|
2
|
+
{# === Core Project Structure === #}
|
|
3
|
+
{{ macros.include_block("clean_architecture/source.yml.j2", 0) }}
|
|
4
|
+
{{ macros.include_block("clean_architecture/test.yml.j2", 0) }}
|
|
5
|
+
{# === Base Configuration Files === #}
|
|
6
|
+
{{ macros.include_block("config_files/pyproject.yml.j2", 0) }}
|
|
7
|
+
{{ macros.include_block("config_files/python_version.yml.j2", 0) }}
|
|
8
|
+
{{ macros.include_block("documentation/license.yml.j2", 0) }}
|
|
9
|
+
{# === CI/CD and Automation Features === #}
|
|
10
|
+
{% set ci_cd_features = [
|
|
11
|
+
{"feature": "github_actions", "template": "github/github_action.yml.j2"},
|
|
12
|
+
{"feature": "github_actions", "template": "github/makefile.yml.j2"},
|
|
13
|
+
{"feature": "github_issues_template", "template": "github/github_issues_template.yml.j2"},
|
|
14
|
+
{"feature": "makefile", "template": "github/makefile.yml.j2"},
|
|
15
|
+
{"feature": "precommit_hook", "template": "github/precommit_hook.yml.j2"},
|
|
16
|
+
{"feature": "precommit_hook", "template": "github/makefile.yml.j2"}
|
|
17
|
+
] %}
|
|
18
|
+
{{ macros.render_features(ci_cd_features, 0) }}
|
|
19
|
+
{# === Git Features === #}
|
|
20
|
+
{% if git.initialize %}
|
|
21
|
+
{{ macros.include_block("config_files/gitignore.yml.j2", 0) }}
|
|
22
|
+
{{ macros.include_block("documentation/readme.yml.j2", 0) }}
|
|
23
|
+
{% endif %}
|
|
24
|
+
{# === Testing and Type Checking === #}
|
|
25
|
+
{% if dependencies | has_dependency("pytest") %}
|
|
26
|
+
{{ macros.include_block("config_files/pytest.yml.j2", 0) }}
|
|
27
|
+
{% endif %}
|
|
28
|
+
{% if dependencies | has_dependency("mypy") %}
|
|
29
|
+
{{ macros.include_block("config_files/mypy.yml.j2", 0) }}
|
|
30
|
+
{% endif %}
|
|
31
|
+
{# === Database Migration === #}
|
|
32
|
+
{{ macros.render_feature_if_enabled("async_alembic", "persistence/async_alembic.yml.j2", 0) }}
|
|
33
|
+
{# === Documentation and Metadata === #}
|
|
34
|
+
{% set doc_features = [
|
|
35
|
+
{"feature": "citation_file", "template": "documentation/citation.yml.j2"},
|
|
36
|
+
{"feature": "security_file", "template": "documentation/security.yml.j2"}
|
|
37
|
+
] %}
|
|
38
|
+
{{ macros.render_features(doc_features, 0) }}
|
instant_python-0.19.1/instant_python/templates/project_structure/clean_architecture/source.yml.j2
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{% import "macros.j2" as macros with context %}
|
|
2
|
+
- name: {{ general.source_name }}
|
|
3
|
+
type: directory
|
|
4
|
+
python: True
|
|
5
|
+
children:
|
|
6
|
+
{{ macros.include_block("clean_architecture/layers/delivery.yml.j2", 4) }}
|
|
7
|
+
{{ macros.include_block("clean_architecture/layers/domain.yml.j2", 4) }}
|
|
8
|
+
{{ macros.include_block("clean_architecture/layers/application.yml.j2", 4) }}
|
|
9
|
+
{{ macros.include_block("clean_architecture/layers/infra.yml.j2", 4) }}
|
instant_python-0.19.1/instant_python/templates/project_structure/clean_architecture/test.yml.j2
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{% import "macros.j2" as macros with context %}
|
|
2
|
+
- name: test
|
|
3
|
+
type: directory
|
|
4
|
+
python: True
|
|
5
|
+
children:
|
|
6
|
+
{{ macros.include_block("clean_architecture/layers/test_delivery.yml.j2", 4) }}
|
|
7
|
+
{{ macros.include_block("clean_architecture/layers/test_domain.yml.j2", 4) }}
|
|
8
|
+
{{ macros.include_block("clean_architecture/layers/test_application.yml.j2", 4) }}
|
|
9
|
+
{{ macros.include_block("clean_architecture/layers/test_infra.yml.j2", 4) }}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{% import "macros.j2" as macros with context %}
|
|
2
|
+
{%- set delivery_features = [
|
|
3
|
+
{"feature": "fastapi_application", "template": "fastapi/fastapi_app.yml.j2"}
|
|
4
|
+
] %}
|
|
5
|
+
- name: delivery
|
|
6
|
+
type: directory
|
|
7
|
+
python: True
|
|
8
|
+
{{ macros.render_children_for(delivery_features, 2) }}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{% import "macros.j2" as macros with context %}
|
|
2
|
+
{%- set domain_related_features = ["value_objects", "event_bus", "fastapi_application"] %}
|
|
3
|
+
{%- set infra_related_features = ["event_bus", "logger", "async_sqlalchemy", "async_alembic", "fastapi_application"] %}
|
|
4
|
+
{%- set has_domain = domain_related_features | is_in(template.built_in_features) -%}
|
|
5
|
+
{%- set has_infra = infra_related_features | is_in(template.built_in_features) -%}
|
|
6
|
+
- name: shared
|
|
7
|
+
type: directory
|
|
8
|
+
python: True
|
|
9
|
+
{% if has_domain or has_infra %}
|
|
10
|
+
children:
|
|
11
|
+
{% if has_domain %}
|
|
12
|
+
{{ macros.include_block("domain_driven_design/layers/shared_domain.yml.j2", 4) }}
|
|
13
|
+
{% endif %}
|
|
14
|
+
{% if has_infra %}
|
|
15
|
+
{{ macros.include_block("domain_driven_design/layers/shared_infra.yml.j2", 4) }}
|
|
16
|
+
{% endif %}
|
|
17
|
+
{% endif %}
|
|
18
|
+
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{% import "macros.j2" as macros with context %}
|
|
2
|
+
{%- set domain_features = [
|
|
3
|
+
{"feature": "value_objects", "template": "errors.yml.j2"},
|
|
4
|
+
{"feature": "event_bus", "template": "events/event_bus_domain.yml.j2"},
|
|
5
|
+
{"feature": "fastapi_application", "template": "fastapi/fastapi_domain.yml.j2"}
|
|
6
|
+
] %}
|
|
7
|
+
- name: domain
|
|
8
|
+
type: directory
|
|
9
|
+
python: True
|
|
10
|
+
{{ macros.render_children_for(domain_features, 2) }}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{% import "macros.j2" as macros with context %}
|
|
2
|
+
{%- set infra_features = [
|
|
3
|
+
{"feature": "event_bus", "template": "events/event_bus_infra.yml.j2"},
|
|
4
|
+
{"feature": "logger", "template": "logger.yml.j2"},
|
|
5
|
+
{"feature": "async_sqlalchemy", "template": "persistence/async_sqlalchemy.yml.j2"},
|
|
6
|
+
{"feature": "async_alembic", "template": "persistence/alembic_migrator.yml.j2"},
|
|
7
|
+
{"feature": "fastapi_application", "template": "fastapi/fastapi_infra.yml.j2"}
|
|
8
|
+
] %}
|
|
9
|
+
- name: infra
|
|
10
|
+
type: directory
|
|
11
|
+
python: True
|
|
12
|
+
{{ macros.render_children_for(infra_features, 2) }}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{% import "macros.j2" as macros with context %}
|
|
2
|
+
- name: shared
|
|
3
|
+
type: directory
|
|
4
|
+
python: True
|
|
5
|
+
children:
|
|
6
|
+
{{ macros.include_block("domain_driven_design/layers/test_shared_delivery.yml.j2", 4) }}
|
|
7
|
+
{{ macros.include_block("domain_driven_design/layers/test_shared_domain.yml.j2", 4) }}
|
|
8
|
+
{{ macros.include_block("domain_driven_design/layers/test_shared_infra.yml.j2", 4) }}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{% import "macros.j2" as macros with context %}
|
|
2
|
+
{%- set infra_features = [
|
|
3
|
+
{"feature": "event_bus", "template": "events/mock_event_bus.yml.j2"},
|
|
4
|
+
{"feature": "async_sqlalchemy", "template": "persistence/async_engine_conftest.yml.j2"},
|
|
5
|
+
] %}
|
|
6
|
+
- name: infra
|
|
7
|
+
type: directory
|
|
8
|
+
python: True
|
|
9
|
+
{{ macros.render_children_for(infra_features, 2) }}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{% import "macros.j2" as macros with context %}
|
|
2
|
+
{# === Core Project Structure === #}
|
|
3
|
+
{{ macros.include_block("domain_driven_design/source.yml.j2", 0) }}
|
|
4
|
+
{{ macros.include_block("domain_driven_design/test.yml.j2", 0) }}
|
|
5
|
+
{# === Base Configuration Files === #}
|
|
6
|
+
{{ macros.include_block("config_files/pyproject.yml.j2", 0) }}
|
|
7
|
+
{{ macros.include_block("config_files/python_version.yml.j2", 0) }}
|
|
8
|
+
{{ macros.include_block("documentation/license.yml.j2", 0) }}
|
|
9
|
+
{# === CI/CD and Automation Features === #}
|
|
10
|
+
{% set ci_cd_features = [
|
|
11
|
+
{"feature": "github_actions", "template": "github/github_action.yml.j2"},
|
|
12
|
+
{"feature": "github_actions", "template": "github/makefile.yml.j2"},
|
|
13
|
+
{"feature": "github_issues_template", "template": "github/github_issues_template.yml.j2"},
|
|
14
|
+
{"feature": "makefile", "template": "github/makefile.yml.j2"},
|
|
15
|
+
{"feature": "precommit_hook", "template": "github/precommit_hook.yml.j2"},
|
|
16
|
+
{"feature": "precommit_hook", "template": "github/makefile.yml.j2"}
|
|
17
|
+
] %}
|
|
18
|
+
{{ macros.render_features(ci_cd_features, 0) }}
|
|
19
|
+
{# === Git Features === #}
|
|
20
|
+
{% if git.initialize %}
|
|
21
|
+
{{ macros.include_block("config_files/gitignore.yml.j2", 0) }}
|
|
22
|
+
{{ macros.include_block("documentation/readme.yml.j2", 0) }}
|
|
23
|
+
{% endif %}
|
|
24
|
+
{# === Testing and Type Checking === #}
|
|
25
|
+
{% if dependencies | has_dependency("pytest") %}
|
|
26
|
+
{{ macros.include_block("config_files/pytest.yml.j2", 0) }}
|
|
27
|
+
{% endif %}
|
|
28
|
+
{% if dependencies | has_dependency("mypy") %}
|
|
29
|
+
{{ macros.include_block("config_files/mypy.yml.j2", 0) }}
|
|
30
|
+
{% endif %}
|
|
31
|
+
{# === Database Migration === #}
|
|
32
|
+
{{ macros.render_feature_if_enabled("async_alembic", "persistence/async_alembic.yml.j2", 0) }}
|
|
33
|
+
{# === Documentation and Metadata === #}
|
|
34
|
+
{% set doc_features = [
|
|
35
|
+
{"feature": "citation_file", "template": "documentation/citation.yml.j2"},
|
|
36
|
+
{"feature": "security_file", "template": "documentation/security.yml.j2"}
|
|
37
|
+
] %}
|
|
38
|
+
{{ macros.render_features(doc_features, 0) }}
|
instant_python-0.19.1/instant_python/templates/project_structure/domain_driven_design/source.yml.j2
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{% import "macros.j2" as macros with context %}
|
|
2
|
+
- name: {{ general.source_name }}
|
|
3
|
+
type: directory
|
|
4
|
+
python: True
|
|
5
|
+
children:
|
|
6
|
+
{{ macros.include_block("domain_driven_design/layers/delivery.yml.j2", 4) }}
|
|
7
|
+
{{ macros.include_block("domain_driven_design/layers/shared.yml.j2", 4) }}
|
|
8
|
+
{%- if template.specify_bounded_context %}
|
|
9
|
+
{{ macros.include_block("domain_driven_design/layers/bounded_context.yml.j2", 4) }}
|
|
10
|
+
{%- endif %}
|
instant_python-0.19.1/instant_python/templates/project_structure/domain_driven_design/test.yml.j2
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{% import "macros.j2" as macros with context %}
|
|
2
|
+
- name: test
|
|
3
|
+
type: directory
|
|
4
|
+
python: True
|
|
5
|
+
children:
|
|
6
|
+
{{ macros.include_block("domain_driven_design/layers/test_shared.yml.j2", 4) }}
|
|
7
|
+
{%- if template.specify_bounded_context %}
|
|
8
|
+
{{ macros.include_block("domain_driven_design/layers/bounded_context.yml.j2", 4) }}
|
|
9
|
+
{%- endif %}
|
|
@@ -42,14 +42,6 @@
|
|
|
42
42
|
type: directory
|
|
43
43
|
python: True
|
|
44
44
|
children:
|
|
45
|
-
- name: aggregate
|
|
46
|
-
type: file
|
|
47
|
-
extension: .py
|
|
48
|
-
template: value_object/aggregate.py
|
|
49
|
-
- name: value_object
|
|
50
|
-
type: file
|
|
51
|
-
extension: .py
|
|
52
|
-
template: value_object/value_object.py
|
|
53
45
|
- name: event_aggregate
|
|
54
46
|
type: file
|
|
55
47
|
extension: .py
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
{#
|
|
2
|
+
Macro to include a template and indent its content
|
|
3
|
+
|
|
4
|
+
Args:
|
|
5
|
+
template_name: Name of the template file to include
|
|
6
|
+
indent: Number of spaces to indent the content
|
|
7
|
+
#}
|
|
8
|
+
{%- macro include_block(template_name, indent) -%}
|
|
9
|
+
{%- set content -%}
|
|
10
|
+
{%- include template_name -%}
|
|
11
|
+
{%- endset -%}
|
|
12
|
+
{{ content | indent(indent, true) }}
|
|
13
|
+
{%- endmacro -%}
|
|
14
|
+
|
|
15
|
+
{#
|
|
16
|
+
Renders a specific feature if it's enabled in template.built_in_features
|
|
17
|
+
|
|
18
|
+
Args:
|
|
19
|
+
feature_name: Name of the feature to check
|
|
20
|
+
template_path: Path to the template file to include
|
|
21
|
+
indent_level: Number of spaces to indent the content
|
|
22
|
+
#}
|
|
23
|
+
{%- macro render_feature_if_enabled(feature_name, template_path, indent=0) -%}
|
|
24
|
+
{%- if feature_name in template.built_in_features -%}
|
|
25
|
+
{{ include_block(template_path, indent) }}
|
|
26
|
+
{%- endif -%}
|
|
27
|
+
{%- endmacro -%}
|
|
28
|
+
|
|
29
|
+
{#
|
|
30
|
+
Renders multiple features from a list
|
|
31
|
+
|
|
32
|
+
Args:
|
|
33
|
+
features: List of dicts with 'feature' and 'template' keys
|
|
34
|
+
indent_level: Number of spaces to indent the content
|
|
35
|
+
|
|
36
|
+
Example:
|
|
37
|
+
{% set features = [
|
|
38
|
+
{"feature": "event_bus", "template": "event_bus_domain.yml.j2"},
|
|
39
|
+
{"feature": "value_objects", "template": "errors.yml.j2"}
|
|
40
|
+
] %}
|
|
41
|
+
{{ render_features(features, 8) }}
|
|
42
|
+
#}
|
|
43
|
+
{%- macro render_features(features, indent=0) -%}
|
|
44
|
+
{%- set rendered_templates = [] -%}
|
|
45
|
+
{%- for item in features -%}
|
|
46
|
+
{%- if item.feature in template.built_in_features and item.template not in rendered_templates -%}
|
|
47
|
+
{{ include_block(item.template, indent) }}
|
|
48
|
+
{% set _ = rendered_templates.append(item.template) -%}
|
|
49
|
+
{%- endif -%}
|
|
50
|
+
{%- endfor -%}
|
|
51
|
+
{%- endmacro -%}
|
|
52
|
+
|
|
53
|
+
{#
|
|
54
|
+
Conditional wrapper for children nodes
|
|
55
|
+
Only renders the "children:" key and content if there are active features
|
|
56
|
+
|
|
57
|
+
Args:
|
|
58
|
+
features: List of features to check
|
|
59
|
+
indent_level: Base indentation for the children key
|
|
60
|
+
#}
|
|
61
|
+
{%- macro render_children_for(features, indent=0) -%}
|
|
62
|
+
{%- set active_features = [] -%}
|
|
63
|
+
{%- for item in features -%}
|
|
64
|
+
{%- if item.feature in template.built_in_features -%}
|
|
65
|
+
{%- set _ = active_features.append(item) -%}
|
|
66
|
+
{%- endif -%}
|
|
67
|
+
{%- endfor -%}
|
|
68
|
+
{%- if active_features | length > 0 %}
|
|
69
|
+
{{ "children:" | indent(indent, true) }}
|
|
70
|
+
{{ render_features(active_features, indent + 2) }}
|
|
71
|
+
{%- endif -%}
|
|
72
|
+
{%- endmacro -%}
|
|
73
|
+
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{% import "macros.j2" as macros with context %}
|
|
2
|
+
{%- set source_features = [
|
|
3
|
+
{"feature": "value_objects", "template": "errors.yml.j2"},
|
|
4
|
+
{"feature": "event_bus", "template": "events/event_bus_domain.yml.j2"},
|
|
5
|
+
{"feature": "event_bus", "template": "events/event_bus_infra.yml.j2"},
|
|
6
|
+
{"feature": "logger", "template": "logger.yml.j2"},
|
|
7
|
+
{"feature": "async_sqlalchemy", "template": "persistence/async_sqlalchemy.yml.j2"},
|
|
8
|
+
{"feature": "async_alembic", "template": "persistence/alembic_migrator.yml.j2"},
|
|
9
|
+
{"feature": "fastapi_application", "template": "fastapi/fastapi_app.yml.j2"},
|
|
10
|
+
{"feature": "fastapi_application", "template": "fastapi/fastapi_infra.yml.j2"},
|
|
11
|
+
{"feature": "fastapi_application", "template": "fastapi/fastapi_domain.yml.j2"}
|
|
12
|
+
] %}
|
|
13
|
+
{{ macros.render_children_for(source_features, 2) }}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{% import "macros.j2" as macros with context %}
|
|
2
|
+
{%- set test_features = [
|
|
3
|
+
{"feature": "async_sqlalchemy", "template": "persistence/async_engine_conftest.yml.j2"},
|
|
4
|
+
{"feature": "event_bus", "template": "standard_project/layers/test_event_bus.yml.j2"}
|
|
5
|
+
] %}
|
|
6
|
+
{{ macros.render_children_for(test_features, 2) }}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{% import "macros.j2" as macros with context %}
|
|
2
|
+
{# === Core Project Structure === #}
|
|
3
|
+
{{ macros.include_block("standard_project/source.yml.j2", 0) }}
|
|
4
|
+
{{ macros.include_block("standard_project/test.yml.j2", 0) }}
|
|
5
|
+
{# === Base Configuration Files === #}
|
|
6
|
+
{{ macros.include_block("config_files/pyproject.yml.j2", 0) }}
|
|
7
|
+
{{ macros.include_block("config_files/python_version.yml.j2", 0) }}
|
|
8
|
+
{{ macros.include_block("documentation/license.yml.j2", 0) }}
|
|
9
|
+
{# === CI/CD and Automation Features === #}
|
|
10
|
+
{% set ci_cd_features = [
|
|
11
|
+
{"feature": "github_actions", "template": "github/github_action.yml.j2"},
|
|
12
|
+
{"feature": "github_actions", "template": "github/makefile.yml.j2"},
|
|
13
|
+
{"feature": "github_issues_template", "template": "github/github_issues_template.yml.j2"},
|
|
14
|
+
{"feature": "makefile", "template": "github/makefile.yml.j2"},
|
|
15
|
+
{"feature": "precommit_hook", "template": "github/precommit_hook.yml.j2"},
|
|
16
|
+
{"feature": "precommit_hook", "template": "github/makefile.yml.j2"}
|
|
17
|
+
] %}
|
|
18
|
+
{{ macros.render_features(ci_cd_features, 0) }}
|
|
19
|
+
{# === Git Features === #}
|
|
20
|
+
{% if git.initialize %}
|
|
21
|
+
{{ macros.include_block("config_files/gitignore.yml.j2", 0) }}
|
|
22
|
+
{{ macros.include_block("documentation/readme.yml.j2", 0) }}
|
|
23
|
+
{% endif %}
|
|
24
|
+
{# === Testing and Type Checking === #}
|
|
25
|
+
{% if dependencies | has_dependency("pytest") %}
|
|
26
|
+
{{ macros.include_block("config_files/pytest.yml.j2", 0) }}
|
|
27
|
+
{% endif %}
|
|
28
|
+
{% if dependencies | has_dependency("mypy") %}
|
|
29
|
+
{{ macros.include_block("config_files/mypy.yml.j2", 0) }}
|
|
30
|
+
{% endif %}
|
|
31
|
+
{# === Database Migration === #}
|
|
32
|
+
{{ macros.render_feature_if_enabled("async_alembic", "persistence/async_alembic.yml.j2", 0) }}
|
|
33
|
+
{# === Documentation and Metadata === #}
|
|
34
|
+
{% set doc_features = [
|
|
35
|
+
{"feature": "citation_file", "template": "documentation/citation.yml.j2"},
|
|
36
|
+
{"feature": "security_file", "template": "documentation/security.yml.j2"}
|
|
37
|
+
] %}
|
|
38
|
+
{{ macros.render_features(doc_features, 0) }}
|