pymetacode


Namepymetacode JSON
Version 0.7.0 PyPI version JSON
download
home_pagehttps://www.meta-co.de/
SummaryA Python package helping to write and maintain Python packages.
upload_time2025-08-02 20:35:41
maintainerNone
docs_urlNone
authorTill Biskup
requires_python>=3.7
licenseBSD
keywords metaprogramming python packages automation code generation
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            
.. image:: https://zenodo.org/badge/DOI/10.5281/zenodo.8370310.svg
   :target: https://doi.org/10.5281/zenodo.8370310
   :align: right

==========
pymetacode
==========

*A Python package helping to write and maintain Python packages.*

**Code that writes code** -- yes, that's correct. Automating the boring stuff, one could say, or helping to focus on the creative part of programming. In any case, the idea for this package stems from experience with a couple of Python projects, and as such it is pretty *opinionated*, focussing on personal needs regarding structure and layout. Nevertheless, it tries to be as user-friendly as possible, coming with an intuitive command-line interface (CLI).

What is the difference to CookieCutter and alike? It does not only create a project structure for you once, but **it helps you to maintain your projects**, *i.e.*, adding modules, classes, functions together with documentation stubs and tests -- **following good practices of software development**.

Want to get an idea? Here you go. **Creating a new package** would be a two-step process:

1) Write a configuration file for your new package (and afterwards fill it with sensible content)

.. code-block:: bash

    pymeta write config to mypackage_config.yaml

2) Create the basic Python package structure for your package.

.. code-block:: bash

    pymeta create package from mypackage_config.yaml

Once you have your package structure, you can **add modules, classes, and functions** to your package from *within the package's root directory* at any time:

.. code-block:: bash

    pymeta add module mymodule
    pymeta add class MyClass to mymodule
    pymeta add function my_function to mymodule

If you ever want to add a **graphical user interface (GUI)** to your project, this is (now) possible as well:

.. code-block:: bash

    pymeta add gui
    pymeta add window mysubwindow

And now - happy coding!


Features
========

A list of features:

* Create initial package structure (directory layout, files)

* Add module, class, and function scaffolds to an existing project, including tests and API documentation

* Add initial (Qt) GUI subpackage structure (directory layout, files)

* Add (Qt) GUI window scaffolds to existing project, including tests and API documentation

* Intuitive command-line interface (CLI)

* Initialise git repository; automatically incrementing version number with each commit


And to make it even more convenient for users and future-proof:

* Open source project written in Python (>= 3.7)

* Developed fully test-driven

* Extensive user and API documentation


Installation
============

To install the pymetacode package on your computer (sensibly within a Python virtual environment), open a terminal (activate your virtual environment), and type in the following:

.. code-block:: bash

    pip install pymetacode


License
=======

This program is free software: you can redistribute it and/or modify it under the terms of the **BSD License**.


            

Raw data

            {
    "_id": null,
    "home_page": "https://www.meta-co.de/",
    "name": "pymetacode",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": "metaprogramming, Python packages, automation, code generation",
    "author": "Till Biskup",
    "author_email": "till@till-biskup.de",
    "download_url": "https://files.pythonhosted.org/packages/0d/76/55c9c50405c746331aa3348d9ff4df2bf943c6b43e5d79dbdb50288fc55c/pymetacode-0.7.0.tar.gz",
    "platform": null,
    "description": "\n.. image:: https://zenodo.org/badge/DOI/10.5281/zenodo.8370310.svg\n   :target: https://doi.org/10.5281/zenodo.8370310\n   :align: right\n\n==========\npymetacode\n==========\n\n*A Python package helping to write and maintain Python packages.*\n\n**Code that writes code** -- yes, that's correct. Automating the boring stuff, one could say, or helping to focus on the creative part of programming. In any case, the idea for this package stems from experience with a couple of Python projects, and as such it is pretty *opinionated*, focussing on personal needs regarding structure and layout. Nevertheless, it tries to be as user-friendly as possible, coming with an intuitive command-line interface (CLI).\n\nWhat is the difference to CookieCutter and alike? It does not only create a project structure for you once, but **it helps you to maintain your projects**, *i.e.*, adding modules, classes, functions together with documentation stubs and tests -- **following good practices of software development**.\n\nWant to get an idea? Here you go. **Creating a new package** would be a two-step process:\n\n1) Write a configuration file for your new package (and afterwards fill it with sensible content)\n\n.. code-block:: bash\n\n    pymeta write config to mypackage_config.yaml\n\n2) Create the basic Python package structure for your package.\n\n.. code-block:: bash\n\n    pymeta create package from mypackage_config.yaml\n\nOnce you have your package structure, you can **add modules, classes, and functions** to your package from *within the package's root directory* at any time:\n\n.. code-block:: bash\n\n    pymeta add module mymodule\n    pymeta add class MyClass to mymodule\n    pymeta add function my_function to mymodule\n\nIf you ever want to add a **graphical user interface (GUI)** to your project, this is (now) possible as well:\n\n.. code-block:: bash\n\n    pymeta add gui\n    pymeta add window mysubwindow\n\nAnd now - happy coding!\n\n\nFeatures\n========\n\nA list of features:\n\n* Create initial package structure (directory layout, files)\n\n* Add module, class, and function scaffolds to an existing project, including tests and API documentation\n\n* Add initial (Qt) GUI subpackage structure (directory layout, files)\n\n* Add (Qt) GUI window scaffolds to existing project, including tests and API documentation\n\n* Intuitive command-line interface (CLI)\n\n* Initialise git repository; automatically incrementing version number with each commit\n\n\nAnd to make it even more convenient for users and future-proof:\n\n* Open source project written in Python (>= 3.7)\n\n* Developed fully test-driven\n\n* Extensive user and API documentation\n\n\nInstallation\n============\n\nTo install the pymetacode package on your computer (sensibly within a Python virtual environment), open a terminal (activate your virtual environment), and type in the following:\n\n.. code-block:: bash\n\n    pip install pymetacode\n\n\nLicense\n=======\n\nThis program is free software: you can redistribute it and/or modify it under the terms of the **BSD License**.\n\n",
    "bugtrack_url": null,
    "license": "BSD",
    "summary": "A Python package helping to write and maintain Python packages.",
    "version": "0.7.0",
    "project_urls": {
        "Documentation": "https://python.docs.meta-co.de/",
        "Homepage": "https://www.meta-co.de/",
        "Source": "https://github.com/tillbiskup/pymetacode"
    },
    "split_keywords": [
        "metaprogramming",
        " python packages",
        " automation",
        " code generation"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "165a3b841bcc5357d046a2acd92789ab590fda20a6580d87c33e13c2b3b229a5",
                "md5": "95ca5a5c43c99c5b84dbe33755a24039",
                "sha256": "c80ed1d5cbd86087ce3e82ff27ac4f45bd24e996352d97c228b2a04c3ab48dbc"
            },
            "downloads": -1,
            "filename": "pymetacode-0.7.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "95ca5a5c43c99c5b84dbe33755a24039",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 163707,
            "upload_time": "2025-08-02T20:35:38",
            "upload_time_iso_8601": "2025-08-02T20:35:38.933853Z",
            "url": "https://files.pythonhosted.org/packages/16/5a/3b841bcc5357d046a2acd92789ab590fda20a6580d87c33e13c2b3b229a5/pymetacode-0.7.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "0d7655c9c50405c746331aa3348d9ff4df2bf943c6b43e5d79dbdb50288fc55c",
                "md5": "088bcfcdc8df389d30eed3797044255f",
                "sha256": "b93183c113d54435dbbe9c41d5977898a3c1be6ec9a8517367adc6e28d11ba90"
            },
            "downloads": -1,
            "filename": "pymetacode-0.7.0.tar.gz",
            "has_sig": false,
            "md5_digest": "088bcfcdc8df389d30eed3797044255f",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 144439,
            "upload_time": "2025-08-02T20:35:41",
            "upload_time_iso_8601": "2025-08-02T20:35:41.857211Z",
            "url": "https://files.pythonhosted.org/packages/0d/76/55c9c50405c746331aa3348d9ff4df2bf943c6b43e5d79dbdb50288fc55c/pymetacode-0.7.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-02 20:35:41",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "tillbiskup",
    "github_project": "pymetacode",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "tox": true,
    "lcname": "pymetacode"
}
        
Elapsed time: 2.00876s