From 65a5bf4141c11fdb72d953e1dbb7952d98969099 Mon Sep 17 00:00:00 2001 From: Boming Zhang Date: Thu, 17 Oct 2024 22:05:52 -0400 Subject: [PATCH] fix: use flat layout --- README.md | 15 +- .../__init__.py | 0 .../main.py | 0 .../matlab_defs.py | 0 .../utils/__init__.py | 0 .../utils/logger.py | 0 pdm.lock | 138 +++++++++++++++++- pyproject.toml | 13 +- 8 files changed, 143 insertions(+), 23 deletions(-) rename {src/joj3_config_generator => joj3_config_generator}/__init__.py (100%) rename {src/joj3_config_generator => joj3_config_generator}/main.py (100%) rename {src/joj3_config_generator => joj3_config_generator}/matlab_defs.py (100%) rename {src/joj3_config_generator => joj3_config_generator}/utils/__init__.py (100%) rename {src/joj3_config_generator => joj3_config_generator}/utils/logger.py (100%) diff --git a/README.md b/README.md index 6f4ec2a..380eb0c 100644 --- a/README.md +++ b/README.md @@ -2,13 +2,14 @@ ## Getting Started -1. Install [Python>=3.10](https://www.python.org/) and [PDM](https://pdm-project.org/). -2. Install deps by `pdm install --prod`. -3. Run it by `pdm run joj3-config-generator --help` +### For users + +1. Install [Python>=3.6](https://www.python.org/) and [pip](https://pip.pypa.io/). +2. Install the project by `pip install .` +3. Run it by `joj3-config-generator --help` ### For developers -```bash -pdm install --dev -pdm run pre-commit install -``` +1. Install [Python>=3.6](https://www.python.org/) and [PDM](https://pdm-project.org/). +2. Install deps by `pdm install && pdm run pre-commit install`. +3. Run the cli app by `pdm run app --help` diff --git a/src/joj3_config_generator/__init__.py b/joj3_config_generator/__init__.py similarity index 100% rename from src/joj3_config_generator/__init__.py rename to joj3_config_generator/__init__.py diff --git a/src/joj3_config_generator/main.py b/joj3_config_generator/main.py similarity index 100% rename from src/joj3_config_generator/main.py rename to joj3_config_generator/main.py diff --git a/src/joj3_config_generator/matlab_defs.py b/joj3_config_generator/matlab_defs.py similarity index 100% rename from src/joj3_config_generator/matlab_defs.py rename to joj3_config_generator/matlab_defs.py diff --git a/src/joj3_config_generator/utils/__init__.py b/joj3_config_generator/utils/__init__.py similarity index 100% rename from src/joj3_config_generator/utils/__init__.py rename to joj3_config_generator/utils/__init__.py diff --git a/src/joj3_config_generator/utils/logger.py b/joj3_config_generator/utils/logger.py similarity index 100% rename from src/joj3_config_generator/utils/logger.py rename to joj3_config_generator/utils/logger.py diff --git a/pdm.lock b/pdm.lock index 8a399e9..eb619bd 100644 --- a/pdm.lock +++ b/pdm.lock @@ -2,10 +2,10 @@ # It is not intended for manual editing. [metadata] -groups = ["default", "lint", "test"] +groups = ["default", "dev", "lint", "test"] strategy = ["inherit_metadata"] lock_version = "4.5.0" -content_hash = "sha256:e228d5912900f76aca04615f3f8bf44c5194823e8fcf42d5be983b7b71f8e775" +content_hash = "sha256:0abdfb3aee2af3f426cf278d46d31a85433577081a2e77308639f57a5491805d" [[metadata.targets]] requires_python = ">=3.10" @@ -16,6 +16,7 @@ version = "0.7.0" requires_python = ">=3.8" summary = "Reusable constraint types to use with typing.Annotated" groups = ["default"] +marker = "python_version >= \"3.10\"" dependencies = [ "typing-extensions>=4.0.0; python_version < \"3.9\"", ] @@ -30,6 +31,7 @@ version = "24.10.0" requires_python = ">=3.9" summary = "The uncompromising code formatter." groups = ["lint"] +marker = "python_version >= \"3.10\"" dependencies = [ "click>=8.0.0", "mypy-extensions>=0.4.3", @@ -60,12 +62,25 @@ files = [ {file = "black-24.10.0.tar.gz", hash = "sha256:846ea64c97afe3bc677b761787993be4991810ecc7a4a937816dd6bddedc4875"}, ] +[[package]] +name = "cfgv" +version = "3.4.0" +requires_python = ">=3.8" +summary = "Validate configuration and produce human readable error messages." +groups = ["dev"] +marker = "python_version >= \"3.10\"" +files = [ + {file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"}, + {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"}, +] + [[package]] name = "click" version = "8.1.7" requires_python = ">=3.7" summary = "Composable command line interface toolkit" groups = ["default", "lint"] +marker = "python_version >= \"3.10\"" dependencies = [ "colorama; platform_system == \"Windows\"", "importlib-metadata; python_version < \"3.8\"", @@ -81,7 +96,7 @@ version = "0.4.6" requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" summary = "Cross-platform colored terminal text." groups = ["default", "lint", "test"] -marker = "sys_platform == \"win32\" or platform_system == \"Windows\"" +marker = "sys_platform == \"win32\" and python_version >= \"3.10\" or platform_system == \"Windows\" and python_version >= \"3.10\"" files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, @@ -93,6 +108,7 @@ version = "7.6.3" requires_python = ">=3.9" summary = "Code coverage measurement for Python" groups = ["test"] +marker = "python_version >= \"3.10\"" files = [ {file = "coverage-7.6.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6da42bbcec130b188169107ecb6ee7bd7b4c849d24c9370a0c884cf728d8e976"}, {file = "coverage-7.6.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c222958f59b0ae091f4535851cbb24eb57fc0baea07ba675af718fb5302dddb2"}, @@ -155,6 +171,7 @@ extras = ["toml"] requires_python = ">=3.9" summary = "Code coverage measurement for Python" groups = ["test"] +marker = "python_version >= \"3.10\"" dependencies = [ "coverage==7.6.3", "tomli; python_full_version <= \"3.11.0a6\"", @@ -214,24 +231,60 @@ files = [ {file = "coverage-7.6.3.tar.gz", hash = "sha256:bb7d5fe92bd0dc235f63ebe9f8c6e0884f7360f88f3411bfed1350c872ef2054"}, ] +[[package]] +name = "distlib" +version = "0.3.9" +summary = "Distribution utilities" +groups = ["dev"] +marker = "python_version >= \"3.10\"" +files = [ + {file = "distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87"}, + {file = "distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403"}, +] + [[package]] name = "exceptiongroup" version = "1.2.2" requires_python = ">=3.7" summary = "Backport of PEP 654 (exception groups)" groups = ["test"] -marker = "python_version < \"3.11\"" +marker = "python_version < \"3.11\" and python_version >= \"3.10\"" files = [ {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, ] +[[package]] +name = "filelock" +version = "3.16.1" +requires_python = ">=3.8" +summary = "A platform independent file lock." +groups = ["dev"] +marker = "python_version >= \"3.10\"" +files = [ + {file = "filelock-3.16.1-py3-none-any.whl", hash = "sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0"}, + {file = "filelock-3.16.1.tar.gz", hash = "sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435"}, +] + +[[package]] +name = "identify" +version = "2.6.1" +requires_python = ">=3.8" +summary = "File identification library for Python" +groups = ["dev"] +marker = "python_version >= \"3.10\"" +files = [ + {file = "identify-2.6.1-py2.py3-none-any.whl", hash = "sha256:53863bcac7caf8d2ed85bd20312ea5dcfc22226800f6d6881f232d861db5a8f0"}, + {file = "identify-2.6.1.tar.gz", hash = "sha256:91478c5fb7c3aac5ff7bf9b4344f803843dc586832d5f110d672b19aa1984c98"}, +] + [[package]] name = "iniconfig" version = "2.0.0" requires_python = ">=3.7" summary = "brain-dead simple config-ini parsing" groups = ["test"] +marker = "python_version >= \"3.10\"" files = [ {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, @@ -243,6 +296,7 @@ version = "0.7.2" requires_python = ">=3.5" summary = "Python logging made (stupidly) simple" groups = ["default"] +marker = "python_version >= \"3.10\"" dependencies = [ "aiocontextvars>=0.2.0; python_version < \"3.7\"", "colorama>=0.3.4; sys_platform == \"win32\"", @@ -259,6 +313,7 @@ version = "3.0.0" requires_python = ">=3.8" summary = "Python port of markdown-it. Markdown parsing, done right!" groups = ["default"] +marker = "python_version >= \"3.10\"" dependencies = [ "mdurl~=0.1", ] @@ -273,6 +328,7 @@ version = "0.1.2" requires_python = ">=3.7" summary = "Markdown URL utilities" groups = ["default"] +marker = "python_version >= \"3.10\"" files = [ {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, @@ -284,6 +340,7 @@ version = "1.12.0" requires_python = ">=3.8" summary = "Optional static typing for Python" groups = ["lint"] +marker = "python_version >= \"3.10\"" dependencies = [ "mypy-extensions>=1.0.0", "tomli>=1.1.0; python_version < \"3.11\"", @@ -320,17 +377,31 @@ version = "1.0.0" requires_python = ">=3.5" summary = "Type system extensions for programs checked with the mypy type checker." groups = ["lint"] +marker = "python_version >= \"3.10\"" files = [ {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, ] +[[package]] +name = "nodeenv" +version = "1.9.1" +requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +summary = "Node.js virtual environment builder" +groups = ["dev"] +marker = "python_version >= \"3.10\"" +files = [ + {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, + {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, +] + [[package]] name = "packaging" version = "24.1" requires_python = ">=3.8" summary = "Core utilities for Python packages" groups = ["lint", "test"] +marker = "python_version >= \"3.10\"" files = [ {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, @@ -342,6 +413,7 @@ version = "0.12.1" requires_python = ">=3.8" summary = "Utility library for gitignore style pattern matching of file paths." groups = ["lint"] +marker = "python_version >= \"3.10\"" files = [ {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, @@ -352,7 +424,8 @@ name = "platformdirs" version = "4.3.6" requires_python = ">=3.8" summary = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." -groups = ["lint"] +groups = ["dev", "lint"] +marker = "python_version >= \"3.10\"" files = [ {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, @@ -364,17 +437,38 @@ version = "1.5.0" requires_python = ">=3.8" summary = "plugin and hook calling mechanisms for python" groups = ["test"] +marker = "python_version >= \"3.10\"" files = [ {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, ] +[[package]] +name = "pre-commit" +version = "4.0.1" +requires_python = ">=3.9" +summary = "A framework for managing and maintaining multi-language pre-commit hooks." +groups = ["dev"] +marker = "python_version >= \"3.10\"" +dependencies = [ + "cfgv>=2.0.0", + "identify>=1.0.0", + "nodeenv>=0.11.1", + "pyyaml>=5.1", + "virtualenv>=20.10.0", +] +files = [ + {file = "pre_commit-4.0.1-py2.py3-none-any.whl", hash = "sha256:efde913840816312445dc98787724647c65473daefe420785f885e8ed9a06878"}, + {file = "pre_commit-4.0.1.tar.gz", hash = "sha256:80905ac375958c0444c65e9cebebd948b3cdb518f335a091a670a89d652139d2"}, +] + [[package]] name = "pydantic" version = "2.9.2" requires_python = ">=3.8" summary = "Data validation using Python type hints" groups = ["default"] +marker = "python_version >= \"3.10\"" dependencies = [ "annotated-types>=0.6.0", "pydantic-core==2.23.4", @@ -392,6 +486,7 @@ version = "2.23.4" requires_python = ">=3.8" summary = "Core functionality for Pydantic validation and serialization" groups = ["default"] +marker = "python_version >= \"3.10\"" dependencies = [ "typing-extensions!=4.7.0,>=4.6.0", ] @@ -461,6 +556,7 @@ version = "2.18.0" requires_python = ">=3.8" summary = "Pygments is a syntax highlighting package written in Python." groups = ["default"] +marker = "python_version >= \"3.10\"" files = [ {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, @@ -472,6 +568,7 @@ version = "8.3.3" requires_python = ">=3.8" summary = "pytest: simple powerful testing with Python" groups = ["test"] +marker = "python_version >= \"3.10\"" dependencies = [ "colorama; sys_platform == \"win32\"", "exceptiongroup>=1.0.0rc8; python_version < \"3.11\"", @@ -491,6 +588,7 @@ version = "5.0.0" requires_python = ">=3.8" summary = "Pytest plugin for measuring coverage." groups = ["test"] +marker = "python_version >= \"3.10\"" dependencies = [ "coverage[toml]>=5.2.1", "pytest>=4.6", @@ -505,7 +603,8 @@ name = "pyyaml" version = "6.0.2" requires_python = ">=3.8" summary = "YAML parser and emitter for Python" -groups = ["default"] +groups = ["default", "dev"] +marker = "python_version >= \"3.10\"" files = [ {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, @@ -552,6 +651,7 @@ version = "13.9.2" requires_python = ">=3.8.0" summary = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" groups = ["default"] +marker = "python_version >= \"3.10\"" dependencies = [ "markdown-it-py>=2.2.0", "pygments<3.0.0,>=2.13.0", @@ -568,6 +668,7 @@ version = "1.5.4" requires_python = ">=3.7" summary = "Tool to Detect Surrounding Shell" groups = ["default"] +marker = "python_version >= \"3.10\"" files = [ {file = "shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686"}, {file = "shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de"}, @@ -579,7 +680,7 @@ version = "2.0.2" requires_python = ">=3.8" summary = "A lil' TOML parser" groups = ["lint", "test"] -marker = "python_version < \"3.11\"" +marker = "python_version < \"3.11\" and python_version >= \"3.10\"" files = [ {file = "tomli-2.0.2-py3-none-any.whl", hash = "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38"}, {file = "tomli-2.0.2.tar.gz", hash = "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed"}, @@ -591,6 +692,7 @@ version = "0.12.5" requires_python = ">=3.7" summary = "Typer, build great CLIs. Easy to code. Based on Python type hints." groups = ["default"] +marker = "python_version >= \"3.10\"" dependencies = [ "click>=8.0.0", "rich>=10.11.0", @@ -608,6 +710,7 @@ version = "6.0.12.20240917" requires_python = ">=3.8" summary = "Typing stubs for PyYAML" groups = ["lint"] +marker = "python_version >= \"3.10\"" files = [ {file = "types-PyYAML-6.0.12.20240917.tar.gz", hash = "sha256:d1405a86f9576682234ef83bcb4e6fff7c9305c8b1fbad5e0bcd4f7dbdc9c587"}, {file = "types_PyYAML-6.0.12.20240917-py3-none-any.whl", hash = "sha256:392b267f1c0fe6022952462bf5d6523f31e37f6cea49b14cee7ad634b6301570"}, @@ -619,18 +722,37 @@ version = "4.12.2" requires_python = ">=3.8" summary = "Backported and Experimental Type Hints for Python 3.8+" groups = ["default", "lint"] +marker = "python_version >= \"3.10\"" files = [ {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, ] +[[package]] +name = "virtualenv" +version = "20.27.0" +requires_python = ">=3.8" +summary = "Virtual Python Environment builder" +groups = ["dev"] +marker = "python_version >= \"3.10\"" +dependencies = [ + "distlib<1,>=0.3.7", + "filelock<4,>=3.12.2", + "importlib-metadata>=6.6; python_version < \"3.8\"", + "platformdirs<5,>=3.9.1", +] +files = [ + {file = "virtualenv-20.27.0-py3-none-any.whl", hash = "sha256:44a72c29cceb0ee08f300b314848c86e57bf8d1f13107a5e671fb9274138d655"}, + {file = "virtualenv-20.27.0.tar.gz", hash = "sha256:2ca56a68ed615b8fe4326d11a0dca5dfbe8fd68510fb6c6349163bed3c15f2b2"}, +] + [[package]] name = "win32-setctime" version = "1.1.0" requires_python = ">=3.5" summary = "A small Python utility to set file creation time on Windows" groups = ["default"] -marker = "sys_platform == \"win32\"" +marker = "sys_platform == \"win32\" and python_version >= \"3.10\"" files = [ {file = "win32_setctime-1.1.0-py3-none-any.whl", hash = "sha256:231db239e959c2fe7eb1d7dc129f11172354f98361c4fa2d6d2d7e278baa8aad"}, {file = "win32_setctime-1.1.0.tar.gz", hash = "sha256:15cf5750465118d6929ae4de4eb46e8edae9a5634350c01ba582df868e932cb2"}, diff --git a/pyproject.toml b/pyproject.toml index bd50817..d5c3f67 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,7 @@ dependencies = [ "loguru>=0.7.2", "pydantic>=2.9.2", ] -requires-python = ">=3.10" +requires-python = ">=3.6" authors = [{ name = "JOJ3-dev", email = "joj3@focs.ji.sjtu.edu.cn" }] maintainers = [] description = "JOJ3 json configuration file generator" @@ -25,18 +25,15 @@ skips = ["B101"] distribution = false [tool.pdm.dev-dependencies] -lint = [ - "black>=24.10.0", - "mypy>=1.12.0", - "types-PyYAML>=6.0.12.20240917", -] +lint = ["black>=24.10.0", "mypy>=1.12.0", "types-PyYAML>=6.0.12.20240917"] test = ["pytest>=8.3.3", "pytest-cov>=5.0.0"] +dev = ["pre-commit>=4.0.1"] [tool.pdm.scripts] -lint = "mypy src" +lint = "mypy joj3_config_generator" test = "pytest" all = { composite = ["lint", "test"] } -joj3-config-generator = { call = "joj3_config_generator.main:app", env = { "PYTHONPATH" = "src" } } +app.call = "joj3_config_generator.main:app" [tool.pytest.ini_options] testpaths = ["tests"]