instant-python 0.5.2__tar.gz → 0.6.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.5.2 → instant_python-0.6.0}/.github/workflows/release.yml +11 -6
- instant_python-0.6.0/.github/workflows/test_lint.yml +121 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/CHANGELOG.md +258 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/PKG-INFO +69 -36
- instant_python-0.6.0/README.md +89 -0
- instant_python-0.6.0/docs/downloads_macro.py +7 -0
- instant_python-0.6.0/docs/examples/configuration.md +147 -0
- instant_python-0.6.0/docs/examples/custom_template.md +58 -0
- instant_python-0.6.0/docs/guide/command_config.md +59 -0
- instant_python-0.5.2/docs/guide/features.md → instant_python-0.6.0/docs/guide/command_init.md +80 -125
- instant_python-0.6.0/docs/home/getting_started.md +76 -0
- instant_python-0.6.0/docs/home/index.md +75 -0
- instant_python-0.6.0/docs/home/releases.md +37 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/cli.py +5 -5
- instant_python-0.6.0/instant_python/commands/config.py +28 -0
- instant_python-0.6.0/instant_python/commands/init.py +53 -0
- instant_python-0.6.0/instant_python/configuration/configuration_schema.py +85 -0
- instant_python-0.6.0/instant_python/configuration/dependency/dependency_configuration.py +36 -0
- instant_python-0.6.0/instant_python/configuration/dependency/not_dev_dependency_included_in_group.py +8 -0
- instant_python-0.6.0/instant_python/configuration/general/general_configuration.py +60 -0
- instant_python-0.6.0/instant_python/configuration/general/invalid_dependency_manager_value.py +8 -0
- instant_python-0.6.0/instant_python/configuration/general/invalid_license_value.py +8 -0
- instant_python-0.6.0/instant_python/configuration/general/invalid_python_version_value.py +8 -0
- instant_python-0.6.0/instant_python/configuration/git/git_configuration.py +23 -0
- instant_python-0.6.0/instant_python/configuration/git/git_user_or_email_not_present.py +8 -0
- instant_python-0.6.0/instant_python/configuration/parser/config_key_not_present.py +8 -0
- instant_python-0.6.0/instant_python/configuration/parser/configuration_file_not_found.py +8 -0
- instant_python-0.6.0/instant_python/configuration/parser/empty_configuration_not_allowed.py +8 -0
- instant_python-0.6.0/instant_python/configuration/parser/missing_mandatory_fields.py +10 -0
- instant_python-0.6.0/instant_python/configuration/parser/parser.py +148 -0
- instant_python-0.6.0/instant_python/configuration/question/boolean_question.py +12 -0
- instant_python-0.6.0/instant_python/configuration/question/choice_question.py +19 -0
- {instant_python-0.5.2/instant_python/question_prompter → instant_python-0.6.0/instant_python/configuration}/question/conditional_question.py +6 -3
- instant_python-0.6.0/instant_python/configuration/question/free_text_question.py +14 -0
- instant_python-0.6.0/instant_python/configuration/question/multiple_choice_question.py +12 -0
- {instant_python-0.5.2/instant_python/question_prompter → instant_python-0.6.0/instant_python/configuration}/question/question.py +6 -2
- instant_python-0.6.0/instant_python/configuration/question/questionary.py +17 -0
- instant_python-0.6.0/instant_python/configuration/question_wizard.py +14 -0
- instant_python-0.6.0/instant_python/configuration/step/dependencies_step.py +70 -0
- instant_python-0.6.0/instant_python/configuration/step/general_step.py +67 -0
- instant_python-0.6.0/instant_python/configuration/step/git_step.py +41 -0
- {instant_python-0.5.2/instant_python/question_prompter → instant_python-0.6.0/instant_python/configuration}/step/steps.py +6 -1
- instant_python-0.6.0/instant_python/configuration/step/template_step.py +63 -0
- instant_python-0.6.0/instant_python/configuration/template/bounded_context_not_applicable.py +8 -0
- instant_python-0.6.0/instant_python/configuration/template/bounded_context_not_especified.py +8 -0
- instant_python-0.6.0/instant_python/configuration/template/invalid_built_in_features_values.py +10 -0
- instant_python-0.6.0/instant_python/configuration/template/invalid_template_value.py +8 -0
- instant_python-0.6.0/instant_python/configuration/template/template_configuration.py +59 -0
- instant_python-0.6.0/instant_python/dependency_manager/command_execution_error.py +10 -0
- instant_python-0.6.0/instant_python/dependency_manager/dependency_manager.py +23 -0
- instant_python-0.6.0/instant_python/dependency_manager/dependency_manager_factory.py +18 -0
- instant_python-0.6.0/instant_python/dependency_manager/pdm_dependency_manager.py +46 -0
- instant_python-0.6.0/instant_python/dependency_manager/unknown_dependency_manager_error.py +8 -0
- instant_python-0.6.0/instant_python/dependency_manager/uv_dependency_manager.py +45 -0
- instant_python-0.6.0/instant_python/git/git_configurer.py +42 -0
- instant_python-0.5.2/instant_python/intant_python_typer.py → instant_python-0.6.0/instant_python/instant_python_typer.py +5 -4
- instant_python-0.6.0/instant_python/project_creator/directory.py +26 -0
- instant_python-0.6.0/instant_python/project_creator/file.py +31 -0
- instant_python-0.6.0/instant_python/project_creator/file_has_not_been_created.py +8 -0
- instant_python-0.6.0/instant_python/project_creator/file_system.py +46 -0
- instant_python-0.6.0/instant_python/project_creator/unknown_node_typer_error.py +8 -0
- instant_python-0.5.2/instant_python/project_generator/custom_template_manager.py → instant_python-0.6.0/instant_python/render/custom_project_renderer.py +6 -5
- instant_python-0.6.0/instant_python/render/jinja_custom_filters.py +23 -0
- instant_python-0.6.0/instant_python/render/jinja_environment.py +28 -0
- instant_python-0.6.0/instant_python/render/jinja_project_renderer.py +30 -0
- instant_python-0.6.0/instant_python/render/template_file_not_found_error.py +10 -0
- instant_python-0.6.0/instant_python/render/unknown_template_error.py +8 -0
- instant_python-0.6.0/instant_python/shared/application_error.py +16 -0
- instant_python-0.6.0/instant_python/shared/error_types.py +7 -0
- instant_python-0.6.0/instant_python/shared/supported_built_in_features.py +16 -0
- instant_python-0.6.0/instant_python/shared/supported_licenses.py +11 -0
- instant_python-0.6.0/instant_python/shared/supported_managers.py +10 -0
- instant_python-0.6.0/instant_python/shared/supported_python_versions.py +12 -0
- instant_python-0.6.0/instant_python/shared/supported_templates.py +12 -0
- instant_python-0.6.0/instant_python/templates/boilerplate/.python-version +1 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/LICENSE +6 -6
- instant_python-0.6.0/instant_python/templates/boilerplate/README.md +8 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/event_bus/aggregate_root.py +2 -2
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/event_bus/domain_event_json_deserializer.py +4 -4
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/event_bus/domain_event_json_serializer.py +2 -2
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/event_bus/domain_event_subscriber.py +2 -2
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/event_bus/event_bus.py +2 -2
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/event_bus/exchange_type.py +1 -1
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/event_bus/mock_event_bus.py +3 -3
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/event_bus/rabbit_mq_configurer.py +6 -6
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/event_bus/rabbit_mq_connection.py +5 -5
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/event_bus/rabbit_mq_consumer.py +7 -7
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/event_bus/rabbit_mq_event_bus.py +6 -6
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/event_bus/rabbit_mq_queue_formatter.py +3 -3
- instant_python-0.6.0/instant_python/templates/boilerplate/exceptions/__init__.py +0 -0
- instant_python-0.6.0/instant_python/templates/boilerplate/exceptions/domain_error.py +22 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/exceptions/domain_event_type_not_found_error.py +3 -11
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/exceptions/incorrect_value_type_error.py +3 -11
- instant_python-0.6.0/instant_python/templates/boilerplate/exceptions/invalid_id_format_error.py +9 -0
- instant_python-0.6.0/instant_python/templates/boilerplate/exceptions/invalid_negative_value_error.py +9 -0
- instant_python-0.6.0/instant_python/templates/boilerplate/exceptions/rabbit_mq_connection_not_established_error.py +9 -0
- instant_python-0.6.0/instant_python/templates/boilerplate/exceptions/required_value_error.py +9 -0
- instant_python-0.6.0/instant_python/templates/boilerplate/fastapi/__init__.py +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/fastapi/application.py +8 -8
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/fastapi/http_response.py +7 -7
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/fastapi/lifespan.py +2 -2
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/github/action.yml +3 -3
- instant_python-0.6.0/instant_python/templates/boilerplate/logger/__init__.py +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/logger/logger.py +2 -2
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/mypy.ini +1 -1
- instant_python-0.6.0/instant_python/templates/boilerplate/persistence/__init__.py +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/persistence/alembic_migrator.py +2 -2
- instant_python-0.6.0/instant_python/templates/boilerplate/persistence/async/__init__.py +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/persistence/async/async_engine_fixture.py +2 -2
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/persistence/async/env.py +2 -2
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/persistence/async/models_metadata.py +2 -2
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/persistence/async/sqlalchemy_repository.py +4 -4
- instant_python-0.6.0/instant_python/templates/boilerplate/persistence/synchronous/__init__.py +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/persistence/synchronous/session_maker.py +2 -2
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/persistence/synchronous/sqlalchemy_repository.py +7 -7
- instant_python-0.6.0/instant_python/templates/boilerplate/pyproject.toml +40 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/scripts/add_dependency.sh +2 -2
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/scripts/integration.sh +1 -1
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/scripts/makefile +26 -26
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/scripts/remove_dependency.sh +2 -2
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/scripts/unit.sh +1 -1
- instant_python-0.6.0/instant_python/templates/boilerplate/value_object/__init__.py +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/value_object/int_value_object.py +3 -3
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/value_object/string_value_object.py +4 -4
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/value_object/uuid.py +3 -3
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/value_object/value_object.py +1 -1
- instant_python-0.6.0/instant_python/templates/project_structure/clean_architecture/main_structure.yml.j2 +25 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/project_structure/clean_architecture/source.yml.j2 +12 -12
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/project_structure/clean_architecture/test.yml.j2 +1 -1
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/project_structure/domain_driven_design/bounded_context.yml.j2 +2 -2
- instant_python-0.6.0/instant_python/templates/project_structure/domain_driven_design/main_structure.yml.j2 +25 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/project_structure/domain_driven_design/source.yml.j2 +14 -14
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/project_structure/domain_driven_design/test.yml.j2 +2 -2
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/project_structure/makefile.yml.j2 +1 -1
- instant_python-0.6.0/instant_python/templates/project_structure/standard_project/main_structure.yml.j2 +25 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/project_structure/standard_project/source.yml.j2 +9 -9
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/project_structure/standard_project/test.yml.j2 +1 -1
- instant_python-0.6.0/makefile +65 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/mkdocs.yml +31 -20
- instant_python-0.6.0/mypy.ini +38 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/pyproject.toml +29 -1
- instant_python-0.6.0/scripts/add_dependency.sh +18 -0
- instant_python-0.6.0/scripts/remove_dependency.sh +18 -0
- instant_python-0.6.0/test/__init__.py +0 -0
- instant_python-0.6.0/test/configuration/__init__.py +0 -0
- instant_python-0.6.0/test/configuration/dependency/__init__.py +0 -0
- instant_python-0.6.0/test/configuration/dependency/dependency_configuration_mother.py +19 -0
- instant_python-0.6.0/test/configuration/dependency/test_dependency_configuration.py +37 -0
- instant_python-0.6.0/test/configuration/general/__init__.py +0 -0
- instant_python-0.6.0/test/configuration/general/general_configuration_mother.py +31 -0
- instant_python-0.6.0/test/configuration/general/test_general_configuration.py +43 -0
- instant_python-0.6.0/test/configuration/git/__init__.py +0 -0
- instant_python-0.6.0/test/configuration/git/git_configuration_mother.py +22 -0
- instant_python-0.6.0/test/configuration/git/test_git_configuration.py +28 -0
- instant_python-0.6.0/test/configuration/parser/__init__.py +0 -0
- instant_python-0.6.0/test/configuration/parser/approvaltests_config.json +3 -0
- instant_python-0.6.0/test/configuration/parser/approved_files/TestParser.test_should_parse_configuration.approved.txt +39 -0
- instant_python-0.6.0/test/configuration/parser/resources/__init__.py +0 -0
- instant_python-0.6.0/test/configuration/parser/resources/config.yml +23 -0
- instant_python-0.6.0/test/configuration/parser/resources/empty_config.yml +0 -0
- instant_python-0.6.0/test/configuration/parser/resources/missing_dependencies_fields_config.yml +21 -0
- instant_python-0.6.0/test/configuration/parser/resources/missing_general_fields_config.yml +23 -0
- instant_python-0.6.0/test/configuration/parser/resources/missing_git_fields_config.yml +25 -0
- instant_python-0.6.0/test/configuration/parser/resources/missing_keys_config.yml +13 -0
- instant_python-0.6.0/test/configuration/parser/resources/missing_template_fields_config.yml +23 -0
- instant_python-0.6.0/test/configuration/parser/test_parser.py +66 -0
- instant_python-0.6.0/test/configuration/question/__init__.py +0 -0
- instant_python-0.6.0/test/configuration/question/test_boolean_question.py +28 -0
- instant_python-0.6.0/test/configuration/question/test_choice_question.py +30 -0
- instant_python-0.6.0/test/configuration/question/test_free_text_question.py +30 -0
- instant_python-0.6.0/test/configuration/question/test_multiple_choice_question.py +31 -0
- instant_python-0.6.0/test/configuration/template/__init__.py +0 -0
- instant_python-0.6.0/test/configuration/template/template_configuration_mother.py +40 -0
- instant_python-0.6.0/test/configuration/template/test_template_configuration.py +55 -0
- instant_python-0.6.0/test/dependency_manager/__init__.py +0 -0
- instant_python-0.6.0/test/dependency_manager/mock_pdm_dependency_manager.py +33 -0
- instant_python-0.6.0/test/dependency_manager/mock_uv_dependency_manager.py +33 -0
- instant_python-0.6.0/test/dependency_manager/test_pdm_dependency_manager.py +60 -0
- instant_python-0.6.0/test/dependency_manager/test_uv_dependency_manager.py +59 -0
- instant_python-0.6.0/test/git/__init__.py +0 -0
- instant_python-0.6.0/test/git/mock_git_configurer.py +19 -0
- instant_python-0.6.0/test/git/test_git_configurer.py +53 -0
- instant_python-0.6.0/test/project_creator/__init__.py +0 -0
- instant_python-0.6.0/test/project_creator/approvaltests_config.json +3 -0
- instant_python-0.6.0/test/project_creator/approved_files/TestFileSystem.test_should_create_file_system_in_disk.rendered_custom_project_structure.json.approved.txt +1 -0
- instant_python-0.6.0/test/project_creator/approved_files/TestFileSystem.test_should_create_file_system_in_disk.rendered_project_structure.json.approved.txt +1 -0
- instant_python-0.6.0/test/project_creator/approved_files/TestFileSystem.test_should_create_folders_and_files.approved.txt +1 -0
- instant_python-0.6.0/test/project_creator/approved_files/TestFileSystem.test_should_generate_file_system_tree.approved.txt +1 -0
- instant_python-0.6.0/test/project_creator/directory_mother.py +31 -0
- instant_python-0.6.0/test/project_creator/resources/boilerplate/exceptions/domain_error.py +22 -0
- instant_python-0.6.0/test/project_creator/resources/boilerplate/exceptions/domain_error_simple.py +2 -0
- instant_python-0.6.0/test/project_creator/resources/clean_architecture/main_structure.yml.j2 +22 -0
- instant_python-0.6.0/test/project_creator/resources/config.yml +25 -0
- instant_python-0.6.0/test/project_creator/resources/rendered_custom_project_structure.json +36 -0
- instant_python-0.6.0/test/project_creator/resources/rendered_project_structure.json +33 -0
- instant_python-0.6.0/test/project_creator/test_directory.py +50 -0
- instant_python-0.6.0/test/project_creator/test_file.py +52 -0
- instant_python-0.6.0/test/project_creator/test_file_system.py +58 -0
- instant_python-0.6.0/test/random_generator.py +25 -0
- instant_python-0.6.0/test/render/__init__.py +0 -0
- instant_python-0.6.0/test/render/approvaltests_config.json +3 -0
- instant_python-0.6.0/test/render/approved_files/TestCustomProjectRenderer.test_should_render_custom_template.approved.txt +86 -0
- instant_python-0.6.0/test/render/approved_files/TestJinjaProjectRenderer.test_should_render_template_for.clean_architecture_config.yml.approved.txt +33 -0
- instant_python-0.6.0/test/render/approved_files/TestJinjaProjectRenderer.test_should_render_template_for.domain_driven_design_config.yml.approved.txt +57 -0
- instant_python-0.6.0/test/render/approved_files/TestJinjaProjectRenderer.test_should_render_template_for.received.txt +33 -0
- instant_python-0.6.0/test/render/approved_files/TestJinjaProjectRenderer.test_should_render_template_for.standard_project_with_dependency_config.yml.approved.txt +26 -0
- instant_python-0.6.0/test/render/approved_files/TestJinjaProjectRenderer.test_should_render_template_for.standard_project_with_git_config.yml.approved.txt +30 -0
- instant_python-0.6.0/test/render/resources/clean_architecture/main_structure.yml.j2 +22 -0
- instant_python-0.6.0/test/render/resources/clean_architecture_config.yml +16 -0
- instant_python-0.6.0/test/render/resources/custom_template.yml +46 -0
- instant_python-0.6.0/test/render/resources/domain_driven_design/main_structure.yml.j2 +38 -0
- instant_python-0.6.0/test/render/resources/domain_driven_design_config.yml +19 -0
- instant_python-0.6.0/test/render/resources/standard_project/main_structure.yml.j2 +27 -0
- instant_python-0.6.0/test/render/resources/standard_project_with_dependency_config.yml +20 -0
- instant_python-0.6.0/test/render/resources/standard_project_with_git_config.yml +18 -0
- instant_python-0.6.0/test/render/resources/test_template.j2 +2 -0
- instant_python-0.6.0/test/render/test_custom_project_renderer.py +18 -0
- instant_python-0.6.0/test/render/test_jinja_environment.py +23 -0
- instant_python-0.6.0/test/render/test_jinja_project_renderer.py +36 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/uv.lock +756 -347
- instant_python-0.5.2/README.md +0 -62
- instant_python-0.5.2/docs/getting-started/features_overview.md +0 -24
- instant_python-0.5.2/docs/getting-started/first-steps.md +0 -15
- instant_python-0.5.2/docs/getting-started/index.md +0 -11
- instant_python-0.5.2/docs/getting-started/installation.md +0 -38
- instant_python-0.5.2/docs/guide/creating-a-project.md +0 -71
- instant_python-0.5.2/docs/guide/custom-templates.md +0 -80
- instant_python-0.5.2/docs/guide/folder-structure.md +0 -46
- instant_python-0.5.2/docs/guide/index.md +0 -9
- instant_python-0.5.2/docs/guide/when-to-use-commands.md +0 -39
- instant_python-0.5.2/docs/index.md +0 -56
- instant_python-0.5.2/instant_python/errors/application_error.py +0 -11
- instant_python-0.5.2/instant_python/errors/command_execution_error.py +0 -20
- instant_python-0.5.2/instant_python/errors/error_types.py +0 -6
- instant_python-0.5.2/instant_python/errors/template_file_not_found_error.py +0 -18
- instant_python-0.5.2/instant_python/errors/unknown_dependency_manager_error.py +0 -18
- instant_python-0.5.2/instant_python/errors/unknown_node_typer_error.py +0 -16
- instant_python-0.5.2/instant_python/errors/unknown_template_error.py +0 -16
- instant_python-0.5.2/instant_python/folder_cli.py +0 -50
- instant_python-0.5.2/instant_python/installer/dependency_manager.py +0 -15
- instant_python-0.5.2/instant_python/installer/dependency_manager_factory.py +0 -18
- instant_python-0.5.2/instant_python/installer/git_configurer.py +0 -50
- instant_python-0.5.2/instant_python/installer/installer.py +0 -24
- instant_python-0.5.2/instant_python/installer/managers.py +0 -6
- instant_python-0.5.2/instant_python/installer/pdm_manager.py +0 -86
- instant_python-0.5.2/instant_python/installer/uv_manager.py +0 -88
- instant_python-0.5.2/instant_python/project_cli.py +0 -100
- instant_python-0.5.2/instant_python/project_generator/boilerplate_file.py +0 -20
- instant_python-0.5.2/instant_python/project_generator/directory.py +0 -28
- instant_python-0.5.2/instant_python/project_generator/file.py +0 -16
- instant_python-0.5.2/instant_python/project_generator/folder_tree.py +0 -39
- instant_python-0.5.2/instant_python/project_generator/jinja_custom_filters.py +0 -19
- instant_python-0.5.2/instant_python/project_generator/jinja_environment.py +0 -20
- instant_python-0.5.2/instant_python/project_generator/jinja_template_manager.py +0 -37
- instant_python-0.5.2/instant_python/project_generator/project_generator.py +0 -36
- instant_python-0.5.2/instant_python/project_generator/template_manager.py +0 -7
- instant_python-0.5.2/instant_python/question_prompter/question/boolean_question.py +0 -13
- instant_python-0.5.2/instant_python/question_prompter/question/choice_question.py +0 -18
- instant_python-0.5.2/instant_python/question_prompter/question/dependencies_question.py +0 -43
- instant_python-0.5.2/instant_python/question_prompter/question/free_text_question.py +0 -13
- instant_python-0.5.2/instant_python/question_prompter/question/multiple_choice_question.py +0 -13
- instant_python-0.5.2/instant_python/question_prompter/question_wizard.py +0 -15
- instant_python-0.5.2/instant_python/question_prompter/requirements_configuration.py +0 -40
- instant_python-0.5.2/instant_python/question_prompter/step/dependencies_step.py +0 -20
- instant_python-0.5.2/instant_python/question_prompter/step/general_custom_template_project_step.py +0 -45
- instant_python-0.5.2/instant_python/question_prompter/step/general_project_step.py +0 -50
- instant_python-0.5.2/instant_python/question_prompter/step/git_step.py +0 -23
- instant_python-0.5.2/instant_python/question_prompter/step/template_step.py +0 -71
- instant_python-0.5.2/instant_python/question_prompter/template_types.py +0 -7
- instant_python-0.5.2/instant_python/templates/boilerplate/.python-version +0 -1
- instant_python-0.5.2/instant_python/templates/boilerplate/README.md +0 -5
- instant_python-0.5.2/instant_python/templates/boilerplate/exceptions/domain_error.py +0 -17
- instant_python-0.5.2/instant_python/templates/boilerplate/exceptions/invalid_id_format_error.py +0 -17
- instant_python-0.5.2/instant_python/templates/boilerplate/exceptions/invalid_negative_value_error.py +0 -17
- instant_python-0.5.2/instant_python/templates/boilerplate/exceptions/rabbit_mq_connection_not_established_error.py +0 -17
- instant_python-0.5.2/instant_python/templates/boilerplate/exceptions/required_value_error.py +0 -17
- instant_python-0.5.2/instant_python/templates/boilerplate/pyproject.toml +0 -29
- instant_python-0.5.2/instant_python/templates/project_structure/clean_architecture/main_structure.yml.j2 +0 -26
- instant_python-0.5.2/instant_python/templates/project_structure/domain_driven_design/main_structure.yml.j2 +0 -26
- instant_python-0.5.2/instant_python/templates/project_structure/standard_project/main_structure.yml.j2 +0 -26
- {instant_python-0.5.2 → instant_python-0.6.0}/.github/FUNDING.yml +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/.github/actions/python_setup/action.yml +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/.github/workflows/pages.yml +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/.github/workflows/publish.yml +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/.gitignore +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/.python-version +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/LICENSE +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/cz.yaml +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/docs/assets/favicon.svg +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/docs/assets/logo.svg +0 -0
- {instant_python-0.5.2/docs → instant_python-0.6.0/docs/home}/contributing.md +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/__init__.py +0 -0
- {instant_python-0.5.2/instant_python/errors → instant_python-0.6.0/instant_python/commands}/__init__.py +0 -0
- {instant_python-0.5.2/instant_python/installer → instant_python-0.6.0/instant_python/configuration}/__init__.py +0 -0
- {instant_python-0.5.2/instant_python/project_generator → instant_python-0.6.0/instant_python/configuration/dependency}/__init__.py +0 -0
- {instant_python-0.5.2/instant_python/question_prompter → instant_python-0.6.0/instant_python/configuration/general}/__init__.py +0 -0
- {instant_python-0.5.2/instant_python/question_prompter/question → instant_python-0.6.0/instant_python/configuration/git}/__init__.py +0 -0
- {instant_python-0.5.2/instant_python/question_prompter/step → instant_python-0.6.0/instant_python/configuration/parser}/__init__.py +0 -0
- {instant_python-0.5.2/instant_python/templates → instant_python-0.6.0/instant_python/configuration/question}/__init__.py +0 -0
- {instant_python-0.5.2/instant_python/templates/boilerplate/event_bus → instant_python-0.6.0/instant_python/configuration/step}/__init__.py +0 -0
- {instant_python-0.5.2/instant_python/templates/boilerplate/exceptions → instant_python-0.6.0/instant_python/configuration/template}/__init__.py +0 -0
- {instant_python-0.5.2/instant_python/templates/boilerplate/fastapi → instant_python-0.6.0/instant_python/dependency_manager}/__init__.py +0 -0
- {instant_python-0.5.2/instant_python/templates/boilerplate/logger → instant_python-0.6.0/instant_python/git}/__init__.py +0 -0
- {instant_python-0.5.2/instant_python/templates/boilerplate/persistence → instant_python-0.6.0/instant_python/project_creator}/__init__.py +0 -0
- {instant_python-0.5.2/instant_python/project_generator → instant_python-0.6.0/instant_python/project_creator}/node.py +0 -0
- {instant_python-0.5.2/instant_python/templates/boilerplate/persistence/async → instant_python-0.6.0/instant_python/render}/__init__.py +0 -0
- {instant_python-0.5.2/instant_python/templates/boilerplate/persistence/synchronous → instant_python-0.6.0/instant_python/shared}/__init__.py +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/.gitignore +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/.pre-commit-config.yml +0 -0
- {instant_python-0.5.2/instant_python/templates/boilerplate/value_object → instant_python-0.6.0/instant_python/templates/boilerplate/event_bus}/__init__.py +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/event_bus/domain_event.py +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/event_bus/rabbit_mq_settings.py +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/fastapi/status_code.py +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/github/test_lint.yml +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/logger/json_formatter.py +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/persistence/async/README.md +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/persistence/async/alembic.ini +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/persistence/async/postgres_settings.py +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/persistence/async/script.py.mako +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/persistence/base.py +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/pytest.ini +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/random_generator.py +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/scripts/create_aggregate.py +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/scripts/insert_template.py +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/scripts/local_setup.sh +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/scripts/post-merge +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/scripts/pre-commit +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/boilerplate/scripts/pre-push +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/project_structure/alembic_migrator.yml.j2 +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/project_structure/async_alembic.yml.j2 +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/project_structure/async_sqlalchemy.yml.j2 +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/project_structure/event_bus_domain.yml.j2 +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/project_structure/event_bus_infra.yml.j2 +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/project_structure/fastapi_app.yml.j2 +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/project_structure/fastapi_infra.yml.j2 +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/project_structure/github_action.yml.j2 +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/project_structure/gitignore.yml.j2 +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/project_structure/license.yml.j2 +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/project_structure/logger.yml.j2 +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/project_structure/macros.j2 +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/project_structure/mypy.yml.j2 +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/project_structure/pre_commit.yml.j2 +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/project_structure/pyproject.yml.j2 +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/project_structure/pytest.yml.j2 +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/project_structure/python_version.yml.j2 +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/project_structure/readme.yml.j2 +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/project_structure/synchronous_sqlalchemy.yml.j2 +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/instant_python/templates/project_structure/value_objects.yml.j2 +0 -0
- {instant_python-0.5.2 → instant_python-0.6.0}/tox.ini +0 -0
|
@@ -51,14 +51,19 @@ jobs:
|
|
|
51
51
|
echo "Extracting changelog for tag: ${release}"
|
|
52
52
|
|
|
53
53
|
awk -v tag="$release" '
|
|
54
|
-
BEGIN {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
54
|
+
BEGIN { printing=0 }
|
|
55
|
+
# start printing when we hit "## 0.5.2 "
|
|
56
|
+
$0 ~ ("^## " tag " ") {
|
|
57
|
+
printing=1
|
|
58
|
+
print
|
|
59
|
+
next
|
|
58
60
|
}
|
|
59
|
-
|
|
61
|
+
# stop printing when we hit another "## " after having printed
|
|
62
|
+
/^## / && printing { exit }
|
|
63
|
+
# print everything in between
|
|
64
|
+
printing { print }
|
|
60
65
|
' CHANGELOG.md > release_changelog.md
|
|
61
|
-
|
|
66
|
+
|
|
62
67
|
cat release_changelog.md
|
|
63
68
|
|
|
64
69
|
- name: Create release
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
name: Run lint, format and tests
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: write
|
|
10
|
+
id-token: write
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
lint:
|
|
14
|
+
name: lint
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v4
|
|
18
|
+
with:
|
|
19
|
+
ref: ${{ github.head_ref }}
|
|
20
|
+
fetch-depth: 0
|
|
21
|
+
- uses: ./.github/actions/python_setup
|
|
22
|
+
- name: Check linting
|
|
23
|
+
id: check_lint
|
|
24
|
+
run: |
|
|
25
|
+
git pull --rebase origin main
|
|
26
|
+
uvx ruff check --exclude "instant_python/templates,instant_python/new_templates" instant_python test
|
|
27
|
+
continue-on-error: true
|
|
28
|
+
- name: Auto fix lint errors
|
|
29
|
+
id: fix_lint
|
|
30
|
+
if: ${{ steps.check_lint.outcome == 'failure' }}
|
|
31
|
+
run: uvx ruff check --fix --exclude "instant_python/templates,instant_python/templates" instant_python test
|
|
32
|
+
- name: Commit lint fixes
|
|
33
|
+
if: ${{ steps.fix_lint.outcome == 'success' }}
|
|
34
|
+
run: |
|
|
35
|
+
git config user.name "github-actions[bot]"
|
|
36
|
+
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
37
|
+
|
|
38
|
+
if git diff --quiet; then
|
|
39
|
+
echo "No changes to commit."
|
|
40
|
+
else
|
|
41
|
+
git add .
|
|
42
|
+
git commit -m "🚨 chore: fix linting issues via GitHub Actions"
|
|
43
|
+
git push
|
|
44
|
+
fi
|
|
45
|
+
env:
|
|
46
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
47
|
+
- name: Check linting again
|
|
48
|
+
run: uvx ruff check --exclude "instant_python/templates,instant_python/templates" instant_python test
|
|
49
|
+
|
|
50
|
+
format:
|
|
51
|
+
name: format
|
|
52
|
+
runs-on: ubuntu-latest
|
|
53
|
+
steps:
|
|
54
|
+
- uses: actions/checkout@v4
|
|
55
|
+
with:
|
|
56
|
+
ref: ${{ github.head_ref }}
|
|
57
|
+
fetch-depth: 0
|
|
58
|
+
- uses: ./.github/actions/python_setup
|
|
59
|
+
- name: Check code format
|
|
60
|
+
id: check_format
|
|
61
|
+
run: |
|
|
62
|
+
git pull --rebase origin main
|
|
63
|
+
uvx ruff format --check --exclude "instant_python/templates,instant_python/new_templates" instant_python test
|
|
64
|
+
continue-on-error: true
|
|
65
|
+
- name: Auto format code
|
|
66
|
+
id: format_code
|
|
67
|
+
if: ${{ steps.check_format.outcome == 'failure' }}
|
|
68
|
+
run: uvx ruff format --exclude "instant_python/templates,instant_python/templates" instant_python test
|
|
69
|
+
- name: Commit formatted code
|
|
70
|
+
if: ${{ steps.format_code.outcome == 'success' }}
|
|
71
|
+
run: |
|
|
72
|
+
git config user.name "github-actions[bot]"
|
|
73
|
+
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
74
|
+
|
|
75
|
+
if git diff --quiet; then
|
|
76
|
+
echo "No changes to commit."
|
|
77
|
+
else
|
|
78
|
+
git add .
|
|
79
|
+
git commit -m "🎨 style: format code via GitHub Actions"
|
|
80
|
+
git push
|
|
81
|
+
fi
|
|
82
|
+
env:
|
|
83
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
84
|
+
- name: Check code format again
|
|
85
|
+
run: uvx ruff format --check --exclude "instant_python/templates,instant_python/templates" instant_python test
|
|
86
|
+
|
|
87
|
+
test:
|
|
88
|
+
name: test
|
|
89
|
+
runs-on: ubuntu-latest
|
|
90
|
+
steps:
|
|
91
|
+
- uses: actions/checkout@v4
|
|
92
|
+
- uses: ./.github/actions/python_setup
|
|
93
|
+
- name: Install test dependencies
|
|
94
|
+
run: uv pip install pytest pytest-cov
|
|
95
|
+
- name: Run tests
|
|
96
|
+
run: uv run pytest --cov=instant_python --cov-report=xml --cov-report=html --cov-report=term-missing test -ra -s
|
|
97
|
+
- name: Upload coverage report
|
|
98
|
+
uses: codecov/codecov-action@v3
|
|
99
|
+
with:
|
|
100
|
+
files: coverage.xml
|
|
101
|
+
flags: unittests
|
|
102
|
+
name: codecov-coverage
|
|
103
|
+
|
|
104
|
+
rollback:
|
|
105
|
+
name: rollback
|
|
106
|
+
runs-on: ubuntu-latest
|
|
107
|
+
needs: [test]
|
|
108
|
+
if: ${{ always() && needs.test.result == 'failure' }}
|
|
109
|
+
steps:
|
|
110
|
+
- uses: actions/checkout@v4
|
|
111
|
+
with:
|
|
112
|
+
fetch-depth: 0
|
|
113
|
+
- name: Revert pushed commits
|
|
114
|
+
run: |
|
|
115
|
+
git config user.name "github-actions[bot]"
|
|
116
|
+
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
117
|
+
git revert --no-edit --no-commit ${{ github.event.before }}..${{ github.sha }}
|
|
118
|
+
git commit -m "⏪️ revert: revert changes due to test failures"
|
|
119
|
+
git push --force-with-lease origin main
|
|
120
|
+
env:
|
|
121
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
@@ -1,3 +1,261 @@
|
|
|
1
|
+
## 0.6.0 (2025-06-27)
|
|
2
|
+
|
|
3
|
+
### ✨ Features
|
|
4
|
+
|
|
5
|
+
- **configuration**: remove white spaces from slug
|
|
6
|
+
- **configuration**: raise error for bounded context if specify_bounded_context is true and no DDD template is set or if either bounded context or aggregate name are set
|
|
7
|
+
- **commands**: set ipy.yml as the default configuration file
|
|
8
|
+
- **shared**: add SupportedBuiltInFeatures enum for built-in feature management
|
|
9
|
+
- **configuration**: add method to retrieve supported templates
|
|
10
|
+
- **configuration**: add CUSTOM template type to SupportedTemplates
|
|
11
|
+
- **shared**: add SupportedLicenses enum with method to retrieve supported licenses
|
|
12
|
+
- **shared**: add SupportedPythonVersions enum with method to retrieve supported versions
|
|
13
|
+
- **shared**: add method to retrieve list of supported managers
|
|
14
|
+
- **cli**: add config command to CLI for configuration management
|
|
15
|
+
- **commands**: add command to generate configuration file for new projects
|
|
16
|
+
- **configuration**: add save_on_current_directory method to save configuration in the current directory
|
|
17
|
+
- **configuration**: implement QuestionWizard class to manage question steps and parse answers
|
|
18
|
+
- **configuration**: add parse_from_answers method to differentiate when parsing comes from user answers
|
|
19
|
+
- **configuration**: add Step interface for all concrete implementations and Steps container to manage configuration steps
|
|
20
|
+
- **configuration**: implement DependenciesStep to manage user input for dependency installation
|
|
21
|
+
- **configuration**: add TemplateStep to manage template selection and built-in features
|
|
22
|
+
- **configuration**: implement GitStep to handle git initialization questions
|
|
23
|
+
- **configuration**: implement GeneralQuestionStep to store all questions that will allow the user to build the general section of the config file
|
|
24
|
+
- **configuration**: implement ConditionalQuestion
|
|
25
|
+
- **configuration**: implement MultipleChoiceQuestion
|
|
26
|
+
- **configuration**: implement FreeTextQuestion
|
|
27
|
+
- **configuration**: implement ChoiceQuestion for questions where user has to select one option between some
|
|
28
|
+
- **configuration**: implement boolean question
|
|
29
|
+
- **configuration**: create base Question class defining common logic for all concrete type of questions
|
|
30
|
+
- **configuration**: add wrapper of questionary library to be able to test easily question classes
|
|
31
|
+
- **cli**: include new "init" command in general application
|
|
32
|
+
- **commands**: allow the option of passing a custom template to generate a project with a custom structure
|
|
33
|
+
- **project-creator**: allow FileSystem to handle normal files apart from boilerplate files
|
|
34
|
+
- **renderer**: implement CustomProjectRenderer
|
|
35
|
+
- **commands**: move configuration file to project
|
|
36
|
+
- **configuration**: add method to move configuration file to generated project
|
|
37
|
+
- **configuration**: add config file path attribute and named constructor to create ConfigurationSchema from file
|
|
38
|
+
- **configuration**: automatically compute "year" value in general configuration
|
|
39
|
+
- **commands**: rename new project command to "init" so the use is ipy init
|
|
40
|
+
- **commands**: integrate GitConfigurer to set up repository during project command
|
|
41
|
+
- **git**: automate initial commit during repository setup
|
|
42
|
+
- **git**: set user information during repository initialization
|
|
43
|
+
- **git**: add repository initialization method to GitConfigurer
|
|
44
|
+
- **git**: do nothing if git is not set to be configured
|
|
45
|
+
- **git**: add "setup_repository" method to GitConfigurer
|
|
46
|
+
- **git**: create GitConfigurer class with basic init arguments
|
|
47
|
+
- **configuration**: add methods to compute flag and name of dependencies inside DependencyConfiguration to not violate encapsulation
|
|
48
|
+
- **templates**: add new templates using new configuration nomenclature
|
|
49
|
+
- **commands**: add logic to instantiate and setup virtual environment using user dependency manager selection
|
|
50
|
+
- **configuration**: add property to expose python version easily
|
|
51
|
+
- **dependency-manager**: implement factory method to encapsulate instantiation of dependency manager based on user selection
|
|
52
|
+
- **configuration**: add dependency_manager property to configuration schema
|
|
53
|
+
- **dependency-manager**: implement concrete version of dependency manager using pdm
|
|
54
|
+
- **dependency-manager**: create DependencyManager interface
|
|
55
|
+
- **dependency-manager**: implement "setup_environment" method to orchestrate all steps to install manager and dependencies
|
|
56
|
+
- **dependency-manager**: add command to create virtual environment in case no additional dependencies are specified
|
|
57
|
+
- **dependency-manager**: add logic to install dependencies with uv
|
|
58
|
+
- **dependency-manager**: implement "_install_python" method to install user python version using uv
|
|
59
|
+
- **dependency-manager**: implement "_install" method delegating command execution to a helper "_run_command" method
|
|
60
|
+
- **dependency-manager**: add _install method to UvDependencyManager
|
|
61
|
+
- **dependency-manager**: create UvDependencyManager class
|
|
62
|
+
- **project-creator**: implement "write_on_disk" method for FileSystem
|
|
63
|
+
- **project-creator**: let FileSystem constructor receive project structure as an argument
|
|
64
|
+
- **project-creator**: remove unnecessary arguments for FileSystem now that project structure gets injected
|
|
65
|
+
- **project-creator**: treat "create_folders_and_files" method as a named constructor that is in charge of creating the file system tree
|
|
66
|
+
- **project-creator**: add children to Directory __repr__ method
|
|
67
|
+
- **project-creator**: modify file system logic to receive rendered project structure injected instead of be coupled to how it gets generated
|
|
68
|
+
- **project-creator**: implement logic to fill file system files
|
|
69
|
+
- **project-creator**: raise error when file has not been created and its tried to be filled
|
|
70
|
+
- **project-creator**: implement FileHasNotBeenCreated application error
|
|
71
|
+
- **project-creator**: implement File fill method to be able to write template content inside
|
|
72
|
+
- **project-creator**: add template path attribute to File class to be able to locate the template with its content
|
|
73
|
+
- **project-creator**: implement FileSystem class to generate the directories and files of the project
|
|
74
|
+
- **configuration**: add property to expose project folder name based on configuration
|
|
75
|
+
- **project-creator**: create inner directories in Directory
|
|
76
|
+
- **project-creator**: inject children argument to Directory
|
|
77
|
+
- **project-creator**: when directory is defined as python module, create '__init__' file inside
|
|
78
|
+
- **project-creator**: implement logic to create directories
|
|
79
|
+
- **project-creator**: create Directory class with basic attributes
|
|
80
|
+
- **project-creator**: create boilerplate file at desired path
|
|
81
|
+
- **project-creator**: add '__repr__' method to BoilerplateFile class
|
|
82
|
+
- **project-creator**: implement BoilerplateFile extracting file name
|
|
83
|
+
- **project-creator**: define basic interface for different nodes
|
|
84
|
+
- **commands**: render project structure based on parsed configuration file
|
|
85
|
+
- **builder**: include 'has_dependency' custom filter in jinja environment
|
|
86
|
+
- **project-generator**: implement 'has_dependency' custom filter for jinja environment
|
|
87
|
+
- **configuration**: add ConfigurationSchemaPrimitives typed dict to type better to_primitives return
|
|
88
|
+
- **configuration**: add "template_type" property to know which template the user has selected
|
|
89
|
+
- **builder**: implement "get_project" method in JinjaProjectRender class
|
|
90
|
+
- **builder**: define interface of JinjaProjectRender
|
|
91
|
+
- **builder**: implement basic ProjectRender class with constructor to avoid linter fail
|
|
92
|
+
- **builder**: implement "render_template" method to be able to process a jinja template and render its content
|
|
93
|
+
- **builder**: include custom filter in jinja environment
|
|
94
|
+
- **builder**: initialize jinja environment
|
|
95
|
+
- **commands**: add new command that receives config file
|
|
96
|
+
- **configuration**: parse template configuration
|
|
97
|
+
- **configuration**: handler missing mandatory fields for git configuration
|
|
98
|
+
- **configuration**: parse git configuration
|
|
99
|
+
- **configuration**: parse dependencies configuration
|
|
100
|
+
- **configuration**: ensure all mandatory fields are present in general configuration
|
|
101
|
+
- **configuration**: parse general configuration
|
|
102
|
+
- **configuration**: verify all required keys are present in config file
|
|
103
|
+
- **configuration**: handle EmptyConfigurationNotAllowed error for empty config files
|
|
104
|
+
- **configuration**: create Parser class with parser method that raises single error
|
|
105
|
+
- **configuration**: add ConfigurationSchema to encapsulate general, dependency, template, and git configurations
|
|
106
|
+
- **configuration**: add template configuration management with validation for templates and built-in features
|
|
107
|
+
- **configuration**: implement GitConfiguration class to manage user settings
|
|
108
|
+
- **configuration**: add validation to ensure non-dev dependencies are not included in groups
|
|
109
|
+
- **configuration**: add DependencyConfiguration class to store dependencies parameters
|
|
110
|
+
- **configuration**: validate supported dependency managers in GeneralConfiguration
|
|
111
|
+
- **configuration**: add InvalidDependencyManagerValue error for unsupported dependency managers
|
|
112
|
+
- **configuration**: validate supported Python versions in GeneralConfiguration
|
|
113
|
+
- **configuration**: add InvalidPythonVersionValue error for unsupported Python versions
|
|
114
|
+
- **configuration**: validate passed license is supported by the application
|
|
115
|
+
- **configuration**: create application error when invalid license is passed
|
|
116
|
+
- **errors**: add configuration error to possible error types
|
|
117
|
+
- **configuration**: add GeneralConfiguration dataclass for project settings
|
|
118
|
+
- **configuration**: add configuration template for project setup
|
|
119
|
+
|
|
120
|
+
### 🐛 Bug Fixes
|
|
121
|
+
|
|
122
|
+
- **template**: correct reference to built_in_features in YAML clean architecture template
|
|
123
|
+
- **configuration**: rename TemplateStep key from 'template' to 'name'
|
|
124
|
+
- **renderer**: manually include pyproject.toml boilerplate file when making a project with custom template to be able to create virtual environment
|
|
125
|
+
- **templates**: correct accessing general information in LICENSE template
|
|
126
|
+
- **commands**: pass configuration dependencies directly when setting up environment
|
|
127
|
+
- **project-creator**: include TemplateTypes in context when rendering files
|
|
128
|
+
- **templates**: correct indentantions in new templates
|
|
129
|
+
- **dependency-manager**: correct test that verifies dependency installation command is called with group flag
|
|
130
|
+
- **dependency-manager**: do not use --dev and --group flag
|
|
131
|
+
- **project-creator**: correct boilerplate template example for test to have correct format
|
|
132
|
+
- **project-creator**: modify test method that extracts project file system structure to iterate the folders in order and avoid test failing only for different order
|
|
133
|
+
- **builder**: modify how test examples files are accessed to use a full path all the times
|
|
134
|
+
- **configuration**: return empty list of dependencies when configuration file has no dependencies specified
|
|
135
|
+
- **commands**: correct requirements access to slug variable
|
|
136
|
+
- **error**: correct message formatting in NotDevDependencyIncludedInGroup exception
|
|
137
|
+
- **configuration**: make dependencies field a list of DependencyConfiguration
|
|
138
|
+
|
|
139
|
+
### ♻️ Code Refactoring
|
|
140
|
+
|
|
141
|
+
- **dependency-manager**: do not print installed dependency in pdm manager
|
|
142
|
+
- **templates**: include default dependencies when github actions is selected and write a message in the README to inform the project has been created using ipy
|
|
143
|
+
- **errors**: remove errors folder
|
|
144
|
+
- **errors**: move ApplicationError and ErrorTypes to shared module
|
|
145
|
+
- **render**: move UnknownTemplateError to render module
|
|
146
|
+
- **project-creator**: move UnknownNodeTypeError to project_creator module
|
|
147
|
+
- **dependency-manager**: move UnknownDependencyManagerError to the dependency manager module
|
|
148
|
+
- **renderer**: move TemplateFileNotFoundError import to the render module
|
|
149
|
+
- **dependency-manager**: move CommandExecutionError import to dependency manager module
|
|
150
|
+
- **project-creator**: update type hints to ensure backward compatibility with older python versions
|
|
151
|
+
- **configuration**: replace hardcoded options with dynamic retrieval from SupportedLicenses, SupportedManagers, SupportedPythonVersions, and SupportedBuiltInFeatures
|
|
152
|
+
- **configuration**: update type hints to ensure backward compatibility with older python versions
|
|
153
|
+
- **configuration**: replace hardcoded template name with SupportedTemplates enum
|
|
154
|
+
- **configuration**: replace hardcoded built-in features with dynamic retrieval from SupportedBuiltInFeatures
|
|
155
|
+
- **configuration**: move SupportedTemplates to shared module
|
|
156
|
+
- **configuration**: replace hardcoded supported templates with dynamic retrieval from SupportedTemplates
|
|
157
|
+
- **configuration**: rename TemplateTypes to SupportedTemplates
|
|
158
|
+
- **configuration**: update supported licenses to use SupportedLicenses enum
|
|
159
|
+
- **configuration**: update supported python versions to use respective enums
|
|
160
|
+
- **configuration**: update supported dependency managers to use get_supported_managers method
|
|
161
|
+
- **shared**: rename Managers enum to SupportedManagers
|
|
162
|
+
- **configuration**: update supported dependency managers to use Managers enum
|
|
163
|
+
- **dependency-manager**: move Managers enum to shared folder
|
|
164
|
+
- **templates**: rename new_templates folder to templates now that old templates folder have been removed
|
|
165
|
+
- **templates**: remove old templates files
|
|
166
|
+
- **installer**: remove old installer folder
|
|
167
|
+
- **dependency-manager**: move managers enum to dependency_manager folder
|
|
168
|
+
- **installer**: remove old installer files
|
|
169
|
+
- **prompter**: remove old question prompter folder
|
|
170
|
+
- **project-creator**: use TemplateTypes enum from configuration
|
|
171
|
+
- **project-generator**: remove old project generator folder
|
|
172
|
+
- **renderer**: move jinja_custom_filters.py to renderer folder
|
|
173
|
+
- **project-generator**: remove old files for generating the project
|
|
174
|
+
- **prompter**: remove old questions and steps
|
|
175
|
+
- **commands**: rename project file with init command to init
|
|
176
|
+
- **commands**: remove folder_cli and project_cli commands
|
|
177
|
+
- **cli**: remove folder_cli and project_cli from CLI application
|
|
178
|
+
- **configuration**: rename question step files for consistency and clarity
|
|
179
|
+
- **configuration**: set default value for _config_file_path in ConfigurationSchema
|
|
180
|
+
- **parser**: extract configuration parsing logic into separate method for improved readability
|
|
181
|
+
- **parser**: rename parse method to parse_from_file for clarity
|
|
182
|
+
- **configuration**: refactor question steps to inherit from Step interface
|
|
183
|
+
- **configuration**: move steps to its own folder inside configuration
|
|
184
|
+
- **parser**: use ConfigurationSchema named constructor to generate parsed config from user file
|
|
185
|
+
- **git**: enhance repository setup with informative messages
|
|
186
|
+
- **dependency-manager**: avoid accessing dependency configuration internal data and delegate behavior to it
|
|
187
|
+
- **dependency-manager**: modify uv dependency manager type hint to receive a list of DependencyConfiguration
|
|
188
|
+
- **dependency-manager**: move "_run_command" method to DependencyManager class to be reused by other implementations
|
|
189
|
+
- **dependency-manager**: let UvDependencyManager implement DependencyManager interface
|
|
190
|
+
- **dependency-manager**: add attribute _uv to store the name of uv command
|
|
191
|
+
- **dependency-manager**: add print statements to inform the user about what is happening
|
|
192
|
+
- **dependency-manager**: reorganize the logic to build the command for installing dependencies
|
|
193
|
+
- **dependency-manager**: extract "_build_dependency_install_command" method to encapsulate the logic of creating the command needed to install a dependency
|
|
194
|
+
- **dependency-manager**: extract "_create_virtual_environment" method to express what uv sync command is doing
|
|
195
|
+
- **commands**: update project command to use new "write_on_disk" file system method to create the project on disk
|
|
196
|
+
- **project-creator**: remove unused create_folders_and_files method
|
|
197
|
+
- **project-creator**: rename "build_tree" method to "build_node"
|
|
198
|
+
- **project-creator**: store in a list all the files that are created in the project file system
|
|
199
|
+
- **project-creator**: when creating a File save its path to be able to recover it when filling it
|
|
200
|
+
- **project-creator**: extract setup_method for file tests to clean up file creation
|
|
201
|
+
- **commands**: allow to execute new project command
|
|
202
|
+
- **commands**: change how new project command is handled using directly FyleSystem class
|
|
203
|
+
- **render**: rename JinjaProjectRender to JinjaProjectRenderer
|
|
204
|
+
- **render**: modify JinjaProjectRender return type hint
|
|
205
|
+
- **configuration**: modify configuration parser test for happy paths using approvaltests to verify expected configuration gets parsed correctly instead of making lots of separate tests for each section of the configuration
|
|
206
|
+
- **render**: remove expected project json files for tests
|
|
207
|
+
- **render**: modify tests to use approvaltest and don't need expected project json files
|
|
208
|
+
- **project-creator**: update teardown_method to delete correctly directories generated on tests
|
|
209
|
+
- **project-creator**: modify directory tests to use object mother
|
|
210
|
+
- **render**: modify resources test projects to not contain "root" key
|
|
211
|
+
- **project-creator**: make Directory inherit from Node interface
|
|
212
|
+
- **project-creator**: remove children argument from directory
|
|
213
|
+
- **project-creator**: modify teardown_method to delete files inside directory after test
|
|
214
|
+
- **project-creator**: rename boilerplate file to file
|
|
215
|
+
- **commands**: add type hint to project command
|
|
216
|
+
- **render**: rename builder module to render
|
|
217
|
+
- **builder**: remove old project_render.py and test
|
|
218
|
+
- **builder**: parametrize jinja project render tests
|
|
219
|
+
- **builder**: modify main_structure.yml.j2 for test case with dependency
|
|
220
|
+
- **builder**: load expected project structure from JSON file instead of hardcoding
|
|
221
|
+
- **builder**: rename config file to 'clean_architecture_config.yml' and update test to reflect the change
|
|
222
|
+
- **builder**: set template base dir as argument of 'render_project_structure' method instead of argument to constructor
|
|
223
|
+
- **builder**: rename constant for main structure template
|
|
224
|
+
- **builder**: remove 'main_structure_template' argument from render constructor as the main file must always be named main_structure.yml.j2
|
|
225
|
+
- **builder**: modify JinjaProjectRender arguments for test to point to test example project yml
|
|
226
|
+
- **builder**: rename "get_project" method to express better the intention of the method
|
|
227
|
+
- **builder**: move example template yml of project for test
|
|
228
|
+
- **builder**: parametrize base dir for template and main file to not be coupled to production structure when testing
|
|
229
|
+
- **configuration**: use typed dict to type "to_primitives" return method
|
|
230
|
+
- **configuration**: avoid possibility of accessing GeneralConfiguration class variables
|
|
231
|
+
- **builder**: add setup method to jinja environment test class to clean up jinja env instantiation
|
|
232
|
+
- **builder**: pass package name and template directory to jinja environment to be able to differentiate between production templates and test templates
|
|
233
|
+
- **cli**: rename instant_python_typer correctly and add missing type hints
|
|
234
|
+
- **template**: modify domain error templates to avoid repeating implementation of type and message properties
|
|
235
|
+
- modify all application errors to pass message and type error to base error and not implement neither type or message properties
|
|
236
|
+
- **error**: modify ApplicationError to pass the message and type and avoid repeating the same pattern to return the message and type of error
|
|
237
|
+
- **configuration**: handle when template config mandatory field is missing
|
|
238
|
+
- **configuration**: modify config.yml file to only include template name
|
|
239
|
+
- **configuration**: modify config examples for test to have git fields with same name as class argument
|
|
240
|
+
- **configuration**: pass parsed arguments to configuration classes using ** operator with dicts and handle TypeError to detect missing mandatory fields
|
|
241
|
+
- **configuration**: automatically cast attributes value to string in case yaml reading gets interpreted as a float
|
|
242
|
+
- **configuration**: modify config examples for test to have is_dev field with same name as class argument
|
|
243
|
+
- **configuration**: modify test assertion to compare expected dependencies with parsed dependencies configuration
|
|
244
|
+
- **tests**: update config file path handling to remove file extension
|
|
245
|
+
- **configuration**: extract helper function to build config file path for tests
|
|
246
|
+
- **configuration**: remove unnecessary empty check in tests
|
|
247
|
+
- **configuration**: temporarily set dependencies, template and git configs to not needed when initializing ConfigurationSchema to be able to test it step by step
|
|
248
|
+
- **configuration**: convert constants to class variables
|
|
249
|
+
- **configuration**: modify configuration errors to pass wrong value and supported values instead of accessing them
|
|
250
|
+
- **configuration**: create auxiliar methods for better readability when extracting config file content
|
|
251
|
+
- **configuration**: extract semantic method to encapsulate reading configuration file
|
|
252
|
+
- **configuration**: modify parse method to open config file
|
|
253
|
+
- **configuration**: reorganize configuration files in subfolders to expose clearer the concepts of the configuration
|
|
254
|
+
- **configuration**: join unsupported values test in a parametrized test
|
|
255
|
+
- **configuration**: move supported constants to a separate file to avoid circular import errors
|
|
256
|
+
- **prompter**: rename project_slug to slug for consistency across templates
|
|
257
|
+
- **cli**: move folder and project cli commands to specific command module
|
|
258
|
+
|
|
1
259
|
## 0.5.2 (2025-04-16)
|
|
2
260
|
|
|
3
261
|
### 🐛 Bug Fixes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: instant-python
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.6.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/
|
|
@@ -211,6 +211,12 @@ Classifier: Environment :: Console
|
|
|
211
211
|
Classifier: Intended Audience :: Developers
|
|
212
212
|
Classifier: Operating System :: MacOS
|
|
213
213
|
Classifier: Operating System :: POSIX :: Linux
|
|
214
|
+
Classifier: Operating System :: Unix
|
|
215
|
+
Classifier: Topic :: Software Development :: Code Generators
|
|
216
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
217
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
218
|
+
Classifier: Topic :: System :: Installation/Setup
|
|
219
|
+
Classifier: Topic :: System :: Shells
|
|
214
220
|
Requires-Python: >=3.9
|
|
215
221
|
Requires-Dist: jinja2>=3.1.5
|
|
216
222
|
Requires-Dist: pyyaml>=6.0.2
|
|
@@ -220,12 +226,14 @@ Description-Content-Type: text/markdown
|
|
|
220
226
|
|
|
221
227
|
<div align="center">
|
|
222
228
|
<h1>⚡️ Instant Boilerplate for Python Projects ⚡️</h1>
|
|
223
|
-
<strong>
|
|
229
|
+
<strong>Fast, easy and reliable project generator for your Python projects.</strong>
|
|
224
230
|
</div>
|
|
231
|
+
|
|
225
232
|
<p align="center">
|
|
226
|
-
<a href="https://dimanu-py.github.io/instant-python/
|
|
227
|
-
<a href="https://dimanu-py.github.io/instant-python/guide">
|
|
228
|
-
<a href="https://dimanu-py.github.io/instant-python/
|
|
233
|
+
<a href="https://dimanu-py.github.io/instant-python/home/getting_started/">Getting Started</a> •
|
|
234
|
+
<a href="https://dimanu-py.github.io/instant-python/guide/command_config/">Usage</a> •
|
|
235
|
+
<a href="https://dimanu-py.github.io/instant-python/examples/configuration/">Examples</a> •
|
|
236
|
+
<a href="https://dimanu-py.github.io/instant-python/home/contributing/">Contributing</a>
|
|
229
237
|
</p>
|
|
230
238
|
<p align="center">
|
|
231
239
|
<img
|
|
@@ -236,47 +244,72 @@ Description-Content-Type: text/markdown
|
|
|
236
244
|
<br>
|
|
237
245
|
</p>
|
|
238
246
|
|
|
247
|
+
<div align="center"><table><tr><td>
|
|
248
|
+
<b>Instant Python</b> replaces extensive manual setup with a simple command to get started quickly. Its motivation is to emulate
|
|
249
|
+
commands like `ng new` or `create-react-app`, but for Python projects.
|
|
250
|
+
|
|
251
|
+
<br><br>
|
|
252
|
+
|
|
253
|
+
<b>Why use Instant Python?</b> Generating your Python project with Instant Python lets you:
|
|
254
|
+
|
|
255
|
+
<ul style="list-style-type: none">
|
|
256
|
+
<li>⏱️ Slash folder & config setup time to seconds</li>
|
|
257
|
+
<li>🐍 Instantly install & switch between any Python version</li>
|
|
258
|
+
<li>🔧 Effortlessly configure your favorite project manager</li>
|
|
259
|
+
<li>📁 Kickstart with ready-made or fully custom project structures</li>
|
|
260
|
+
<li>🔄 Initialize a Git repo in just a few clicks</li>
|
|
261
|
+
<li>📦 Auto-install all your go-to dependencies</li>
|
|
262
|
+
<li>🚀 Ship with production-ready boilerplates out of the box</li>
|
|
263
|
+
</ul>
|
|
264
|
+
|
|
265
|
+
</td></tr></table></div>
|
|
266
|
+
|
|
267
|
+
## Documentation
|
|
268
|
+
|
|
269
|
+
This section provides a high-level overview of the `instant-python` library, its features, and how to get started.
|
|
270
|
+
For detailed instructions and examples, please refer to the [full Instant Python documentation](https://dimanu-py.github.io/instant-python/).
|
|
271
|
+
|
|
272
|
+
- [Installation](#installation)
|
|
273
|
+
- [Getting Started](docs/home/getting_started.md)
|
|
274
|
+
- [Examples](./docs/examples/index.md)
|
|
275
|
+
|
|
276
|
+
### Need help?
|
|
277
|
+
|
|
278
|
+
- Join a discussion 💬 on [GitHub Discussions]
|
|
279
|
+
- [Raise an issue][GitHub Issues] on GitHub
|
|
280
|
+
|
|
281
|
+
[GitHub Discussions]: https://github.com/dimanu-py/instant-python/discussions
|
|
282
|
+
[GitHub Issues]: https://github.com/dimanu-py/instant-python/issues
|
|
283
|
+
|
|
239
284
|
## Installation
|
|
240
285
|
|
|
241
|
-
|
|
286
|
+
The latest version of `instant-python` can be installed from PyPI:
|
|
242
287
|
|
|
243
288
|
```bash
|
|
244
|
-
# With pipx
|
|
245
|
-
pipx install instant-python
|
|
246
|
-
```
|
|
247
|
-
```bash
|
|
248
|
-
# With pip in pyenv
|
|
249
289
|
pip install instant-python
|
|
250
290
|
```
|
|
251
291
|
|
|
252
|
-
|
|
292
|
+
> [!TIP]
|
|
293
|
+
> We highly recommend using a virtual environment to avoid conflicts with other Python packages.
|
|
253
294
|
|
|
254
|
-
|
|
255
|
-
We recommend to visit the page to understand the features and how to use the library.
|
|
295
|
+
### Requirements
|
|
256
296
|
|
|
257
|
-
|
|
297
|
+
Instant Python tries to support the latest Python versions, we officially support from Python 3.10 to 3.13.
|
|
298
|
+
Older versions of Python may work, but they are not guaranteed to be compatible.
|
|
258
299
|
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
300
|
+
[//]: # (### Do Not Track)
|
|
301
|
+
|
|
302
|
+
[//]: # ()
|
|
303
|
+
[//]: # (In order to get better insights about the usage of the library, we collect anonymous usage data. The only)
|
|
304
|
+
|
|
305
|
+
[//]: # (data we collect is the commands you run. No personal data is collected as part of this request.)
|
|
306
|
+
|
|
307
|
+
[//]: # ()
|
|
308
|
+
[//]: # (You can disable this feature by setting the environment variable `INSTANT_PYTHON_NO_TRACK` to `1` or )
|
|
262
309
|
|
|
263
|
-
|
|
310
|
+
[//]: # (passing the `--no-track` option to any command.)
|
|
264
311
|
|
|
265
|
-
|
|
266
|
-
as soon as possible. An overview of the features is given below, but you can find a more detailed explanation in the
|
|
267
|
-
[documentation](https://dimanu-py.github.io/instant-python/guide/features/).
|
|
312
|
+
## Contributing
|
|
268
313
|
|
|
269
|
-
-
|
|
270
|
-
|
|
271
|
-
- Description: Include a description about your project.
|
|
272
|
-
- Version: Set the initial version of your project.
|
|
273
|
-
- Author: Set the author of the project.
|
|
274
|
-
- License: Choose between _MIT_, _Apache_ or _GPL_ licenses to set your project.
|
|
275
|
-
- Python version: Select the Python version you want to use for your project between versions 3.13 to 3.10.
|
|
276
|
-
- Dependency manager: Choose between _uv_ or _pdm_ dependency managers.
|
|
277
|
-
- Git: configure your project as a git repository automatically.
|
|
278
|
-
- Default templates: select your project template between Domain Driven Design, Clean Architecture or Standard Project to
|
|
279
|
-
automatically generate your project folders and files.
|
|
280
|
-
- Out of the box implementations: include some boilerplate and implementations code that will help you to start your project faster.
|
|
281
|
-
Some of the most popular implementations are value objects, domain error modelling, makefile and Async SQL Alchemy.
|
|
282
|
-
- Dependencies: install dependencies automatically in your project.
|
|
314
|
+
We welcome contributions to `instant-python`! If you have ideas, suggestions, or improvements, please check out our
|
|
315
|
+
[contributing guide](docs/home/contributing.md) for details on how to get involved.
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
<h1>⚡️ Instant Boilerplate for Python Projects ⚡️</h1>
|
|
3
|
+
<strong>Fast, easy and reliable project generator for your Python projects.</strong>
|
|
4
|
+
</div>
|
|
5
|
+
|
|
6
|
+
<p align="center">
|
|
7
|
+
<a href="https://dimanu-py.github.io/instant-python/home/getting_started/">Getting Started</a> •
|
|
8
|
+
<a href="https://dimanu-py.github.io/instant-python/guide/command_config/">Usage</a> •
|
|
9
|
+
<a href="https://dimanu-py.github.io/instant-python/examples/configuration/">Examples</a> •
|
|
10
|
+
<a href="https://dimanu-py.github.io/instant-python/home/contributing/">Contributing</a>
|
|
11
|
+
</p>
|
|
12
|
+
<p align="center">
|
|
13
|
+
<img
|
|
14
|
+
src="https://github.com/user-attachments/assets/132513c0-e472-4523-a0fd-c27b70dfd78a"
|
|
15
|
+
alt="instant-python-demo"
|
|
16
|
+
width="80%"
|
|
17
|
+
/>
|
|
18
|
+
<br>
|
|
19
|
+
</p>
|
|
20
|
+
|
|
21
|
+
<div align="center"><table><tr><td>
|
|
22
|
+
<b>Instant Python</b> replaces extensive manual setup with a simple command to get started quickly. Its motivation is to emulate
|
|
23
|
+
commands like `ng new` or `create-react-app`, but for Python projects.
|
|
24
|
+
|
|
25
|
+
<br><br>
|
|
26
|
+
|
|
27
|
+
<b>Why use Instant Python?</b> Generating your Python project with Instant Python lets you:
|
|
28
|
+
|
|
29
|
+
<ul style="list-style-type: none">
|
|
30
|
+
<li>⏱️ Slash folder & config setup time to seconds</li>
|
|
31
|
+
<li>🐍 Instantly install & switch between any Python version</li>
|
|
32
|
+
<li>🔧 Effortlessly configure your favorite project manager</li>
|
|
33
|
+
<li>📁 Kickstart with ready-made or fully custom project structures</li>
|
|
34
|
+
<li>🔄 Initialize a Git repo in just a few clicks</li>
|
|
35
|
+
<li>📦 Auto-install all your go-to dependencies</li>
|
|
36
|
+
<li>🚀 Ship with production-ready boilerplates out of the box</li>
|
|
37
|
+
</ul>
|
|
38
|
+
|
|
39
|
+
</td></tr></table></div>
|
|
40
|
+
|
|
41
|
+
## Documentation
|
|
42
|
+
|
|
43
|
+
This section provides a high-level overview of the `instant-python` library, its features, and how to get started.
|
|
44
|
+
For detailed instructions and examples, please refer to the [full Instant Python documentation](https://dimanu-py.github.io/instant-python/).
|
|
45
|
+
|
|
46
|
+
- [Installation](#installation)
|
|
47
|
+
- [Getting Started](docs/home/getting_started.md)
|
|
48
|
+
- [Examples](./docs/examples/index.md)
|
|
49
|
+
|
|
50
|
+
### Need help?
|
|
51
|
+
|
|
52
|
+
- Join a discussion 💬 on [GitHub Discussions]
|
|
53
|
+
- [Raise an issue][GitHub Issues] on GitHub
|
|
54
|
+
|
|
55
|
+
[GitHub Discussions]: https://github.com/dimanu-py/instant-python/discussions
|
|
56
|
+
[GitHub Issues]: https://github.com/dimanu-py/instant-python/issues
|
|
57
|
+
|
|
58
|
+
## Installation
|
|
59
|
+
|
|
60
|
+
The latest version of `instant-python` can be installed from PyPI:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
pip install instant-python
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
> [!TIP]
|
|
67
|
+
> We highly recommend using a virtual environment to avoid conflicts with other Python packages.
|
|
68
|
+
|
|
69
|
+
### Requirements
|
|
70
|
+
|
|
71
|
+
Instant Python tries to support the latest Python versions, we officially support from Python 3.10 to 3.13.
|
|
72
|
+
Older versions of Python may work, but they are not guaranteed to be compatible.
|
|
73
|
+
|
|
74
|
+
[//]: # (### Do Not Track)
|
|
75
|
+
|
|
76
|
+
[//]: # ()
|
|
77
|
+
[//]: # (In order to get better insights about the usage of the library, we collect anonymous usage data. The only)
|
|
78
|
+
|
|
79
|
+
[//]: # (data we collect is the commands you run. No personal data is collected as part of this request.)
|
|
80
|
+
|
|
81
|
+
[//]: # ()
|
|
82
|
+
[//]: # (You can disable this feature by setting the environment variable `INSTANT_PYTHON_NO_TRACK` to `1` or )
|
|
83
|
+
|
|
84
|
+
[//]: # (passing the `--no-track` option to any command.)
|
|
85
|
+
|
|
86
|
+
## Contributing
|
|
87
|
+
|
|
88
|
+
We welcome contributions to `instant-python`! If you have ideas, suggestions, or improvements, please check out our
|
|
89
|
+
[contributing guide](docs/home/contributing.md) for details on how to get involved.
|