entry-points-txt


Nameentry-points-txt JSON
Version 0.2.0 PyPI version JSON
download
home_pagehttps://github.com/jwodder/entry-points-txt
SummaryRead & write entry_points.txt files
upload_time2021-10-14 18:42:04
maintainer
docs_urlNone
authorJohn Thorvald Wodder II
requires_python~=3.6
licenseMIT
keywords entry points entry_points.txt
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            .. image:: http://www.repostatus.org/badges/latest/active.svg
    :target: http://www.repostatus.org/#active
    :alt: Project Status: Active — The project has reached a stable, usable
          state and is being actively developed.

.. image:: https://github.com/jwodder/entry-points-txt/workflows/Test/badge.svg?branch=master
    :target: https://github.com/jwodder/entry-points-txt/actions?workflow=Test
    :alt: CI Status

.. image:: https://codecov.io/gh/jwodder/entry-points-txt/branch/master/graph/badge.svg
    :target: https://codecov.io/gh/jwodder/entry-points-txt

.. image:: https://img.shields.io/pypi/pyversions/entry-points-txt.svg
    :target: https://pypi.org/project/entry-points-txt/

.. image:: https://img.shields.io/github/license/jwodder/entry-points-txt.svg
    :target: https://opensource.org/licenses/MIT
    :alt: MIT License

`GitHub <https://github.com/jwodder/entry-points-txt>`_
| `PyPI <https://pypi.org/project/entry-points-txt/>`_
| `Issues <https://github.com/jwodder/entry-points-txt/issues>`_
| `Changelog <https://github.com/jwodder/entry-points-txt/blob/master/CHANGELOG.md>`_

``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.

.. _the spec: https://packaging.python.org/specifications/entry-points/

Installation
============
``entry-points-txt`` requires Python 3.6 or higher.  Just use `pip
<https://pip.pypa.io>`_ for Python 3 (You have pip, right?) to install
``entry-points-txt``::

    python3 -m pip install entry-points-txt


API
===

``EntryPoint``
--------------

.. code:: python

    class EntryPoint(NamedTuple)

A representation of an entry point as a namedtuple.  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: Optional[str]``
   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``
-----------------

.. code:: python

    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-``dict``\s that map entry point names to ``EntryPoint``
instances.

``load()``
----------

.. code:: python

    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:

.. code:: ini

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

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

would be parsed as:

.. code:: python

    {
        "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()``
-----------

.. code:: python

    entry_points_txt.loads(s: str) -> EntryPointSet

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

``dump()``
----------

.. code:: python

    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()``
-----------

.. code:: python

    entry_points_txt.dumps(eps: EntryPointSet) -> str

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

``dump_list()``
---------------

.. code:: python

    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()``
----------------

.. code:: python

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

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

``ParseError``
--------------

.. code:: python

    class ParseError(ValueError)

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



            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/jwodder/entry-points-txt",
    "name": "entry-points-txt",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "~=3.6",
    "maintainer_email": "",
    "keywords": "entry points,entry_points.txt",
    "author": "John Thorvald Wodder II",
    "author_email": "entry-points-txt@varonathe.org",
    "download_url": "https://files.pythonhosted.org/packages/9e/f2/66329d6a74e456039ae09be85dc96f2994edb86613ed5bc63f605cef7864/entry-points-txt-0.2.0.tar.gz",
    "platform": "",
    "description": ".. image:: http://www.repostatus.org/badges/latest/active.svg\n    :target: http://www.repostatus.org/#active\n    :alt: Project Status: Active \u2014 The project has reached a stable, usable\n          state and is being actively developed.\n\n.. image:: https://github.com/jwodder/entry-points-txt/workflows/Test/badge.svg?branch=master\n    :target: https://github.com/jwodder/entry-points-txt/actions?workflow=Test\n    :alt: CI Status\n\n.. image:: https://codecov.io/gh/jwodder/entry-points-txt/branch/master/graph/badge.svg\n    :target: https://codecov.io/gh/jwodder/entry-points-txt\n\n.. image:: https://img.shields.io/pypi/pyversions/entry-points-txt.svg\n    :target: https://pypi.org/project/entry-points-txt/\n\n.. image:: https://img.shields.io/github/license/jwodder/entry-points-txt.svg\n    :target: https://opensource.org/licenses/MIT\n    :alt: MIT License\n\n`GitHub <https://github.com/jwodder/entry-points-txt>`_\n| `PyPI <https://pypi.org/project/entry-points-txt/>`_\n| `Issues <https://github.com/jwodder/entry-points-txt/issues>`_\n| `Changelog <https://github.com/jwodder/entry-points-txt/blob/master/CHANGELOG.md>`_\n\n``entry-points-txt`` provides functions for reading & writing\n``entry_points.txt`` files according to `the spec`_.  That is the one thing it\ndoes, and it endeavors to do it well.\n\n.. _the spec: https://packaging.python.org/specifications/entry-points/\n\nInstallation\n============\n``entry-points-txt`` requires Python 3.6 or higher.  Just use `pip\n<https://pip.pypa.io>`_ for Python 3 (You have pip, right?) to install\n``entry-points-txt``::\n\n    python3 -m pip install entry-points-txt\n\n\nAPI\n===\n\n``EntryPoint``\n--------------\n\n.. code:: python\n\n    class EntryPoint(NamedTuple)\n\nA representation of an entry point as a namedtuple.  Instances have the\nfollowing attributes and methods:\n\n``group: str``\n   The name of the entry point group (e.g., ``\"console_scripts\"``)\n\n``name: str``\n   The name of the entry point\n\n``module: str``\n   The module portion of the attribute reference (the part before the colon)\n\n``attr: Optional[str]``\n   The attribute/object portion of the attribute reference (the part after the\n   colon), or ``None`` if not specified\n\n``extras: Tuple[str, ...]``\n   Extras required for the entry point\n\n``load() -> Any``\n   Returns the object referred to by the entry point\n\n``to_line() -> str``\n   Returns the representation of the entry point as a line in\n   ``entry_points.txt``, i.e., a line of the form ``name = module:attr\n   [extras]``\n\n``EntryPointSet``\n-----------------\n\n.. code:: python\n\n    EntryPointSet = Dict[str, Dict[str, EntryPoint]]\n\nAn alias for the return type of ``load()`` & ``loads()`` and the argument type\nof ``dump()`` & ``dumps()``.  Entry points are organized into a ``dict`` that\nmaps group names to sub-``dict``\\s that map entry point names to ``EntryPoint``\ninstances.\n\n``load()``\n----------\n\n.. code:: python\n\n    entry_points_txt.load(fp: IO[str]) -> EntryPointSet\n\nParse a file-like object as an ``entry_points.txt``-format file and return the\nresults.\n\nFor example, the following input:\n\n.. code:: ini\n\n    [console_scripts]\n    foo = package.__main__:main\n    bar = package.cli:klass.attr\n\n    [thingy.extension]\n    quux = package.thingy [xtr]\n\nwould be parsed as:\n\n.. code:: python\n\n    {\n        \"console_scripts\": {\n            \"foo\": EntryPoint(group=\"console_scripts\", name=\"foo\", module=\"package.__main__\", attr=\"main\", extras=()),\n            \"bar\": EntryPoint(group=\"console_scripts\", name=\"bar\", module=\"package.cli\", attr=\"klass.attr\", extras=()),\n        },\n        \"thingy.extension\": {\n            \"quux\": EntryPoint(group=\"thingy.extension\", name=\"quux\", module=\"package.thingy\", attr=None, extras=(\"xtr\",)),\n        },\n    }\n\n``loads()``\n-----------\n\n.. code:: python\n\n    entry_points_txt.loads(s: str) -> EntryPointSet\n\nLike ``load()``, but reads from a string instead of a filehandle\n\n``dump()``\n----------\n\n.. code:: python\n\n    entry_points_txt.dump(eps: EntryPointSet, fp: IO[str]) -> None\n\nWrite a collection of entry points to a file-like object in\n``entry_points.txt`` format.  A ``ValueError`` is raised and nothing is written\nif the group or name key under which an ``EntryPoint`` is located does not\nmatch its ``group`` or ``name`` attribute.\n\n``dumps()``\n-----------\n\n.. code:: python\n\n    entry_points_txt.dumps(eps: EntryPointSet) -> str\n\nLike ``dump()``, but returns a string instead of writing to a filehandle\n\n``dump_list()``\n---------------\n\n.. code:: python\n\n    entry_points_txt.dump_list(eps: Iterable[EntryPoint], fp: IO[str]) -> None\n\nWrite an iterable of entry points to a file-like object in ``entry_points.txt``\nformat.  If two or more entry points have the same group & name, only the last\none will be output.\n\n``dumps_list()``\n----------------\n\n.. code:: python\n\n    entry_points_txt.dumps_list(eps: Iterable[EntryPoint]) -> str\n\nLike ``dump_list()``, but returns a string instead of writing to a filehandle\n\n``ParseError``\n--------------\n\n.. code:: python\n\n    class ParseError(ValueError)\n\nException raised by ``load()`` or ``loads()`` when given invalid input\n\n\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Read & write entry_points.txt files",
    "version": "0.2.0",
    "project_urls": {
        "Bug Tracker": "https://github.com/jwodder/entry-points-txt/issues",
        "Homepage": "https://github.com/jwodder/entry-points-txt",
        "Source Code": "https://github.com/jwodder/entry-points-txt"
    },
    "split_keywords": [
        "entry points",
        "entry_points.txt"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6a110ef395fadaa92fc92ac12826e5dc5eb87278e66e6f0b2f2513d9352bcd13",
                "md5": "f7e6b5ae34e2862b40fa79b64bb05309",
                "sha256": "f17191ff7c7dcfe8753f22c5432705e7cbcca7de4b6ceb48ce298d1421c40bb7"
            },
            "downloads": -1,
            "filename": "entry_points_txt-0.2.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "f7e6b5ae34e2862b40fa79b64bb05309",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "~=3.6",
            "size": 7125,
            "upload_time": "2021-10-14T18:42:02",
            "upload_time_iso_8601": "2021-10-14T18:42:02.164002Z",
            "url": "https://files.pythonhosted.org/packages/6a/11/0ef395fadaa92fc92ac12826e5dc5eb87278e66e6f0b2f2513d9352bcd13/entry_points_txt-0.2.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9ef266329d6a74e456039ae09be85dc96f2994edb86613ed5bc63f605cef7864",
                "md5": "3692a63d48405c2abd0d9539c6b845cd",
                "sha256": "b3e4e976b8c18f479ecad42594cac8d75e42293e8ba9e3f4892d927b02099e6a"
            },
            "downloads": -1,
            "filename": "entry-points-txt-0.2.0.tar.gz",
            "has_sig": false,
            "md5_digest": "3692a63d48405c2abd0d9539c6b845cd",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "~=3.6",
            "size": 9517,
            "upload_time": "2021-10-14T18:42:04",
            "upload_time_iso_8601": "2021-10-14T18:42:04.658406Z",
            "url": "https://files.pythonhosted.org/packages/9e/f2/66329d6a74e456039ae09be85dc96f2994edb86613ed5bc63f605cef7864/entry-points-txt-0.2.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2021-10-14 18:42:04",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "jwodder",
    "github_project": "entry-points-txt",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "tox": true,
    "lcname": "entry-points-txt"
}
        
Elapsed time: 0.07625s