tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

README.rst (3362B)


      1 ====================================================
      2 pluggy - A minimalist production ready plugin system
      3 ====================================================
      4 
      5 |pypi| |conda-forge| |versions| |github-actions| |gitter| |black| |codecov|
      6 
      7 This is the core framework used by the `pytest`_, `tox`_, and `devpi`_ projects.
      8 
      9 Please `read the docs`_ to learn more!
     10 
     11 A definitive example
     12 ====================
     13 .. code-block:: python
     14 
     15    import pluggy
     16 
     17    hookspec = pluggy.HookspecMarker("myproject")
     18    hookimpl = pluggy.HookimplMarker("myproject")
     19 
     20 
     21    class MySpec:
     22        """A hook specification namespace."""
     23 
     24        @hookspec
     25        def myhook(self, arg1, arg2):
     26            """My special little hook that you can customize."""
     27 
     28 
     29    class Plugin_1:
     30        """A hook implementation namespace."""
     31 
     32        @hookimpl
     33        def myhook(self, arg1, arg2):
     34            print("inside Plugin_1.myhook()")
     35            return arg1 + arg2
     36 
     37 
     38    class Plugin_2:
     39        """A 2nd hook implementation namespace."""
     40 
     41        @hookimpl
     42        def myhook(self, arg1, arg2):
     43            print("inside Plugin_2.myhook()")
     44            return arg1 - arg2
     45 
     46 
     47    # create a manager and add the spec
     48    pm = pluggy.PluginManager("myproject")
     49    pm.add_hookspecs(MySpec)
     50 
     51    # register plugins
     52    pm.register(Plugin_1())
     53    pm.register(Plugin_2())
     54 
     55    # call our ``myhook`` hook
     56    results = pm.hook.myhook(arg1=1, arg2=2)
     57    print(results)
     58 
     59 
     60 Running this directly gets us::
     61 
     62    $ python docs/examples/toy-example.py
     63    inside Plugin_2.myhook()
     64    inside Plugin_1.myhook()
     65    [-1, 3]
     66 
     67 
     68 .. badges
     69 
     70 .. |pypi| image:: https://img.shields.io/pypi/v/pluggy.svg
     71    :target: https://pypi.org/pypi/pluggy
     72 
     73 .. |versions| image:: https://img.shields.io/pypi/pyversions/pluggy.svg
     74    :target: https://pypi.org/pypi/pluggy
     75 
     76 .. |github-actions| image:: https://github.com/pytest-dev/pluggy/workflows/main/badge.svg
     77    :target: https://github.com/pytest-dev/pluggy/actions
     78 
     79 .. |conda-forge| image:: https://img.shields.io/conda/vn/conda-forge/pluggy.svg
     80    :target: https://anaconda.org/conda-forge/pytest
     81 
     82 .. |gitter| image:: https://badges.gitter.im/pytest-dev/pluggy.svg
     83    :alt: Join the chat at https://gitter.im/pytest-dev/pluggy
     84    :target: https://gitter.im/pytest-dev/pluggy?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
     85 
     86 .. |black| image:: https://img.shields.io/badge/code%20style-black-000000.svg
     87    :target: https://github.com/ambv/black
     88 
     89 .. |codecov| image:: https://codecov.io/gh/pytest-dev/pluggy/branch/master/graph/badge.svg
     90    :target: https://codecov.io/gh/pytest-dev/pluggy
     91    :alt: Code coverage Status
     92 
     93 .. links
     94 .. _pytest:
     95    http://pytest.org
     96 .. _tox:
     97    https://tox.readthedocs.org
     98 .. _devpi:
     99    http://doc.devpi.net
    100 .. _read the docs:
    101   https://pluggy.readthedocs.io/en/latest/
    102 
    103 
    104 Support pluggy
    105 --------------
    106 
    107 `Open Collective`_ is an online funding platform for open and transparent communities.
    108 It provides tools to raise money and share your finances in full transparency.
    109 
    110 It is the platform of choice for individuals and companies that want to make one-time or
    111 monthly donations directly to the project.
    112 
    113 ``pluggy`` is part of the ``pytest-dev`` project, see more details in the `pytest collective`_.
    114 
    115 .. _Open Collective: https://opencollective.com
    116 .. _pytest collective: https://opencollective.com/pytest