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}")
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 | |
|---|---|---|---|
| attr_docs-1.0.0.tar.gz | 3.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| attr_docs-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
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}
|