Runtime access to Python class attribute, enum member, and dataclass field docstrings
Project description
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}")
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
attr_docs-1.0.0.tar.gz
(3.5 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file attr_docs-1.0.0.tar.gz.
File metadata
- Download URL: attr_docs-1.0.0.tar.gz
- Upload date:
- Size: 3.5 kB
- Tags: Source
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
42f99e0e6429f1850cc642c98b8d40af1894c57b331c5ddecab28cab3dd2630d
|
|
| MD5 |
0a0cca76e818f1328b3bff267a419eac
|
|
| BLAKE2b-256 |
0f8818dcfb436f9f4987f76ec6244c1f2bc6a1b62cb0af489767fa53ec8c5bce
|
File details
Details for the file attr_docs-1.0.0-py3-none-any.whl.
File metadata
- Download URL: attr_docs-1.0.0-py3-none-any.whl
- Upload date:
- Size: 4.3 kB
- Tags: Python 3
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1e905f4c0805661185294e7443001b68128ed1c567f979c8e71fb1a7087893d6
|
|
| MD5 |
c99e165fa2fa87a7a4479d5b05b92327
|
|
| BLAKE2b-256 |
cb26c3bad7c6f181927ccfed7b0de62c01d23199ba042565987acb7942be2ca0
|