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.
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
class EntryPointA 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
Noneif 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 formname = module:attr [extras]
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.
entry_points_txt.load(fp: IO[str]) -> EntryPointSetParse 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",)),
},
}entry_points_txt.loads(s: str) -> EntryPointSetLike load(), but reads from a string instead of a filehandle
entry_points_txt.dump(eps: EntryPointSet, fp: IO[str]) -> NoneWrite 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.
entry_points_txt.dumps(eps: EntryPointSet) -> strLike dump(), but returns a string instead of writing to a filehandle
entry_points_txt.dump_list(eps: Iterable[EntryPoint], fp: IO[str]) -> NoneWrite 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.
entry_points_txt.dumps_list(eps: Iterable[EntryPoint]) -> strLike dump_list(), but returns a string instead of writing to a filehandle
class ParseError(ValueError)Exception raised by load() or loads() when given invalid input