instant-python 0.6.2__tar.gz → 0.8.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.6.2 → instant_python-0.8.0}/CHANGELOG.md +25 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/PKG-INFO +2 -1
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/commands/init.py +4 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/dependency_manager/dependency_manager.py +2 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/dependency_manager/pdm_dependency_manager.py +16 -2
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/dependency_manager/uv_dependency_manager.py +25 -2
- instant_python-0.8.0/instant_python/formatter/project_formatter.py +19 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/project_structure/clean_architecture/source.yml.j2 +4 -1
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/project_structure/domain_driven_design/source.yml.j2 +5 -2
- instant_python-0.8.0/instant_python/templates/project_structure/fastapi_domain.yml.j2 +7 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/project_structure/standard_project/source.yml.j2 +1 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/pyproject.toml +4 -3
- instant_python-0.8.0/test/formatter/mock_project_formatter.py +15 -0
- instant_python-0.8.0/test/formatter/test_project_formatter.py +13 -0
- instant_python-0.8.0/test/project_creator/__init__.py +0 -0
- instant_python-0.8.0/test/render/__init__.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/uv.lock +1 -1
- {instant_python-0.6.2 → instant_python-0.8.0}/.github/FUNDING.yml +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/.github/actions/python_setup/action.yml +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/.github/workflows/pages.yml +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/.github/workflows/publish.yml +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/.github/workflows/release.yml +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/.github/workflows/test_lint.yml +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/.gitignore +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/.python-version +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/LICENSE +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/README.md +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/cz.yaml +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/docs/assets/favicon.svg +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/docs/assets/logo.svg +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/docs/downloads_macro.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/docs/examples/configuration.md +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/docs/examples/custom_template.md +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/docs/guide/command_config.md +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/docs/guide/command_init.md +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/docs/home/contributing.md +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/docs/home/getting_started.md +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/docs/home/index.md +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/docs/home/releases.md +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/__init__.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/cli.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/commands/__init__.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/commands/config.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/__init__.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/configuration_schema.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/dependency/__init__.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/dependency/dependency_configuration.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/dependency/not_dev_dependency_included_in_group.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/general/__init__.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/general/general_configuration.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/general/invalid_dependency_manager_value.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/general/invalid_license_value.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/general/invalid_python_version_value.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/git/__init__.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/git/git_configuration.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/git/git_user_or_email_not_present.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/parser/__init__.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/parser/config_key_not_present.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/parser/configuration_file_not_found.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/parser/empty_configuration_not_allowed.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/parser/missing_mandatory_fields.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/parser/parser.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/question/__init__.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/question/boolean_question.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/question/choice_question.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/question/conditional_question.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/question/free_text_question.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/question/multiple_choice_question.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/question/question.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/question/questionary.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/question_wizard.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/step/__init__.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/step/dependencies_step.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/step/general_step.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/step/git_step.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/step/steps.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/step/template_step.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/template/__init__.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/template/bounded_context_not_applicable.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/template/bounded_context_not_especified.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/template/invalid_built_in_features_values.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/template/invalid_template_value.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/template/template_configuration.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/dependency_manager/__init__.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/dependency_manager/command_execution_error.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/dependency_manager/dependency_manager_factory.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/dependency_manager/unknown_dependency_manager_error.py +0 -0
- {instant_python-0.6.2/instant_python/git → instant_python-0.8.0/instant_python/formatter}/__init__.py +0 -0
- {instant_python-0.6.2/instant_python/project_creator → instant_python-0.8.0/instant_python/git}/__init__.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/git/git_configurer.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/instant_python_typer.py +0 -0
- {instant_python-0.6.2/instant_python/render → instant_python-0.8.0/instant_python/project_creator}/__init__.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/project_creator/directory.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/project_creator/file.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/project_creator/file_has_not_been_created.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/project_creator/file_system.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/project_creator/node.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/project_creator/unknown_node_typer_error.py +0 -0
- {instant_python-0.6.2/instant_python/shared → instant_python-0.8.0/instant_python/render}/__init__.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/render/custom_project_renderer.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/render/jinja_custom_filters.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/render/jinja_environment.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/render/jinja_project_renderer.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/render/template_file_not_found_error.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/render/unknown_template_error.py +0 -0
- {instant_python-0.6.2/instant_python/templates/boilerplate/event_bus → instant_python-0.8.0/instant_python/shared}/__init__.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/shared/application_error.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/shared/error_types.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/shared/supported_built_in_features.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/shared/supported_licenses.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/shared/supported_managers.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/shared/supported_python_versions.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/shared/supported_templates.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/.gitignore +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/.pre-commit-config.yml +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/.python-version +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/LICENSE +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/README.md +0 -0
- {instant_python-0.6.2/instant_python/templates/boilerplate/exceptions → instant_python-0.8.0/instant_python/templates/boilerplate/event_bus}/__init__.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/event_bus/aggregate_root.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/event_bus/domain_event.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/event_bus/domain_event_json_deserializer.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/event_bus/domain_event_json_serializer.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/event_bus/domain_event_subscriber.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/event_bus/event_bus.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/event_bus/exchange_type.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/event_bus/mock_event_bus.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/event_bus/rabbit_mq_configurer.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/event_bus/rabbit_mq_connection.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/event_bus/rabbit_mq_consumer.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/event_bus/rabbit_mq_event_bus.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/event_bus/rabbit_mq_queue_formatter.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/event_bus/rabbit_mq_settings.py +0 -0
- {instant_python-0.6.2/instant_python/templates/boilerplate/fastapi → instant_python-0.8.0/instant_python/templates/boilerplate/exceptions}/__init__.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/exceptions/domain_error.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/exceptions/domain_event_type_not_found_error.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/exceptions/incorrect_value_type_error.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/exceptions/invalid_id_format_error.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/exceptions/invalid_negative_value_error.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/exceptions/rabbit_mq_connection_not_established_error.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/exceptions/required_value_error.py +0 -0
- {instant_python-0.6.2/instant_python/templates/boilerplate/logger → instant_python-0.8.0/instant_python/templates/boilerplate/fastapi}/__init__.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/fastapi/application.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/fastapi/http_response.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/fastapi/lifespan.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/fastapi/status_code.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/github/action.yml +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/github/lint.yml +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/github/test.yml +0 -0
- {instant_python-0.6.2/instant_python/templates/boilerplate/persistence → instant_python-0.8.0/instant_python/templates/boilerplate/logger}/__init__.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/logger/json_formatter.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/logger/logger.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/mypy.ini +0 -0
- {instant_python-0.6.2/instant_python/templates/boilerplate/persistence/async → instant_python-0.8.0/instant_python/templates/boilerplate/persistence}/__init__.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/persistence/alembic_migrator.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/persistence/async/README.md +0 -0
- {instant_python-0.6.2/instant_python/templates/boilerplate/persistence/synchronous → instant_python-0.8.0/instant_python/templates/boilerplate/persistence/async}/__init__.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/persistence/async/alembic.ini +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/persistence/async/async_engine_fixture.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/persistence/async/env.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/persistence/async/models_metadata.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/persistence/async/postgres_settings.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/persistence/async/script.py.mako +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/persistence/async/sqlalchemy_repository.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/persistence/base.py +0 -0
- {instant_python-0.6.2/instant_python/templates/boilerplate/value_object → instant_python-0.8.0/instant_python/templates/boilerplate/persistence/synchronous}/__init__.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/persistence/synchronous/session_maker.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/persistence/synchronous/sqlalchemy_repository.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/pyproject.toml +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/pytest.ini +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/random_generator.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/scripts/add_dependency.sh +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/scripts/create_aggregate.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/scripts/insert_template.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/scripts/integration.sh +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/scripts/local_setup.sh +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/scripts/makefile +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/scripts/post-merge +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/scripts/pre-commit +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/scripts/pre-push +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/scripts/remove_dependency.sh +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/scripts/unit.sh +0 -0
- {instant_python-0.6.2/test → instant_python-0.8.0/instant_python/templates/boilerplate/value_object}/__init__.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/value_object/int_value_object.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/value_object/string_value_object.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/value_object/uuid.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/value_object/value_object.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/project_structure/alembic_migrator.yml.j2 +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/project_structure/async_alembic.yml.j2 +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/project_structure/async_sqlalchemy.yml.j2 +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/project_structure/clean_architecture/main_structure.yml.j2 +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/project_structure/clean_architecture/test.yml.j2 +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/project_structure/domain_driven_design/bounded_context.yml.j2 +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/project_structure/domain_driven_design/main_structure.yml.j2 +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/project_structure/domain_driven_design/test.yml.j2 +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/project_structure/event_bus_domain.yml.j2 +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/project_structure/event_bus_infra.yml.j2 +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/project_structure/fastapi_app.yml.j2 +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/project_structure/fastapi_infra.yml.j2 +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/project_structure/github_action.yml.j2 +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/project_structure/gitignore.yml.j2 +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/project_structure/license.yml.j2 +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/project_structure/logger.yml.j2 +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/project_structure/macros.j2 +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/project_structure/makefile.yml.j2 +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/project_structure/mypy.yml.j2 +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/project_structure/pre_commit.yml.j2 +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/project_structure/pyproject.yml.j2 +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/project_structure/pytest.yml.j2 +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/project_structure/python_version.yml.j2 +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/project_structure/readme.yml.j2 +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/project_structure/standard_project/main_structure.yml.j2 +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/project_structure/standard_project/test.yml.j2 +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/project_structure/synchronous_sqlalchemy.yml.j2 +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/project_structure/value_objects.yml.j2 +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/makefile +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/mkdocs.yml +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/mypy.ini +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/scripts/add_dependency.sh +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/scripts/remove_dependency.sh +0 -0
- {instant_python-0.6.2/test/configuration → instant_python-0.8.0/test}/__init__.py +0 -0
- {instant_python-0.6.2/test/configuration/dependency → instant_python-0.8.0/test/configuration}/__init__.py +0 -0
- {instant_python-0.6.2/test/configuration/general → instant_python-0.8.0/test/configuration/dependency}/__init__.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/configuration/dependency/dependency_configuration_mother.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/configuration/dependency/test_dependency_configuration.py +0 -0
- {instant_python-0.6.2/test/configuration/git → instant_python-0.8.0/test/configuration/general}/__init__.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/configuration/general/general_configuration_mother.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/configuration/general/test_general_configuration.py +0 -0
- {instant_python-0.6.2/test/configuration/parser → instant_python-0.8.0/test/configuration/git}/__init__.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/configuration/git/git_configuration_mother.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/configuration/git/test_git_configuration.py +0 -0
- {instant_python-0.6.2/test/configuration/parser/resources → instant_python-0.8.0/test/configuration/parser}/__init__.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/configuration/parser/approvaltests_config.json +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/configuration/parser/approved_files/TestParser.test_should_parse_configuration.approved.txt +0 -0
- {instant_python-0.6.2/test/configuration/question → instant_python-0.8.0/test/configuration/parser/resources}/__init__.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/configuration/parser/resources/config.yml +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/configuration/parser/resources/empty_config.yml +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/configuration/parser/resources/missing_dependencies_fields_config.yml +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/configuration/parser/resources/missing_general_fields_config.yml +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/configuration/parser/resources/missing_git_fields_config.yml +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/configuration/parser/resources/missing_keys_config.yml +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/configuration/parser/resources/missing_template_fields_config.yml +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/configuration/parser/test_parser.py +0 -0
- {instant_python-0.6.2/test/configuration/template → instant_python-0.8.0/test/configuration/question}/__init__.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/configuration/question/test_boolean_question.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/configuration/question/test_choice_question.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/configuration/question/test_free_text_question.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/configuration/question/test_multiple_choice_question.py +0 -0
- {instant_python-0.6.2/test/dependency_manager → instant_python-0.8.0/test/configuration/template}/__init__.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/configuration/template/template_configuration_mother.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/configuration/template/test_template_configuration.py +0 -0
- {instant_python-0.6.2/test/git → instant_python-0.8.0/test/dependency_manager}/__init__.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/dependency_manager/mock_pdm_dependency_manager.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/dependency_manager/mock_uv_dependency_manager.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/dependency_manager/test_pdm_dependency_manager.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/dependency_manager/test_uv_dependency_manager.py +0 -0
- {instant_python-0.6.2/test/project_creator → instant_python-0.8.0/test/formatter}/__init__.py +0 -0
- {instant_python-0.6.2/test/render → instant_python-0.8.0/test/git}/__init__.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/git/mock_git_configurer.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/git/test_git_configurer.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/project_creator/approvaltests_config.json +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/project_creator/approved_files/TestFileSystem.test_should_create_file_system_in_disk.rendered_custom_project_structure.json.approved.txt +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/project_creator/approved_files/TestFileSystem.test_should_create_file_system_in_disk.rendered_project_structure.json.approved.txt +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/project_creator/approved_files/TestFileSystem.test_should_create_folders_and_files.approved.txt +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/project_creator/approved_files/TestFileSystem.test_should_generate_file_system_tree.approved.txt +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/project_creator/directory_mother.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/project_creator/resources/boilerplate/exceptions/domain_error.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/project_creator/resources/boilerplate/exceptions/domain_error_simple.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/project_creator/resources/clean_architecture/main_structure.yml.j2 +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/project_creator/resources/config.yml +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/project_creator/resources/rendered_custom_project_structure.json +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/project_creator/resources/rendered_project_structure.json +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/project_creator/test_directory.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/project_creator/test_file.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/project_creator/test_file_system.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/random_generator.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/render/approvaltests_config.json +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/render/approved_files/TestCustomProjectRenderer.test_should_render_custom_template.approved.txt +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/render/approved_files/TestJinjaProjectRenderer.test_should_render_template_for.clean_architecture_config.yml.approved.txt +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/render/approved_files/TestJinjaProjectRenderer.test_should_render_template_for.domain_driven_design_config.yml.approved.txt +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/render/approved_files/TestJinjaProjectRenderer.test_should_render_template_for.received.txt +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/render/approved_files/TestJinjaProjectRenderer.test_should_render_template_for.standard_project_with_dependency_config.yml.approved.txt +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/render/approved_files/TestJinjaProjectRenderer.test_should_render_template_for.standard_project_with_git_config.yml.approved.txt +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/render/resources/clean_architecture/main_structure.yml.j2 +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/render/resources/clean_architecture_config.yml +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/render/resources/custom_template.yml +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/render/resources/domain_driven_design/main_structure.yml.j2 +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/render/resources/domain_driven_design_config.yml +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/render/resources/standard_project/main_structure.yml.j2 +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/render/resources/standard_project_with_dependency_config.yml +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/render/resources/standard_project_with_git_config.yml +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/render/resources/test_template.j2 +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/render/test_custom_project_renderer.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/render/test_jinja_environment.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/test/render/test_jinja_project_renderer.py +0 -0
- {instant_python-0.6.2 → instant_python-0.8.0}/tox.ini +0 -0
|
@@ -1,3 +1,28 @@
|
|
|
1
|
+
## 0.8.0 (2025-07-01)
|
|
2
|
+
|
|
3
|
+
### ✨ Features
|
|
4
|
+
|
|
5
|
+
- **dependency-manager**: get dependency manager installation command based on system os
|
|
6
|
+
- **dependency-manager**: set different commands for dependency executable based on system os
|
|
7
|
+
- **dependency-manager**: add os information in dependency manager to be able to modify installation depending on user os
|
|
8
|
+
|
|
9
|
+
### ♻️ Code Refactoring
|
|
10
|
+
|
|
11
|
+
- **dependency-manager**: add message for the user to notify uv should be added to the path when installing it on windows
|
|
12
|
+
- **dependency-manager**: notify the user when all dependencies have been installed
|
|
13
|
+
- **dependency-manager**: extract method to set executable path setting based on system os
|
|
14
|
+
|
|
15
|
+
## 0.7.0 (2025-06-30)
|
|
16
|
+
|
|
17
|
+
### ✨ Features
|
|
18
|
+
|
|
19
|
+
- **commands**: call project formatter in 'init' command once the file system has been generated
|
|
20
|
+
- **formatter**: add project formatter to be able to format included code in the project
|
|
21
|
+
|
|
22
|
+
### 🐛 Bug Fixes
|
|
23
|
+
|
|
24
|
+
- **templates**: include DomainError template when using fastapi application built in feature
|
|
25
|
+
|
|
1
26
|
## 0.6.2 (2025-06-30)
|
|
2
27
|
|
|
3
28
|
### 🐛 Bug Fixes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: instant-python
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.8.0
|
|
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/
|
|
@@ -210,6 +210,7 @@ License-File: LICENSE
|
|
|
210
210
|
Classifier: Environment :: Console
|
|
211
211
|
Classifier: Intended Audience :: Developers
|
|
212
212
|
Classifier: Operating System :: MacOS
|
|
213
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
213
214
|
Classifier: Operating System :: POSIX :: Linux
|
|
214
215
|
Classifier: Operating System :: Unix
|
|
215
216
|
Classifier: Topic :: Software Development :: Code Generators
|
|
@@ -2,6 +2,7 @@ import typer
|
|
|
2
2
|
|
|
3
3
|
from instant_python.configuration.parser.parser import Parser
|
|
4
4
|
from instant_python.dependency_manager.dependency_manager_factory import DependencyManagerFactory
|
|
5
|
+
from instant_python.formatter.project_formatter import ProjectFormatter
|
|
5
6
|
from instant_python.git.git_configurer import GitConfigurer
|
|
6
7
|
from instant_python.project_creator.file_system import FileSystem
|
|
7
8
|
from instant_python.render.custom_project_renderer import CustomProjectRenderer
|
|
@@ -44,6 +45,9 @@ def create_new_project(
|
|
|
44
45
|
dependencies=configuration.dependencies,
|
|
45
46
|
)
|
|
46
47
|
|
|
48
|
+
formatter = ProjectFormatter(project_directory=configuration.project_folder_name)
|
|
49
|
+
formatter.format()
|
|
50
|
+
|
|
47
51
|
git_configurer = GitConfigurer(project_directory=configuration.project_folder_name)
|
|
48
52
|
git_configurer.setup_repository(configuration.git)
|
|
49
53
|
configuration.save_on_project_folder()
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import subprocess
|
|
2
2
|
from abc import ABC, abstractmethod
|
|
3
|
+
import sys
|
|
3
4
|
|
|
4
5
|
from instant_python.configuration.dependency.dependency_configuration import DependencyConfiguration
|
|
5
6
|
|
|
@@ -7,6 +8,7 @@ from instant_python.configuration.dependency.dependency_configuration import Dep
|
|
|
7
8
|
class DependencyManager(ABC):
|
|
8
9
|
def __init__(self, project_directory: str) -> None:
|
|
9
10
|
self._project_directory = project_directory
|
|
11
|
+
self._system_os = sys.platform
|
|
10
12
|
|
|
11
13
|
@abstractmethod
|
|
12
14
|
def setup_environment(self, python_version: str, dependencies: list[DependencyConfiguration]) -> None:
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
from pathlib import Path
|
|
1
2
|
import subprocess
|
|
2
3
|
|
|
3
4
|
from instant_python.configuration.dependency.dependency_configuration import DependencyConfiguration
|
|
@@ -8,7 +9,7 @@ from instant_python.dependency_manager.command_execution_error import CommandExe
|
|
|
8
9
|
class PdmDependencyManager(DependencyManager):
|
|
9
10
|
def __init__(self, project_directory: str) -> None:
|
|
10
11
|
super().__init__(project_directory)
|
|
11
|
-
self._pdm =
|
|
12
|
+
self._pdm = self._set_pdm_executable_based_on_os()
|
|
12
13
|
|
|
13
14
|
def setup_environment(self, python_version: str, dependencies: list[DependencyConfiguration]) -> None:
|
|
14
15
|
try:
|
|
@@ -20,9 +21,21 @@ class PdmDependencyManager(DependencyManager):
|
|
|
20
21
|
|
|
21
22
|
def _install(self) -> None:
|
|
22
23
|
print(">>> Installing pdm...")
|
|
23
|
-
self._run_command(command=
|
|
24
|
+
self._run_command(command=self._get_installation_command_based_on_os())
|
|
24
25
|
print(">>> pdm installed successfully")
|
|
25
26
|
|
|
27
|
+
def _set_pdm_executable_based_on_os(self):
|
|
28
|
+
return (
|
|
29
|
+
f"{str(Path.home() / 'AppData' / 'Roaming' / 'Python' / 'Scripts' / 'pdm.exe')}"
|
|
30
|
+
if self._system_os.startswith("win")
|
|
31
|
+
else "~/.local/bin/pdm"
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
def _get_installation_command_based_on_os(self) -> str:
|
|
35
|
+
if self._system_os.startswith("win"):
|
|
36
|
+
return 'powershell -ExecutionPolicy ByPass -c "irm https://pdm-project.org/install-pdm.py | py -"'
|
|
37
|
+
return "curl -sSL https://pdm-project.org/install-pdm.py | python3 -"
|
|
38
|
+
|
|
26
39
|
def _install_python(self, version: str) -> None:
|
|
27
40
|
print(f">>> Installing Python {version}...")
|
|
28
41
|
self._run_command(command=f"{self._pdm} python install {version}")
|
|
@@ -34,6 +47,7 @@ class PdmDependencyManager(DependencyManager):
|
|
|
34
47
|
for dependency in dependencies:
|
|
35
48
|
command = self._build_dependency_install_command(dependency)
|
|
36
49
|
self._run_command(command)
|
|
50
|
+
print(">>> Dependencies installed successfully")
|
|
37
51
|
|
|
38
52
|
def _build_dependency_install_command(self, dependency: DependencyConfiguration) -> str:
|
|
39
53
|
command = [f"{self._pdm} add"]
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
from pathlib import Path
|
|
1
2
|
import subprocess
|
|
2
3
|
|
|
3
4
|
from instant_python.configuration.dependency.dependency_configuration import DependencyConfiguration
|
|
@@ -8,7 +9,7 @@ from instant_python.dependency_manager.command_execution_error import CommandExe
|
|
|
8
9
|
class UvDependencyManager(DependencyManager):
|
|
9
10
|
def __init__(self, project_directory: str) -> None:
|
|
10
11
|
super().__init__(project_directory)
|
|
11
|
-
self._uv =
|
|
12
|
+
self._uv = self._set_uv_executable_based_on_os()
|
|
12
13
|
|
|
13
14
|
def setup_environment(self, python_version: str, dependencies: list[DependencyConfiguration]) -> None:
|
|
14
15
|
try:
|
|
@@ -20,8 +21,29 @@ class UvDependencyManager(DependencyManager):
|
|
|
20
21
|
|
|
21
22
|
def _install(self) -> None:
|
|
22
23
|
print(">>> Installing uv...")
|
|
23
|
-
self._run_command(command=
|
|
24
|
+
self._run_command(command=self._get_installation_command_based_on_os())
|
|
24
25
|
print(">>> uv installed successfully")
|
|
26
|
+
if self._system_os.startswith("win"):
|
|
27
|
+
print(
|
|
28
|
+
">>> Remember to add uv to your PATH environment variable. You can do this:\n"
|
|
29
|
+
" 1. Running the following command if you use cmd:\n"
|
|
30
|
+
" set Path=%Path%;%USERPROFILE%\\.local\\bin\n"
|
|
31
|
+
" 2. Running the following command if you use PowerShell:\n"
|
|
32
|
+
" $env:Path = '$env:USERPROFILE\\.local\\bin;$env:Path'\n"
|
|
33
|
+
" 3. Restarting your shell."
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
def _get_installation_command_based_on_os(self) -> str:
|
|
37
|
+
if self._system_os.startswith("win"):
|
|
38
|
+
return 'powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"'
|
|
39
|
+
return "curl -LsSf https://astral.sh/uv/install.sh | sh"
|
|
40
|
+
|
|
41
|
+
def _set_uv_executable_based_on_os(self):
|
|
42
|
+
return (
|
|
43
|
+
f"{str(Path.home() / '.local' / 'bin' / 'uv.exe')}"
|
|
44
|
+
if self._system_os.startswith("win")
|
|
45
|
+
else "~/.local/bin/uv"
|
|
46
|
+
)
|
|
25
47
|
|
|
26
48
|
def _install_python(self, version: str) -> None:
|
|
27
49
|
print(f">>> Installing Python {version}...")
|
|
@@ -34,6 +56,7 @@ class UvDependencyManager(DependencyManager):
|
|
|
34
56
|
for dependency in dependencies:
|
|
35
57
|
command = self._build_dependency_install_command(dependency)
|
|
36
58
|
self._run_command(command)
|
|
59
|
+
print(">>> Dependencies installed successfully")
|
|
37
60
|
|
|
38
61
|
def _build_dependency_install_command(self, dependency: DependencyConfiguration) -> str:
|
|
39
62
|
command = [f"{self._uv} add"]
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import subprocess
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class ProjectFormatter:
|
|
5
|
+
def __init__(self, project_directory: str) -> None:
|
|
6
|
+
self._project_directory = project_directory
|
|
7
|
+
|
|
8
|
+
def format(self) -> None:
|
|
9
|
+
self._run_command(command="uvx ruff format")
|
|
10
|
+
|
|
11
|
+
def _run_command(self, command: str) -> None:
|
|
12
|
+
subprocess.run(
|
|
13
|
+
command,
|
|
14
|
+
shell=True,
|
|
15
|
+
check=True,
|
|
16
|
+
cwd=self._project_directory,
|
|
17
|
+
stdout=subprocess.DEVNULL,
|
|
18
|
+
stderr=subprocess.PIPE,
|
|
19
|
+
)
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
- name: domain
|
|
14
14
|
type: directory
|
|
15
15
|
python: True
|
|
16
|
-
{% if ["value_objects", "event_bus"] | is_in(template.built_in_features) %}
|
|
16
|
+
{% if ["value_objects", "event_bus", "fastapi_application"] | is_in(template.built_in_features) %}
|
|
17
17
|
children:
|
|
18
18
|
{% if "value_objects" in template.built_in_features %}
|
|
19
19
|
{{ macros.include_and_indent("project_structure/value_objects.yml.j2", 8) }}
|
|
@@ -21,6 +21,9 @@
|
|
|
21
21
|
{% if "event_bus" in template.built_in_features %}
|
|
22
22
|
{{ macros.include_and_indent("project_structure/event_bus_domain.yml.j2", 8) }}
|
|
23
23
|
{% endif %}
|
|
24
|
+
{% if "fastapi_application" in template.built_in_features %}
|
|
25
|
+
{{ macros.include_and_indent("project_structure/fastapi_domain.yml.j2", 8) }}
|
|
26
|
+
{% endif %}
|
|
24
27
|
{% endif %}
|
|
25
28
|
- name: application
|
|
26
29
|
type: directory
|
|
@@ -13,9 +13,9 @@
|
|
|
13
13
|
- name: shared
|
|
14
14
|
type: directory
|
|
15
15
|
python: True
|
|
16
|
-
{% if ["value_objects", "synchronous_sqlalchemy", "event_bus", "async_alembic"] | is_in(template.built_in_features) %}
|
|
16
|
+
{% if ["value_objects", "synchronous_sqlalchemy", "event_bus", "async_alembic", "fastapi_application"] | is_in(template.built_in_features) %}
|
|
17
17
|
children:
|
|
18
|
-
{% if ["value_objects", "event_bus"] | is_in(template.built_in_features) %}
|
|
18
|
+
{% if ["value_objects", "event_bus", "fastapi_application"] | is_in(template.built_in_features) %}
|
|
19
19
|
- name: domain
|
|
20
20
|
type: directory
|
|
21
21
|
python: True
|
|
@@ -26,6 +26,9 @@
|
|
|
26
26
|
{% if "event_bus" in template.built_in_features %}
|
|
27
27
|
{{ macros.include_and_indent("project_structure/event_bus_domain.yml.j2", 12) }}
|
|
28
28
|
{% endif %}
|
|
29
|
+
{% if "fastapi_application" in template.built_in_features %}
|
|
30
|
+
{{ macros.include_and_indent("project_structure/fastapi_domain.yml.j2", 12) }}
|
|
31
|
+
{% endif %}
|
|
29
32
|
{% endif %}
|
|
30
33
|
{% if ["synchronous_sqlalchemy", "event_bus", "logger", "async_sqlalchemy", "async_alembic", "fastapi_application"] | is_in(template.built_in_features) %}
|
|
31
34
|
- name: infra
|
|
@@ -26,5 +26,6 @@
|
|
|
26
26
|
{% if "fastapi_application" in template.built_in_features %}
|
|
27
27
|
{{ macros.include_and_indent("project_structure/fastapi_app.yml.j2", 4) }}
|
|
28
28
|
{{ macros.include_and_indent("project_structure/fastapi_infra.yml.j2", 4) }}
|
|
29
|
+
{{ macros.include_and_indent("project_structure/fastapi_domain.yml.j2", 4) }}
|
|
29
30
|
{% endif %}
|
|
30
31
|
{% endif %}
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "instant-python"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.8.0"
|
|
8
8
|
description = "Instant boilerplate generation for Python projects"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = { file = "LICENSE" }
|
|
@@ -26,7 +26,8 @@ classifiers = [
|
|
|
26
26
|
"Intended Audience :: Developers",
|
|
27
27
|
"Operating System :: MacOS",
|
|
28
28
|
"Operating System :: POSIX :: Linux",
|
|
29
|
-
"Operating System :: Unix"
|
|
29
|
+
"Operating System :: Unix",
|
|
30
|
+
"Operating System :: Microsoft :: Windows",
|
|
30
31
|
]
|
|
31
32
|
|
|
32
33
|
include = [
|
|
@@ -41,7 +42,7 @@ repository = "https://github.com/dimanu-py/instant-python/"
|
|
|
41
42
|
ipy = "instant_python.cli:app"
|
|
42
43
|
|
|
43
44
|
[tool.ruff]
|
|
44
|
-
exclude = ["instant_python/templates/**"
|
|
45
|
+
exclude = ["instant_python/templates/**"]
|
|
45
46
|
line-length = 120
|
|
46
47
|
|
|
47
48
|
[tools.pytest.ini_options]
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from expects import expect, contain
|
|
2
|
+
|
|
3
|
+
from instant_python.formatter.project_formatter import ProjectFormatter
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class MockProjectFormatter(ProjectFormatter):
|
|
7
|
+
def __init__(self, project_directory: str) -> None:
|
|
8
|
+
super().__init__(project_directory)
|
|
9
|
+
self._commands: list[str] = []
|
|
10
|
+
|
|
11
|
+
def _run_command(self, command: str) -> None:
|
|
12
|
+
self._commands.append(command)
|
|
13
|
+
|
|
14
|
+
def expect_to_have_been_called_with(self, command: str) -> None:
|
|
15
|
+
expect(self._commands).to(contain(command))
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import os
|
|
2
|
+
|
|
3
|
+
from test.formatter.mock_project_formatter import MockProjectFormatter
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class TestProjectFormatter:
|
|
7
|
+
def setup_method(self) -> None:
|
|
8
|
+
self._formatter = MockProjectFormatter(project_directory=os.getcwd())
|
|
9
|
+
|
|
10
|
+
def test_should_format_project_files(self) -> None:
|
|
11
|
+
self._formatter.format()
|
|
12
|
+
|
|
13
|
+
self._formatter.expect_to_have_been_called_with("uvx ruff format")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/configuration_schema.py
RENAMED
|
File without changes
|
{instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/dependency/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/general/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/git/git_configuration.py
RENAMED
|
File without changes
|
|
File without changes
|
{instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/parser/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/question/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/question/question.py
RENAMED
|
File without changes
|
{instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/question/questionary.py
RENAMED
|
File without changes
|
{instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/question_wizard.py
RENAMED
|
File without changes
|
|
File without changes
|
{instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/step/dependencies_step.py
RENAMED
|
File without changes
|
{instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/step/general_step.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/step/template_step.py
RENAMED
|
File without changes
|
{instant_python-0.6.2 → instant_python-0.8.0}/instant_python/configuration/template/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{instant_python-0.6.2 → instant_python-0.8.0}/instant_python/render/custom_project_renderer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{instant_python-0.6.2 → instant_python-0.8.0}/instant_python/render/jinja_project_renderer.py
RENAMED
|
File without changes
|
{instant_python-0.6.2 → instant_python-0.8.0}/instant_python/render/template_file_not_found_error.py
RENAMED
|
File without changes
|
{instant_python-0.6.2 → instant_python-0.8.0}/instant_python/render/unknown_template_error.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{instant_python-0.6.2 → instant_python-0.8.0}/instant_python/shared/supported_built_in_features.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{instant_python-0.6.2 → instant_python-0.8.0}/instant_python/shared/supported_python_versions.py
RENAMED
|
File without changes
|
|
File without changes
|
{instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/.gitignore
RENAMED
|
File without changes
|
|
File without changes
|
{instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/.python-version
RENAMED
|
File without changes
|
|
File without changes
|
{instant_python-0.6.2 → instant_python-0.8.0}/instant_python/templates/boilerplate/README.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|