attr-docs
Runtime access to Python class attribute, enum member, and dataclass field docstrings.
Installation
pip install attr-docs
Usage
Class
from attr_docs import docstrings, get_docstrings
@docstrings
class Person:
"""A person with various attributes."""
name: str
"""The person's full name."""
email: str
"""Contact email address."""
age: int = 0
"""The person's age in years."""
# Access docstrings map directly on class (IDE style)
docs = get_docstrings(Person)
print(docs["name"]) # "The person's full name."
print(docs["age"]) # "The person's age in years."
print(docs["email"]) # "Contact email address."
# Access via PEP 224 style attributes (uses Python MRO lookup)
print(Person.__doc_name__) # "The person's full name."
print(Person.__doc_age__) # "The person's age in years."
print(Person.__doc_email__) # "Contact email address."
Enum
Enums support lazy parsing of member docstrings, the decorator will not add overhead until you get/set the docstring of a member.
from enum import Enum
from attr_docs import docstrings
@docstrings
class Status(Enum):
"""Status enumeration for task tracking."""
PENDING = "pending"
"""Task is waiting to be processed."""
RUNNING = "running"
"""Task is currently being executed."""
COMPLETED = "completed"
"""Task has finished successfully."""
FAILED = "failed"
"""Task encountered an error."""
# Supports these standard class access patterns
docs = get_docstrings(Status)
print(docs["COMPLETED"]) # "Task has finished successfully."
# Access via enum member __doc__ attribute
print(Status.PENDING.__doc__) # "Task is waiting to be processed."
print(Status.COMPLETED.__doc__) # "Task has finished successfully."
# Iterate through all members with their documentation
for member in Status:
if member.__doc__:
print(f"{member.name}: {member.__doc__}")
Dataclass
from dataclasses import dataclass, fields
from attr_docs import docstrings, get_docstrings
@docstrings
@dataclass
class Product:
"""A product in an e-commerce system."""
name: str
"""Product name."""
price: float
"""Price in USD."""
category: str = ""
"""Product category."""
description: str = ""
"""Detailed product description."""
# Supports all the standard class access patterns
# Access via dataclass field metadata
for field in fields(Product):
if field.metadata.get("__doc__"):
print(f"{field.name}: {field.metadata['__doc__']}")
# Python 3.14+ supports field.doc
if hasattr(field, "doc"):
print(f"{field.name}: {field.doc}")
Metadata
Release files for attr-docs 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| attr_docs-1.0.0.tar.gz | 3.5 kB | Without provenance | Details for attr_docs-1.0.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| attr_docs-1.0.0-py3-none-any.whl | Python 3 | none | any | Details for attr_docs-1.0.0-py3-none-any.whl |
Total release size: 7.8 kB
Release files / attr_docs-1.0.0.tar.gz
| Download URL | attr_docs-1.0.0.tar.gz |
|---|---|
| Size | 3.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
42f99e0e6429f1850cc642c98b8d40af1894c57b331c5ddecab28cab3dd2630d
|
|
BLAKE2b-256 checksum How to use checksums |
0f8818dcfb436f9f4987f76ec6244c1f2bc6a1b62cb0af489767fa53ec8c5bce
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / attr_docs-1.0.0-py3-none-any.whl
| Download URL | attr_docs-1.0.0-py3-none-any.whl |
|---|---|
| Size | 4.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1e905f4c0805661185294e7443001b68128ed1c567f979c8e71fb1a7087893d6
|
|
BLAKE2b-256 checksum How to use checksums |
cb26c3bad7c6f181927ccfed7b0de62c01d23199ba042565987acb7942be2ca0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for attr-docs 1.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.