Recent Releases of instant-python
instant-python - 0.9.2
v0.9.2 (2025-07-23)
🪲 Bug Fixes
templates: Modify test inner folders names for clean architecture template (
b8a2167)templates: Add local setup script only when pre commit built in template is not set (
28ebc58)templates: Add test value object templates to default project templates (
ff56888)templates: Add default templates and object mothers for uuid value object template (
abd8d3b)templates: Add default templates and object mothers for int value object template (
a438eae)templates: Add default templates and object mothers for string value object template (
0880169)templates: Add 'hash' method to ValueObject template implementation to avoid problems when searching for objects (
ccc7c71)templates: Set testpaths to be test in pytest.ini template file using the same name as the default templates (
30ad6c6)templates: Use JSONResponse from fastapi instead of starlette in success response template (
6347b74)
⚙️ Build System
Specify changelog file in changelog section (
50a08c6)Remove default template section in pyproject.toml for semantic release (
4ebb8b0)
Detailed Changes: 0.9.1...0.9.2
- Python
Published by github-actions[bot] 7 months ago
instant-python - 0.9.1
v0.9.1 (2025-07-18)
🪲 Bug Fixes
cli: Update command in tox.ini file to be able to make reference to new location for application entry point (
a8baef2)templates: Update pyproject.toml template to include optional build dependencies when github actions built-in feature is selected (
b765ec8)templates: Update release action template to work running build command to update uv.lock (
9824451)
⚙️ Build System
Update changelog section in semantic release config (
7a413cf)Update application entry point (
8b5330a)
♻️ Refactoring
Detailed Changes: 0.9.0...0.9.1
- Python
Published by github-actions[bot] 7 months ago
instant-python - 0.9.0
v0.9.0 (2025-07-18)
✨ Features
templates: Add github action release to project structure for github actions (
9e3309f)templates: Include python semantic release library in default dependencies if github actions is selected (
5374ba4)shared: Add github issues template as possible built in feature (
9d97ce5)templates: Add template for release with python semantic release (
23569a0)templates: Include github issues template into project structure templates (
36a2975)templates: Add templates for github issues templates (
fec68e4)templates: Include pip audit and precommit as default dependencies if they are selected as built in features (
86a8af5)templates: Include audit command in makefile template if github actions is selected (
8035fab)templates: Modify project structure for github action including joined ci workflow (
4ae4bd7)templates: Join lint and test github workflows into one single file and include more security and code quality jobs (
a21eafe)shared: Include security as supported built in feature (
5cfa228)templates: Include security template into project structures (
65c9b84)templates: Create security file template (
21b1bb0)shared: Add citation as supported built in feature (
893abab)templates: Add citation project structure template to default templates (
0a798d5)templates: Add citation file template (
888e8c6)shared: Add precommit option in SupportedBuiltInFeatures enum (
f69cadb)templates: Include precommit template project structure in all default templates (
8601841)templates: Include specific make commands in template based on installed dependencies and selected built in features (
62688c0)templates: Include pre commit hook in makefile if it's selected as built in features (
2c391fb)templates: Update pre commit config file to be included as built in feature (
972aaa4)templates: Include new base aggregate in value objects and when in EDA project structure (
4f038ef)templates: Create base aggregate class and make aggregate for event driven architecture inherit from it (
44f843d)templates: Include error handlers in fastapi application template for project structure (
add3634)templates: Separate template files for fastapi error handlers (
cfd7d14)templates: Include new model for value objects in project structure (
39d2ba1)templates: Update value object templates to use new version that autovalidates using @validate decorator (
186ecd5)templates: Update project structure templates that were using old version of domain error an include error base class as well as rename the folder to errors instead of exceptions (
5c363b6)templates: Implement new error template as base class for errors and let domain error inherit from it (
1e15d5d)templates: Update logger project structure template to include new handler and new logger implementation (
b33bd1e)templates: Include log middleware in fastapi application project structure if logger is selected (
4ca7641)templates: Update fastapi main application template to include log middleware if logger is selected too (
c92810c)templates: Create fastapi log middleware template (
b196afc)templates: Modify fastapi main application template with new logger (
021039d)templates: Add new templates for logger implementation (
d937478)templates: Remove httpresponse and statuscode templates (
5f75969)templates: Use new response model in fastapi error handlers (
ef4e543)templates: Substitute httpresponse and statuscode templates from fastapi infra for success and error responses model (
2c086be)templates: Add ErrorResponse and SuccessResponse templates for fastapi application (
9ec98f1)
🪲 Bug Fixes
templates: Add semantic release config to pyproject template if github actions is selected (
a6533ce)templates: Fix indentations in github actions templates (
cd0d882)templates: Add {% raw %} and {% endraw %} tags in github actions templates when they access repository variables (
46ec5c1)templates: Correct forma of helper scripts when makefile built in feature is selected and include custom hooks only if precommit feature is not selected (
fe15d7e)templates: Correct error in conditional in makefile template (
b126eed)templates: Use selected dependency manager for new make commands (
80bf833)templates: Include makefile if precommit built in feature is selected (
9dcec97)templates: Write correct name for aggregate template file in value objects project structure (
d651243)render: Create jinja environment with autoscape argument enabled to avoid potential XSS attacks (
976d459)templates: Format correctly if statement in application.py template (
409d606)templates: Include logger and migrator in fastapi application only if they are selected too for DDD and standard project templates (
f5a8087)templates: Include logger and migrator in fastapi application only if they are selected as built in feature too in clean architecture template (
191d81f)
⚙️ Build System
Modify release job and semantic release configuration to be able to update uv.lock with the new version (
2d52828)Update version in uv.lock (
9d1bd2c)Update semantic release to not update major version if is zero and to allow 0 major version (
34d251e)Remove test hook in precommit config (
b8d451d)Remove final echo from makefile commands to let output of the command itself inform the user (
cd895ad)Remove -e command from echo in makefile (
6a624a3)Exclude resources folder from being formatted or linted (
cf00038)Remove AST check from pre commit hook (
b46437e)Add docs-serve command to makefile (
9430934)Improve messages of make command and add build and clean commands (
6a0e428)Remove commitizen config as is not longer needed (
0ed6a8b)
♻️ Refactoring
templates: Improve format of github action template (
a01b4b0)templates: Improve formatting of makefile and reorganize commands (
efa8de5)templates: Convert local setup and custom hooks into python scripts (
12af46c)templates: Convert add and remove dependency scripts into python scripts instead of bash scripts (
0d29c14)
Detailed Changes: 0.8.1...0.9.0
- Python
Published by github-actions[bot] 8 months ago
instant-python - 0.9.0
v0.9.0 (2025-07-17)
✨ Features
templates: Add github action release to project structure for github actions (
9e3309f)templates: Include python semantic release library in default dependencies if github actions is selected (
5374ba4)shared: Add github issues template as possible built in feature (
9d97ce5)templates: Add template for release with python semantic release (
23569a0)templates: Include github issues template into project structure templates (
36a2975)templates: Add templates for github issues templates (
fec68e4)templates: Include pip audit and precommit as default dependencies if they are selected as built in features (
86a8af5)templates: Include audit command in makefile template if github actions is selected (
8035fab)templates: Modify project structure for github action including joined ci workflow (
4ae4bd7)templates: Join lint and test github workflows into one single file and include more security and code quality jobs (
a21eafe)shared: Include security as supported built in feature (
5cfa228)templates: Include security template into project structures (
65c9b84)templates: Create security file template (
21b1bb0)shared: Add citation as supported built in feature (
893abab)templates: Add citation project structure template to default templates (
0a798d5)templates: Add citation file template (
888e8c6)shared: Add precommit option in SupportedBuiltInFeatures enum (
f69cadb)templates: Include precommit template project structure in all default templates (
8601841)templates: Include specific make commands in template based on installed dependencies and selected built in features (
62688c0)templates: Include pre commit hook in makefile if it's selected as built in features (
2c391fb)templates: Update pre commit config file to be included as built in feature (
972aaa4)templates: Include new base aggregate in value objects and when in EDA project structure (
4f038ef)templates: Create base aggregate class and make aggregate for event driven architecture inherit from it (
44f843d)templates: Include error handlers in fastapi application template for project structure (
add3634)templates: Separate template files for fastapi error handlers (
cfd7d14)templates: Include new model for value objects in project structure (
39d2ba1)templates: Update value object templates to use new version that autovalidates using @validate decorator (
186ecd5)templates: Update project structure templates that were using old version of domain error an include error base class as well as rename the folder to errors instead of exceptions (
5c363b6)templates: Implement new error template as base class for errors and let domain error inherit from it (
1e15d5d)templates: Update logger project structure template to include new handler and new logger implementation (
b33bd1e)templates: Include log middleware in fastapi application project structure if logger is selected (
4ca7641)templates: Update fastapi main application template to include log middleware if logger is selected too (
c92810c)templates: Create fastapi log middleware template (
b196afc)templates: Modify fastapi main application template with new logger (
021039d)templates: Add new templates for logger implementation (
d937478)templates: Remove httpresponse and statuscode templates (
5f75969)templates: Use new response model in fastapi error handlers (
ef4e543)templates: Substitute httpresponse and statuscode templates from fastapi infra for success and error responses model (
2c086be)templates: Add ErrorResponse and SuccessResponse templates for fastapi application (
9ec98f1)
🪲 Bug Fixes
templates: Add semantic release config to pyproject template if github actions is selected (
a6533ce)templates: Fix indentations in github actions templates (
cd0d882)templates: Add {% raw %} and {% endraw %} tags in github actions templates when they access repository variables (
46ec5c1)templates: Correct forma of helper scripts when makefile built in feature is selected and include custom hooks only if precommit feature is not selected (
fe15d7e)templates: Correct error in conditional in makefile template (
b126eed)templates: Use selected dependency manager for new make commands (
80bf833)templates: Include makefile if precommit built in feature is selected (
9dcec97)templates: Write correct name for aggregate template file in value objects project structure (
d651243)render: Create jinja environment with autoscape argument enabled to avoid potential XSS attacks (
976d459)templates: Format correctly if statement in application.py template (
409d606)templates: Include logger and migrator in fastapi application only if they are selected too for DDD and standard project templates (
f5a8087)templates: Include logger and migrator in fastapi application only if they are selected as built in feature too in clean architecture template (
191d81f)
⚙️ Build System
Modify release job and semantic release configuration to be able to update uv.lock with the new version (
2d52828)Update version in uv.lock (
9d1bd2c)Update semantic release to not update major version if is zero and to allow 0 major version (
34d251e)Remove test hook in precommit config (
b8d451d)Remove final echo from makefile commands to let output of the command itself inform the user (
cd895ad)Remove -e command from echo in makefile (
6a624a3)Exclude resources folder from being formatted or linted (
cf00038)Remove AST check from pre commit hook (
b46437e)Add docs-serve command to makefile (
9430934)Improve messages of make command and add build and clean commands (
6a0e428)Remove commitizen config as is not longer needed (
0ed6a8b)
♻️ Refactoring
templates: Improve format of github action template (
a01b4b0)templates: Improve formatting of makefile and reorganize commands (
efa8de5)templates: Convert local setup and custom hooks into python scripts (
12af46c)templates: Convert add and remove dependency scripts into python scripts instead of bash scripts (
0d29c14)
Detailed Changes: 0.8.1...0.9.0
- Python
Published by github-actions[bot] 8 months ago
instant-python - 0.8.2
v0.8.2 (2025-07-16)
🪲 Bug Fixes
render: Create jinja environment with autoscape argument enabled to avoid potential XSS attacks (
976d459)templates: Format correctly if statement in application.py template (
409d606)templates: Include logger and migrator in fastapi application only if they are selected too for DDD and standard project templates (
f5a8087)templates: Include logger and migrator in fastapi application only if they are selected as built in feature too in clean architecture template (
191d81f)
⚙️ Build System
Update semantic release to not update major version if is zero and to allow 0 major version (
34d251e)Remove test hook in precommit config (
b8d451d)Remove final echo from makefile commands to let output of the command itself inform the user (
cd895ad)Remove -e command from echo in makefile (
6a624a3)Exclude resources folder from being formatted or linted (
cf00038)Remove AST check from pre commit hook (
b46437e)Add docs-serve command to makefile (
9430934)Improve messages of make command and add build and clean commands (
6a0e428)Remove commitizen config as is not longer needed (
0ed6a8b)
Detailed Changes: 0.8.1...0.8.2
- Python
Published by github-actions[bot] 8 months ago
instant-python - Release 0.8.1
0.8.1 (2025-07-01)
🐛 Bug Fixes
- git: modify command to make initial commit so Windows system does not interpret it as three different commands
- Python
Published by dimanu-py 8 months ago
instant-python - Release 0.8.0
0.8.0 (2025-07-01)
✨ Features
- dependency-manager: get dependency manager installation command based on system os
- dependency-manager: set different commands for dependency executable based on system os
- dependency-manager: add os information in dependency manager to be able to modify installation depending on user os
♻️ Code Refactoring
- dependency-manager: add message for the user to notify uv should be added to the path when installing it on windows
- dependency-manager: notify the user when all dependencies have been installed
- dependency-manager: extract method to set executable path setting based on system os
- Python
Published by dimanu-py 8 months ago
instant-python - Release 0.6.2
0.6.2 (2025-06-30)
🐛 Bug Fixes
Add commentMore actions - configuration: ask built in template question only if selected template is not custom - templates: use valid checkout action in testlint.yml github action template - templates: correct test path folder in makefile commands - templates: rename _log folder that gets created when logger built in feature is selected to logger to avoid git ignore its content - templates: include faker library by default when template is not custom - templates: include basic dependencies for makefile when is selected in built in features
♻️ Code Refactoring
- templates: separate template github action in two different workflows, one for test and one for linting and checks
- templates: include makefile by default if github actions built in feature has been selected to be able to reuse its commands
- templates: remove test execution in parallel by default in makefile template
- templates: remove unit and integration commands from makefile
- templates: remove insert_templates command from makefile template
- configuration: do not use Self typing to ensure compatibility with older python versions
- Python
Published by dimanu-py 8 months ago
instant-python - Release 0.6.0
0.6.0 (2025-06-27)
[!IMPORTANT] This new version removes the previous commands for
ipy:project new,project template,folder new,folder template. The project command has been substituted by theinitcommand and thefoldercommand has been deleted.
✨ Features
- configuration: remove white spaces from slug
- configuration: raise error for bounded context if specifyboundedcontext is true and no DDD template is set or if either bounded context or aggregate name are set
- commands: set ipy.yml as the default configuration file
- shared: add SupportedBuiltInFeatures enum for built-in feature management
- configuration: add method to retrieve supported templates
- configuration: add CUSTOM template type to SupportedTemplates
- shared: add SupportedLicenses enum with method to retrieve supported licenses
- shared: add SupportedPythonVersions enum with method to retrieve supported versions
- shared: add method to retrieve list of supported managers
- cli: add config command to CLI for configuration management
- commands: add command to generate configuration file for new projects
- configuration: add saveoncurrent_directory method to save configuration in the current directory
- configuration: implement QuestionWizard class to manage question steps and parse answers
- configuration: add parsefromanswers method to differentiate when parsing comes from user answers
- configuration: add Step interface for all concrete implementations and Steps container to manage configuration steps
- configuration: implement DependenciesStep to manage user input for dependency installation
- configuration: add TemplateStep to manage template selection and built-in features
- configuration: implement GitStep to handle git initialization questions
- configuration: implement GeneralQuestionStep to store all questions that will allow the user to build the general section of the config file
- configuration: implement ConditionalQuestion
- configuration: implement MultipleChoiceQuestion
- configuration: implement FreeTextQuestion
- configuration: implement ChoiceQuestion for questions where user has to select one option between some
- configuration: implement boolean question
- configuration: create base Question class defining common logic for all concrete type of questions
- configuration: add wrapper of questionary library to be able to test easily question classes
- cli: include new "init" command in general application
- commands: allow the option of passing a custom template to generate a project with a custom structure
- project-creator: allow FileSystem to handle normal files apart from boilerplate files
- renderer: implement CustomProjectRenderer
- commands: move configuration file to project
- configuration: add method to move configuration file to generated project
- configuration: add config file path attribute and named constructor to create ConfigurationSchema from file
- configuration: automatically compute "year" value in general configuration
- commands: rename new project command to "init" so the use is ipy init
- commands: integrate GitConfigurer to set up repository during project command
- git: automate initial commit during repository setup
- git: set user information during repository initialization
- git: add repository initialization method to GitConfigurer
- git: do nothing if git is not set to be configured
- git: add "setup_repository" method to GitConfigurer
- git: create GitConfigurer class with basic init arguments
- configuration: add methods to compute flag and name of dependencies inside DependencyConfiguration to not violate encapsulation
- templates: add new templates using new configuration nomenclature
- commands: add logic to instantiate and setup virtual environment using user dependency manager selection
- configuration: add property to expose python version easily
- dependency-manager: implement factory method to encapsulate instantiation of dependency manager based on user selection
- configuration: add dependency_manager property to configuration schema
- dependency-manager: implement concrete version of dependency manager using pdm
- dependency-manager: create DependencyManager interface
- dependency-manager: implement "setup_environment" method to orchestrate all steps to install manager and dependencies
- dependency-manager: add command to create virtual environment in case no additional dependencies are specified
- dependency-manager: add logic to install dependencies with uv
- dependency-manager: implement "installpython" method to install user python version using uv
- dependency-manager: implement "install" method delegating command execution to a helper "run_command" method
- dependency-manager: add _install method to UvDependencyManager
- dependency-manager: create UvDependencyManager class
- project-creator: implement "writeondisk" method for FileSystem
- project-creator: let FileSystem constructor receive project structure as an argument
- project-creator: remove unnecessary arguments for FileSystem now that project structure gets injected
- project-creator: treat "createfoldersand_files" method as a named constructor that is in charge of creating the file system tree
- project-creator: add children to Directory repr method
- project-creator: modify file system logic to receive rendered project structure injected instead of be coupled to how it gets generated
- project-creator: implement logic to fill file system files
- project-creator: raise error when file has not been created and its tried to be filled
- project-creator: implement FileHasNotBeenCreated application error
- project-creator: implement File fill method to be able to write template content inside
- project-creator: add template path attribute to File class to be able to locate the template with its content
- project-creator: implement FileSystem class to generate the directories and files of the project
- configuration: add property to expose project folder name based on configuration
- project-creator: create inner directories in Directory
- project-creator: inject children argument to Directory
- project-creator: when directory is defined as python module, create 'init' file inside
- project-creator: implement logic to create directories
- project-creator: create Directory class with basic attributes
- project-creator: create boilerplate file at desired path
- project-creator: add 'repr' method to BoilerplateFile class
- project-creator: implement BoilerplateFile extracting file name
- project-creator: define basic interface for different nodes
- commands: render project structure based on parsed configuration file
- builder: include 'has_dependency' custom filter in jinja environment
- project-generator: implement 'has_dependency' custom filter for jinja environment
- configuration: add ConfigurationSchemaPrimitives typed dict to type better to_primitives return
- configuration: add "template_type" property to know which template the user has selected
- builder: implement "get_project" method in JinjaProjectRender class
- builder: define interface of JinjaProjectRender
- builder: implement basic ProjectRender class with constructor to avoid linter fail
- builder: implement "render_template" method to be able to process a jinja template and render its content
- builder: include custom filter in jinja environment
- builder: initialize jinja environment
- commands: add new command that receives config file
- configuration: parse template configuration
- configuration: handler missing mandatory fields for git configuration
- configuration: parse git configuration
- configuration: parse dependencies configuration
- configuration: ensure all mandatory fields are present in general configuration
- configuration: parse general configuration
- configuration: verify all required keys are present in config file
- configuration: handle EmptyConfigurationNotAllowed error for empty config files
- configuration: create Parser class with parser method that raises single error
- configuration: add ConfigurationSchema to encapsulate general, dependency, template, and git configurations
- configuration: add template configuration management with validation for templates and built-in features
- configuration: implement GitConfiguration class to manage user settings
- configuration: add validation to ensure non-dev dependencies are not included in groups
- configuration: add DependencyConfiguration class to store dependencies parameters
- configuration: validate supported dependency managers in GeneralConfiguration
- configuration: add InvalidDependencyManagerValue error for unsupported dependency managers
- configuration: validate supported Python versions in GeneralConfiguration
- configuration: add InvalidPythonVersionValue error for unsupported Python versions
- configuration: validate passed license is supported by the application
- configuration: create application error when invalid license is passed
- errors: add configuration error to possible error types
- configuration: add GeneralConfiguration dataclass for project settings
- configuration: add configuration template for project setup
🐛 Bug Fixes
- template: correct reference to builtinfeatures in YAML clean architecture template
- configuration: rename TemplateStep key from 'template' to 'name'
- renderer: manually include pyproject.toml boilerplate file when making a project with custom template to be able to create virtual environment
- templates: correct accessing general information in LICENSE template
- commands: pass configuration dependencies directly when setting up environment
- project-creator: include TemplateTypes in context when rendering files
- templates: correct indentantions in new templates
- dependency-manager: correct test that verifies dependency installation command is called with group flag
- dependency-manager: do not use --dev and --group flag
- project-creator: correct boilerplate template example for test to have correct format
- 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
- builder: modify how test examples files are accessed to use a full path all the times
- configuration: return empty list of dependencies when configuration file has no dependencies specified
- commands: correct requirements access to slug variable
- error: correct message formatting in NotDevDependencyIncludedInGroup exception
- configuration: make dependencies field a list of DependencyConfiguration
♻️ Code Refactoring
- dependency-manager: do not print installed dependency in pdm manager
- 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
- errors: remove errors folder
- errors: move ApplicationError and ErrorTypes to shared module
- render: move UnknownTemplateError to render module
- project-creator: move UnknownNodeTypeError to project_creator module
- dependency-manager: move UnknownDependencyManagerError to the dependency manager module
- renderer: move TemplateFileNotFoundError import to the render module
- dependency-manager: move CommandExecutionError import to dependency manager module
- project-creator: update type hints to ensure backward compatibility with older python versions
- configuration: replace hardcoded options with dynamic retrieval from SupportedLicenses, SupportedManagers, SupportedPythonVersions, and SupportedBuiltInFeatures
- configuration: update type hints to ensure backward compatibility with older python versions
- configuration: replace hardcoded template name with SupportedTemplates enum
- configuration: replace hardcoded built-in features with dynamic retrieval from SupportedBuiltInFeatures
- configuration: move SupportedTemplates to shared module
- configuration: replace hardcoded supported templates with dynamic retrieval from SupportedTemplates
- configuration: rename TemplateTypes to SupportedTemplates
- configuration: update supported licenses to use SupportedLicenses enum
- configuration: update supported python versions to use respective enums
- configuration: update supported dependency managers to use getsupportedmanagers method
- shared: rename Managers enum to SupportedManagers
- configuration: update supported dependency managers to use Managers enum
- dependency-manager: move Managers enum to shared folder
- templates: rename new_templates folder to templates now that old templates folder have been removed
- templates: remove old templates files
- installer: remove old installer folder
- dependency-manager: move managers enum to dependency_manager folder
- installer: remove old installer files
- prompter: remove old question prompter folder
- project-creator: use TemplateTypes enum from configuration
- project-generator: remove old project generator folder
- renderer: move jinjacustomfilters.py to renderer folder
- project-generator: remove old files for generating the project
- prompter: remove old questions and steps
- commands: rename project file with init command to init
- commands: remove foldercli and projectcli commands
- cli: remove foldercli and projectcli from CLI application
- configuration: rename question step files for consistency and clarity
- configuration: set default value for configfile_path in ConfigurationSchema
- parser: extract configuration parsing logic into separate method for improved readability
- parser: rename parse method to parsefromfile for clarity
- configuration: refactor question steps to inherit from Step interface
- configuration: move steps to its own folder inside configuration
- parser: use ConfigurationSchema named constructor to generate parsed config from user file
- git: enhance repository setup with informative messages
- dependency-manager: avoid accessing dependency configuration internal data and delegate behavior to it
- dependency-manager: modify uv dependency manager type hint to receive a list of DependencyConfiguration
- dependency-manager: move "runcommand" method to DependencyManager class to be reused by other implementations
- dependency-manager: let UvDependencyManager implement DependencyManager interface
- dependency-manager: add attribute _uv to store the name of uv command
- dependency-manager: add print statements to inform the user about what is happening
- dependency-manager: reorganize the logic to build the command for installing dependencies
- dependency-manager: extract "builddependencyinstallcommand" method to encapsulate the logic of creating the command needed to install a dependency
- dependency-manager: extract "createvirtual_environment" method to express what uv sync command is doing
- commands: update project command to use new "writeondisk" file system method to create the project on disk
- project-creator: remove unused createfoldersand_files method
- project-creator: rename "buildtree" method to "buildnode"
- project-creator: store in a list all the files that are created in the project file system
- project-creator: when creating a File save its path to be able to recover it when filling it
- project-creator: extract setup_method for file tests to clean up file creation
- commands: allow to execute new project command
- commands: change how new project command is handled using directly FyleSystem class
- render: rename JinjaProjectRender to JinjaProjectRenderer
- render: modify JinjaProjectRender return type hint
- 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
- render: remove expected project json files for tests
- render: modify tests to use approvaltest and don't need expected project json files
- project-creator: update teardown_method to delete correctly directories generated on tests
- project-creator: modify directory tests to use object mother
- render: modify resources test projects to not contain "root" key
- project-creator: make Directory inherit from Node interface
- project-creator: remove children argument from directory
- project-creator: modify teardown_method to delete files inside directory after test
- project-creator: rename boilerplate file to file
- commands: add type hint to project command
- render: rename builder module to render
- builder: remove old project_render.py and test
- builder: parametrize jinja project render tests
- builder: modify main_structure.yml.j2 for test case with dependency
- builder: load expected project structure from JSON file instead of hardcoding
- builder: rename config file to 'cleanarchitectureconfig.yml' and update test to reflect the change
- builder: set template base dir as argument of 'renderprojectstructure' method instead of argument to constructor
- builder: rename constant for main structure template
- builder: remove 'mainstructuretemplate' argument from render constructor as the main file must always be named main_structure.yml.j2
- builder: modify JinjaProjectRender arguments for test to point to test example project yml
- builder: rename "get_project" method to express better the intention of the method
- builder: move example template yml of project for test
- builder: parametrize base dir for template and main file to not be coupled to production structure when testing
- configuration: use typed dict to type "to_primitives" return method
- configuration: avoid possibility of accessing GeneralConfiguration class variables
- builder: add setup method to jinja environment test class to clean up jinja env instantiation
- builder: pass package name and template directory to jinja environment to be able to differentiate between production templates and test templates
- cli: rename instantpythontyper correctly and add missing type hints
- template: modify domain error templates to avoid repeating implementation of type and message properties
- modify all application errors to pass message and type error to base error and not implement neither type or message properties
- error: modify ApplicationError to pass the message and type and avoid repeating the same pattern to return the message and type of error
- configuration: handle when template config mandatory field is missing
- configuration: modify config.yml file to only include template name
- configuration: modify config examples for test to have git fields with same name as class argument
- configuration: pass parsed arguments to configuration classes using ** operator with dicts and handle TypeError to detect missing mandatory fields
- configuration: automatically cast attributes value to string in case yaml reading gets interpreted as a float
- configuration: modify config examples for test to have is_dev field with same name as class argument
- configuration: modify test assertion to compare expected dependencies with parsed dependencies configuration
- tests: update config file path handling to remove file extension
- configuration: extract helper function to build config file path for tests
- configuration: remove unnecessary empty check in tests
- configuration: temporarily set dependencies, template and git configs to not needed when initializing ConfigurationSchema to be able to test it step by step
- configuration: convert constants to class variables
- configuration: modify configuration errors to pass wrong value and supported values instead of accessing them
- configuration: create auxiliar methods for better readability when extracting config file content
- configuration: extract semantic method to encapsulate reading configuration file
- configuration: modify parse method to open config file
- configuration: reorganize configuration files in subfolders to expose clearer the concepts of the configuration
- configuration: join unsupported values test in a parametrized test
- configuration: move supported constants to a separate file to avoid circular import errors
- prompter: rename project_slug to slug for consistency across templates
- cli: move folder and project cli commands to specific command module
- Python
Published by dimanu-py 8 months ago
instant-python - Release 0.5.2
0.5.2 (2025-04-16)
🐛 Bug Fixes
- template: fix project slug placeholder in README template
- Python
Published by dimanu-py 11 months ago
instant-python - Release 0.5.1
0.5.1 (2025-04-15)
🐛 Bug Fixes
- cli: manage and detect correctly raised exceptions and exit the application with exit code 1
- Python
Published by dimanu-py 11 months ago
instant-python - Release 0.5.0
0.5.0 (2025-04-15)
✨ Features
- cli: create main application based on custom implementation and add error handlers
- cli: implement a custom version of Typer application to be able to handle exceptions in FastAPI way using decorators
- errors: add UnknownTemplateError for handling unknown template types
- errors: add TemplateFileNotFoundError for missing template files and extend ErrorTypes with GENERATOR
- errors: add ErrorTypes enum for categorizing error types
- errors: add CommandExecutionError for handling command execution failures
- errors: add UnknownDependencyManagerError for handling unknown dependency managers
- installer: remove unused PYENV manager from Enum
- errors: create application error to be able to capture all expected errors
🐛 Bug Fixes
- errors: correct typo in UnknownTemplateError message
♻️ Code Refactoring
- project-generator: manage when a command fails by raising custom CommandExecutionError
- installer: manage when a command fails by raising custom CommandExecutionError
- cli: enhance error handling with rich console output
- project-generator: raise UnknownTemplateError for unknown template types
- project-generator: move UnknownErrorTypeError to errors module and inherit from ApplicationError
- project-generator: raise TemplateFileNotFoundError for missing template files
- errors: use ErrorTypes enum for error type in CommandExecutionError and UnknownDependencyManagerError
- installer: add stderr handling for subprocess calls
- installer: raise UnknownDependencyManagerError for unknown user managers
- Python
Published by dimanu-py 11 months ago
instant-python - Release 0.4.0
0.4.0 (2025-04-11)
✨ Features
- template: add README template and include in main structure
- Python
Published by dimanu-py 11 months ago
instant-python - Release 0.3.0
0.3.0 (2025-04-11)
✨ Features
- project-generator: add support for creating user File instances in folder tree
- project-generator: create new File class to model user files
- project-generator: create JinjaEnvironment class to manage independently jinja env
🐛 Bug Fixes
- template: correct IntValueObject template to call super init
- template: remove unnecessary newline in template import
- template: correct typo in jinja template
♻️ Code Refactoring
- template: modify all template file types
- project-generator: rename File class to BoilerplateFile to be able to differentiate a normal file introduced by the user and a file of the library that contains boilerplate
- cli: update template command parameter from templatename to templatepath
- cli: rename configuration variable name from user_requirements to requirements
- prompter: modify configuration file name from user_requirements.yml to ipy.yml
- prompter: rename UserRequirements to RequirementsConfiguration
- project-generator: rename DefaultTemplateManager to JinjaTemplateManager
- project-generator: delegate jinja env management to JinjaEnvironment in DefaultTemplateManager
- Python
Published by dimanu-py 11 months ago
instant-python - Release 0.2.0
0.2.0 (2025-04-08)
✨ Features
- template: add new rabbit mq error when user selects event bus built in feature
- template: create rabbitmqconnectionnotestablished_error.py boilerplate
🐛 Bug Fixes
- template: correct domain event type not found error import and class name
- template: set event bus publish method async
- template: correct imports in value objects boilerplate
♻️ Code Refactoring
- installer: add virtual environment creation before installing dependencies
- template: conditionally include bounded context based on specifyboundedcontext field
- template: add specifyboundedcontext field to user requirements
- prompter: be able to execute nested conditional questions
- template: update subquestions structure to use ConditionalQuestion for bounded context specification
- prompter: extend ConditionalQuestion subquestions type hint
- prompter: remove note when prompting built in features for the user to select and remove temporarily synch sql alchemy option
- template: modify project structure templates to include logger and alembic migrator automatically if fastapi application is selected
- template: modify DomainEventSubscriber boilerplate to follow generic type syntax depending on python version
- Python
Published by dimanu-py 11 months ago
instant-python - Release 0.1.1
0.1.1 (2025-04-08)
🐛 Bug Fixes
- template: correct typo in ExchangeType enum declaration
- template: correct typo on TypeVar declaration
♻️ Code Refactoring
- question: use old generic type syntax to keep compatibility with old python versions
- template: update boilerplates so they can adhere to correct python versions syntax
- project-generator: standardize path separator in file name construction
- installer: remove unused enum OperatingSystems
- prompter: change TemplateTypes class to inherit from str and Enum for improved compatibility
- project-generator: change NodeType class to inherit from str and Enum for improved compatibility
- installer: change Managers class to inherit from str and Enum for better compatibility
- project-generator: remove override typing decorator to allow lower python versions compatibility
- Python
Published by dimanu-py 11 months ago
instant-python - Release 0.1.0
0.1.0 (2025-04-06)
🐛 Bug Fixes
- project-generator: add template types values to be able to use enum in jinja templates
- template: write correct option when fastapi built in feature is selected
- template: generate correctly the import statement in templates depending on the user selection
- installer: correct answers when installing dependencies
- prompter: modify DependenciesQuestion to not enter an infinite loop of asking the user
- cli: temporarily disable template commands
- prompter: extract the value of the base answer to check it with condition
- prompter: remove init argument from year field
- cli: access project_name value when using custom template command
- prompter: set default value for git field in UserRequirements to avoid failing when executing folder command
- prompter: include last question in TemplateStep if selected template is domaindrivendesign
- project-generator: instantiate DefaultTemplateManager inside File class
- build: change build system and ensure templates directory gets included
- project-generator: substitute FileSystemLoader for PackageLoader to safer load when using it as a package
- prompter: correct default source folder name
- template: correct license field from pyproject.toml template
- template: use project_slug for project name inside pyproject.toml
- project-generator: correct path to templates
- project-generator: correct extra blocks that where being created when including templates
♻️ Code Refactoring
- template: include mypy, git and pytest configuration files only when the user has selected these options
- template: include dependencies depending on user built in features selection
- prompter: update answers dictionary instead of add manually question key and answer
- prompter: return a dictionary with the key of the question and the answer instead of just the answer
- cli: modify cli help commands and descriptions
- prompter: modify default values for UserRequirements
- cli: use new GeneralCustomTemplateProjectStep in template command
- cli: add name to command and rename command function
- prompter: substitute template and ddd specific questions in TemplateStep for ConditionalQuestion
- prompter: substitute set of question in GitStep for ConditionalQuestion
- prompter: remove shouldnotask method from Step interface
- prompter: remove DomainDrivenDesignStep
- cli: remove DDD step and add TemplateStep
- prompter: remove boilerplate question from DependenciesStep
- prompter: remove template related questions from GeneralProjectStep
- prompter: move git question to GitStep and remove auxiliar continue_git question
- cli: rename function names for better clarity
- cli: move new command to its own typer app
- cli: move folder command to its own typer app and separate the app in two commands
- project-generator: let DefaultTemplateManager implement TemplateManager interface
- project-generator: rename TemplateManager to DefaultTemplateManager
- cli: add template argument to both command to begin allow the user to pass a custom path for the project structure
- cli: add help description to both commands
- prompter: move python and dependency manager from dependencies step to general project step as it's information that is needed in general to fill all files information
- cli: rename generate_project command to new
- prompter: add file_path field to user requirements class
- cli: pass project slug name as the project directory that will be created
- project-generator: pass the directory where the project will be created to FolderTree
- cli: remove checking if a user_requirements file exists
- template: remove writing author and email info only if manager is pdm
- installer: avoid printing executed commands output by stdout
- template: use git_email field in pyproject.toml
- prompter: remove email field from UserRequirements and add gitemail and gituser_name
- prompter: remove email question from general project step
- project-generator: remove condition of loading the template only when is domain driven design
- template: use includeandindent custom macro inside domaindrivendesign/test template
- template: include always mypy and pytest ini configuration
- prompter: rename empty project template to standard project
- cli: use DependencyManagerFactory instead of always instantiating UvManager
- installer: remove ShellConfigurator and ZshConfigurator
- cli: remove shell configurator injection
- installer: remove the use of ShellConfigurator inside installer
- prompter: warn the user that project name cannot contain spaces
- prompter: remove project name question and just leave project slug
- installer: remove executable attribute from UvManager
- installer: specify working directory to UvManager so it installs everything at the generated project
- cli: pass generated project path to UvManager
- installer: inline uv install command attribute as is not something reusable
- cli: inject folder tree and template manager to project generator
- project-generator: set the directory where user project will be generated as FolderTree attribute and expose it through a property
- project-generator: pass foldertree and templatemanager injected into ProjectGenerator
- cli: pass user dependencies to installer
- prompter: substitute fixed default dependencies by dynamic ones that will be asked to the user
- prompter: remove question definition lists and basic prompter
- cli: substitute BasicPrompter for QuestionWizard
- prompter: remove python manager and operating system questions
- prompter: extract helper method to know if template is ddd
- prompter: delegate ask logic to each question instead of letting prompter what to do depending on flags
- prompter: redefine questions using concrete implementations
- prompter: make Question abstract and add ask abstract method
- project-generator: rename Directory's init attribute to python_module and remove default value for children
- project-generator: move children extraction only when node is a directory
- src: remove old src folder with cookiecutter project and convert current instant_python module into src
- cli: generate user requirements only if no other file has been already generated.
- template: move makefile template to scripts folder as this folder only makes sense if it's use with the makefile
- template: move base from sync sqlalchemy to persistence folder as it would be the same for both sync and async
- template: move sqlalchemy sync templates to specific folder
- template: move exceptions templates to specific folder
- template: move value object templates to specific folder
- template: move github actions templates to specific folder
- template: move logger templates to specific folder
- project-generator: modify File class to be able to manage the difference between the path to the template and the path where the file should be written
- template: change all yml templates to point to inner event_bus folder boilerplate
- template: move all boilerplate related to event bus inside specific folder
- prompter: change github information for basic name and email
- prompter: move default dependencies question to general questions and include the default dependencies that will be included
- prompter: remove converting to snake case all answers and set directly those answers in snake case if needed
- templates: use raw command inside github action instead of make
- templates: modify error templates to use DomainError
- templates: change all python-module types to directory and add python flag when need it
- project-generator: make Directory general for any type of folder and remove python module class
- project-generator: remove python_module node type
- templates: set all files of type file and add them the extension variable
- project-generator: add extension field to node and remove deprecated options
- project-generator: create a single node type File that will work with any kind of file
- project-generator: substitute python file and yml file node type for single file
- templates: use new operator to write a single children command in source
- project-generator: include new custom operator in jinja environment
- templates: remove populated shared template
- templates: include value objects template when is specified by the user
- templates: import and call macro inside project structures templates
- prompter: format all answers to snake case
- use TemplateTypes instead of literal string
- project-generator: change template path name when generating project
- templates: move ddd templates inside project_structure folder
- prompter: migrate BasicPrompter to use questionary instead of typer to make the questions as it manages multiple selections better
- cli: instantiate BasicPrompter instead of using class method
- prompter: simplify ask method by using Question object an iterating over the list of defined questions
- templates: modularize main_structure file
- project-generator: create project structure inside a temporary directory
- project-generator: delegate template management to TemplateManager
- cli: call BasicPrompter and ProjectGenerator inside cli app
✨ Features
- project-generator: create new custom function to generate import path in templates
- prompter: implement general project step that will only be used when custom template is passed
- cli: add template command for project_cli.py to let users create a project using a custom template
- prompter: implement ConditionalQuestion
- prompter: implement TemplateStep to group all questions related to default template management
- project-generator: implement CustomTemplateManager to manage when user passes a custom template file
- project-generator: create TemplateManager interface
- cli: add folder command to allow users to just generate the folder structure of the project
- project-generator: format all project files with ruff once everything is generated
- cli: remove user_requirements file once project has been generated
- prompter: add remove method to UserRequirements class
- cli: call to git configurer when user wants to initialize a git repository
- installer: implement GitConfigurer
- cli: include git step into cli steps
- prompter: implement step to ask the user information to initialize a git repository
- template: add clean architecture template project structure
- template: add standard project project structure templates
- installer: create factory method to choose which dependency manager gets instantiated
- installer: implement PdmInstaller
- project-generator: expose generated project path through ProjectGenerator
- installer: add project_directory field to UvManager to know where to create the virtual environment
- installer: add install_dependencies step to Installer
- installer: implement logic to install dependencies selected by the user in UvManager
- installer: add install_dependencies method to DependencyManger interface
- prompter: implement DependencyQuestion to manage recursive question about what dependencies to install
- prompter: implement DependenciesStep with all questions related to python versions, dependencies etc.
- prompter: implement DomainDrivenDesignStep with bounded context questions.
- prompter: implement GeneralProjectStep that will have common questions such as project name, slug, license etc.
- prompter: implement Steps collection and Step interface
- prompter: implement QuestionWizard to separate questions into steps and be more flexible and dynamic
- cli: install uv by default and python version specified by the user
- installer: implement Installer that will act as the manager class that coordinates all operation required to fully install the project
- installer: implement zsh shell configurator
- installer: create ShellConfigurator interface
- installer: implement UvManager that is in charge of installing uv and the python version required by the user
- installer: add dependency manager interface
- installer: include enums for managers options and operating systems
- prompter: add question to know user's operating system
- prompter: create MultipleChoiceQuestion for questions where the user can select zero, one or more options
- prompter: create BooleanQuestion for yes or no questions
- prompter: create FreeTextQuestion for those questions where the user has to write something
- prompter: create ChoiceQuestion to encapsulate questions that have different options the user needs to choose from
- project-generator: create custom exception when node type does not exist
- cli: make sure user_requirements are loaded
- prompter: add loadfromfile method to UserRequirements
- template: include mock event bus template for testing
- template: add scripts templates
- prompter: add fastapi option to built in features
- template: include templates for fasta api application with error handlers, http response modelled with logger
- prompter: add async alembic to built in features options
- template: include templates for async alembic
- prompter: add async sqlalchemy to built in features options
- template: add templates for async sqlalchemy
- prompter: include logger as built in feature
- template: add template for logger
- prompter: include event bus as built in feature
- templates: add project structure template for event bus
- templates: add LICENSE template
- prompter: add year to user requirements fields with automatic computation
- templates: include mypy and pytest init files when default dependencies are selected
- templates: add .python-version template
- templates: add .gitignore template
- templates: add pyproject template
- templates: add makefile template
- templates: add invalid id format error template
- templates: add domain error template
- prompter: add synchronous sqlalchemy option to built in features question
- templates: add synchronous sqlalchemy template
- project-generator: create custom operator to be applied to jinja templates
- prompter: add pre commit option to built in features question
- templates: add pre commit template
- prompter: add makefile option to built in features question
- templates: add makefile template
- templates: separate value objects folder template in a single yml file
- templates: add macro to include files easier and more readable
- project-generator: add TemplateTypes enum to avoid magic strings
- prompter: add question to know which features the user wants to include
- prompter: implement new function to have multiselect questions
- prompter: define all questions in a separate file
- prompter: create Question class to encapsulate questions information
- project-generator: create YamlFile class to create yaml files
- project-generator: create Directory class to create simple folders
- templates: add templates to create github actions and workflows
- project-generator: create NodeType enum to avoid magic strings
- templates: add python files boilerplate
- project-generator: implement logic to create python files with boilerplate content
- project-generator: create specific class to manage jinja templates
- prompter: add saveinmemory method to UserRequirements
- project-generator: implement logic to create python modules
- templates: create DSL to set the folder structure
- project-generator: create classes to model how python files and modules would be created
- project-generator: delegate folder generation to folder tree class
- project-generator: create manager class in charge of creating all project files and folders
- prompter: create class to encapsulate user answers
- prompter: create basic class that asks project requirements to user
- cli: create basic typer application with no implementation
- Python
Published by dimanu-py 11 months ago