instant-python 0.0.1__tar.gz → 0.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- instant_python-0.2.0/.github/workflows/pages.yml +34 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/.github/workflows/release.yml +1 -3
- {instant_python-0.0.1 → instant_python-0.2.0}/CHANGELOG.md +118 -194
- {instant_python-0.0.1 → instant_python-0.2.0}/PKG-INFO +2 -2
- {instant_python-0.0.1 → instant_python-0.2.0}/docs/contributing.md +4 -1
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/installer/managers.py +2 -2
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/installer/pdm_manager.py +10 -3
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/installer/uv_manager.py +11 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/project_generator/custom_template_manager.py +0 -2
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/project_generator/default_template_manager.py +0 -3
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/project_generator/file.py +1 -1
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/project_generator/node.py +2 -2
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/question_prompter/question/conditional_question.py +9 -3
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/question_prompter/question/question.py +4 -1
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/question_prompter/step/template_step.py +21 -13
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/question_prompter/template_types.py +2 -2
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/question_prompter/user_requirements.py +1 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/event_bus/domain_event_json_deserializer.py +3 -3
- instant_python-0.2.0/instant_python/templates/boilerplate/event_bus/domain_event_subscriber.py +34 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/event_bus/event_bus.py +1 -1
- instant_python-0.2.0/instant_python/templates/boilerplate/event_bus/exchange_type.py +14 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/exceptions/domain_event_type_not_found_error.py +1 -1
- instant_python-0.2.0/instant_python/templates/boilerplate/exceptions/rabbit_mq_connection_not_established_error.py +17 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/persistence/synchronous/sqlalchemy_repository.py +13 -6
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/value_object/int_value_object.py +1 -1
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/value_object/string_value_object.py +1 -1
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/value_object/uuid.py +1 -1
- instant_python-0.2.0/instant_python/templates/boilerplate/value_object/value_object.py +48 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/project_structure/clean_architecture/source.yml.j2 +2 -2
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/project_structure/domain_driven_design/source.yml.j2 +5 -3
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/project_structure/domain_driven_design/test.yml.j2 +2 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/project_structure/event_bus_domain.yml.j2 +3 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/project_structure/standard_project/source.yml.j2 +2 -2
- {instant_python-0.0.1 → instant_python-0.2.0}/pyproject.toml +6 -2
- instant_python-0.2.0/tox.ini +18 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/uv.lock +290 -2
- instant_python-0.0.1/instant_python/installer/operating_systems.py +0 -7
- instant_python-0.0.1/instant_python/templates/boilerplate/event_bus/domain_event_subscriber.py +0 -15
- instant_python-0.0.1/instant_python/templates/boilerplate/event_bus/exchange_type.py +0 -7
- instant_python-0.0.1/instant_python/templates/boilerplate/value_object/value_object.py +0 -21
- {instant_python-0.0.1 → instant_python-0.2.0}/.github/FUNDING.yml +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/.github/actions/python_setup/action.yml +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/.github/workflows/publish.yml +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/.gitignore +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/.python-version +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/LICENSE +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/README.md +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/cz.yaml +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/docs/assets/favicon.svg +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/docs/assets/logo.svg +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/docs/getting-started/features.md +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/docs/getting-started/first-steps.md +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/docs/getting-started/index.md +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/docs/getting-started/installation.md +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/docs/guide/creating-a-project.md +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/docs/guide/custom-templates.md +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/docs/guide/features.md +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/docs/guide/folder-structure.md +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/docs/guide/index.md +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/docs/index.md +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/__init__.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/cli.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/folder_cli.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/installer/__init__.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/installer/dependency_manager.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/installer/dependency_manager_factory.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/installer/git_configurer.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/installer/installer.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/project_cli.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/project_generator/__init__.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/project_generator/directory.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/project_generator/folder_tree.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/project_generator/jinja_custom_filters.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/project_generator/project_generator.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/project_generator/template_manager.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/question_prompter/__init__.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/question_prompter/question/__init__.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/question_prompter/question/boolean_question.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/question_prompter/question/choice_question.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/question_prompter/question/dependencies_question.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/question_prompter/question/free_text_question.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/question_prompter/question/multiple_choice_question.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/question_prompter/question_wizard.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/question_prompter/step/__init__.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/question_prompter/step/dependencies_step.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/question_prompter/step/general_custom_template_project_step.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/question_prompter/step/general_project_step.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/question_prompter/step/git_step.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/question_prompter/step/steps.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/__init__.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/.gitignore +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/.pre-commit-config.yml +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/.python-version +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/LICENSE +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/event_bus/__init__.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/event_bus/aggregate_root.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/event_bus/domain_event.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/event_bus/domain_event_json_serializer.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/event_bus/mock_event_bus.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/event_bus/rabbit_mq_configurer.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/event_bus/rabbit_mq_connection.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/event_bus/rabbit_mq_consumer.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/event_bus/rabbit_mq_event_bus.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/event_bus/rabbit_mq_queue_formatter.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/event_bus/rabbit_mq_settings.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/exceptions/__init__.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/exceptions/domain_error.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/exceptions/incorrect_value_type_error.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/exceptions/invalid_id_format_error.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/exceptions/invalid_negative_value_error.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/exceptions/required_value_error.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/fastapi/__init__.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/fastapi/application.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/fastapi/http_response.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/fastapi/lifespan.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/fastapi/status_code.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/github/action.yml +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/github/test_lint.yml +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/logger/__init__.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/logger/json_formatter.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/logger/logger.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/mypy.ini +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/persistence/__init__.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/persistence/alembic_migrator.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/persistence/async/README.md +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/persistence/async/__init__.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/persistence/async/alembic.ini +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/persistence/async/async_engine_fixture.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/persistence/async/env.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/persistence/async/models_metadata.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/persistence/async/postgres_settings.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/persistence/async/script.py.mako +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/persistence/async/sqlalchemy_repository.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/persistence/base.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/persistence/synchronous/__init__.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/persistence/synchronous/session_maker.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/pyproject.toml +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/pytest.ini +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/random_generator.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/scripts/add_dependency.sh +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/scripts/create_aggregate.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/scripts/insert_template.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/scripts/integration.sh +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/scripts/local_setup.sh +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/scripts/makefile +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/scripts/post-merge +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/scripts/pre-commit +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/scripts/pre-push +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/scripts/remove_dependency.sh +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/scripts/unit.sh +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/boilerplate/value_object/__init__.py +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/project_structure/alembic_migrator.yml.j2 +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/project_structure/async_alembic.yml.j2 +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/project_structure/async_sqlalchemy.yml.j2 +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/project_structure/clean_architecture/main_structure.yml.j2 +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/project_structure/clean_architecture/test.yml.j2 +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/project_structure/domain_driven_design/bounded_context.yml.j2 +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/project_structure/domain_driven_design/main_structure.yml.j2 +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/project_structure/event_bus_infra.yml.j2 +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/project_structure/fastapi_app.yml.j2 +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/project_structure/fastapi_infra.yml.j2 +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/project_structure/github_action.yml.j2 +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/project_structure/gitignore.yml.j2 +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/project_structure/license.yml.j2 +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/project_structure/logger.yml.j2 +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/project_structure/macros.j2 +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/project_structure/makefile.yml.j2 +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/project_structure/mypy.yml.j2 +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/project_structure/pre_commit.yml.j2 +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/project_structure/pyproject.yml.j2 +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/project_structure/pytest.yml.j2 +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/project_structure/python_version.yml.j2 +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/project_structure/standard_project/main_structure.yml.j2 +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/project_structure/standard_project/test.yml.j2 +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/project_structure/synchronous_sqlalchemy.yml.j2 +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/instant_python/templates/project_structure/value_objects.yml.j2 +0 -0
- {instant_python-0.0.1 → instant_python-0.2.0}/mkdocs.yml +0 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
name: Publish to GitHub pages
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
|
|
8
|
+
# Allows you to run this workflow manually from the Actions tab
|
|
9
|
+
workflow_dispatch:
|
|
10
|
+
|
|
11
|
+
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
|
|
12
|
+
permissions:
|
|
13
|
+
contents: write
|
|
14
|
+
pages: write
|
|
15
|
+
id-token: write
|
|
16
|
+
|
|
17
|
+
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
|
|
18
|
+
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
|
|
19
|
+
concurrency:
|
|
20
|
+
group: "pages"
|
|
21
|
+
cancel-in-progress: true
|
|
22
|
+
|
|
23
|
+
jobs:
|
|
24
|
+
pages:
|
|
25
|
+
runs-on: ubuntu-latest
|
|
26
|
+
steps:
|
|
27
|
+
- uses: actions/checkout@v4
|
|
28
|
+
- uses: ./.github/actions/python_setup
|
|
29
|
+
- name: Build documentation
|
|
30
|
+
run: uv run mkdocs build
|
|
31
|
+
- name: Deploy to GitHub Pages
|
|
32
|
+
run: uv run mkdocs gh-deploy --force
|
|
33
|
+
env:
|
|
34
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
@@ -1,65 +1,55 @@
|
|
|
1
|
-
## 0.
|
|
2
|
-
|
|
3
|
-
### 🐛 Bug Fixes
|
|
4
|
-
|
|
5
|
-
- **project-generator**: add template types values to be able to use enum in jinja templates
|
|
6
|
-
- **template**: write correct option when fastapi built in feature is selected
|
|
7
|
-
|
|
8
|
-
### ♻️ Code Refactoring
|
|
9
|
-
|
|
10
|
-
- **template**: include mypy, git and pytest configuration files only when the user has selected these options
|
|
11
|
-
- **template**: include dependencies depending on user built in features selection
|
|
12
|
-
|
|
13
|
-
## 0.12.0 (2025-04-06)
|
|
1
|
+
## 0.2.0 (2025-04-08)
|
|
14
2
|
|
|
15
3
|
### ✨ Features
|
|
16
4
|
|
|
17
|
-
- **
|
|
5
|
+
- **template**: add new rabbit mq error when user selects event bus built in feature
|
|
6
|
+
- **template**: create rabbit_mq_connection_not_established_error.py boilerplate
|
|
18
7
|
|
|
19
8
|
### 🐛 Bug Fixes
|
|
20
9
|
|
|
21
|
-
- **template**:
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
## 0.10.4 (2025-03-24)
|
|
10
|
+
- **template**: correct domain event type not found error import and class name
|
|
11
|
+
- **template**: set event bus publish method async
|
|
12
|
+
- **template**: correct imports in value objects boilerplate
|
|
26
13
|
|
|
27
|
-
###
|
|
14
|
+
### ♻️ Code Refactoring
|
|
28
15
|
|
|
29
|
-
-
|
|
16
|
+
- **installer**: add virtual environment creation before installing dependencies
|
|
17
|
+
- **template**: conditionally include bounded context based on specify_bounded_context field
|
|
18
|
+
- **template**: add specify_bounded_context field to user requirements
|
|
19
|
+
- **prompter**: be able to execute nested conditional questions
|
|
20
|
+
- **template**: update subquestions structure to use ConditionalQuestion for bounded context specification
|
|
21
|
+
- **prompter**: extend ConditionalQuestion subquestions type hint
|
|
22
|
+
- **prompter**: remove note when prompting built in features for the user to select and remove temporarily synch sql alchemy option
|
|
23
|
+
- **template**: modify project structure templates to include logger and alembic migrator automatically if fastapi application is selected
|
|
24
|
+
- **template**: modify DomainEventSubscriber boilerplate to follow generic type syntax depending on python version
|
|
30
25
|
|
|
31
|
-
## 0.
|
|
26
|
+
## 0.1.1 (2025-04-08)
|
|
32
27
|
|
|
33
28
|
### 🐛 Bug Fixes
|
|
34
29
|
|
|
35
|
-
- correct
|
|
30
|
+
- **template**: correct typo in ExchangeType enum declaration
|
|
31
|
+
- **template**: correct typo on TypeVar declaration
|
|
36
32
|
|
|
37
|
-
|
|
33
|
+
### ♻️ Code Refactoring
|
|
38
34
|
|
|
39
|
-
|
|
35
|
+
- **question**: use old generic type syntax to keep compatibility with old python versions
|
|
36
|
+
- **template**: update boilerplates so they can adhere to correct python versions syntax
|
|
37
|
+
- **project-generator**: standardize path separator in file name construction
|
|
38
|
+
- **installer**: remove unused enum OperatingSystems
|
|
39
|
+
- **prompter**: change TemplateTypes class to inherit from str and Enum for improved compatibility
|
|
40
|
+
- **project-generator**: change NodeType class to inherit from str and Enum for improved compatibility
|
|
41
|
+
- **installer**: change Managers class to inherit from str and Enum for better compatibility
|
|
42
|
+
- **project-generator**: remove override typing decorator to allow lower python versions compatibility
|
|
40
43
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
## 0.10.1 (2025-03-24)
|
|
44
|
+
## 0.1.0 (2025-04-06)
|
|
44
45
|
|
|
45
46
|
### 🐛 Bug Fixes
|
|
46
47
|
|
|
48
|
+
- **project-generator**: add template types values to be able to use enum in jinja templates
|
|
49
|
+
- **template**: write correct option when fastapi built in feature is selected
|
|
50
|
+
- **template**: generate correctly the import statement in templates depending on the user selection
|
|
51
|
+
- **installer**: correct answers when installing dependencies
|
|
47
52
|
- **prompter**: modify DependenciesQuestion to not enter an infinite loop of asking the user
|
|
48
|
-
|
|
49
|
-
## 0.10.0 (2025-03-23)
|
|
50
|
-
|
|
51
|
-
### ✨ Features
|
|
52
|
-
|
|
53
|
-
- **prompter**: implement general project step that will only be used when custom template is passed
|
|
54
|
-
- **cli**: add template command for project_cli.py to let users create a project using a custom template
|
|
55
|
-
- **prompter**: implement ConditionalQuestion
|
|
56
|
-
- **prompter**: implement TemplateStep to group all questions related to default template management
|
|
57
|
-
- **project-generator**: implement CustomTemplateManager to manage when user passes a custom template file
|
|
58
|
-
- **project-generator**: create TemplateManager interface
|
|
59
|
-
- **cli**: add folder command to allow users to just generate the folder structure of the project
|
|
60
|
-
|
|
61
|
-
### 🐛 Bug Fixes
|
|
62
|
-
|
|
63
53
|
- **cli**: temporarily disable template commands
|
|
64
54
|
- **prompter**: extract the value of the base answer to check it with condition
|
|
65
55
|
- **prompter**: remove init argument from year field
|
|
@@ -67,9 +57,18 @@
|
|
|
67
57
|
- **prompter**: set default value for git field in UserRequirements to avoid failing when executing folder command
|
|
68
58
|
- **prompter**: include last question in TemplateStep if selected template is domain_driven_design
|
|
69
59
|
- **project-generator**: instantiate DefaultTemplateManager inside File class
|
|
60
|
+
- **build**: change build system and ensure templates directory gets included
|
|
61
|
+
- **project-generator**: substitute FileSystemLoader for PackageLoader to safer load when using it as a package
|
|
62
|
+
- **prompter**: correct default source folder name
|
|
63
|
+
- **template**: correct license field from pyproject.toml template
|
|
64
|
+
- **template**: use project_slug for project name inside pyproject.toml
|
|
65
|
+
- **project-generator**: correct path to templates
|
|
66
|
+
- **project-generator**: correct extra blocks that where being created when including templates
|
|
70
67
|
|
|
71
68
|
### ♻️ Code Refactoring
|
|
72
69
|
|
|
70
|
+
- **template**: include mypy, git and pytest configuration files only when the user has selected these options
|
|
71
|
+
- **template**: include dependencies depending on user built in features selection
|
|
73
72
|
- **prompter**: update answers dictionary instead of add manually question key and answer
|
|
74
73
|
- **prompter**: return a dictionary with the key of the question and the answer instead of just the answer
|
|
75
74
|
- **cli**: modify cli help commands and descriptions
|
|
@@ -93,86 +92,19 @@
|
|
|
93
92
|
- **cli**: add help description to both commands
|
|
94
93
|
- **prompter**: move python and dependency manager from dependencies step to general project step as it's information that is needed in general to fill all files information
|
|
95
94
|
- **cli**: rename generate_project command to new
|
|
96
|
-
|
|
97
|
-
## 0.9.0 (2025-03-14)
|
|
98
|
-
|
|
99
|
-
### ✨ Features
|
|
100
|
-
|
|
101
|
-
- **project-generator**: format all project files with ruff once everything is generated
|
|
102
|
-
- **cli**: remove user_requirements file once project has been generated
|
|
103
|
-
- **prompter**: add remove method to UserRequirements class
|
|
104
|
-
|
|
105
|
-
### 🐛 Bug Fixes
|
|
106
|
-
|
|
107
|
-
- **build**: change build system and ensure templates directory gets included
|
|
108
|
-
- **project-generator**: substitute FileSystemLoader for PackageLoader to safer load when using it as a package
|
|
109
|
-
|
|
110
|
-
### ♻️ Code Refactoring
|
|
111
|
-
|
|
112
95
|
- **prompter**: add file_path field to user requirements class
|
|
113
|
-
|
|
114
|
-
## 0.8.1 (2025-03-14)
|
|
115
|
-
|
|
116
|
-
### 🐛 Bug Fixes
|
|
117
|
-
|
|
118
|
-
- **prompter**: correct default source folder name
|
|
119
|
-
- **template**: correct license field from pyproject.toml template
|
|
120
|
-
|
|
121
|
-
### ♻️ Code Refactoring
|
|
122
|
-
|
|
123
96
|
- **cli**: pass project slug name as the project directory that will be created
|
|
124
97
|
- **project-generator**: pass the directory where the project will be created to FolderTree
|
|
125
98
|
- **cli**: remove checking if a user_requirements file exists
|
|
126
99
|
- **template**: remove writing author and email info only if manager is pdm
|
|
127
|
-
|
|
128
|
-
## 0.8.0 (2025-03-11)
|
|
129
|
-
|
|
130
|
-
### ✨ Features
|
|
131
|
-
|
|
132
|
-
- **cli**: call to git configurer when user wants to initialize a git repository
|
|
133
|
-
- **installer**: implement GitConfigurer
|
|
134
|
-
- **cli**: include git step into cli steps
|
|
135
|
-
- **prompter**: implement step to ask the user information to initialize a git repository
|
|
136
|
-
|
|
137
|
-
### ♻️ Code Refactoring
|
|
138
|
-
|
|
139
100
|
- **installer**: avoid printing executed commands output by stdout
|
|
140
101
|
- **template**: use git_email field in pyproject.toml
|
|
141
102
|
- **prompter**: remove email field from UserRequirements and add git_email and git_user_name
|
|
142
103
|
- **prompter**: remove email question from general project step
|
|
143
|
-
|
|
144
|
-
## 0.7.0 (2025-03-11)
|
|
145
|
-
|
|
146
|
-
### ✨ Features
|
|
147
|
-
|
|
148
|
-
- **template**: add clean architecture template project structure
|
|
149
|
-
|
|
150
|
-
## 0.6.0 (2025-03-11)
|
|
151
|
-
|
|
152
|
-
### ✨ Features
|
|
153
|
-
|
|
154
|
-
- **template**: add standard project project structure templates
|
|
155
|
-
|
|
156
|
-
### ♻️ Code Refactoring
|
|
157
|
-
|
|
158
104
|
- **project-generator**: remove condition of loading the template only when is domain driven design
|
|
159
105
|
- **template**: use include_and_indent custom macro inside domain_driven_design/test template
|
|
160
106
|
- **template**: include always mypy and pytest ini configuration
|
|
161
107
|
- **prompter**: rename empty project template to standard project
|
|
162
|
-
|
|
163
|
-
## 0.5.0 (2025-03-10)
|
|
164
|
-
|
|
165
|
-
### ✨ Features
|
|
166
|
-
|
|
167
|
-
- **installer**: create factory method to choose which dependency manager gets instantiated
|
|
168
|
-
- **installer**: implement PdmInstaller
|
|
169
|
-
|
|
170
|
-
### 🐛 Bug Fixes
|
|
171
|
-
|
|
172
|
-
- **template**: use project_slug for project name inside pyproject.toml
|
|
173
|
-
|
|
174
|
-
### ♻️ Code Refactoring
|
|
175
|
-
|
|
176
108
|
- **cli**: use DependencyManagerFactory instead of always instantiating UvManager
|
|
177
109
|
- **installer**: remove ShellConfigurator and ZshConfigurator
|
|
178
110
|
- **cli**: remove shell configurator injection
|
|
@@ -180,11 +112,86 @@
|
|
|
180
112
|
- **prompter**: warn the user that project name cannot contain spaces
|
|
181
113
|
- **prompter**: remove project name question and just leave project slug
|
|
182
114
|
- **installer**: remove executable attribute from UvManager
|
|
115
|
+
- **installer**: specify working directory to UvManager so it installs everything at the generated project
|
|
116
|
+
- **cli**: pass generated project path to UvManager
|
|
117
|
+
- **installer**: inline uv install command attribute as is not something reusable
|
|
118
|
+
- **cli**: inject folder tree and template manager to project generator
|
|
119
|
+
- **project-generator**: set the directory where user project will be generated as FolderTree attribute and expose it through a property
|
|
120
|
+
- **project-generator**: pass folder_tree and template_manager injected into ProjectGenerator
|
|
121
|
+
- **cli**: pass user dependencies to installer
|
|
122
|
+
- **prompter**: substitute fixed default dependencies by dynamic ones that will be asked to the user
|
|
123
|
+
- **prompter**: remove question definition lists and basic prompter
|
|
124
|
+
- **cli**: substitute BasicPrompter for QuestionWizard
|
|
125
|
+
- **prompter**: remove python manager and operating system questions
|
|
126
|
+
- **prompter**: extract helper method to know if template is ddd
|
|
127
|
+
- **prompter**: delegate ask logic to each question instead of letting prompter what to do depending on flags
|
|
128
|
+
- **prompter**: redefine questions using concrete implementations
|
|
129
|
+
- **prompter**: make Question abstract and add ask abstract method
|
|
130
|
+
- **project-generator**: rename Directory's init attribute to python_module and remove default value for children
|
|
131
|
+
- **project-generator**: move children extraction only when node is a directory
|
|
132
|
+
- **src**: remove old src folder with cookiecutter project and convert current instant_python module into src
|
|
133
|
+
- **cli**: generate user requirements only if no other file has been already generated.
|
|
134
|
+
- **template**: move makefile template to scripts folder as this folder only makes sense if it's use with the makefile
|
|
135
|
+
- **template**: move base from sync sqlalchemy to persistence folder as it would be the same for both sync and async
|
|
136
|
+
- **template**: move sqlalchemy sync templates to specific folder
|
|
137
|
+
- **template**: move exceptions templates to specific folder
|
|
138
|
+
- **template**: move value object templates to specific folder
|
|
139
|
+
- **template**: move github actions templates to specific folder
|
|
140
|
+
- **template**: move logger templates to specific folder
|
|
141
|
+
- **project-generator**: modify File class to be able to manage the difference between the path to the template and the path where the file should be written
|
|
142
|
+
- **template**: change all yml templates to point to inner event_bus folder boilerplate
|
|
143
|
+
- **template**: move all boilerplate related to event bus inside specific folder
|
|
144
|
+
- **prompter**: change github information for basic name and email
|
|
145
|
+
- **prompter**: move default dependencies question to general questions and include the default dependencies that will be included
|
|
146
|
+
- **prompter**: remove converting to snake case all answers and set directly those answers in snake case if needed
|
|
147
|
+
- **templates**: use raw command inside github action instead of make
|
|
148
|
+
- **templates**: modify error templates to use DomainError
|
|
149
|
+
- **templates**: change all python-module types to directory and add python flag when need it
|
|
150
|
+
- **project-generator**: make Directory general for any type of folder and remove python module class
|
|
151
|
+
- **project-generator**: remove python_module node type
|
|
152
|
+
- **templates**: set all files of type file and add them the extension variable
|
|
153
|
+
- **project-generator**: add extension field to node and remove deprecated options
|
|
154
|
+
- **project-generator**: create a single node type File that will work with any kind of file
|
|
155
|
+
- **project-generator**: substitute python file and yml file node type for single file
|
|
156
|
+
- **templates**: use new operator to write a single children command in source
|
|
157
|
+
- **project-generator**: include new custom operator in jinja environment
|
|
158
|
+
- **templates**: remove populated shared template
|
|
159
|
+
- **templates**: include value objects template when is specified by the user
|
|
160
|
+
- **templates**: import and call macro inside project structures templates
|
|
161
|
+
- **prompter**: format all answers to snake case
|
|
162
|
+
- use TemplateTypes instead of literal string
|
|
163
|
+
- **project-generator**: change template path name when generating project
|
|
164
|
+
- **templates**: move ddd templates inside project_structure folder
|
|
165
|
+
- **prompter**: migrate BasicPrompter to use questionary instead of typer to make the questions as it manages multiple selections better
|
|
166
|
+
- **cli**: instantiate BasicPrompter instead of using class method
|
|
167
|
+
- **prompter**: simplify ask method by using Question object an iterating over the list of defined questions
|
|
168
|
+
- **templates**: modularize main_structure file
|
|
169
|
+
- **project-generator**: create project structure inside a temporary directory
|
|
170
|
+
- **project-generator**: delegate template management to TemplateManager
|
|
171
|
+
- **cli**: call BasicPrompter and ProjectGenerator inside cli app
|
|
183
172
|
|
|
184
|
-
## 0.4.0 (2025-03-09)
|
|
185
173
|
|
|
186
174
|
### ✨ Features
|
|
187
175
|
|
|
176
|
+
- **project-generator**: create new custom function to generate import path in templates
|
|
177
|
+
- **prompter**: implement general project step that will only be used when custom template is passed
|
|
178
|
+
- **cli**: add template command for project_cli.py to let users create a project using a custom template
|
|
179
|
+
- **prompter**: implement ConditionalQuestion
|
|
180
|
+
- **prompter**: implement TemplateStep to group all questions related to default template management
|
|
181
|
+
- **project-generator**: implement CustomTemplateManager to manage when user passes a custom template file
|
|
182
|
+
- **project-generator**: create TemplateManager interface
|
|
183
|
+
- **cli**: add folder command to allow users to just generate the folder structure of the project
|
|
184
|
+
- **project-generator**: format all project files with ruff once everything is generated
|
|
185
|
+
- **cli**: remove user_requirements file once project has been generated
|
|
186
|
+
- **prompter**: add remove method to UserRequirements class
|
|
187
|
+
- **cli**: call to git configurer when user wants to initialize a git repository
|
|
188
|
+
- **installer**: implement GitConfigurer
|
|
189
|
+
- **cli**: include git step into cli steps
|
|
190
|
+
- **prompter**: implement step to ask the user information to initialize a git repository
|
|
191
|
+
- **template**: add clean architecture template project structure
|
|
192
|
+
- **template**: add standard project project structure templates
|
|
193
|
+
- **installer**: create factory method to choose which dependency manager gets instantiated
|
|
194
|
+
- **installer**: implement PdmInstaller
|
|
188
195
|
- **project-generator**: expose generated project path through ProjectGenerator
|
|
189
196
|
- **installer**: add project_directory field to UvManager to know where to create the virtual environment
|
|
190
197
|
- **installer**: add install_dependencies step to Installer
|
|
@@ -211,36 +218,6 @@
|
|
|
211
218
|
- **project-generator**: create custom exception when node type does not exist
|
|
212
219
|
- **cli**: make sure user_requirements are loaded
|
|
213
220
|
- **prompter**: add load_from_file method to UserRequirements
|
|
214
|
-
|
|
215
|
-
### 🐛 Bug Fixes
|
|
216
|
-
|
|
217
|
-
- **project-generator**: correct path to templates
|
|
218
|
-
|
|
219
|
-
### ♻️ Code Refactoring
|
|
220
|
-
|
|
221
|
-
- **installer**: specify working directory to UvManager so it installs everything at the generated project
|
|
222
|
-
- **cli**: pass generated project path to UvManager
|
|
223
|
-
- **installer**: inline uv install command attribute as is not something reusable
|
|
224
|
-
- **cli**: inject folder tree and template manager to project generator
|
|
225
|
-
- **project-generator**: set the directory where user project will be generated as FolderTree attribute and expose it through a property
|
|
226
|
-
- **project-generator**: pass folder_tree and template_manager injected into ProjectGenerator
|
|
227
|
-
- **cli**: pass user dependencies to installer
|
|
228
|
-
- **prompter**: substitute fixed default dependencies by dynamic ones that will be asked to the user
|
|
229
|
-
- **prompter**: remove question definition lists and basic prompter
|
|
230
|
-
- **cli**: substitute BasicPrompter for QuestionWizard
|
|
231
|
-
- **prompter**: remove python manager and operating system questions
|
|
232
|
-
- **prompter**: extract helper method to know if template is ddd
|
|
233
|
-
- **prompter**: delegate ask logic to each question instead of letting prompter what to do depending on flags
|
|
234
|
-
- **prompter**: redefine questions using concrete implementations
|
|
235
|
-
- **prompter**: make Question abstract and add ask abstract method
|
|
236
|
-
- **project-generator**: rename Directory's init attribute to python_module and remove default value for children
|
|
237
|
-
- **project-generator**: move children extraction only when node is a directory
|
|
238
|
-
- **src**: remove old src folder with cookiecutter project and convert current instant_python module into src
|
|
239
|
-
|
|
240
|
-
## 0.3.0 (2025-03-01)
|
|
241
|
-
|
|
242
|
-
### ✨ Features
|
|
243
|
-
|
|
244
221
|
- **template**: include mock event bus template for testing
|
|
245
222
|
- **template**: add scripts templates
|
|
246
223
|
- **prompter**: add fastapi option to built in features
|
|
@@ -260,29 +237,6 @@
|
|
|
260
237
|
- **templates**: add .gitignore template
|
|
261
238
|
- **templates**: add pyproject template
|
|
262
239
|
- **templates**: add makefile template
|
|
263
|
-
|
|
264
|
-
### ♻️ Code Refactoring
|
|
265
|
-
|
|
266
|
-
- **cli**: generate user requirements only if no other file has been already generated.
|
|
267
|
-
- **template**: move makefile template to scripts folder as this folder only makes sense if it's use with the makefile
|
|
268
|
-
- **template**: move base from sync sqlalchemy to persistence folder as it would be the same for both sync and async
|
|
269
|
-
- **template**: move sqlalchemy sync templates to specific folder
|
|
270
|
-
- **template**: move exceptions templates to specific folder
|
|
271
|
-
- **template**: move value object templates to specific folder
|
|
272
|
-
- **template**: move github actions templates to specific folder
|
|
273
|
-
- **template**: move logger templates to specific folder
|
|
274
|
-
- **project-generator**: modify File class to be able to manage the difference between the path to the template and the path where the file should be written
|
|
275
|
-
- **template**: change all yml templates to point to inner event_bus folder boilerplate
|
|
276
|
-
- **template**: move all boilerplate related to event bus inside specific folder
|
|
277
|
-
- **prompter**: change github information for basic name and email
|
|
278
|
-
- **prompter**: move default dependencies question to general questions and include the default dependencies that will be included
|
|
279
|
-
- **prompter**: remove converting to snake case all answers and set directly those answers in snake case if needed
|
|
280
|
-
- **templates**: use raw command inside github action instead of make
|
|
281
|
-
|
|
282
|
-
## 0.2.0 (2025-02-27)
|
|
283
|
-
|
|
284
|
-
### ✨ Features
|
|
285
|
-
|
|
286
240
|
- **templates**: add invalid id format error template
|
|
287
241
|
- **templates**: add domain error template
|
|
288
242
|
- **prompter**: add synchronous sqlalchemy option to built in features question
|
|
@@ -316,33 +270,3 @@
|
|
|
316
270
|
- **prompter**: create basic class that asks project requirements to user
|
|
317
271
|
- **cli**: create basic typer application with no implementation
|
|
318
272
|
|
|
319
|
-
### 🐛 Bug Fixes
|
|
320
|
-
|
|
321
|
-
- **project-generator**: correct extra blocks that where being created when including templates
|
|
322
|
-
|
|
323
|
-
### ♻️ Code Refactoring
|
|
324
|
-
|
|
325
|
-
- **templates**: modify error templates to use DomainError
|
|
326
|
-
- **templates**: change all python-module types to directory and add python flag when need it
|
|
327
|
-
- **project-generator**: make Directory general for any type of folder and remove python module class
|
|
328
|
-
- **project-generator**: remove python_module node type
|
|
329
|
-
- **templates**: set all files of type file and add them the extension variable
|
|
330
|
-
- **project-generator**: add extension field to node and remove deprecated options
|
|
331
|
-
- **project-generator**: create a single node type File that will work with any kind of file
|
|
332
|
-
- **project-generator**: substitute python file and yml file node type for single file
|
|
333
|
-
- **templates**: use new operator to write a single children command in source
|
|
334
|
-
- **project-generator**: include new custom operator in jinja environment
|
|
335
|
-
- **templates**: remove populated shared template
|
|
336
|
-
- **templates**: include value objects template when is specified by the user
|
|
337
|
-
- **templates**: import and call macro inside project structures templates
|
|
338
|
-
- **prompter**: format all answers to snake case
|
|
339
|
-
- use TemplateTypes instead of literal string
|
|
340
|
-
- **project-generator**: change template path name when generating project
|
|
341
|
-
- **templates**: move ddd templates inside project_structure folder
|
|
342
|
-
- **prompter**: migrate BasicPrompter to use questionary instead of typer to make the questions as it manages multiple selections better
|
|
343
|
-
- **cli**: instantiate BasicPrompter instead of using class method
|
|
344
|
-
- **prompter**: simplify ask method by using Question object an iterating over the list of defined questions
|
|
345
|
-
- **templates**: modularize main_structure file
|
|
346
|
-
- **project-generator**: create project structure inside a temporary directory
|
|
347
|
-
- **project-generator**: delegate template management to TemplateManager
|
|
348
|
-
- **cli**: call BasicPrompter and ProjectGenerator inside cli app
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: instant-python
|
|
3
|
-
Version: 0.0
|
|
3
|
+
Version: 0.2.0
|
|
4
4
|
Summary: Python automatic project generator
|
|
5
5
|
Author-email: dimanu-py <diegomtz126@gmail.com>
|
|
6
6
|
License: Apache License
|
|
@@ -205,7 +205,7 @@ License: Apache License
|
|
|
205
205
|
See the License for the specific language governing permissions and
|
|
206
206
|
limitations under the License.
|
|
207
207
|
License-File: LICENSE
|
|
208
|
-
Requires-Python: >=3.
|
|
208
|
+
Requires-Python: >=3.9
|
|
209
209
|
Requires-Dist: jinja2>=3.1.5
|
|
210
210
|
Requires-Dist: pyyaml>=6.0.2
|
|
211
211
|
Requires-Dist: questionary>=2.1.0
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
# Contributing
|
|
1
|
+
# Contributing & Reporting
|
|
2
2
|
|
|
3
3
|
If you would like to contribute and help to improve this library feel free to fork this project and create a pull request.
|
|
4
4
|
|
|
5
5
|
You may as well check out the [open issues](https://github.com/dimanu-py/instant-python/issues) to see whether somebody is already
|
|
6
6
|
addressing your problem or solve your doubts. If not, feel free to open a new issue with any improvement that can be made.
|
|
7
7
|
|
|
8
|
+
Any bug that you find is welcome to be reported. Please make sure to include as much information as possible and follow the
|
|
9
|
+
correct templates. This will help us to understand the problem and fix it as soon as possible.
|
|
10
|
+
|
|
8
11
|
If you find this library useful and want to help, you can also give it a star on GitHub or donate in the following link
|
|
9
12
|
|
|
10
13
|
[](https://buymeacoffee.com/dimanu.py)
|
|
@@ -31,6 +31,7 @@ class PdmManager(DependencyManager):
|
|
|
31
31
|
print(f">>> Python {version} installed successfully")
|
|
32
32
|
|
|
33
33
|
def install_dependencies(self, dependencies: list[str]) -> None:
|
|
34
|
+
self._create_virtual_environment()
|
|
34
35
|
for dependency_name in dependencies:
|
|
35
36
|
self._install_dependency(dependency_name)
|
|
36
37
|
|
|
@@ -67,6 +68,12 @@ class PdmManager(DependencyManager):
|
|
|
67
68
|
group_flag += f"--group {group_name}"
|
|
68
69
|
return f"{dev_flag} {group_flag}"
|
|
69
70
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
71
|
+
def _create_virtual_environment(self) -> None:
|
|
72
|
+
command = f"{self._pdm} install"
|
|
73
|
+
subprocess.run(
|
|
74
|
+
command,
|
|
75
|
+
shell=True,
|
|
76
|
+
check=True,
|
|
77
|
+
cwd=self._project_directory,
|
|
78
|
+
stdout=subprocess.DEVNULL,
|
|
79
|
+
)
|
|
@@ -33,6 +33,7 @@ class UvManager(DependencyManager):
|
|
|
33
33
|
print(f">>> Python {version} installed successfully")
|
|
34
34
|
|
|
35
35
|
def install_dependencies(self, dependencies: list[str]) -> None:
|
|
36
|
+
self._create_virtual_environment()
|
|
36
37
|
for dependency_name in dependencies:
|
|
37
38
|
self._install_dependency(dependency_name)
|
|
38
39
|
|
|
@@ -71,3 +72,13 @@ class UvManager(DependencyManager):
|
|
|
71
72
|
).ask()["group_name"]
|
|
72
73
|
flag = f"--group {group_name}"
|
|
73
74
|
return flag
|
|
75
|
+
|
|
76
|
+
def _create_virtual_environment(self) -> None:
|
|
77
|
+
command = f"{self._uv} sync"
|
|
78
|
+
subprocess.run(
|
|
79
|
+
command,
|
|
80
|
+
shell=True,
|
|
81
|
+
check=True,
|
|
82
|
+
cwd=self._project_directory,
|
|
83
|
+
stdout=subprocess.DEVNULL,
|
|
84
|
+
)
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
from pathlib import Path
|
|
2
|
-
from typing import override
|
|
3
2
|
|
|
4
3
|
import yaml
|
|
5
4
|
|
|
@@ -10,7 +9,6 @@ class CustomTemplateManager(TemplateManager):
|
|
|
10
9
|
def __init__(self, template_path: str) -> None:
|
|
11
10
|
self._template_path = Path(template_path).expanduser().resolve()
|
|
12
11
|
|
|
13
|
-
@override
|
|
14
12
|
def get_project(self, template_name: str) -> dict[str, str]:
|
|
15
13
|
if not self._template_path.is_file():
|
|
16
14
|
raise FileNotFoundError(
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
from typing import override
|
|
2
|
-
|
|
3
1
|
import yaml
|
|
4
2
|
from jinja2 import Environment, Template, PackageLoader
|
|
5
3
|
|
|
@@ -20,7 +18,6 @@ class DefaultTemplateManager(TemplateManager):
|
|
|
20
18
|
self._env.filters["is_in"] = is_in
|
|
21
19
|
self._env.filters["compute_base_path"] = compute_base_path
|
|
22
20
|
|
|
23
|
-
@override
|
|
24
21
|
def get_project(self, template_name: str) -> dict:
|
|
25
22
|
template = self._get_template(
|
|
26
23
|
f"{template_name}/{self._requirements.template}/main_structure.yml.j2"
|
|
@@ -7,7 +7,7 @@ from instant_python.project_generator.node import Node
|
|
|
7
7
|
class File(Node):
|
|
8
8
|
|
|
9
9
|
def __init__(self, name: str, extension: str) -> None:
|
|
10
|
-
self._file_name = f"{name.split(
|
|
10
|
+
self._file_name = f"{name.split('/')[-1]}{extension}"
|
|
11
11
|
self._template_path = f"boilerplate/{name}{extension}"
|
|
12
12
|
self._template_manager = DefaultTemplateManager()
|
|
13
13
|
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
from typing import Union
|
|
2
|
+
|
|
1
3
|
from instant_python.question_prompter.question.question import Question
|
|
2
4
|
|
|
3
5
|
|
|
4
6
|
class ConditionalQuestion:
|
|
5
7
|
def __init__(
|
|
6
|
-
self, base_question: Question, subquestions: list[Question], condition: str | bool
|
|
8
|
+
self, base_question: Question, subquestions: Union[list[Question], "ConditionalQuestion"], condition: str | bool
|
|
7
9
|
) -> None:
|
|
8
10
|
self._base_question = base_question
|
|
9
11
|
self._subquestions = subquestions
|
|
@@ -16,8 +18,12 @@ class ConditionalQuestion:
|
|
|
16
18
|
return base_answer
|
|
17
19
|
|
|
18
20
|
answers = base_answer
|
|
19
|
-
|
|
20
|
-
|
|
21
|
+
|
|
22
|
+
if isinstance(self._subquestions, ConditionalQuestion):
|
|
23
|
+
answers.update(self._subquestions.ask())
|
|
24
|
+
else:
|
|
25
|
+
for question in self._subquestions:
|
|
26
|
+
answers.update(question.ask())
|
|
21
27
|
return answers
|
|
22
28
|
|
|
23
29
|
def _base_answer_does_not_satisfies_condition(self, base_answer: dict[str, str]) -> bool:
|