From 44de48ef9d9715056298a6e07a3cddc4ef3ed301 Mon Sep 17 00:00:00 2001 From: Jakob Scheid Date: Tue, 1 Sep 2026 16:33:22 +0200 Subject: [PATCH 1/4] chore: update version information to 0.1.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 178ab4b..6553de7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "jcloud-docsgen" -version = "1.0.0" +version = "0.1.0" description = "A tool that generates Markdown documentation for software project source code" dependencies = ["docstring-parser"] license = "Apache-2.0" -- 2.47.3 From 3a05718612d85e93d44e7cd092ac907adcb18787 Mon Sep 17 00:00:00 2001 From: Jakob Scheid Date: Tue, 1 Sep 2026 16:39:42 +0200 Subject: [PATCH 2/4] docs(changelog): make changelog clearer Removed internal implementation details from changelog and rephrased and reordered some entries. --- docs/CHANGELOG.md | 31 ++++++++----------------------- 1 file changed, 8 insertions(+), 23 deletions(-) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 3ebb068..c888144 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -4,26 +4,11 @@ ### Added -- Add class for existing directories -- Add function to format a list human-readable -- Add function to assert that an object is an instance of a specific type -- Add Python project documentation generator class -- Add Python namespaces classes -- Add type checking for the `name` attribute at the constructor of `core.python.namespaces.PythonNamespace` -- Add check whether sub-namespaces are not empty in `core.python.namespaces.PythonPackageNamespace.namespace` -- Add feature to get the names of all sub-namespaces of a `core.python.namespaces.PythonPackageNamespace` -- Add feature to compare `core.python.namespaces.PythonPackageNamespace` instances or `core.python.namespaces.PythonModuleNamespace` instances -- Add string representation for Python namespace objects -- Add `PythonDocumentationGenerator` method to collect all namespaces -- Add class for existing files -- Add classes for Python function arguments -- Add classes for Python definitions -- Add class for Python modules -- Add feature to get the signature representation of a Python function argument -- Add class for Python docstrings -- Add feature to parse Python docstrings -- Add function to ensure a non-empty string. -- Add Python definition documentation generator -- Add function to get the path segments of a path relative to another -- Add Python module documentation generator -- Add Python project documentation generator \ No newline at end of file +- utility class for existing directories +- utility class for existing files +- Python project documentation generator +- Python definition documentation generator +- Python module documentation generator +- Python namespaces +- signature representation of a Python function argument +- Python docstrings \ No newline at end of file -- 2.47.3 From 3428c54d9973739679d3f4e02e1b44c55ba6490b Mon Sep 17 00:00:00 2001 From: Jakob Scheid Date: Tue, 1 Sep 2026 16:48:40 +0200 Subject: [PATCH 3/4] style: ensure trailing newlines --- .gitignore | 2 +- README.md | 2 +- docs/CHANGELOG.md | 2 +- licenses/docstring-parser.txt | 2 +- licenses/iniconfig.txt | 2 +- licenses/packaging.txt | 2 +- licenses/pluggy.txt | 2 +- licenses/pygments.txt | 2 +- licenses/pytest-expectdir.txt | 2 +- licenses/pytest.txt | 2 +- pyproject.toml | 2 +- src/jcloud_docsgen/__init__.py | 2 +- src/jcloud_docsgen/cli.py | 2 +- src/jcloud_docsgen/core/__init__.py | 2 +- src/jcloud_docsgen/core/python/__init__.py | 2 +- src/jcloud_docsgen/core/python/_core.py | 2 +- src/jcloud_docsgen/core/python/arguments.py | 2 +- src/jcloud_docsgen/core/python/definitions.py | 2 +- src/jcloud_docsgen/core/python/docstrings.py | 2 +- src/jcloud_docsgen/core/python/namespaces.py | 2 +- src/jcloud_docsgen/exceptions.py | 2 +- src/jcloud_docsgen/utils.py | 2 +- .../python/_core/test_PythonDefinitionDocumentationGenerator.py | 2 +- .../unit/core/python/_core/test_PythonDocumentationGenerator.py | 2 +- .../case02/project/src/pkg/module.py | 2 +- .../python/_core/test_PythonModuleDocumentationGenerator.py | 2 +- .../core/python/_core/test__argument_kind_human_readable.py | 2 +- tests/unit/core/python/_core/test__collect_definitions.py | 2 +- tests/unit/core/python/_core/test__fit_row_length.py | 2 +- tests/unit/core/python/_core/test__function_params_info.py | 2 +- tests/unit/core/python/_core/test__markdown_table.py | 2 +- tests/unit/core/python/_core/test__signature_argument_list.py | 2 +- .../python/_core/test_project_dirs/pdir_2/src/pkg/module.py | 2 +- .../core/python/arguments/test_PythonASTArgumentsListParser.py | 2 +- tests/unit/core/python/arguments/test_PythonFunctionArgument.py | 2 +- .../unit/core/python/definitions/test_PythonClassDefinition.py | 2 +- tests/unit/core/python/definitions/test_PythonDefinition.py | 2 +- .../core/python/definitions/test_PythonFunctionDefinition.py | 2 +- tests/unit/core/python/namespaces/test_PythonModuleNamespace.py | 2 +- tests/unit/core/python/namespaces/test_PythonNamespace.py | 2 +- .../unit/core/python/namespaces/test_PythonPackageNamespace.py | 2 +- tests/unit/utils/test_ExistingDirectory.py | 2 +- tests/unit/utils/test_ExistingFile.py | 2 +- tests/unit/utils/test_assert_that_is_instance.py | 2 +- tests/unit/utils/test_get_relative_path_segments.py | 2 +- tests/unit/utils/test_human_readable_list.py | 2 +- tests/unit/utils/test_non_empty_str.py | 2 +- tests/utils/ast_node.py | 2 +- 48 files changed, 48 insertions(+), 48 deletions(-) diff --git a/.gitignore b/.gitignore index e178647..32d3ae8 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,4 @@ dist/ src/*.egg-info/ .vscode/ .pytest_cache/ -__pycache__/ \ No newline at end of file +__pycache__/ diff --git a/README.md b/README.md index ac74449..079d125 100644 --- a/README.md +++ b/README.md @@ -19,4 +19,4 @@ API reference and generated documentation can be found in [docs/reference](docs/ ## Notice -This project is under active development. The documentation will be expanded over time. \ No newline at end of file +This project is under active development. The documentation will be expanded over time. diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index c888144..01c683e 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -11,4 +11,4 @@ - Python module documentation generator - Python namespaces - signature representation of a Python function argument -- Python docstrings \ No newline at end of file +- Python docstrings diff --git a/licenses/docstring-parser.txt b/licenses/docstring-parser.txt index 2c53b54..f75411d 100644 --- a/licenses/docstring-parser.txt +++ b/licenses/docstring-parser.txt @@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file +SOFTWARE. diff --git a/licenses/iniconfig.txt b/licenses/iniconfig.txt index 543b2a9..46f4b28 100644 --- a/licenses/iniconfig.txt +++ b/licenses/iniconfig.txt @@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file +SOFTWARE. diff --git a/licenses/packaging.txt b/licenses/packaging.txt index 4947287..f433b1a 100644 --- a/licenses/packaging.txt +++ b/licenses/packaging.txt @@ -174,4 +174,4 @@ incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. - END OF TERMS AND CONDITIONS \ No newline at end of file + END OF TERMS AND CONDITIONS diff --git a/licenses/pluggy.txt b/licenses/pluggy.txt index 6bf45cf..85f4dd6 100644 --- a/licenses/pluggy.txt +++ b/licenses/pluggy.txt @@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file +SOFTWARE. diff --git a/licenses/pygments.txt b/licenses/pygments.txt index 2e1f082..446a1a8 100644 --- a/licenses/pygments.txt +++ b/licenses/pygments.txt @@ -22,4 +22,4 @@ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/licenses/pytest-expectdir.txt b/licenses/pytest-expectdir.txt index c71a467..3d6675a 100644 --- a/licenses/pytest-expectdir.txt +++ b/licenses/pytest-expectdir.txt @@ -16,4 +16,4 @@ INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PA PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. \ No newline at end of file +DEALINGS IN THE SOFTWARE. diff --git a/licenses/pytest.txt b/licenses/pytest.txt index 8c9d288..c3f1657 100644 --- a/licenses/pytest.txt +++ b/licenses/pytest.txt @@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file +SOFTWARE. diff --git a/pyproject.toml b/pyproject.toml index 6553de7..43ed315 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,4 +13,4 @@ license = "Apache-2.0" package-dir = {"" = "src"} [tool.setuptools.packages.find] -where = ["src"] \ No newline at end of file +where = ["src"] diff --git a/src/jcloud_docsgen/__init__.py b/src/jcloud_docsgen/__init__.py index fc3e458..f87b366 100644 --- a/src/jcloud_docsgen/__init__.py +++ b/src/jcloud_docsgen/__init__.py @@ -19,4 +19,4 @@ from .core import __all__ as _core__all__ __all__ = [ 'cli', *_core__all__ -] \ No newline at end of file +] diff --git a/src/jcloud_docsgen/cli.py b/src/jcloud_docsgen/cli.py index 175fd71..33c3300 100644 --- a/src/jcloud_docsgen/cli.py +++ b/src/jcloud_docsgen/cli.py @@ -34,4 +34,4 @@ def main() -> int: argument_parser = argparse.ArgumentParser() argument_parser.add_argument('project_directory', type = existing_directory, default = pathlib.Path('.'), help = 'The directory of the project') args = argument_parser.parse_args() - return 0 \ No newline at end of file + return 0 diff --git a/src/jcloud_docsgen/core/__init__.py b/src/jcloud_docsgen/core/__init__.py index 5e53037..f774970 100644 --- a/src/jcloud_docsgen/core/__init__.py +++ b/src/jcloud_docsgen/core/__init__.py @@ -16,4 +16,4 @@ from . import python __all__ = [ 'python' -] \ No newline at end of file +] diff --git a/src/jcloud_docsgen/core/python/__init__.py b/src/jcloud_docsgen/core/python/__init__.py index a02c96a..08de6d0 100644 --- a/src/jcloud_docsgen/core/python/__init__.py +++ b/src/jcloud_docsgen/core/python/__init__.py @@ -19,4 +19,4 @@ from . import namespaces __all__ = [ *_core__all__, 'namespaces' -] \ No newline at end of file +] diff --git a/src/jcloud_docsgen/core/python/_core.py b/src/jcloud_docsgen/core/python/_core.py index e2b80a8..4b2405f 100644 --- a/src/jcloud_docsgen/core/python/_core.py +++ b/src/jcloud_docsgen/core/python/_core.py @@ -951,4 +951,4 @@ class PythonDocumentationGenerator: self.project_directory / 'src', self.include_sections, self.kwargs - ) \ No newline at end of file + ) diff --git a/src/jcloud_docsgen/core/python/arguments.py b/src/jcloud_docsgen/core/python/arguments.py index 97a114e..5cef187 100644 --- a/src/jcloud_docsgen/core/python/arguments.py +++ b/src/jcloud_docsgen/core/python/arguments.py @@ -170,4 +170,4 @@ class PythonASTArgumentsListParser: else: arguments.append(PythonFunctionArgument(self.ast_arguments_list.kwarg.arg, PythonArgumentKind.KWARGS, None, ast.unparse(self.ast_arguments_list.kwarg.annotation))) - return arguments \ No newline at end of file + return arguments diff --git a/src/jcloud_docsgen/core/python/definitions.py b/src/jcloud_docsgen/core/python/definitions.py index f3478e6..fc06b60 100644 --- a/src/jcloud_docsgen/core/python/definitions.py +++ b/src/jcloud_docsgen/core/python/definitions.py @@ -229,4 +229,4 @@ class PythonClassDefinition(PythonDefinition): for expr in node.body if isinstance(expr, (ast.FunctionDef, ast.AsyncFunctionDef, ast.ClassDef)) ] - ) \ No newline at end of file + ) diff --git a/src/jcloud_docsgen/core/python/docstrings.py b/src/jcloud_docsgen/core/python/docstrings.py index 813cf57..7d24b86 100644 --- a/src/jcloud_docsgen/core/python/docstrings.py +++ b/src/jcloud_docsgen/core/python/docstrings.py @@ -46,4 +46,4 @@ class PythonDocstring: :rtype: docstring_parser.Docstring ''' - return docstring_parser.parse(self.docstring) \ No newline at end of file + return docstring_parser.parse(self.docstring) diff --git a/src/jcloud_docsgen/core/python/namespaces.py b/src/jcloud_docsgen/core/python/namespaces.py index 8dd6a67..222b665 100644 --- a/src/jcloud_docsgen/core/python/namespaces.py +++ b/src/jcloud_docsgen/core/python/namespaces.py @@ -186,4 +186,4 @@ class PythonModuleNamespace(PythonNamespace): super().__init__(name) def __eq__(self, value: PythonModuleNamespace) -> bool: - return self.name == value.name \ No newline at end of file + return self.name == value.name diff --git a/src/jcloud_docsgen/exceptions.py b/src/jcloud_docsgen/exceptions.py index 52dcf25..6cb7d11 100644 --- a/src/jcloud_docsgen/exceptions.py +++ b/src/jcloud_docsgen/exceptions.py @@ -76,4 +76,4 @@ class PythonDefinitionError(ValueError): else: return f'{self.args[0]}{": " if self.definition and self.args[0] else ""}{self.definition if self.args[0] else ""}' -class PythonArgumentStructureError(PythonDefinitionError): ... \ No newline at end of file +class PythonArgumentStructureError(PythonDefinitionError): ... diff --git a/src/jcloud_docsgen/utils.py b/src/jcloud_docsgen/utils.py index 08d5c6a..fcda1cc 100644 --- a/src/jcloud_docsgen/utils.py +++ b/src/jcloud_docsgen/utils.py @@ -172,4 +172,4 @@ def get_relative_path_segments(path: pathlib.Path, root: pathlib.Path) -> list[s root.resolve() ) .parts - ) \ No newline at end of file + ) diff --git a/tests/unit/core/python/_core/test_PythonDefinitionDocumentationGenerator.py b/tests/unit/core/python/_core/test_PythonDefinitionDocumentationGenerator.py index 88fa35c..f13141f 100644 --- a/tests/unit/core/python/_core/test_PythonDefinitionDocumentationGenerator.py +++ b/tests/unit/core/python/_core/test_PythonDefinitionDocumentationGenerator.py @@ -1410,4 +1410,4 @@ Examples >>> A()''') ]) def test_PythonDefinitionDocumentationGenerator_generate_documentation(definition_documentation_generator, expected): - assert definition_documentation_generator.generate_documentation() == expected \ No newline at end of file + assert definition_documentation_generator.generate_documentation() == expected diff --git a/tests/unit/core/python/_core/test_PythonDocumentationGenerator.py b/tests/unit/core/python/_core/test_PythonDocumentationGenerator.py index d662cdc..d544790 100644 --- a/tests/unit/core/python/_core/test_PythonDocumentationGenerator.py +++ b/tests/unit/core/python/_core/test_PythonDocumentationGenerator.py @@ -59,4 +59,4 @@ def test_generate_documentation(dir, expectdir): allow_tables = True, allow_html = False ).generate_documentation( - ) # simplify the tests \ No newline at end of file + ) # simplify the tests diff --git a/tests/unit/core/python/_core/test_PythonDocumentationGenerator/test_generate_documentation/case02/project/src/pkg/module.py b/tests/unit/core/python/_core/test_PythonDocumentationGenerator/test_generate_documentation/case02/project/src/pkg/module.py index 6d54bce..30a3b59 100644 --- a/tests/unit/core/python/_core/test_PythonDocumentationGenerator/test_generate_documentation/case02/project/src/pkg/module.py +++ b/tests/unit/core/python/_core/test_PythonDocumentationGenerator/test_generate_documentation/case02/project/src/pkg/module.py @@ -1 +1 @@ -def func(): ... \ No newline at end of file +def func(): ... diff --git a/tests/unit/core/python/_core/test_PythonModuleDocumentationGenerator.py b/tests/unit/core/python/_core/test_PythonModuleDocumentationGenerator.py index db5cd28..bf6da0d 100644 --- a/tests/unit/core/python/_core/test_PythonModuleDocumentationGenerator.py +++ b/tests/unit/core/python/_core/test_PythonModuleDocumentationGenerator.py @@ -961,4 +961,4 @@ Barks. A dog.'''), ]) def test_PythonModuleDocumentationGenerator_exceptions(module_documentation_generator, expected): - assert module_documentation_generator.generate_documentation() == expected \ No newline at end of file + assert module_documentation_generator.generate_documentation() == expected diff --git a/tests/unit/core/python/_core/test__argument_kind_human_readable.py b/tests/unit/core/python/_core/test__argument_kind_human_readable.py index 5f22021..9100105 100644 --- a/tests/unit/core/python/_core/test__argument_kind_human_readable.py +++ b/tests/unit/core/python/_core/test__argument_kind_human_readable.py @@ -24,4 +24,4 @@ import pytest (PythonArgumentKind.KWARGS, 'kwargs'), ]) def test__argument_kind_human_readable(argument_kind, expected): - assert _argument_kind_human_readable(argument_kind) == expected \ No newline at end of file + assert _argument_kind_human_readable(argument_kind) == expected diff --git a/tests/unit/core/python/_core/test__collect_definitions.py b/tests/unit/core/python/_core/test__collect_definitions.py index fb3bd4e..713f4c4 100644 --- a/tests/unit/core/python/_core/test__collect_definitions.py +++ b/tests/unit/core/python/_core/test__collect_definitions.py @@ -136,4 +136,4 @@ def test_PythonDocumentationGenerator_collect_modules(python_documentation_gener ]) ]) def test___collect_definitions(module, expected): - assert list(_collect_definitions(module)) == expected \ No newline at end of file + assert list(_collect_definitions(module)) == expected diff --git a/tests/unit/core/python/_core/test__fit_row_length.py b/tests/unit/core/python/_core/test__fit_row_length.py index 5f93427..9981799 100644 --- a/tests/unit/core/python/_core/test__fit_row_length.py +++ b/tests/unit/core/python/_core/test__fit_row_length.py @@ -53,4 +53,4 @@ def test__fit_row_length(expected_length, row, expected): def test__fit_row_length_exceptions(expected_length, row, expected_exception): with pytest.raises(expected_exception) as exc_info: _fit_row_length(expected_length, row) - assert str(exc_info.value) == 'expected must be larger than or equal 0.' \ No newline at end of file + assert str(exc_info.value) == 'expected must be larger than or equal 0.' diff --git a/tests/unit/core/python/_core/test__function_params_info.py b/tests/unit/core/python/_core/test__function_params_info.py index f85947f..66ee9ed 100644 --- a/tests/unit/core/python/_core/test__function_params_info.py +++ b/tests/unit/core/python/_core/test__function_params_info.py @@ -101,4 +101,4 @@ def docstring_args_list(docstring: str) -> list[docstring_parser.DocstringParam] ([], '', {}), ]) def test__function_params_types(arg_list, docstring, expected): - assert _function_params_info(arg_list, docstring_args_list(docstring)) == expected \ No newline at end of file + assert _function_params_info(arg_list, docstring_args_list(docstring)) == expected diff --git a/tests/unit/core/python/_core/test__markdown_table.py b/tests/unit/core/python/_core/test__markdown_table.py index 1e21f84..3cb4249 100644 --- a/tests/unit/core/python/_core/test__markdown_table.py +++ b/tests/unit/core/python/_core/test__markdown_table.py @@ -90,4 +90,4 @@ def test__markdown_table(header, body, allow_markdown_table, force_row_lengths, def test__markdown_table_exceptions(header, body, allow_markdown_table, force_row_lengths, one_line_values, missing_value, expected_exception, expected_exception_msg): with pytest.raises(expected_exception) as exc_info: _markdown_table(header, body, allow_markdown_table = allow_markdown_table, force_row_lengths = force_row_lengths, one_line_values = one_line_values, missing_value = missing_value) - assert str(exc_info.value) == expected_exception_msg \ No newline at end of file + assert str(exc_info.value) == expected_exception_msg diff --git a/tests/unit/core/python/_core/test__signature_argument_list.py b/tests/unit/core/python/_core/test__signature_argument_list.py index a0a0ef4..7c1f49c 100644 --- a/tests/unit/core/python/_core/test__signature_argument_list.py +++ b/tests/unit/core/python/_core/test__signature_argument_list.py @@ -94,4 +94,4 @@ import pytest ], ['a: int = 1']), ]) def test__signature_argument_list(argument_list, expected): - assert _signature_argument_list(argument_list) == expected \ No newline at end of file + assert _signature_argument_list(argument_list) == expected diff --git a/tests/unit/core/python/_core/test_project_dirs/pdir_2/src/pkg/module.py b/tests/unit/core/python/_core/test_project_dirs/pdir_2/src/pkg/module.py index 050fcb4..b44f01e 100644 --- a/tests/unit/core/python/_core/test_project_dirs/pdir_2/src/pkg/module.py +++ b/tests/unit/core/python/_core/test_project_dirs/pdir_2/src/pkg/module.py @@ -47,4 +47,4 @@ class Dog(Animal): Barks. ''' - print('Woof!') \ No newline at end of file + print('Woof!') diff --git a/tests/unit/core/python/arguments/test_PythonASTArgumentsListParser.py b/tests/unit/core/python/arguments/test_PythonASTArgumentsListParser.py index 952b7d7..2345b97 100644 --- a/tests/unit/core/python/arguments/test_PythonASTArgumentsListParser.py +++ b/tests/unit/core/python/arguments/test_PythonASTArgumentsListParser.py @@ -212,4 +212,4 @@ def argument_list(argument_list: str) -> ast.arguments: ]), ]) def test_PythonASTArgumentsListParser_to_argument_list(ast_arguments_list, expected): - assert PythonASTArgumentsListParser(ast_arguments_list).to_argument_list() == expected \ No newline at end of file + assert PythonASTArgumentsListParser(ast_arguments_list).to_argument_list() == expected diff --git a/tests/unit/core/python/arguments/test_PythonFunctionArgument.py b/tests/unit/core/python/arguments/test_PythonFunctionArgument.py index 11a99ea..0b45d5e 100644 --- a/tests/unit/core/python/arguments/test_PythonFunctionArgument.py +++ b/tests/unit/core/python/arguments/test_PythonFunctionArgument.py @@ -154,4 +154,4 @@ def test_PythonFunctionArgument_asterik(name, kind, annotation): (PythonFunctionArgument('a', PythonArgumentKind.KWARGS, None, 'int'), '**a: int'), ]) def test_PythonFunctionArgument_signature_repr(argument, expected): - assert argument.signature_repr() == expected \ No newline at end of file + assert argument.signature_repr() == expected diff --git a/tests/unit/core/python/definitions/test_PythonClassDefinition.py b/tests/unit/core/python/definitions/test_PythonClassDefinition.py index 4605ba8..cad9ae9 100644 --- a/tests/unit/core/python/definitions/test_PythonClassDefinition.py +++ b/tests/unit/core/python/definitions/test_PythonClassDefinition.py @@ -94,4 +94,4 @@ def test_PythonFunctionDefinition_exceptions(name, args, returns, doc, decorator ])), ]) def test_PythonDefinition_from_node(node, expected): - assert PythonClassDefinition.from_node(node) == expected \ No newline at end of file + assert PythonClassDefinition.from_node(node) == expected diff --git a/tests/unit/core/python/definitions/test_PythonDefinition.py b/tests/unit/core/python/definitions/test_PythonDefinition.py index b4bdd9c..1e3a4a1 100644 --- a/tests/unit/core/python/definitions/test_PythonDefinition.py +++ b/tests/unit/core/python/definitions/test_PythonDefinition.py @@ -81,4 +81,4 @@ def test_PythonDefinition_exceptions(name, doc, decorators, expected_exception, ]) def test_PythonDefinition___eq__(definition1, definition2, expected): assert (definition1 == definition2) == expected - assert (definition2 == definition1) == expected \ No newline at end of file + assert (definition2 == definition1) == expected diff --git a/tests/unit/core/python/definitions/test_PythonFunctionDefinition.py b/tests/unit/core/python/definitions/test_PythonFunctionDefinition.py index bd0eee9..a97b3e2 100644 --- a/tests/unit/core/python/definitions/test_PythonFunctionDefinition.py +++ b/tests/unit/core/python/definitions/test_PythonFunctionDefinition.py @@ -84,4 +84,4 @@ def test_PythonFunctionDefinition_exceptions(name, args, returns, doc, decorator (ast_node('@decorator\ndef func(): ...'), PythonFunctionDefinition('func', [], None, None, ['decorator'])), ]) def test_PythonDefinition_from_node(node, expected): - assert PythonFunctionDefinition.from_node(node) == expected \ No newline at end of file + assert PythonFunctionDefinition.from_node(node) == expected diff --git a/tests/unit/core/python/namespaces/test_PythonModuleNamespace.py b/tests/unit/core/python/namespaces/test_PythonModuleNamespace.py index 41b3f22..9525f28 100644 --- a/tests/unit/core/python/namespaces/test_PythonModuleNamespace.py +++ b/tests/unit/core/python/namespaces/test_PythonModuleNamespace.py @@ -44,4 +44,4 @@ def test_PythonModuleNamespace___eq__(namespace1, namespace2, expected): (PythonModuleNamespace(StrSubclass('a')), 'PythonModuleNamespace(\'a\')'), ]) def test_PythonModuleNamespace_string_representation(namespace, expected): - assert repr(namespace) == expected \ No newline at end of file + assert repr(namespace) == expected diff --git a/tests/unit/core/python/namespaces/test_PythonNamespace.py b/tests/unit/core/python/namespaces/test_PythonNamespace.py index f6eb4b6..440221b 100644 --- a/tests/unit/core/python/namespaces/test_PythonNamespace.py +++ b/tests/unit/core/python/namespaces/test_PythonNamespace.py @@ -31,4 +31,4 @@ def test_PythonNamespace_name_attribute(namespace, expected_name): (PythonNamespace(StrSubclass('a')), 'PythonNamespace(\'a\')'), ]) def test_PythonNamespace_string_representation(namespace, expected): - assert repr(namespace) == expected \ No newline at end of file + assert repr(namespace) == expected diff --git a/tests/unit/core/python/namespaces/test_PythonPackageNamespace.py b/tests/unit/core/python/namespaces/test_PythonPackageNamespace.py index 92114a8..3cc80e8 100644 --- a/tests/unit/core/python/namespaces/test_PythonPackageNamespace.py +++ b/tests/unit/core/python/namespaces/test_PythonPackageNamespace.py @@ -105,4 +105,4 @@ def test_PythonPackageNamespace_string_representation(namespace, expected): ]) def test_PythonPackageNamespace___getitem__(namespace, new_namespace, expected): namespace.add(new_namespace) - assert namespace == expected \ No newline at end of file + assert namespace == expected diff --git a/tests/unit/utils/test_ExistingDirectory.py b/tests/unit/utils/test_ExistingDirectory.py index ed101df..e637cec 100644 --- a/tests/unit/utils/test_ExistingDirectory.py +++ b/tests/unit/utils/test_ExistingDirectory.py @@ -39,4 +39,4 @@ def test_ExistingDirectory(path, expected): def test_ExistingDirectory_exceptions(path, expected_exception, expected_exception_message): with pytest.raises(expected_exception) as exc_info: ExistingDirectory(path) - assert str(exc_info.value) == expected_exception_message \ No newline at end of file + assert str(exc_info.value) == expected_exception_message diff --git a/tests/unit/utils/test_ExistingFile.py b/tests/unit/utils/test_ExistingFile.py index e0e7cdc..e27d053 100644 --- a/tests/unit/utils/test_ExistingFile.py +++ b/tests/unit/utils/test_ExistingFile.py @@ -32,4 +32,4 @@ def test_ExistingDirectory(path, expected): def test_ExistingDirectory_exceptions(path, expected_exception, expected_exception_message): with pytest.raises(expected_exception) as exc_info: ExistingFile(path) - assert str(exc_info.value) == expected_exception_message \ No newline at end of file + assert str(exc_info.value) == expected_exception_message diff --git a/tests/unit/utils/test_assert_that_is_instance.py b/tests/unit/utils/test_assert_that_is_instance.py index 6ebb70d..c479ba1 100644 --- a/tests/unit/utils/test_assert_that_is_instance.py +++ b/tests/unit/utils/test_assert_that_is_instance.py @@ -40,4 +40,4 @@ def test_assert_that_is_instance(obj, class_or_tuple): def test_assert_that_is_instance_exceptions(obj, class_or_tuple, expected_exception_msg): with pytest.raises(TypeError) as exc_info: assert_that_is_instance(obj, class_or_tuple) - assert str(exc_info.value) == expected_exception_msg \ No newline at end of file + assert str(exc_info.value) == expected_exception_msg diff --git a/tests/unit/utils/test_get_relative_path_segments.py b/tests/unit/utils/test_get_relative_path_segments.py index 7cafc6c..66ba580 100644 --- a/tests/unit/utils/test_get_relative_path_segments.py +++ b/tests/unit/utils/test_get_relative_path_segments.py @@ -73,4 +73,4 @@ import pathlib ]) def test_get_relative_path_segments(path, root, expected): - assert get_relative_path_segments(path, root) == expected \ No newline at end of file + assert get_relative_path_segments(path, root) == expected diff --git a/tests/unit/utils/test_human_readable_list.py b/tests/unit/utils/test_human_readable_list.py index c260d67..7d68be2 100644 --- a/tests/unit/utils/test_human_readable_list.py +++ b/tests/unit/utils/test_human_readable_list.py @@ -51,4 +51,4 @@ import pytest ([1, 2, 3, 42, 'a', 23], 'and', '\'', '\'1\', \'2\', \'3\', \'42\', \'a\' and \'23\''), ]) def test_human_readable_list(ls, final_separator, quotation_mark, expected): - assert human_readable_list(ls, final_separator, quotation_mark) == expected \ No newline at end of file + assert human_readable_list(ls, final_separator, quotation_mark) == expected diff --git a/tests/unit/utils/test_non_empty_str.py b/tests/unit/utils/test_non_empty_str.py index 9d50888..0b57d31 100644 --- a/tests/unit/utils/test_non_empty_str.py +++ b/tests/unit/utils/test_non_empty_str.py @@ -27,4 +27,4 @@ import pytest ('a', 'a'), ]) def test_non_empty_str(value, expected): - assert non_empty_str(value) == expected \ No newline at end of file + assert non_empty_str(value) == expected diff --git a/tests/utils/ast_node.py b/tests/utils/ast_node.py index f60c4c8..9beb441 100644 --- a/tests/utils/ast_node.py +++ b/tests/utils/ast_node.py @@ -33,4 +33,4 @@ def ast_node(statement: str) -> Union[ast.stmt, None]: body = ast.parse(statement).body if not body: return None - return body[0] \ No newline at end of file + return body[0] -- 2.47.3 From 2ef362b7c006d48375cfcf703c4047a55a23dbe7 Mon Sep 17 00:00:00 2001 From: Jakob Scheid Date: Tue, 1 Sep 2026 16:55:44 +0200 Subject: [PATCH 4/4] docs(changelog): mark unreleased section as version 0.1.0 --- docs/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 01c683e..aba051d 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## [Unreleased] +## [0.1.0] - 2026-09-01 ### Added -- 2.47.3