.. 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).
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": "",
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": "",
"keywords": "metaprogramming,Python packages,automation,code generation",
"author": "Till Biskup",
"author_email": "till@till-biskup.de",
"download_url": "https://files.pythonhosted.org/packages/2e/ca/d649d96cf6f9c741ec0e8415ba859ee1f1814a4b4c9b69deb3edbf8a22dc/pymetacode-0.5.1.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\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.5.1",
"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": "",
"digests": {
"blake2b_256": "33a2f2e608d9bac878e5e18e2899d1d5ec06c0d28b7fbb781bba681756f656bb",
"md5": "cfb794c63ab75ee10ff496b167b4c92e",
"sha256": "a18d2443556ff9e578049042f8ced275ecd5478714f4f27ef55ea851edbe42bf"
},
"downloads": -1,
"filename": "pymetacode-0.5.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "cfb794c63ab75ee10ff496b167b4c92e",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 111610,
"upload_time": "2024-02-01T18:22:25",
"upload_time_iso_8601": "2024-02-01T18:22:25.645573Z",
"url": "https://files.pythonhosted.org/packages/33/a2/f2e608d9bac878e5e18e2899d1d5ec06c0d28b7fbb781bba681756f656bb/pymetacode-0.5.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2ecad649d96cf6f9c741ec0e8415ba859ee1f1814a4b4c9b69deb3edbf8a22dc",
"md5": "c9acd40e8bb098e315dc7c7c4e37e2e1",
"sha256": "a786bdc8c87cfee4f8cc26364fd7c9b9de4d6d13fea08471841a92b09c0a517e"
},
"downloads": -1,
"filename": "pymetacode-0.5.1.tar.gz",
"has_sig": false,
"md5_digest": "c9acd40e8bb098e315dc7c7c4e37e2e1",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 105310,
"upload_time": "2024-02-01T18:22:28",
"upload_time_iso_8601": "2024-02-01T18:22:28.136516Z",
"url": "https://files.pythonhosted.org/packages/2e/ca/d649d96cf6f9c741ec0e8415ba859ee1f1814a4b4c9b69deb3edbf8a22dc/pymetacode-0.5.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-02-01 18:22:28",
"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"
}