Skip to main content

Generate __about__.py with dunder meta.

Project description

metametameta

Generate dunder metadata file with __title__, __author__, etc. Also tools to discover these in other packages.

Installation

pipx install metametameta

Usage

metametameta --source pyproject.toml --target mypackage/__metadata__.py

Motivation

There are many modern ways to get metadata about packages, as of 2024, importlib.metadata and it's backports will get you lots of metadata for yours and other packages.

The newest way is PEP-621, see also packaging.python.org

The oldest way to provide metadata was to use dunder variables in your package, e.g. __author__, __version__, etc.

The method was never strongly standardized, neither officially nor informally. Here is one early proponent of this sort of metadata.

  • Metadata fields can appear in any or no python file in a project.
  • Sometimes they are at the top of a single file python module, common locations for metadata:
    • __init__.py
    • __meta__.py
    • __about__.py
  • Some metadata elements could reasonably be in every single file.
  • There are no particular standards for the type of __author__. It could be a string, space delimited string, list or tuple. That is true for the other metadata elements as well.
  • Sometimes the metadata values are code, e.g. __version__ could be a string or some tuple or data class representing a version.

Workflow

On each build, regenerate the __about__.py. Pick one source of your canonical metadata, e.g. pyproject.toml, setup.py, setup.cfg.

Using metadata

If you have a lot of packages and you are doing analytics or something with them, you could compile all the metadata as declared in the source code. It could be different from the metadata that shows on the PyPI page. If you are searching for contact info for a package maintainer, this might be useful.

Another marginal use case is in error logging. Error loggers gather up info from just about anywhere, anything can be a clue including metadata of dependencies. So this is one more source of that. See bug_trail for a proof of concept for this usage.

Another marginal use case is that is a folksonomy, a taxonomy created by the people. The official metadata is governed by the Python Packaging Authority and the Python Software Foundation. If, say, you wanted to add a metadata item for __mailing_address__ you could easily do it with source code metadata.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

metametameta-0.1.0.tar.gz (11.2 kB view details)

Uploaded Source

Built Distribution

metametameta-0.1.0-py3-none-any.whl (12.0 kB view details)

Uploaded Python 3

File details

Details for the file metametameta-0.1.0.tar.gz.

File metadata

  • Download URL: metametameta-0.1.0.tar.gz
  • Upload date:
  • Size: 11.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for metametameta-0.1.0.tar.gz
Algorithm Hash digest
SHA256 6eb87f5d0718b8d3bf69d544cf802f68824dd5590c50da54d51267ef623ecc5c
MD5 22591000b70cfa625adf909cead96717
BLAKE2b-256 debd1a870f491f5a9084f741eef3d26237cd392128d0f93ebdd43657e150117a

See more details on using hashes here.

File details

Details for the file metametameta-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: metametameta-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 12.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for metametameta-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 75519dfa58ac20a0d4cbe8693247f66e61b673e0afbe112b284ed78b332e89d5
MD5 11e8c2a0186b05d40e4e371f2dffa978
BLAKE2b-256 b67f24b7fd075c665b5b7269c52451498a554d0bdc5ef982756bf6d6292ed555

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page