instant-python 0.8.1__tar.gz → 0.8.2__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.8.2/.github/ISSUE_TEMPLATE/bug_report.yml +67 -0
- instant_python-0.8.2/.github/ISSUE_TEMPLATE/feature_request.yml +21 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/.github/actions/python_setup/action.yml +9 -4
- instant_python-0.8.2/.github/pull_request_template.md +30 -0
- instant_python-0.8.2/.github/workflows/ci.yml +303 -0
- instant_python-0.8.2/.github/workflows/release.yml +77 -0
- instant_python-0.8.2/.pre-commit-config.yaml +73 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/CHANGELOG.md +50 -2
- instant_python-0.8.2/CITATION.cff +21 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/PKG-INFO +2 -2
- instant_python-0.8.2/SECURITY.md +43 -0
- instant_python-0.8.2/codeql-config.yml +3 -0
- instant_python-0.8.2/docs/changelog/.components/changelog_header.md.j2 +7 -0
- instant_python-0.8.2/docs/changelog/.components/changelog_init.md.j2 +21 -0
- instant_python-0.8.2/docs/changelog/.components/changelog_update.md.j2 +59 -0
- instant_python-0.8.2/docs/changelog/.components/changes.md.j2 +127 -0
- instant_python-0.8.2/docs/changelog/.components/first_release.md.j2 +18 -0
- instant_python-0.8.2/docs/changelog/.components/macros.md.j2 +187 -0
- instant_python-0.8.2/docs/changelog/.components/versioned_changes.md.j2 +20 -0
- instant_python-0.8.2/docs/changelog/.release_notes.md.j2 +60 -0
- instant_python-0.8.2/docs/changelog/CHANGELOG.md.j2 +22 -0
- instant_python-0.8.2/docs/home/contributing.md +205 -0
- instant_python-0.8.2/docs/home/releases.md +35 -0
- instant_python-0.8.2/docs/home/security.md +43 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/render/jinja_environment.py +1 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/fastapi/application.py +7 -1
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/fastapi/http_response.py +23 -1
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/logger/logger.py +11 -2
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/clean_architecture/source.yml.j2 +2 -2
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/domain_driven_design/source.yml.j2 +2 -2
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/fastapi_app.yml.j2 +3 -1
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/standard_project/source.yml.j2 +2 -2
- instant_python-0.8.2/makefile +120 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/mkdocs.yml +1 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/pyproject.toml +49 -9
- instant_python-0.8.2/scripts/add_dependency.py +24 -0
- instant_python-0.8.2/scripts/remove_dependency.py +22 -0
- instant_python-0.8.2/test/project_creator/approved_files/TestFileSystem.test_should_create_file_system_in_disk.rendered_project_structure_fastapi_with_logger.json.approved.txt +1 -0
- instant_python-0.8.2/test/project_creator/approved_files/TestFileSystem.test_should_create_file_system_in_disk.rendered_project_structure_fastapi_with_migrator.json.approved.txt +1 -0
- instant_python-0.8.2/test/project_creator/approved_files/TestFileSystem.test_should_create_file_system_in_disk.rendered_project_structure_only_with_fastapi.json.approved.txt +1 -0
- instant_python-0.8.2/test/project_creator/resources/boilerplate/fastapi/application.py +21 -0
- instant_python-0.8.2/test/project_creator/resources/boilerplate/fastapi/http_response.py +62 -0
- instant_python-0.8.2/test/project_creator/resources/boilerplate/fastapi/lifespan.py +11 -0
- instant_python-0.8.2/test/project_creator/resources/boilerplate/logger/__init__.py +0 -0
- instant_python-0.8.2/test/project_creator/resources/boilerplate/logger/logger.py +44 -0
- instant_python-0.8.2/test/project_creator/resources/boilerplate/persistence/alembic_migrator.py +18 -0
- instant_python-0.8.2/test/project_creator/resources/clean_architecture/main_structure.yml.j2 +69 -0
- instant_python-0.8.2/test/project_creator/resources/config_fastapi_with_logger.yml +26 -0
- instant_python-0.8.2/test/project_creator/resources/config_fastapi_with_migrator.yml +26 -0
- instant_python-0.8.2/test/project_creator/resources/config_with_only_fastapi.yml +25 -0
- instant_python-0.8.2/test/project_creator/resources/rendered_project_structure_fastapi_with_logger.json +64 -0
- instant_python-0.8.2/test/project_creator/resources/rendered_project_structure_fastapi_with_migrator.json +62 -0
- instant_python-0.8.2/test/project_creator/resources/rendered_project_structure_only_with_fastapi.json +52 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/project_creator/test_file_system.py +20 -5
- instant_python-0.8.2/test/render/__init__.py +0 -0
- instant_python-0.8.2/tox.ini +12 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/uv.lock +641 -14
- instant_python-0.8.1/.github/ISSUE_TEMPLATE/bug_report.md +0 -33
- instant_python-0.8.1/.github/ISSUE_TEMPLATE/feature_request.md +0 -23
- instant_python-0.8.1/.github/workflows/publish.yml +0 -21
- instant_python-0.8.1/.github/workflows/release.yml +0 -75
- instant_python-0.8.1/.github/workflows/test_lint.yml +0 -125
- instant_python-0.8.1/cz.yaml +0 -21
- instant_python-0.8.1/docs/home/contributing.md +0 -13
- instant_python-0.8.1/docs/home/releases.md +0 -37
- instant_python-0.8.1/makefile +0 -69
- instant_python-0.8.1/scripts/add_dependency.sh +0 -18
- instant_python-0.8.1/scripts/remove_dependency.sh +0 -18
- instant_python-0.8.1/test/render/resources/clean_architecture/main_structure.yml.j2 +0 -22
- instant_python-0.8.1/tox.ini +0 -18
- {instant_python-0.8.1 → instant_python-0.8.2}/.github/FUNDING.yml +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/.github/workflows/pages.yml +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/.gitignore +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/.python-version +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/LICENSE +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/README.md +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/docs/assets/favicon.svg +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/docs/assets/logo.svg +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/docs/downloads_macro.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/docs/examples/configuration.md +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/docs/examples/custom_template.md +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/docs/guide/command_config.md +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/docs/guide/command_init.md +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/docs/home/getting_started.md +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/docs/home/index.md +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/__init__.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/cli.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/commands/__init__.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/commands/config.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/commands/init.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/__init__.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/configuration_schema.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/dependency/__init__.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/dependency/dependency_configuration.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/dependency/not_dev_dependency_included_in_group.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/general/__init__.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/general/general_configuration.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/general/invalid_dependency_manager_value.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/general/invalid_license_value.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/general/invalid_python_version_value.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/git/__init__.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/git/git_configuration.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/git/git_user_or_email_not_present.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/parser/__init__.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/parser/config_key_not_present.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/parser/configuration_file_not_found.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/parser/empty_configuration_not_allowed.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/parser/missing_mandatory_fields.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/parser/parser.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/question/__init__.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/question/boolean_question.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/question/choice_question.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/question/conditional_question.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/question/free_text_question.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/question/multiple_choice_question.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/question/question.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/question/questionary.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/question_wizard.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/step/__init__.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/step/dependencies_step.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/step/general_step.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/step/git_step.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/step/steps.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/step/template_step.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/template/__init__.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/template/bounded_context_not_applicable.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/template/bounded_context_not_especified.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/template/invalid_built_in_features_values.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/template/invalid_template_value.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/configuration/template/template_configuration.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/dependency_manager/__init__.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/dependency_manager/command_execution_error.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/dependency_manager/dependency_manager.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/dependency_manager/dependency_manager_factory.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/dependency_manager/pdm_dependency_manager.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/dependency_manager/unknown_dependency_manager_error.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/dependency_manager/uv_dependency_manager.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/formatter/__init__.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/formatter/project_formatter.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/git/__init__.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/git/git_configurer.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/instant_python_typer.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/project_creator/__init__.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/project_creator/directory.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/project_creator/file.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/project_creator/file_has_not_been_created.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/project_creator/file_system.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/project_creator/node.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/project_creator/unknown_node_typer_error.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/render/__init__.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/render/custom_project_renderer.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/render/jinja_custom_filters.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/render/jinja_project_renderer.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/render/template_file_not_found_error.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/render/unknown_template_error.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/shared/__init__.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/shared/application_error.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/shared/error_types.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/shared/supported_built_in_features.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/shared/supported_licenses.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/shared/supported_managers.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/shared/supported_python_versions.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/shared/supported_templates.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/.gitignore +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/.pre-commit-config.yml +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/.python-version +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/LICENSE +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/README.md +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/event_bus/__init__.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/event_bus/aggregate_root.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/event_bus/domain_event.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/event_bus/domain_event_json_deserializer.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/event_bus/domain_event_json_serializer.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/event_bus/domain_event_subscriber.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/event_bus/event_bus.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/event_bus/exchange_type.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/event_bus/mock_event_bus.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/event_bus/rabbit_mq_configurer.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/event_bus/rabbit_mq_connection.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/event_bus/rabbit_mq_consumer.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/event_bus/rabbit_mq_event_bus.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/event_bus/rabbit_mq_queue_formatter.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/event_bus/rabbit_mq_settings.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/exceptions/__init__.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/exceptions/domain_error.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/exceptions/domain_event_type_not_found_error.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/exceptions/incorrect_value_type_error.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/exceptions/invalid_id_format_error.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/exceptions/invalid_negative_value_error.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/exceptions/rabbit_mq_connection_not_established_error.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/exceptions/required_value_error.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/fastapi/__init__.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/fastapi/lifespan.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/fastapi/status_code.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/github/action.yml +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/github/lint.yml +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/github/test.yml +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/logger/__init__.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/logger/json_formatter.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/mypy.ini +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/persistence/__init__.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/persistence/alembic_migrator.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/persistence/async/README.md +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/persistence/async/__init__.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/persistence/async/alembic.ini +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/persistence/async/async_engine_fixture.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/persistence/async/env.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/persistence/async/models_metadata.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/persistence/async/postgres_settings.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/persistence/async/script.py.mako +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/persistence/async/sqlalchemy_repository.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/persistence/base.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/persistence/synchronous/__init__.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/persistence/synchronous/session_maker.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/persistence/synchronous/sqlalchemy_repository.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/pyproject.toml +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/pytest.ini +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/random_generator.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/scripts/add_dependency.sh +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/scripts/create_aggregate.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/scripts/insert_template.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/scripts/integration.sh +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/scripts/local_setup.sh +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/scripts/makefile +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/scripts/post-merge +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/scripts/pre-commit +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/scripts/pre-push +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/scripts/remove_dependency.sh +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/scripts/unit.sh +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/value_object/__init__.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/value_object/int_value_object.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/value_object/string_value_object.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/value_object/uuid.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/boilerplate/value_object/value_object.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/alembic_migrator.yml.j2 +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/async_alembic.yml.j2 +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/async_sqlalchemy.yml.j2 +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/clean_architecture/main_structure.yml.j2 +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/clean_architecture/test.yml.j2 +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/domain_driven_design/bounded_context.yml.j2 +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/domain_driven_design/main_structure.yml.j2 +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/domain_driven_design/test.yml.j2 +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/event_bus_domain.yml.j2 +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/event_bus_infra.yml.j2 +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/fastapi_domain.yml.j2 +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/fastapi_infra.yml.j2 +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/github_action.yml.j2 +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/gitignore.yml.j2 +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/license.yml.j2 +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/logger.yml.j2 +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/macros.j2 +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/makefile.yml.j2 +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/mypy.yml.j2 +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/pre_commit.yml.j2 +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/pyproject.yml.j2 +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/pytest.yml.j2 +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/python_version.yml.j2 +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/readme.yml.j2 +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/standard_project/main_structure.yml.j2 +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/standard_project/test.yml.j2 +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/synchronous_sqlalchemy.yml.j2 +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/instant_python/templates/project_structure/value_objects.yml.j2 +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/mypy.ini +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/__init__.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/__init__.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/dependency/__init__.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/dependency/dependency_configuration_mother.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/dependency/test_dependency_configuration.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/general/__init__.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/general/general_configuration_mother.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/general/test_general_configuration.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/git/__init__.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/git/git_configuration_mother.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/git/test_git_configuration.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/parser/__init__.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/parser/approvaltests_config.json +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/parser/approved_files/TestParser.test_should_parse_configuration.approved.txt +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/parser/resources/__init__.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/parser/resources/config.yml +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/parser/resources/empty_config.yml +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/parser/resources/missing_dependencies_fields_config.yml +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/parser/resources/missing_general_fields_config.yml +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/parser/resources/missing_git_fields_config.yml +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/parser/resources/missing_keys_config.yml +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/parser/resources/missing_template_fields_config.yml +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/parser/test_parser.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/question/__init__.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/question/test_boolean_question.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/question/test_choice_question.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/question/test_free_text_question.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/question/test_multiple_choice_question.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/template/__init__.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/template/template_configuration_mother.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/configuration/template/test_template_configuration.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/dependency_manager/__init__.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/dependency_manager/mock_pdm_dependency_manager.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/dependency_manager/mock_uv_dependency_manager.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/dependency_manager/test_pdm_dependency_manager.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/dependency_manager/test_uv_dependency_manager.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/formatter/__init__.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/formatter/mock_project_formatter.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/formatter/test_project_formatter.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/git/__init__.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/git/mock_git_configurer.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/git/test_git_configurer.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/project_creator/__init__.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/project_creator/approvaltests_config.json +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/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.8.1 → instant_python-0.8.2}/test/project_creator/approved_files/TestFileSystem.test_should_create_file_system_in_disk.rendered_project_structure.json.approved.txt +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/project_creator/approved_files/TestFileSystem.test_should_create_folders_and_files.approved.txt +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/project_creator/approved_files/TestFileSystem.test_should_generate_file_system_tree.approved.txt +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/project_creator/directory_mother.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/project_creator/resources/boilerplate/exceptions/domain_error.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/project_creator/resources/boilerplate/exceptions/domain_error_simple.py +0 -0
- {instant_python-0.8.1/test/render → instant_python-0.8.2/test/project_creator/resources/boilerplate/fastapi}/__init__.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/project_creator/resources/config.yml +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/project_creator/resources/rendered_custom_project_structure.json +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/project_creator/resources/rendered_project_structure.json +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/project_creator/test_directory.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/project_creator/test_file.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/random_generator.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/render/approvaltests_config.json +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/render/approved_files/TestCustomProjectRenderer.test_should_render_custom_template.approved.txt +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/render/approved_files/TestJinjaProjectRenderer.test_should_render_template_for.clean_architecture_config.yml.approved.txt +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/render/approved_files/TestJinjaProjectRenderer.test_should_render_template_for.domain_driven_design_config.yml.approved.txt +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/render/approved_files/TestJinjaProjectRenderer.test_should_render_template_for.received.txt +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/render/approved_files/TestJinjaProjectRenderer.test_should_render_template_for.standard_project_with_dependency_config.yml.approved.txt +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/render/approved_files/TestJinjaProjectRenderer.test_should_render_template_for.standard_project_with_git_config.yml.approved.txt +0 -0
- {instant_python-0.8.1/test/project_creator → instant_python-0.8.2/test/render}/resources/clean_architecture/main_structure.yml.j2 +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/render/resources/clean_architecture_config.yml +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/render/resources/custom_template.yml +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/render/resources/domain_driven_design/main_structure.yml.j2 +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/render/resources/domain_driven_design_config.yml +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/render/resources/standard_project/main_structure.yml.j2 +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/render/resources/standard_project_with_dependency_config.yml +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/render/resources/standard_project_with_git_config.yml +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/render/resources/test_template.j2 +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/render/test_custom_project_renderer.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/render/test_jinja_environment.py +0 -0
- {instant_python-0.8.1 → instant_python-0.8.2}/test/render/test_jinja_project_renderer.py +0 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
name: 🐛 Bug Report
|
|
2
|
+
description: Create a report to help us improve.
|
|
3
|
+
labels:
|
|
4
|
+
- bug
|
|
5
|
+
- pending
|
|
6
|
+
|
|
7
|
+
body:
|
|
8
|
+
- type: textarea
|
|
9
|
+
id: description
|
|
10
|
+
validations:
|
|
11
|
+
required: true
|
|
12
|
+
attributes:
|
|
13
|
+
label: ✏️ Description
|
|
14
|
+
description: |
|
|
15
|
+
Please provide a clear and concise description of the bug you are experiencing.
|
|
16
|
+
|
|
17
|
+
Specify what is the expected behavior and what is actually happening. You can add
|
|
18
|
+
screenshots to help illustrate the issue.
|
|
19
|
+
|
|
20
|
+
Please provide as much detail as possible to make understanding and solving your problem as quick as possible. 🙏
|
|
21
|
+
|
|
22
|
+
- type: textarea
|
|
23
|
+
id: reproduce
|
|
24
|
+
attributes:
|
|
25
|
+
label: ✅ Steps To Reproduce
|
|
26
|
+
render: Python
|
|
27
|
+
description: >
|
|
28
|
+
Please list the steps needed to reproduce the bug you are experiencing.
|
|
29
|
+
|
|
30
|
+
If applicable, please add a self-contained,
|
|
31
|
+
[minimal, reproducible, example](https://stackoverflow.com/help/minimal-reproducible-example)
|
|
32
|
+
demonstrating the bug.\
|
|
33
|
+
|
|
34
|
+
placeholder: >
|
|
35
|
+
# 1. Install the package using pip
|
|
36
|
+
# 2. Run the script with the following command:
|
|
37
|
+
# python script.py
|
|
38
|
+
# 3. Observe the output\
|
|
39
|
+
|
|
40
|
+
- type: dropdown
|
|
41
|
+
id: python-version
|
|
42
|
+
attributes:
|
|
43
|
+
label: 🐍 Which version of Python are you using?
|
|
44
|
+
options:
|
|
45
|
+
- 3.8
|
|
46
|
+
- 3.9
|
|
47
|
+
- 3.10
|
|
48
|
+
- 3.11
|
|
49
|
+
- 3.12
|
|
50
|
+
- 3.13
|
|
51
|
+
- other
|
|
52
|
+
validations:
|
|
53
|
+
required: true
|
|
54
|
+
|
|
55
|
+
- type: input
|
|
56
|
+
id: ipy-version
|
|
57
|
+
validations:
|
|
58
|
+
required: true
|
|
59
|
+
attributes:
|
|
60
|
+
label: 📦 Which version of Instant Python are you using?
|
|
61
|
+
|
|
62
|
+
- type: input
|
|
63
|
+
id: os
|
|
64
|
+
validations:
|
|
65
|
+
required: true
|
|
66
|
+
attributes:
|
|
67
|
+
label: 🖥️ Which operating system are you using?
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
name: 🚀 Feature Request
|
|
2
|
+
description: Suggest a new idea for Instant Python.
|
|
3
|
+
labels:
|
|
4
|
+
- enhancement
|
|
5
|
+
- pending
|
|
6
|
+
|
|
7
|
+
body:
|
|
8
|
+
- type: textarea
|
|
9
|
+
id: description
|
|
10
|
+
validations:
|
|
11
|
+
required: true
|
|
12
|
+
attributes:
|
|
13
|
+
label: ✏️ Description
|
|
14
|
+
description: |
|
|
15
|
+
Please give as much detail as possible about the feature you would like to suggest.
|
|
16
|
+
|
|
17
|
+
You might like to add:
|
|
18
|
+
* A clear and concise description of the idea that should be implemented
|
|
19
|
+
* An example of how the feature should work
|
|
20
|
+
* Any relevant links or resources that can help understand the feature better
|
|
21
|
+
* A list of scenarios or validations that the feature should cover as well as any restrictions or limitations that should be considered
|
|
@@ -9,12 +9,17 @@ outputs: {}
|
|
|
9
9
|
runs:
|
|
10
10
|
using: composite
|
|
11
11
|
steps:
|
|
12
|
-
-
|
|
12
|
+
- name: 🐍 Setup Python
|
|
13
|
+
uses: actions/setup-python@v5
|
|
13
14
|
with:
|
|
14
15
|
python-version: ${{ inputs.python-version }}
|
|
15
|
-
|
|
16
|
+
|
|
17
|
+
- name: 🔨 Install dependency manager
|
|
16
18
|
run: python -m pip install uv
|
|
17
19
|
shell: bash
|
|
18
|
-
|
|
19
|
-
|
|
20
|
+
|
|
21
|
+
- name: 📦 Install dependencies
|
|
22
|
+
run: |
|
|
23
|
+
uv sync --all-groups
|
|
24
|
+
uv run -m pre_commit install --hook-type pre-commit --hook-type commit-msg --hook-type pre-push
|
|
20
25
|
shell: bash
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Description
|
|
2
|
+
|
|
3
|
+
## Type of change
|
|
4
|
+
|
|
5
|
+
- [ ] **✨ feat**: New feature (non-breaking change).
|
|
6
|
+
- [ ] **🐛 fix**: Bug fix (non-breaking change).
|
|
7
|
+
- [ ] **📝 docs**: Documentation update.
|
|
8
|
+
- [ ] **♻️ refactor**: Code change that neither fixes a bug nor adds a new feature.
|
|
9
|
+
- [ ] **⚡️ perf**: Performance improvement.
|
|
10
|
+
- [ ] **🧪 test**: Update suite of tests.
|
|
11
|
+
- [ ] **📦️ build**: Changes that affect the build system (new dependencies, tools, ...).
|
|
12
|
+
- [ ] **💚 ci**: Pipeline changes (GitHub Actions, make commands, ...).
|
|
13
|
+
- [ ] **💥 BREAKING CHANGE**: Feature, fix, ... that breaks backward compatibility.
|
|
14
|
+
- [ ] **👽️ others**: Other type of change.
|
|
15
|
+
|
|
16
|
+
## Related Issues / Discussions / Resources
|
|
17
|
+
|
|
18
|
+
## Pre-merge Checklist
|
|
19
|
+
|
|
20
|
+
- [ ] I have read and followed the [`Contributor Guidelines`](https://github.com/dimanu-py/instant-python/blob/main/docs/home/contributing.md).
|
|
21
|
+
- [ ] My pull requests and commits follow the [Conventional Commits](https://www.conventionalcommits.org) and [Conventional Comments](https://conventionalcomments.org) guidelines.
|
|
22
|
+
- [ ] My code follows the coding guidelines of the project ([PEP 8](https://peps.python.org/pep-0008), [PEP 257](https://peps.python.org/pep-0257), ...).
|
|
23
|
+
- [ ] My changes generate no new warnings (execution, linter, formatter, ...).
|
|
24
|
+
- [ ] I have updated the suite of tests required for this change.
|
|
25
|
+
- [ ] I have made corresponding changes to the documentation.
|
|
26
|
+
- [ ] I considered security & backwards-compatibility; if **breaking**, explain in the "Description" section above.
|
|
27
|
+
|
|
28
|
+
## 📃 Additional Resources
|
|
29
|
+
|
|
30
|
+
- [The Anatomy of a Perfect Pull Request](https://hugooodias.medium.com/the-anatomy-of-a-perfect-pull-request-567382bb6067)
|
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
name: CI - Testing and Code analysis
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: write
|
|
10
|
+
id-token: write
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
check_user:
|
|
14
|
+
name: check-user
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
outputs:
|
|
17
|
+
should_run: ${{ github.actor == 'dimanu-py' }}
|
|
18
|
+
steps:
|
|
19
|
+
- name: 🛡️ Harden runner
|
|
20
|
+
uses: step-security/harden-runner@6c439dc8bdf85cadbbce9ed30d1c7b959517bc49 # v2.12.2
|
|
21
|
+
with:
|
|
22
|
+
egress-policy: audit
|
|
23
|
+
|
|
24
|
+
- name: 👍 Check triggering user
|
|
25
|
+
run: echo "Workflow triggered by ${{ github.actor }}"
|
|
26
|
+
|
|
27
|
+
lint:
|
|
28
|
+
name: lint
|
|
29
|
+
runs-on: ubuntu-latest
|
|
30
|
+
needs: check_user
|
|
31
|
+
if: ${{ needs.check_user.outputs.should_run == 'true' }}
|
|
32
|
+
steps:
|
|
33
|
+
- name: 🛡️ Harden runner
|
|
34
|
+
uses: step-security/harden-runner@6c439dc8bdf85cadbbce9ed30d1c7b959517bc49 # v2.12.2
|
|
35
|
+
with:
|
|
36
|
+
egress-policy: audit
|
|
37
|
+
|
|
38
|
+
- name: 📥 Checkout the repository
|
|
39
|
+
uses: actions/checkout@v4
|
|
40
|
+
with:
|
|
41
|
+
ref: ${{ github.head_ref }}
|
|
42
|
+
fetch-depth: 0
|
|
43
|
+
persist-credentials: false
|
|
44
|
+
|
|
45
|
+
- name: 🛠️ Setup environment
|
|
46
|
+
uses: ./.github/actions/python_setup
|
|
47
|
+
|
|
48
|
+
- name: 🧐 Check linting
|
|
49
|
+
id: check_lint
|
|
50
|
+
run: |
|
|
51
|
+
git pull --rebase origin main
|
|
52
|
+
uvx ruff check --exclude "instant_python/templates,test/**/resources/**" instant_python test
|
|
53
|
+
continue-on-error: true
|
|
54
|
+
|
|
55
|
+
- name: 🚨 Auto fix lint errors
|
|
56
|
+
id: fix_lint
|
|
57
|
+
if: ${{ steps.check_lint.outcome == 'failure' }}
|
|
58
|
+
run: |
|
|
59
|
+
git pull --rebase origin main
|
|
60
|
+
uvx ruff check --fix --exclude "instant_python/templates,test/**/resources/**" instant_python test
|
|
61
|
+
|
|
62
|
+
- name: ✏️ Commit lint fixes
|
|
63
|
+
if: ${{ steps.fix_lint.outcome == 'success' }}
|
|
64
|
+
run: |
|
|
65
|
+
git config user.name ${{ vars.GIT_COMMITTER_NAME }}
|
|
66
|
+
git config user.email ${{ vars.GIT_COMMITTER_EMAIL }}
|
|
67
|
+
|
|
68
|
+
if git diff --quiet; then
|
|
69
|
+
echo "No changes to commit."
|
|
70
|
+
else
|
|
71
|
+
git add .
|
|
72
|
+
git commit -m "🚨 chore: fix linting issues via GitHub Actions"
|
|
73
|
+
git push
|
|
74
|
+
fi
|
|
75
|
+
env:
|
|
76
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
77
|
+
|
|
78
|
+
- name: 🧐 Check linting again
|
|
79
|
+
run: uvx ruff check --exclude "instant_python/templates,test/**/resources/**" instant_python test
|
|
80
|
+
|
|
81
|
+
format:
|
|
82
|
+
name: format
|
|
83
|
+
runs-on: ubuntu-latest
|
|
84
|
+
needs: check_user
|
|
85
|
+
if: ${{ needs.check_user.outputs.should_run == 'true' }}
|
|
86
|
+
steps:
|
|
87
|
+
- name: 🛡️ Harden runner
|
|
88
|
+
uses: step-security/harden-runner@6c439dc8bdf85cadbbce9ed30d1c7b959517bc49 # v2.12.2
|
|
89
|
+
with:
|
|
90
|
+
egress-policy: audit
|
|
91
|
+
|
|
92
|
+
- name: 📥 Checkout the repository
|
|
93
|
+
uses: actions/checkout@v4
|
|
94
|
+
with:
|
|
95
|
+
ref: ${{ github.head_ref }}
|
|
96
|
+
fetch-depth: 0
|
|
97
|
+
persist-credentials: false
|
|
98
|
+
|
|
99
|
+
- name: 🛠️ Setup environment
|
|
100
|
+
uses: ./.github/actions/python_setup
|
|
101
|
+
|
|
102
|
+
- name: 🧐 Check code format
|
|
103
|
+
id: check_format
|
|
104
|
+
run: |
|
|
105
|
+
git pull --rebase origin main
|
|
106
|
+
uvx ruff format --check --exclude "instant_python/templates,test/**/resources/**" instant_python test
|
|
107
|
+
continue-on-error: true
|
|
108
|
+
|
|
109
|
+
- name: 🎨 Auto format code
|
|
110
|
+
id: format_code
|
|
111
|
+
if: ${{ steps.check_format.outcome == 'failure' }}
|
|
112
|
+
run: |
|
|
113
|
+
git pull --rebase origin main
|
|
114
|
+
uvx ruff format --exclude "instant_python/templates,test/**/resources/**" instant_python test
|
|
115
|
+
|
|
116
|
+
- name: ✏️ Commit formatted code
|
|
117
|
+
if: ${{ steps.format_code.outcome == 'success' }}
|
|
118
|
+
run: |
|
|
119
|
+
git config user.name ${{ vars.GIT_COMMITTER_NAME }}
|
|
120
|
+
git config user.email ${{ vars.GIT_COMMITTER_EMAIL }}
|
|
121
|
+
|
|
122
|
+
if git diff --quiet; then
|
|
123
|
+
echo "No changes to commit."
|
|
124
|
+
else
|
|
125
|
+
git add .
|
|
126
|
+
git commit -m "🎨 style: format code via GitHub Actions"
|
|
127
|
+
git push
|
|
128
|
+
fi
|
|
129
|
+
env:
|
|
130
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
131
|
+
|
|
132
|
+
- name: 🧐 Check code format again
|
|
133
|
+
run: uvx ruff format --check --exclude "instant_python/templates,test/**/resources/**" instant_python test
|
|
134
|
+
|
|
135
|
+
analyze-code-quality:
|
|
136
|
+
name: analyze-code-quality
|
|
137
|
+
runs-on: ubuntu-latest
|
|
138
|
+
permissions:
|
|
139
|
+
contents: read
|
|
140
|
+
security-events: write
|
|
141
|
+
|
|
142
|
+
steps:
|
|
143
|
+
- name: 🛡️ Harden runner
|
|
144
|
+
uses: step-security/harden-runner@6c439dc8bdf85cadbbce9ed30d1c7b959517bc49 # v2.12.2
|
|
145
|
+
with:
|
|
146
|
+
egress-policy: audit
|
|
147
|
+
|
|
148
|
+
- name: 📥 Checkout the repository
|
|
149
|
+
uses: actions/checkout@v4
|
|
150
|
+
with:
|
|
151
|
+
ref: ${{ github.head_ref }}
|
|
152
|
+
fetch-depth: 0
|
|
153
|
+
persist-credentials: false
|
|
154
|
+
|
|
155
|
+
- name: ▶️ CodeQL Initialization
|
|
156
|
+
uses: github/codeql-action/init@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2
|
|
157
|
+
with:
|
|
158
|
+
languages: python
|
|
159
|
+
build-mode: none
|
|
160
|
+
queries: +security-extended,security-and-quality
|
|
161
|
+
config-file: ./codeql-config.yml
|
|
162
|
+
|
|
163
|
+
- name: 🧐 CodeQL Analysis
|
|
164
|
+
uses: github/codeql-action/analyze@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2
|
|
165
|
+
with:
|
|
166
|
+
category: '/language:python'
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
secrets:
|
|
170
|
+
name: secrets-scan
|
|
171
|
+
runs-on: ubuntu-latest
|
|
172
|
+
permissions:
|
|
173
|
+
contents: read
|
|
174
|
+
security-events: write
|
|
175
|
+
pull-requests: write
|
|
176
|
+
|
|
177
|
+
steps:
|
|
178
|
+
- name: 🛡️ Harden runner
|
|
179
|
+
uses: step-security/harden-runner@6c439dc8bdf85cadbbce9ed30d1c7b959517bc49 # v2.12.2
|
|
180
|
+
with:
|
|
181
|
+
egress-policy: audit
|
|
182
|
+
|
|
183
|
+
- name: 📥 Checkout the repository
|
|
184
|
+
uses: actions/checkout@v4
|
|
185
|
+
with:
|
|
186
|
+
fetch-depth: 0
|
|
187
|
+
persist-credentials: false
|
|
188
|
+
|
|
189
|
+
- name: 🛠️ Setup environment
|
|
190
|
+
uses: ./.github/actions/python_setup
|
|
191
|
+
|
|
192
|
+
- name: 🏃 Run secrets scanner
|
|
193
|
+
run: make secrets
|
|
194
|
+
|
|
195
|
+
audit:
|
|
196
|
+
name: audit-dependencies
|
|
197
|
+
runs-on: ubuntu-latest
|
|
198
|
+
permissions:
|
|
199
|
+
contents: read
|
|
200
|
+
|
|
201
|
+
steps:
|
|
202
|
+
- name: 🛡️ Harden runner
|
|
203
|
+
uses: step-security/harden-runner@6c439dc8bdf85cadbbce9ed30d1c7b959517bc49 # v2.12.2
|
|
204
|
+
with:
|
|
205
|
+
egress-policy: audit
|
|
206
|
+
|
|
207
|
+
- name: 📥 Checkout the repository
|
|
208
|
+
uses: actions/checkout@v4
|
|
209
|
+
with:
|
|
210
|
+
fetch-depth: 0
|
|
211
|
+
persist-credentials: false
|
|
212
|
+
|
|
213
|
+
- name: 🛠️ Setup environment
|
|
214
|
+
uses: ./.github/actions/python_setup
|
|
215
|
+
|
|
216
|
+
- name: 🏃 Run audit
|
|
217
|
+
run: make audit
|
|
218
|
+
|
|
219
|
+
test:
|
|
220
|
+
name: test
|
|
221
|
+
runs-on: ubuntu-latest
|
|
222
|
+
steps:
|
|
223
|
+
- name: 🛡️ Harden runner
|
|
224
|
+
uses: step-security/harden-runner@6c439dc8bdf85cadbbce9ed30d1c7b959517bc49 # v2.12.2
|
|
225
|
+
with:
|
|
226
|
+
egress-policy: audit
|
|
227
|
+
|
|
228
|
+
- name: 📥 Checkout the repository
|
|
229
|
+
uses: actions/checkout@v4
|
|
230
|
+
with:
|
|
231
|
+
fetch-depth: 0
|
|
232
|
+
persist-credentials: false
|
|
233
|
+
|
|
234
|
+
- name: 🛠️ Setup environment
|
|
235
|
+
uses: ./.github/actions/python_setup
|
|
236
|
+
|
|
237
|
+
- name: 📦 Install test dependencies
|
|
238
|
+
run: uv pip install pytest pytest-cov
|
|
239
|
+
|
|
240
|
+
- name: 🏃 Run tests
|
|
241
|
+
run: uv run pytest --cov --cov-report=xml --cov-branch test -ra -s
|
|
242
|
+
|
|
243
|
+
- name: 📥 Upload coverage report to Codecov
|
|
244
|
+
uses: codecov/codecov-action@v5
|
|
245
|
+
with:
|
|
246
|
+
files: coverage.xml
|
|
247
|
+
flags: unittests
|
|
248
|
+
name: codecov-coverage
|
|
249
|
+
token: ${{ secrets.CODECOV_TOKEN }}
|
|
250
|
+
slug: dimanu-py/instant-python
|
|
251
|
+
|
|
252
|
+
rollback:
|
|
253
|
+
name: rollback
|
|
254
|
+
runs-on: ubuntu-latest
|
|
255
|
+
needs: [ test ]
|
|
256
|
+
if: ${{ always() && needs.test.result == 'failure' }}
|
|
257
|
+
steps:
|
|
258
|
+
- name: 🛡️ Harden runner
|
|
259
|
+
uses: step-security/harden-runner@6c439dc8bdf85cadbbce9ed30d1c7b959517bc49 # v2.12.2
|
|
260
|
+
with:
|
|
261
|
+
egress-policy: audit
|
|
262
|
+
|
|
263
|
+
- name: 📥 Checkout the repository
|
|
264
|
+
uses: actions/checkout@v4
|
|
265
|
+
with:
|
|
266
|
+
fetch-depth: 0
|
|
267
|
+
persist-credentials: false
|
|
268
|
+
|
|
269
|
+
- name: ⏪️ Reset to previous commit
|
|
270
|
+
run: |
|
|
271
|
+
git config user.name ${{ vars.GIT_COMMITTER_NAME }}
|
|
272
|
+
git config user.email ${{ vars.GIT_COMMITTER_EMAIL }}
|
|
273
|
+
git reset --hard ${{ github.event.before }}
|
|
274
|
+
git push --force-with-lease origin main
|
|
275
|
+
env:
|
|
276
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
277
|
+
|
|
278
|
+
tox-test:
|
|
279
|
+
name: tox
|
|
280
|
+
runs-on: ubuntu-latest
|
|
281
|
+
strategy:
|
|
282
|
+
matrix:
|
|
283
|
+
python-version: [ '3.9', '3.10', '3.11', '3.12', '3.13' ]
|
|
284
|
+
steps:
|
|
285
|
+
- name: 🛡️ Harden runner
|
|
286
|
+
uses: step-security/harden-runner@6c439dc8bdf85cadbbce9ed30d1c7b959517bc49 # v2.12.2
|
|
287
|
+
with:
|
|
288
|
+
egress-policy: audit
|
|
289
|
+
|
|
290
|
+
- name: 📥 Checkout the repository
|
|
291
|
+
uses: actions/checkout@v4
|
|
292
|
+
with:
|
|
293
|
+
fetch-depth: 0
|
|
294
|
+
persist-credentials: false
|
|
295
|
+
|
|
296
|
+
- name: 🛠️ Setup environment
|
|
297
|
+
uses: ./.github/actions/python_setup
|
|
298
|
+
|
|
299
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
300
|
+
uses: actions/setup-python@v4
|
|
301
|
+
|
|
302
|
+
- name: 🏃 Run tox
|
|
303
|
+
run: make tox
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
name: Release and Publish
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
|
|
6
|
+
jobs:
|
|
7
|
+
release:
|
|
8
|
+
if: "!startsWith(github.event.head_commit.message, 'bump:')"
|
|
9
|
+
runs-on: ubuntu-latest
|
|
10
|
+
permissions:
|
|
11
|
+
contents: write
|
|
12
|
+
pull-requests: write
|
|
13
|
+
|
|
14
|
+
outputs:
|
|
15
|
+
released: ${{ steps.released.outputs.released }}
|
|
16
|
+
tag: ${{ steps.released.outputs.tag }}
|
|
17
|
+
|
|
18
|
+
steps:
|
|
19
|
+
- name: 🛡️ Harden runner
|
|
20
|
+
uses: step-security/harden-runner@6c439dc8bdf85cadbbce9ed30d1c7b959517bc49 # v2.12.2
|
|
21
|
+
with:
|
|
22
|
+
egress-policy: audit
|
|
23
|
+
|
|
24
|
+
- name: 📥 Checkout the repository
|
|
25
|
+
uses: actions/checkout@v4
|
|
26
|
+
with:
|
|
27
|
+
fetch-depth: 0
|
|
28
|
+
persist-credentials: false
|
|
29
|
+
|
|
30
|
+
- name: 🔖 Semantic Release
|
|
31
|
+
id: released
|
|
32
|
+
uses: python-semantic-release/python-semantic-release@2896129e02bb7809d2cf0c1b8e9e795ee27acbcf # v10.0.2
|
|
33
|
+
with:
|
|
34
|
+
build: false
|
|
35
|
+
push: true
|
|
36
|
+
changelog: true
|
|
37
|
+
commit: true
|
|
38
|
+
tag: true
|
|
39
|
+
vcs_release: true
|
|
40
|
+
config_file: pyproject.toml
|
|
41
|
+
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
42
|
+
git_committer_email: ${{ vars.GIT_COMMITTER_EMAIL }}
|
|
43
|
+
git_committer_name: ${{ vars.GIT_COMMITTER_NAME }}
|
|
44
|
+
ssh_public_signing_key: ${{ vars.SSH_PUBLIC_SIGNING_KEY }}
|
|
45
|
+
ssh_private_signing_key: ${{ secrets.SSH_PRIVATE_SIGNING_KEY }}
|
|
46
|
+
|
|
47
|
+
build-and-publish:
|
|
48
|
+
name: Publish Release to PyPI Workflow
|
|
49
|
+
needs: release
|
|
50
|
+
if: needs.release.result == 'success' && needs.release.outputs.released == 'true'
|
|
51
|
+
runs-on: ubuntu-latest
|
|
52
|
+
environment: release
|
|
53
|
+
|
|
54
|
+
permissions:
|
|
55
|
+
id-token: write
|
|
56
|
+
|
|
57
|
+
steps:
|
|
58
|
+
- name: 🛡️ Harden runner
|
|
59
|
+
uses: step-security/harden-runner@6c439dc8bdf85cadbbce9ed30d1c7b959517bc49 # v2.12.2
|
|
60
|
+
with:
|
|
61
|
+
egress-policy: audit
|
|
62
|
+
|
|
63
|
+
- name: 📥 Checkout the repository
|
|
64
|
+
uses: actions/checkout@v4
|
|
65
|
+
with:
|
|
66
|
+
fetch-depth: 0
|
|
67
|
+
persist-credentials: false
|
|
68
|
+
ref: refs/tags/${{ needs.release.outputs.tag }}
|
|
69
|
+
|
|
70
|
+
- name: 🛠️ Setup environment
|
|
71
|
+
uses: ./.github/actions/python_setup
|
|
72
|
+
|
|
73
|
+
- name: 🏃 Build package
|
|
74
|
+
run: uv build
|
|
75
|
+
|
|
76
|
+
- name: 🚀 Publish
|
|
77
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
fail_fast: true
|
|
2
|
+
|
|
3
|
+
default_language_version:
|
|
4
|
+
python: python3.12
|
|
5
|
+
|
|
6
|
+
exclude: ^instant_python/templates/
|
|
7
|
+
|
|
8
|
+
repos:
|
|
9
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
10
|
+
rev: cef0300fd0fc4d2a87a85fa2093c6b283ea36f4b # v5.0.0
|
|
11
|
+
hooks:
|
|
12
|
+
- id: check-added-large-files
|
|
13
|
+
name: 📦 Large Files Checker
|
|
14
|
+
args:
|
|
15
|
+
- --maxkb=100
|
|
16
|
+
stages:
|
|
17
|
+
- pre-commit
|
|
18
|
+
|
|
19
|
+
- id: check-case-conflict
|
|
20
|
+
name: 🔠 Case Conflict Checker
|
|
21
|
+
stages:
|
|
22
|
+
- pre-commit
|
|
23
|
+
|
|
24
|
+
- id: check-toml
|
|
25
|
+
name: 📄 TOML Files Checker
|
|
26
|
+
files: '.*\.toml'
|
|
27
|
+
stages:
|
|
28
|
+
- pre-commit
|
|
29
|
+
|
|
30
|
+
- id: check-yaml
|
|
31
|
+
name: 📄 YAML Files Checker
|
|
32
|
+
files: '.*\.ya?ml'
|
|
33
|
+
args:
|
|
34
|
+
- --unsafe
|
|
35
|
+
stages:
|
|
36
|
+
- pre-commit
|
|
37
|
+
- id: check-merge-conflict
|
|
38
|
+
name: 🔀 Merge Conflict Checker
|
|
39
|
+
stages:
|
|
40
|
+
- pre-commit
|
|
41
|
+
|
|
42
|
+
- repo: https://github.com/gitleaks/gitleaks
|
|
43
|
+
rev: 782f3104786efdce0f809bce8a9ff31f2fa1c9ed # v8.27.0
|
|
44
|
+
hooks:
|
|
45
|
+
- id: gitleaks
|
|
46
|
+
name: 🔍 Secrets Checker
|
|
47
|
+
entry: gitleaks detect --no-git --redact --verbose
|
|
48
|
+
stages:
|
|
49
|
+
- pre-commit
|
|
50
|
+
|
|
51
|
+
- repo: https://github.com/commitizen-tools/commitizen
|
|
52
|
+
rev: a0cc4901b0faaced74c713a9e355555fc4de0880 # v4.7.1
|
|
53
|
+
hooks:
|
|
54
|
+
- id: commitizen
|
|
55
|
+
name: 📝 Conventional Commit Message Checker
|
|
56
|
+
stages:
|
|
57
|
+
- commit-msg
|
|
58
|
+
|
|
59
|
+
- repo: local
|
|
60
|
+
hooks:
|
|
61
|
+
- id: lint
|
|
62
|
+
name: 🧹 Code Linter
|
|
63
|
+
entry: make check-lint
|
|
64
|
+
language: system
|
|
65
|
+
stages:
|
|
66
|
+
- pre-push
|
|
67
|
+
|
|
68
|
+
- id: format
|
|
69
|
+
name: 🎨 Code Formatter
|
|
70
|
+
entry: make check-format
|
|
71
|
+
language: system
|
|
72
|
+
stages:
|
|
73
|
+
- pre-push
|
|
@@ -1,3 +1,53 @@
|
|
|
1
|
+
# CHANGELOG
|
|
2
|
+
|
|
3
|
+
## v0.9.0 (2025-07-15)
|
|
4
|
+
|
|
5
|
+
### 🪲 Bug Fixes
|
|
6
|
+
|
|
7
|
+
- **render**: Create jinja environment with autoscape argument enabled to avoid potential XSS
|
|
8
|
+
attacks
|
|
9
|
+
([`976d459`](https://github.com/dimanu-py/instant-python/commit/976d459538ae8eea403c65300304e6405fec46b6))
|
|
10
|
+
|
|
11
|
+
- **templates**: Format correctly if statement in application.py template
|
|
12
|
+
([`409d606`](https://github.com/dimanu-py/instant-python/commit/409d6064d97ef016c34dab57d3c9456a47e6542f))
|
|
13
|
+
|
|
14
|
+
- **templates**: Include logger and migrator in fastapi application only if they are selected too
|
|
15
|
+
for DDD and standard project templates
|
|
16
|
+
([`f5a8087`](https://github.com/dimanu-py/instant-python/commit/f5a80870d0ecdd2f47419ad5e51d20131649b422))
|
|
17
|
+
|
|
18
|
+
- **templates**: Include logger and migrator in fastapi application only if they are selected as
|
|
19
|
+
built in feature too in clean architecture template
|
|
20
|
+
([`191d81f`](https://github.com/dimanu-py/instant-python/commit/191d81fd8ace560f3a6359bc9cf767c73c310d50))
|
|
21
|
+
|
|
22
|
+
### ⚙️ Build System
|
|
23
|
+
|
|
24
|
+
- Update semantic release to not update major version if is zero and to allow 0 major version
|
|
25
|
+
([`34d251e`](https://github.com/dimanu-py/instant-python/commit/34d251e8a57eafa595a0c54e314238f389218dd6))
|
|
26
|
+
|
|
27
|
+
- Remove test hook in precommit config
|
|
28
|
+
([`b8d451d`](https://github.com/dimanu-py/instant-python/commit/b8d451db1a024ae41a6958dbf9513801f3b69627))
|
|
29
|
+
|
|
30
|
+
- Remove final echo from makefile commands to let output of the command itself inform the user
|
|
31
|
+
([`cd895ad`](https://github.com/dimanu-py/instant-python/commit/cd895adacfe1e470a746165380369c9c365996e8))
|
|
32
|
+
|
|
33
|
+
- Remove -e command from echo in makefile
|
|
34
|
+
([`6a624a3`](https://github.com/dimanu-py/instant-python/commit/6a624a3cacf8b96adaeba20bb635b7e43d853002))
|
|
35
|
+
|
|
36
|
+
- Exclude resources folder from being formatted or linted
|
|
37
|
+
([`cf00038`](https://github.com/dimanu-py/instant-python/commit/cf000382ba13a0bc4dbda8eb346e9cdeb4fe4541))
|
|
38
|
+
|
|
39
|
+
- Remove AST check from pre commit hook
|
|
40
|
+
([`b46437e`](https://github.com/dimanu-py/instant-python/commit/b46437e804a1d54f13444e92827bd15d9fb2fd57))
|
|
41
|
+
|
|
42
|
+
- Add docs-serve command to makefile
|
|
43
|
+
([`9430934`](https://github.com/dimanu-py/instant-python/commit/943093498f168f49cc8b2593ea17911321f2e012))
|
|
44
|
+
|
|
45
|
+
- Improve messages of make command and add build and clean commands
|
|
46
|
+
([`6a0e428`](https://github.com/dimanu-py/instant-python/commit/6a0e4285d3bb43f9e88dad32fd2f93732ab271c8))
|
|
47
|
+
|
|
48
|
+
- Remove commitizen config as is not longer needed
|
|
49
|
+
([`0ed6a8b`](https://github.com/dimanu-py/instant-python/commit/0ed6a8bd50c6ebf30b71e4734fd3e4a81123b280))
|
|
50
|
+
|
|
1
51
|
## 0.8.1 (2025-07-01)
|
|
2
52
|
|
|
3
53
|
### 🐛 Bug Fixes
|
|
@@ -558,7 +608,6 @@
|
|
|
558
608
|
- **project-generator**: delegate template management to TemplateManager
|
|
559
609
|
- **cli**: call BasicPrompter and ProjectGenerator inside cli app
|
|
560
610
|
|
|
561
|
-
|
|
562
611
|
### ✨ Features
|
|
563
612
|
|
|
564
613
|
- **project-generator**: create new custom function to generate import path in templates
|
|
@@ -657,4 +706,3 @@
|
|
|
657
706
|
- **prompter**: create class to encapsulate user answers
|
|
658
707
|
- **prompter**: create basic class that asks project requirements to user
|
|
659
708
|
- **cli**: create basic typer application with no implementation
|
|
660
|
-
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
cff-version: 1.2.0
|
|
2
|
+
title: Instant Python
|
|
3
|
+
message: If you use this software, please cite it using the metadata below.
|
|
4
|
+
type: software
|
|
5
|
+
authors:
|
|
6
|
+
- given-names: Diego
|
|
7
|
+
family-names: Martínez
|
|
8
|
+
repository-code: https://github.com/dimanu-py/instant-python/
|
|
9
|
+
url: https://pypi.org/project/instant-python/
|
|
10
|
+
abstract: >
|
|
11
|
+
Instant Python is a command-line tool that generates the base structure of a Python project
|
|
12
|
+
within seconds.
|
|
13
|
+
It helps you quickly set up a new Python project with a specific structure, including
|
|
14
|
+
configuration files, directories, dependencies management, initial code files and much more.
|
|
15
|
+
keywords:
|
|
16
|
+
- python
|
|
17
|
+
- boilerplate
|
|
18
|
+
- project-generator
|
|
19
|
+
- code-generator
|
|
20
|
+
- cli
|
|
21
|
+
license: Apache-2.0
|