Skip to main content

Read & write entry_points.txt files

Project description

Project Status: Active — The project has reached a stable, usable state and is being actively developed. CI Status coverage pyversions MIT License

GitHub | PyPI | Issues | Changelog

entry-points-txt provides functions for reading & writing entry_points.txt files according to the spec. That is the one thing it does, and it endeavors to do it well.

Installation

entry-points-txt requires Python 3.10 or higher. Just use pip for Python 3 (You have pip, right?) to install entry-points-txt:

python3 -m pip install entry-points-txt

API

EntryPoint

class EntryPoint

A representation of an entry point as a dataclass. Instances have the following attributes and methods:

group: str

The name of the entry point group (e.g., "console_scripts")

name: str

The name of the entry point

module: str

The module portion of the attribute reference (the part before the colon)

attr: str | None

The attribute/object portion of the attribute reference (the part after the colon), or None if not specified

extras: tuple[str, ...]

Extras required for the entry point

load() -> Any

Returns the object referred to by the entry point

to_line() -> str

Returns the representation of the entry point as a line in entry_points.txt, i.e., a line of the form name = module:attr [extras]

EntryPointSet

EntryPointSet = dict[str, dict[str, EntryPoint]]

An alias for the return type of load() & loads() and the argument type of dump() & dumps(). Entry points are organized into a dict that maps group names to sub-dicts that map entry point names to EntryPoint instances.

load()

entry_points_txt.load(fp: IO[str]) -> EntryPointSet

Parse a file-like object as an entry_points.txt-format file and return the results.

For example, the following input:

[console_scripts]
foo = package.__main__:main
bar = package.cli:klass.attr

[thingy.extension]
quux = package.thingy [xtr]

would be parsed as:

{
    "console_scripts": {
        "foo": EntryPoint(group="console_scripts", name="foo", module="package.__main__", attr="main", extras=()),
        "bar": EntryPoint(group="console_scripts", name="bar", module="package.cli", attr="klass.attr", extras=()),
    },
    "thingy.extension": {
        "quux": EntryPoint(group="thingy.extension", name="quux", module="package.thingy", attr=None, extras=("xtr",)),
    },
}

loads()

entry_points_txt.loads(s: str) -> EntryPointSet

Like load(), but reads from a string instead of a filehandle

dump()

entry_points_txt.dump(eps: EntryPointSet, fp: IO[str]) -> None

Write a collection of entry points to a file-like object in entry_points.txt format. A ValueError is raised and nothing is written if the group or name key under which an EntryPoint is located does not match its group or name attribute.

dumps()

entry_points_txt.dumps(eps: EntryPointSet) -> str

Like dump(), but returns a string instead of writing to a filehandle

dump_list()

entry_points_txt.dump_list(eps: Iterable[EntryPoint], fp: IO[str]) -> None

Write an iterable of entry points to a file-like object in entry_points.txt format. If two or more entry points have the same group & name, only the last one will be output.

dumps_list()

entry_points_txt.dumps_list(eps: Iterable[EntryPoint]) -> str

Like dump_list(), but returns a string instead of writing to a filehandle

ParseError

class ParseError(ValueError)

Exception raised by load() or loads() when given invalid input

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

entry_points_txt-0.3.0.tar.gz (8.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

entry_points_txt-0.3.0-py3-none-any.whl (6.8 kB view details)

Uploaded Python 3

File details

Details for the file entry_points_txt-0.3.0.tar.gz.

File metadata

  • Download URL: entry_points_txt-0.3.0.tar.gz
  • Upload date:
  • Size: 8.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for entry_points_txt-0.3.0.tar.gz
Algorithm Hash digest
SHA256 957f508508a761671f18870edd9deb83b36844c66251e9c8a0df55ee8ae0bf52
MD5 cd8a6ab6ed04409c4a12e7e9437ab740
BLAKE2b-256 fdbb17cd6dfa33fc2c247981b28e5edc0794c7d9f312767ce46caf56609eec07

See more details on using hashes here.

File details

Details for the file entry_points_txt-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for entry_points_txt-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 690a9335a17ded03ed221c2019c28094e74a9ea734931bd6ee6d853e58caa90a
MD5 9e88932dcfc8b0fa66533131087fc505
BLAKE2b-256 2a39a48a490970eb45e592b29c2732bcadc889d87ff0d8a15737230c60c516de

See more details on using hashes here.

Supported by

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