Skip to main content

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)

Source distribution for attr-docs 1.0.0
File Size Uploaded
attr_docs-1.0.0.tar.gz 3.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for attr-docs 1.0.0
File Interpreter ABI Platform
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}

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

0.3.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page