pymetacode

A Python package helping to write and maintain Python packages.

https://github.com/tillbiskup/pymetacode

Science Score: 67.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 3 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (16.9%) to scientific vocabulary
Last synced: 6 months ago · JSON representation ·

Repository

A Python package helping to write and maintain Python packages.

Basic Info
  • Host: GitHub
  • Owner: tillbiskup
  • License: bsd-2-clause
  • Language: Python
  • Default Branch: master
  • Size: 762 KB
Statistics
  • Stars: 0
  • Watchers: 2
  • Forks: 0
  • Open Issues: 0
  • Releases: 9
Created over 4 years ago · Last pushed 7 months ago
Metadata Files
Readme License Citation Roadmap

README.rst

.. 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**.

Owner

  • Login: tillbiskup
  • Kind: user
  • Location: Germany

Scientist focussing on reproducible research, particularly in spectroscopy

Citation (CITATION.cff)

cff-version: 1.2.0
message: If you use this software, please cite it using these metadata.
title: pymetacode
abstract: >
    pymetacode is 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).
authors:
  - family-names: Biskup
    given-names: Till
    orcid: "https://orcid.org/0000-0003-2913-0004"
type: software
license: BSD-2-Clause
repository-code: "https://github.com/tillbiskup/pymetacode"
keywords:
  - "metaprogramming"
  - "Python packages"
  - "automation"
  - "code generation"
identifiers:
  - description: "The concept DOI of the work."
    type: doi
    value: 10.5281/zenodo.8370310

GitHub Events

Total
  • Push event: 6
Last Year
  • Push event: 6

Issues and Pull Requests

Last synced: 7 months ago

All Time
  • Total issues: 0
  • Total pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Total issue authors: 0
  • Total pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
Pull Request Authors
Top Labels
Issue Labels
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 54 last-month
  • Total dependent packages: 3
  • Total dependent repositories: 1
  • Total versions: 9
  • Total maintainers: 1
pypi.org: pymetacode

A Python package helping to write and maintain Python packages.

  • Versions: 9
  • Dependent Packages: 3
  • Dependent Repositories: 1
  • Downloads: 54 Last month
Rankings
Dependent packages count: 10.1%
Dependent repos count: 21.6%
Average: 28.8%
Forks count: 29.8%
Stargazers count: 38.8%
Downloads: 43.8%
Maintainers (1)
Last synced: 7 months ago

Dependencies

setup.py pypi
  • appdirs *
  • jinja2 *
  • oyaml *