Skip to content

Commit d2bf0bf

Browse files
committed
Update all pypi.python.org URLs to pypi.org
For details on the new PyPI, see the blog post: https://pythoninsider.blogspot.ca/2018/04/new-pypi-launched-legacy-pypi-shutting.html
1 parent 0b2b73c commit d2bf0bf

23 files changed

+55
-54
lines changed

README.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@
66
------
77

88
.. image:: https://img.shields.io/pypi/v/pytest.svg
9-
:target: https://pypi.python.org/pypi/pytest
9+
:target: https://pypi.org/project/pytest/
1010

1111
.. image:: https://anaconda.org/conda-forge/pytest/badges/version.svg
1212
:target: https://anaconda.org/conda-forge/pytest
1313

1414
.. image:: https://img.shields.io/pypi/pyversions/pytest.svg
15-
:target: https://pypi.python.org/pypi/pytest
15+
:target: https://pypi.org/project/pytest/
1616

1717
.. image:: https://img.shields.io/coveralls/pytest-dev/pytest/master.svg
1818
:target: https://coveralls.io/r/pytest-dev/pytest

changelog/3431.trivial.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Update all pypi.python.org URLs to pypi.org.

doc/en/_templates/links.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<h3>Useful Links</h3>
22
<ul>
3-
<li><a href="https://pypi.python.org/pypi/pytest">pytest @ PyPI</a></li>
3+
<li><a href="https://pypi.org/project/pytest/">pytest @ PyPI</a></li>
44
<li><a href="https://github.com/pytest-dev/pytest/">pytest @ GitHub</a></li>
55
<li><a href="http://plugincompat.herokuapp.com/">3rd party plugins</a></li>
66
<li><a href="https://github.com/pytest-dev/pytest/issues">Issue Tracker</a></li>

doc/en/announce/release-2.3.5.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ few interesting new plugins saw the light last month:
1414

1515
And several others like pytest-django saw maintenance releases.
1616
For a more complete list, check out
17-
https://pypi.python.org/pypi?%3Aaction=search&term=pytest&submit=search.
17+
https://pypi.org/search/?q=pytest
1818

1919
For general information see:
2020

doc/en/announce/release-2.4.0.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,14 @@ a full list of details. A few feature highlights:
2323
called if the corresponding setup method succeeded.
2424

2525
- integrate tab-completion on command line options if you
26-
have `argcomplete <http://pypi.python.org/pypi/argcomplete>`_
26+
have `argcomplete <https://pypi.org/project/argcomplete/>`_
2727
configured.
2828

2929
- allow boolean expression directly with skipif/xfail
3030
if a "reason" is also specified.
3131

3232
- a new hook ``pytest_load_initial_conftests`` allows plugins like
33-
`pytest-django <http://pypi.python.org/pypi/pytest-django>`_ to
33+
`pytest-django <https://pypi.org/project/pytest-django/>`_ to
3434
influence the environment before conftest files import ``django``.
3535

3636
- reporting: color the last line red or green depending if

doc/en/development_guide.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ Code Style
1010
----------
1111

1212
* `PEP-8 <https://www.python.org/dev/peps/pep-0008>`_
13-
* `flake8 <https://pypi.python.org/pypi/flake8>`_ for quality checks
13+
* `flake8 <https://pypi.org/project/flake8/>`_ for quality checks
1414
* `invoke <http://www.pyinvoke.org/>`_ to automate development tasks
1515

1616

doc/en/example/nonpython.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ A basic example for specifying tests in Yaml files
1010
--------------------------------------------------------------
1111

1212
.. _`pytest-yamlwsgi`: http://bitbucket.org/aafshar/pytest-yamlwsgi/src/tip/pytest_yamlwsgi.py
13-
.. _`PyYAML`: http://pypi.python.org/pypi/PyYAML/
13+
.. _`PyYAML`: https://pypi.org/project/PyYAML/
1414

1515
Here is an example ``conftest.py`` (extracted from Ali Afshnars special purpose `pytest-yamlwsgi`_ plugin). This ``conftest.py`` will collect ``test*.yml`` files and will execute the yaml-formatted content as custom tests:
1616

doc/en/example/parametrize.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ together with the actual data, instead of listing them separately.
160160
A quick port of "testscenarios"
161161
------------------------------------
162162

163-
.. _`test scenarios`: http://pypi.python.org/pypi/testscenarios/
163+
.. _`test scenarios`: https://pypi.org/project/testscenarios/
164164

165165
Here is a quick port to run tests configured with `test scenarios`_,
166166
an add-on from Robert Collins for the standard unittest framework. We

doc/en/example/simple.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ the command line arguments before they get processed:
108108
num = max(multiprocessing.cpu_count() / 2, 1)
109109
args[:] = ["-n", str(num)] + args
110110
111-
If you have the `xdist plugin <https://pypi.python.org/pypi/pytest-xdist>`_ installed
111+
If you have the `xdist plugin <https://pypi.org/project/pytest-xdist/>`_ installed
112112
you will now always perform test runs using a number
113113
of subprocesses close to your CPU. Running in an empty
114114
directory with the above conftest.py::
@@ -778,7 +778,7 @@ which test got stuck, for example if pytest was run in quiet mode (``-q``) or yo
778778
output. This is particularly a problem if the problem helps only sporadically, the famous "flaky" kind of tests.
779779

780780
``pytest`` sets a ``PYTEST_CURRENT_TEST`` environment variable when running tests, which can be inspected
781-
by process monitoring utilities or libraries like `psutil <https://pypi.python.org/pypi/psutil>`_ to discover which
781+
by process monitoring utilities or libraries like `psutil <https://pypi.org/project/psutil/>`_ to discover which
782782
test got stuck if necessary:
783783

784784
.. code-block:: python

doc/en/faq.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,14 @@ and does not handle Deferreds returned from a test in pytest style.
3030
If you are using trial's unittest.TestCase chances are that you can
3131
just run your tests even if you return Deferreds. In addition,
3232
there also is a dedicated `pytest-twisted
33-
<http://pypi.python.org/pypi/pytest-twisted>`_ plugin which allows you to
33+
<https://pypi.org/project/pytest-twisted/>`_ plugin which allows you to
3434
return deferreds from pytest-style tests, allowing the use of
3535
:ref:`fixtures` and other features.
3636

3737
how does pytest work with Django?
3838
++++++++++++++++++++++++++++++++++++++++++++++
3939

40-
In 2012, some work is going into the `pytest-django plugin <http://pypi.python.org/pypi/pytest-django>`_. It substitutes the usage of Django's
40+
In 2012, some work is going into the `pytest-django plugin <https://pypi.org/project/pytest-django/>`_. It substitutes the usage of Django's
4141
``manage.py test`` and allows the use of all pytest features_ most of which
4242
are not available from Django directly.
4343

doc/en/fixture.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ This makes use of the automatic caching mechanisms of pytest.
154154
Another good approach is by adding the data files in the ``tests`` folder.
155155
There are also community plugins available to help managing this aspect of
156156
testing, e.g. `pytest-datadir <https://github.com/gabrielcnr/pytest-datadir>`__
157-
and `pytest-datafiles <https://pypi.python.org/pypi/pytest-datafiles>`__.
157+
and `pytest-datafiles <https://pypi.org/project/pytest-datafiles/>`__.
158158

159159
.. _smtpshared:
160160

doc/en/getting-started.rst

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ Installation and Getting Started
55

66
**Platforms**: Unix/Posix and Windows
77

8-
**PyPI package name**: `pytest <http://pypi.python.org/pypi/pytest>`_
8+
**PyPI package name**: `pytest <https://pypi.org/project/pytest/>`_
99

10-
**Dependencies**: `py <http://pypi.python.org/pypi/py>`_,
11-
`colorama (Windows) <http://pypi.python.org/pypi/colorama>`_,
10+
**Dependencies**: `py <https://pypi.org/project/py/>`_,
11+
`colorama (Windows) <https://pypi.org/project/colorama/>`_,
1212

1313
**Documentation as PDF**: `download latest <https://media.readthedocs.org/pdf/pytest/latest/pytest.pdf>`_
1414

doc/en/goodpractices.rst

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -168,9 +168,9 @@ Note that this layout also works in conjunction with the ``src`` layout mentione
168168
to avoid surprises such as a test module getting imported twice.
169169

170170

171-
.. _`virtualenv`: http://pypi.python.org/pypi/virtualenv
171+
.. _`virtualenv`: https://pypi.org/project/virtualenv/
172172
.. _`buildout`: http://www.buildout.org/
173-
.. _pip: http://pypi.python.org/pypi/pip
173+
.. _pip: https://pypi.org/project/pip/
174174

175175
.. _`use tox`:
176176

@@ -205,7 +205,7 @@ Integrating with setuptools / ``python setup.py test`` / ``pytest-runner``
205205
--------------------------------------------------------------------------
206206

207207
You can integrate test runs into your setuptools based project
208-
with the `pytest-runner <https://pypi.python.org/pypi/pytest-runner>`_ plugin.
208+
with the `pytest-runner <https://pypi.org/project/pytest-runner/>`_ plugin.
209209

210210
Add this to ``setup.py`` file:
211211

doc/en/links.inc

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@
77
.. _`reStructured Text`: http://docutils.sourceforge.net
88
.. _`Python debugger`: http://docs.python.org/lib/module-pdb.html
99
.. _nose: https://nose.readthedocs.io/en/latest/
10-
.. _pytest: http://pypi.python.org/pypi/pytest
10+
.. _pytest: https://pypi.org/project/pytest/
1111
.. _mercurial: http://mercurial.selenic.com/wiki/
12-
.. _`setuptools`: http://pypi.python.org/pypi/setuptools
12+
.. _`setuptools`: https://pypi.org/project/setuptools/
1313
.. _`easy_install`:
1414
.. _`distribute docs`:
15-
.. _`distribute`: http://pypi.python.org/pypi/distribute
16-
.. _`pip`: http://pypi.python.org/pypi/pip
17-
.. _`virtualenv`: http://pypi.python.org/pypi/virtualenv
15+
.. _`distribute`: https://pypi.org/project/distribute/
16+
.. _`pip`: https://pypi.org/project/pip/
17+
.. _`virtualenv`: https://pypi.org/project/virtualenv/
1818
.. _hudson: http://hudson-ci.org/
1919
.. _jenkins: http://jenkins-ci.org/
2020
.. _tox: http://testrun.org/tox

doc/en/plugins.rst

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,39 +20,39 @@ Here is a little annotated list for some popular plugins:
2020

2121
.. _`django`: https://www.djangoproject.com/
2222

23-
* `pytest-django <http://pypi.python.org/pypi/pytest-django>`_: write tests
23+
* `pytest-django <https://pypi.org/project/pytest-django/>`_: write tests
2424
for `django`_ apps, using pytest integration.
2525

26-
* `pytest-twisted <http://pypi.python.org/pypi/pytest-twisted>`_: write tests
26+
* `pytest-twisted <https://pypi.org/project/pytest-twisted/>`_: write tests
2727
for `twisted <http://twistedmatrix.com>`_ apps, starting a reactor and
2828
processing deferreds from test functions.
2929

30-
* `pytest-cov <http://pypi.python.org/pypi/pytest-cov>`_:
30+
* `pytest-cov <https://pypi.org/project/pytest-cov/>`_:
3131
coverage reporting, compatible with distributed testing
3232

33-
* `pytest-xdist <http://pypi.python.org/pypi/pytest-xdist>`_:
33+
* `pytest-xdist <https://pypi.org/project/pytest-xdist/>`_:
3434
to distribute tests to CPUs and remote hosts, to run in boxed
3535
mode which allows to survive segmentation faults, to run in
3636
looponfailing mode, automatically re-running failing tests
3737
on file changes.
3838

39-
* `pytest-instafail <http://pypi.python.org/pypi/pytest-instafail>`_:
39+
* `pytest-instafail <https://pypi.org/project/pytest-instafail/>`_:
4040
to report failures while the test run is happening.
4141

42-
* `pytest-bdd <http://pypi.python.org/pypi/pytest-bdd>`_ and
43-
`pytest-konira <http://pypi.python.org/pypi/pytest-konira>`_
42+
* `pytest-bdd <https://pypi.org/project/pytest-bdd/>`_ and
43+
`pytest-konira <https://pypi.org/project/pytest-konira/>`_
4444
to write tests using behaviour-driven testing.
4545

46-
* `pytest-timeout <http://pypi.python.org/pypi/pytest-timeout>`_:
46+
* `pytest-timeout <https://pypi.org/project/pytest-timeout/>`_:
4747
to timeout tests based on function marks or global definitions.
4848

49-
* `pytest-pep8 <http://pypi.python.org/pypi/pytest-pep8>`_:
49+
* `pytest-pep8 <https://pypi.org/project/pytest-pep8/>`_:
5050
a ``--pep8`` option to enable PEP8 compliance checking.
5151

52-
* `pytest-flakes <https://pypi.python.org/pypi/pytest-flakes>`_:
52+
* `pytest-flakes <https://pypi.org/project/pytest-flakes/>`_:
5353
check source code with pyflakes.
5454

55-
* `oejskit <http://pypi.python.org/pypi/oejskit>`_:
55+
* `oejskit <https://pypi.org/project/oejskit/>`_:
5656
a plugin to run javascript unittests in live browsers.
5757

5858
To see a complete list of all plugins with their latest testing
@@ -61,7 +61,7 @@ status against different pytest and Python versions, please visit
6161

6262
You may also discover more plugins through a `pytest- pypi.python.org search`_.
6363

64-
.. _`pytest- pypi.python.org search`: http://pypi.python.org/pypi?%3Aaction=search&term=pytest-&submit=search
64+
.. _`pytest- pypi.python.org search`: https://pypi.org/search/?q=pytest-
6565

6666

6767
.. _`available installable plugins`:

doc/en/projects.rst

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,40 +32,40 @@ Here are some examples of projects using ``pytest`` (please send notes via :ref:
3232
* `PyPM <http://code.activestate.com/pypm/>`_ ActiveState's package manager
3333
* `Fom <http://packages.python.org/Fom/>`_ a fluid object mapper for FluidDB
3434
* `applib <https://github.com/ActiveState/applib>`_ cross-platform utilities
35-
* `six <http://pypi.python.org/pypi/six/>`_ Python 2 and 3 compatibility utilities
35+
* `six <https://pypi.org/project/six/>`_ Python 2 and 3 compatibility utilities
3636
* `pediapress <http://code.pediapress.com/wiki/wiki>`_ MediaWiki articles
37-
* `mwlib <http://pypi.python.org/pypi/mwlib>`_ mediawiki parser and utility library
37+
* `mwlib <https://pypi.org/project/mwlib/>`_ mediawiki parser and utility library
3838
* `The Translate Toolkit <http://translate.sourceforge.net/wiki/toolkit/index>`_ for localization and conversion
3939
* `execnet <http://codespeak.net/execnet>`_ rapid multi-Python deployment
4040
* `pylib <https://py.readthedocs.io>`_ cross-platform path, IO, dynamic code library
4141
* `Pacha <http://pacha.cafepais.com/>`_ configuration management in five minutes
42-
* `bbfreeze <http://pypi.python.org/pypi/bbfreeze>`_ create standalone executables from Python scripts
42+
* `bbfreeze <https://pypi.org/project/bbfreeze/>`_ create standalone executables from Python scripts
4343
* `pdb++ <http://bitbucket.org/antocuni/pdb>`_ a fancier version of PDB
4444
* `py-s3fuse <http://code.google.com/p/py-s3fuse/>`_ Amazon S3 FUSE based filesystem
4545
* `waskr <http://code.google.com/p/waskr/>`_ WSGI Stats Middleware
4646
* `guachi <http://code.google.com/p/guachi/>`_ global persistent configs for Python modules
47-
* `Circuits <http://pypi.python.org/pypi/circuits>`_ lightweight Event Driven Framework
47+
* `Circuits <https://pypi.org/project/circuits/>`_ lightweight Event Driven Framework
4848
* `pygtk-helpers <http://bitbucket.org/aafshar/pygtkhelpers-main/>`_ easy interaction with PyGTK
4949
* `QuantumCore <http://quantumcore.org/>`_ statusmessage and repoze openid plugin
5050
* `pydataportability <http://pydataportability.net/>`_ libraries for managing the open web
5151
* `XIST <http://www.livinglogic.de/Python/xist/>`_ extensible HTML/XML generator
52-
* `tiddlyweb <http://pypi.python.org/pypi/tiddlyweb>`_ optionally headless, extensible RESTful datastore
52+
* `tiddlyweb <https://pypi.org/project/tiddlyweb/>`_ optionally headless, extensible RESTful datastore
5353
* `fancycompleter <http://bitbucket.org/antocuni/fancycompleter/src>`_ for colorful tab-completion
5454
* `Paludis <http://paludis.exherbo.org/>`_ tools for Gentoo Paludis package manager
5555
* `Gerald <http://halfcooked.com/code/gerald/>`_ schema comparison tool
5656
* `abjad <http://code.google.com/p/abjad/>`_ Python API for Formalized Score control
5757
* `bu <http://packages.python.org/bu/>`_ a microscopic build system
5858
* `katcp <https://bitbucket.org/hodgestar/katcp>`_ Telescope communication protocol over Twisted
59-
* `kss plugin timer <http://pypi.python.org/pypi/kss.plugin.timer>`_
59+
* `kss plugin timer <https://pypi.org/project/kss.plugin.timer/>`_
6060
* `pyudev <https://pyudev.readthedocs.io/en/latest/tests/plugins.html>`_ a pure Python binding to the Linux library libudev
6161
* `pytest-localserver <https://bitbucket.org/pytest-dev/pytest-localserver/>`_ a plugin for pytest that provides an httpserver and smtpserver
62-
* `pytest-monkeyplus <http://pypi.python.org/pypi/pytest-monkeyplus/>`_ a plugin that extends monkeypatch
62+
* `pytest-monkeyplus <https://pypi.org/project/pytest-monkeyplus/>`_ a plugin that extends monkeypatch
6363

6464
These projects help integrate ``pytest`` into other Python frameworks:
6565

66-
* `pytest-django <http://pypi.python.org/pypi/pytest-django/>`_ for Django
66+
* `pytest-django <https://pypi.org/project/pytest-django/>`_ for Django
6767
* `zope.pytest <http://packages.python.org/zope.pytest/>`_ for Zope and Grok
68-
* `pytest_gae <http://pypi.python.org/pypi/pytest_gae/0.2.1>`_ for Google App Engine
68+
* `pytest_gae <https://pypi.org/project/pytest_gae/0.2.1/>`_ for Google App Engine
6969
* There is `some work <https://github.com/Kotti/Kotti/blob/master/kotti/testing.py>`_ underway for Kotti, a CMS built in Pyramid/Pylons
7070

7171

doc/en/proposals/parametrize_with_fixtures.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ all parameters marked as a fixture.
118118

119119
.. note::
120120

121-
The `pytest-lazy-fixture <https://pypi.python.org/pypi/pytest-lazy-fixture>`_ plugin implements a very
121+
The `pytest-lazy-fixture <https://pypi.org/project/pytest-lazy-fixture/>`_ plugin implements a very
122122
similar solution to the proposal below, make sure to check it out.
123123

124124
.. code-block:: python

doc/en/test/plugin/cov.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ The `pytest-cov`_ package may be installed with pip or easy_install::
2121
pip install pytest-cov
2222
easy_install pytest-cov
2323

24-
.. _`pytest-cov`: http://pypi.python.org/pypi/pytest-cov/
24+
.. _`pytest-cov`: https://pypi.org/project/pytest-cov/
2525

2626

2727
Uninstallation

doc/en/test/plugin/oejskit.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@ The approach enables to write integration tests such that the JavaScript code is
77
For more info and download please visit the `oejskit PyPI`_ page.
88

99
.. _`oejskit`:
10-
.. _`oejskit PyPI`: http://pypi.python.org/pypi/oejskit
10+
.. _`oejskit PyPI`: https://pypi.org/project/oejskit/
1111

1212
.. source link 'http://bitbucket.org/pedronis/js-infrastructure/src/tip/pytest_jstests.py',

doc/en/test/plugin/xdist.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ program source code to the remote place. All test results
2626
are reported back and displayed to your local test session.
2727
You may specify different Python versions and interpreters.
2828

29-
.. _`pytest-xdist`: http://pypi.python.org/pypi/pytest-xdist
29+
.. _`pytest-xdist`: https://pypi.org/project/pytest-xdist/
3030

3131
Usage examples
3232
---------------------

doc/en/unittest.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,9 @@ in most cases without having to modify existing code:
4646
* :ref:`maxfail`;
4747
* :ref:`--pdb <pdb-option>` command-line option for debugging on test failures
4848
(see :ref:`note <pdb-unittest-note>` below);
49-
* Distribute tests to multiple CPUs using the `pytest-xdist <http://pypi.python.org/pypi/pytest-xdist>`_ plugin;
49+
* Distribute tests to multiple CPUs using the `pytest-xdist <https://pypi.org/project/pytest-xdist/>`_ plugin;
5050
* Use :ref:`plain assert-statements <assert>` instead of ``self.assert*`` functions (`unittest2pytest
51-
<https://pypi.python.org/pypi/unittest2pytest/>`__ is immensely helpful in this);
51+
<https://pypi.org/project/unittest2pytest/>`__ is immensely helpful in this);
5252

5353

5454
pytest features in ``unittest.TestCase`` subclasses

doc/en/usage.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -407,7 +407,7 @@ Creating resultlog format files
407407
This option is rarely used and is scheduled for removal in 4.0.
408408

409409
An alternative for users which still need similar functionality is to use the
410-
`pytest-tap <https://pypi.python.org/pypi/pytest-tap>`_ plugin which provides
410+
`pytest-tap <https://pypi.org/project/pytest-tap/>`_ plugin which provides
411411
a stream of test data.
412412

413413
If you have any concerns, please don't hesitate to

doc/en/writing_plugins.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ Here is how you might run it::
103103
Writing your own plugin
104104
-----------------------
105105

106-
.. _`setuptools`: http://pypi.python.org/pypi/setuptools
106+
.. _`setuptools`: https://pypi.org/project/setuptools/
107107

108108
If you want to write a plugin, there are many real-life examples
109109
you can copy from:

0 commit comments

Comments
 (0)