Skip to content

0.15.0

Choose a tag to compare

@github-actions github-actions released this 10 Nov 19:57
· 440 commits to main since this release

v0.15.0 (2025-11-10)

✨ Features

  • initialize: Modify how custom project structure is discover but not making compulsory create a folder named 'custom' (e35d882)

  • initialize: Ensure presence of pyproject.toml file in project structure (d677228)

  • shared: Temporary remove source_path attribute in template section if custom template is selected (c6f9e0c)

  • initialize: Modify 'move' method from yaml config repository to store config file always with the name ipy.yml even if it's a file created by the user (2e3d53f)

  • initialize: Handle missing templates by setting content to None (deb6195)

  • shared: Prompt user for custom template file path when selecting custom template (1b30673)

  • shared: Ensure source path is set for custom templates (5f51c83)

  • shared: Add source path attribute to template config object (a3f5e40)

  • Delete old implementation for init command (c99e43d)

  • initialize: Update path parameters to use Path type for improved type safety (8dc2bc2)

  • initialize: Implement write method in YamlConfigRepository to move config file (39f6c88)

  • initialize: Remove config parameter from ProjectInitializer execute method (459c8c2)

  • initialize: Invoke repository write method in ProjectInitializer (20d1c1d)

  • initialize: Add config_path parameter to ProjectInitializer execute method (fa92d33)

  • repository: Add write method to ConfigRepository interface (04ab916)

  • config: Update ConfigSchema class to allow instantiation from primitives and validate content structure to avoid inconsistent data (a6dc931)

  • initialize: Add 'execute_or_raise' method to SystemConsole to encapsulate command execution and error handling when needed (87f2b6f)

  • initialize: Add property to check if version control needs initialization (ac41ab0)

  • initialize: Conditionally initialize git repository based on config setting (187f334)

  • initialize: Integrate version control setup in ProjectInitializer (0a706c2)

  • initialize: Inject VersionControlConfigurer into ProjectInitializer (5cf1669)

  • initialize: Add abstract VersionControlConfigurer class for git configuration setup (43a24a5)

  • initialize: Add abstract ProjectFormatter class for project formatting (ab8c177)

  • initialize: Add error handling for command execution in RuffProjectFormatter (2bc7b2d)

  • initialize: Call formatter after project configuration for improved output formatting (7c467cd)

  • initialize: Use console when is injected to install uv (8feeb28)

  • initialize: Use console when is injected to install dependencies (e74c046)

  • initialize: Use console when is injected to create virtual environment (38f85ab)

  • initialize: Use console when is injected to install python version (8eb81e4)

  • initialize: Use console when is injected to check if uv has been installed (f202a3d)

  • initialize: Inject system console to uv manager (a5b6dae)

  • initialize: Handle unexpected errors during command execution (951398c)

  • initialize: Add method to CommandExecutionResult to know if it has succeeded or not (6dd97dc)

  • initialize: Implement command execution using subprocess (1bad062)

  • initialize: Modify EnvManager interface to adhere to previous DependencyManager manager to keep the same behavior until refactor (09d68fc)

  • initialize: Integrate EnvManager into ProjectInitializer for environment setup (e307135)

  • initialize: Introduce abstract Node class with create method for extensibility (8fbde36)

  • initialize: Implement directory and file creation methods in FileSystemNodeWriter (126f87c)

  • initialize: Add FileSystemNodeWriter for directory and file creation (6d555da)

  • initialize: Implement recursive creation of child nodes in directory (94a0a46)

  • initialize: Add support for creating init.py in Python modules (45d77c2)

  • initialize: Add create method to handle directory creation with NodeWriter (f97ebb1)

  • initialize: Add create method to handle file creation using NodeWriter (dd741c4)

  • initialize: Create abstract base class for file and directory creation (339ca96)

  • initialize: Add support for creating files in the file system (7845c4d)

  • writer: Implement write method to create directories and init.py for Python modules (d720f7d)

  • initialize: Modify project initializer use case to receive the folder where the project will be created (b507bc4)

  • initialize: Write project structure using writer (c9952ba)

  • initialize: Add ProjectWriter dependency to ProjectInitializer (16a645c)

  • initialize: Make Directory iterable through iteration of its children (0c4bf05)

  • initialize: Add flatten method to ProjectStructure for iterating through nodes (724b96c)

  • initialize: Modify ProjectRenderer port and adapter signatures to return a ProjectStructure (b0c251f)

  • initialize: Add iter and len methods to ProjectStructure class to be able to iterate through them (d733664)

  • initialize: Implement ProjectStructure class for building project nodes (a8a36c2)

  • initialize: Add Directory class with path building and representation methods (bdfcd14)

  • initialize: Add repr method to File class (2e88d75)

🪲 Bug Fixes

  • initialize: Add pyproject file to standard template in acceptance tests (1a9e6e3)

  • initialize: Use file name and extension as default template name if not provided in file node (e07a2cb)

  • templates: Correct template path for value_object in YAML configuration (cd4d6a4)

  • templates: Write correct template name for python version file (b6adb23)

  • templates: Remove 'project_structure/' prefix from all templates (60cecf0)

  • initialize: Introduce UnknownTemplateError (d507ed7)

  • initialize: Introduce UnknownNodeTypeError (b155055)

  • templates: Format templates correctly so ruff formatter does not fail (30bb6b1)

  • initialize: Improve error message formatting for command execution failures (d8bfc8d)

  • initialize: Correct failing uv test due to interface change (a65910f)

  • initialize: Update import of NodeWriter to be conditional for type checking (1afe2ad)

⚙️ Build System

  • Fix misspelling in pyproject.toml pytest config section (84cf27c)

♻️ Refactoring

  • shared: Remove unused methods from ConfigSchema class (5ef231f)

  • Inline all messages in call to super method in application errors (3980af5)

  • shared: Delete error types enum (9ef7981)

  • shared: Remove 'type' attribute in application errors as it's not used (00674fa)

  • initialize: Streamline project setup process by modularizing methods (f9f0632)

  • config: Move ConfigSchema domain object to shared folder (fbd8bd0)

  • initialize: Delete config reader use case (2bfe0cc)

  • initialize: Rename destination_path to base_directory for clarity (bc96230)

  • cli: Update working directory handling for project initialization (b9025e8)

  • initialize: Add custom error for missing configuration files (1daec9d)

  • initialize: Rename write method to move for clarity (f29dbaa)

  • initialize: Allow optional user template path in initializer (6b722e2)

  • initialize: Streamline project initialization by integrating ProjectInitializer and simplifying config handling (791a841)

  • templates: Add 'template' field to all templates structures (745bcd7)

  • initialize: Remove repository dependency and update execute method signature (148d3bb)

  • initialize: Simplify project creation by removing custom template option (ca697d0)

  • initialize: Change config_file_path type to str and convert to Path in execute method (961b162)

  • repository: Rename config_repository to yaml_config_repository and update imports (688937a)

  • config: Update ConfigRepository to return ConfigSchema instead of dict (4d5e4ed)

  • initialize: Add ConfigRepository dependency to ProjectInitializer (440a420)

  • config: Remove parser port and adapter now that config schema validates structure (d228200)

  • initialize: Simplify ConfigReader by removing parser dependency and using ConfigSchema for configuration parsing (ed8b871)

  • config: Modify config generator to instantiate a ConfigSchema instead of using parser (4ac7e15)

  • config: Move ConfigKeyNotPresent and EmptyConfigurationNotAllowed to config_schema.py (0ecb482)

  • initialize: Replace command execution with execute_or_raise for improved error handling in pdm env manager (4903ece)

  • initialize: Replace command execution with execute_or_raise for improved error handling in uv env manager (2972f57)

  • initialize: Replace command execution with execute_or_raise for improved error handling (506cd56)

  • initialize: Modify GitConfigurer internal methods to use 'execute_or_raise' from console for those commands that can fail (3c18406)

  • initialize: Inject console into GitConfigurer and update setup method (551419c)

  • initialize: Remove project_directory parameter from GitConfigurer (d376364)

  • initialize: Remove unused _run_command method from GitConfigurer (ac76479)

  • initialize: Streamline command execution by removing console checks in GitConfigurer methods (cd88a92)

  • initialize: Use console when is injected to execute git commands (1299f0a)

  • initialize: Add console parameter to GitConfigurer constructor (4f9e9e9)

  • initialize: Rename setup_repository to setup and update parameter naming (4bff249)

  • initialize: Reorganize git configurer imports and file structure (e894a87)

  • initialize: Make RuffProjectFormatter inherit from ProjectFormatter (278b16e)

  • initialize: Reorganize CommandExecutionError import and remove redundant definitions (b8f1074)

  • initialize: Inject console into RuffProjectFormatter (4e147b7)

  • initialize: Remove project_directory parameter from RuffProjectFormatter (0a6d292)

  • initialize: Use console when is injected to run format command (f87905c)

  • formatter: Add console parameter to RuffProjectFormatter for enhanced flexibility (b741778)

  • initialize: Rename ProjectFormatter to UvxProjectFormatter and update references (bf3078c)

  • initialize: Move ProjectFormatter to initialize.infra for better organization (8be7870)

  • initialize: Add ProjectFormatter to ProjectInitializer for enhanced project formatting (2603d66)

  • initialize: Inject console instance into env manager factory instead of passing project folder path (bc695ef)

  • initialize: Remove 'project_directory' attribute from env managers as is console who executes the commands (327922f)

  • initialize: Replace subprocess calls with SystemConsole for command execution in pdm env manager (fba2167)

  • initialize: Extract method to encapsulate all the logic executed to install one dependency (750f7e7)

  • initialize: Extract method for raising command execution error (02edb57)

  • initialize: Remove unused subprocess command execution method (380bb4f)

  • initialize: Simplify setup method by removing unnecessary try-except block (88bb72a)

  • initialize: Clean up UvEnvManager removing old implementation that run directly commands in the console (699db31)

  • initialize: Pull down _run_command and attributes from EnvManager to leave it as a pure interface and begin refactor to inject SystemConsole (b197e68)

  • initialize: Extract command execution method to run commands (1753fd4)

  • initialize: Enhance error message for unknown dependency managers (e1dcb29)

  • dependency-manager: Remove old files for dependency manager concept (41b2558)

  • initialize: Move previous implementation for dependencies managers to env manager concept in new initialize command architecture (aacc3d3)

  • initialize: Remove config parameter from write method in ProjectWriter and FileSystemProjectWriter (d30d142)

  • initialize: Convert File and Directory classes to inherit from Node (6abad70)

  • initialize: Rename nodes module to node and update imports (f91b46c)

  • initialize: Simplify node writing logic by delegating to node's create method (ad2b780)

  • initialize: Rename build_path_for to _build_path_for and update create method (5fc167d)

  • initialize: Convert 'build_path_for' method in File to protected as now it wont be accessed from outside (f211a85)

  • initialize: Build path for file and directory using Path instead of string (a0ca50c)

  • initialize: Update import statement for NodeType in jinja_project_renderer.py (6c1531c)

  • initialize: Update jinja project renderer to return ProjectStructure using named constructor (6e20b78)

  • initialize: Modify project structure constructor to receive the list of Nodes and implement a named constructor to build the nodes from raw structure (2eeba6f)


Detailed Changes: 0.14.0...0.15.0