

.. towncrier release notes start

5.2.0 (2020-05-04)
==================

Features
--------

- fix #140: support ``-f/--force`` option for deletion on non-volatile indexes with devpi-server >= 6.0.0.


Bug Fixes
---------

- fix #799: proper error message for devpi login without prior devpi use

- Support for check_manifest>=0.42.


5.1.1 (2019-12-18)
==================

Bug Fixes
---------

- Fix removing a range of versions with index inheritance.


5.1.0 (2019-10-31)
==================

Features
--------

- Add keyring support for ``devpi push`` to external repositories like pypi.org. This is compatible with ``twine``, see https://twine.readthedocs.io/en/latest/#keyring-support


Bug Fixes
---------

- fix #666: output nicer error message when section couldn't be found in pypirc.

- the 410 status for the register action isn't marked as error anymore for push to external repository.


5.0.0 (2019-06-28)
==================

Deprecations and Removals
-------------------------

- removed deprecated "quickstart" command.


Features
--------

- fix #636: support ``--ignore-bases`` option for project listings. Requires devpi-server >= 5.0.0 to work, older versions will still include releases from bases.

- decoupled the functional tests from devpi-server and run devpi-server in a Python 3 virtualenv when testing with Python 2.7.

- support ``--no-projects`` option when showing indexes and use it automatically when creating and modifying and index. Requires devpi-server >= 5.0.0 to work, older versions will still receive and show the projects.

- sort output of ``index -l``, ``use -l`` and ``user -l``.


Other Changes
-------------

- The selection of the Python interpreter used for ``devpi upload`` has changed. If used the new ``-p/--python`` option has priority, then a currently activated virtualenv, lastly the ``sys.executable`` under which devpi is running.


4.4.0 (2019-04-26)
==================

Features
--------

- implement #93: support setting password hash with devpi-server 4.9.0.


Bug Fixes
---------

- fix #622: deletion of package with inherited versions failed.


4.3.0 (2019-03-14)
==================

Features
--------

- support for additional commands added by plugins via ``devpiclient_subcommands`` hook.


Bug Fixes
---------

- Update import location for detox 0.18.


4.2.0 (2018-11-16)
==================

Features
--------

- Use server side operations for modifying indexes if the devpi-server version supports it. This prevents overwriting changes if two clients modify the same index concurrently.


4.1.0 (2018-09-09)
==================

Features
--------

- implement #565: To show toxresults with ``devpi list`` the new ``-t/--toxresults`` option is now required, the toxresults aren't shown by default anymore.

- implement #579: client can remove specific file with ``devpi remove url_to_file``. This requires at least devpi-server 4.6.0


Bug Fixes
---------

- fix #523: better error message when index does not support upload.


4.0.3 (2018-07-12)
==================

Bug Fixes
---------

- fix #557: enable exporting links to directories inside packages for
  ``devpi upload``


4.0.2 (2018-05-04)
==================

Bug Fixes
---------

- fix #361: allow deletion of versions with no releases.

- fix #524: require at least pkginfo 1.4.2 to support metadata 2.1.

- fix #532: add missing pluggy dependency to setup.py.

- Update default upload location to ``https://upload.pypi.org/legacy/`` for
  external ``devpi push``.


4.0.1 (2018-02-02)
==================

Bug Fixes
---------

- fix #508: on macOS the ``__PYVENV_LAUNCHER__`` environment variable needs to
  be removed when calling pip, otherwise the generated scripts use the wrong
  Python executable.


4.0.0 (2018-01-17)
==================

Features
--------

- CHANGED BEHAVIOR! If an activated virtualenv is detected, it is used by
  default for ``devpi install`` and ``devpi use --set-cfg`` now.


Bug Fixes
---------

- devpi test: if basic auth is configured, correctly pass credentials when
  downloading packages and submitting JSON reports. Thanks to Vytautas Liuolia
  for the PR.


3.1.0 (2017-11-23)
==================

No significant changes.


3.1.0rc1 (2017-09-08)
=====================

Features
--------

- fix #386: add ``passwd`` command to enable password setting with interactive
  input.

- add ``-l/--list`` option to ``devpi test`` command to only list the release
  files which would be tested.

- add ``-s/--select`` option to ``devpi test``. This is a regular expression to
  select release files for which tests will be run. With this option it's
  possible to select wheels that aren't universal, or run tests only for one
  specific release file.


Bug Fixes
---------

- fix check for extracted path when testing packages where the package name
  contains a dash, but the extracted path has underscores.

- skip and warn about wheels which can't be tested instead of testing nothing.

- fix issue227: add ``logout`` command as alias for ``logoff``.


3.0.0 (2017-04-23)
==================

- add ``-r, --requirement`` option to `devpi install` to use requirements file.

- add ``--pip-set-trusted=[yes|no|auto]`` option to ``devpi use`` to add or
  remove ``trusted-host`` option to pip configuration when ``--set-cfg`` is
  also given. ``auto`` is the default and sets it for http servers and https
  which do not pass certificate validation.
  Thanks to Andrew Leech for the PR.

- add ``devpiclient_get_password`` hook which allows plugins to return a
  password based on username and server url.

- drop support for Python 2.6.

- drop support for devpi-server < 4.0.0.


2.7.0 (2016-10-14)
==================

- fix issue268: upload of docs with PEP440 version strings now works

- fix issue362: close requests session, so all sockets are closed on exit

- add ``--no-upload`` option to ``devpi test`` to skip upload of tox results


2.6.4 (2016-07-15)
==================

- fix issue337: ``devpi upload`` for packages that produce output during build
  now works.


2.6.3 (2016-05-13)
==================

- update devpi-common requirement, so devpi-client can be installed in the same
  virtualenv as devpi-server 4.0.0.


2.6.2 (2016-04-28)
==================

- ``devpi upload`` failed to use basic authentication and client certificate
  information.


2.6.1 (2016-04-27)
==================

- fix issue340: basic authentication with ``devpi use`` didn't work anymore.


2.6.0 (2016-04-22)
==================

- switching to another server with ``devpi use`` now reuses an existing
  authentication token as well as previously set basic auth and client cert.

- basic authentication is now stored at the devpi-server root instead of the
  domain root, so you can have more than one devpi-server on different paths
  with different basic auth.

- fix issue318: ``devpi test --index`` now accepts a URL, so one can test a
  package from another server without having to run ``devpi use`` first.


2.5.0 (2016-02-08)
==================

- the ``user`` command now behaves slightly more like ``index`` to show
  current user settings and modify them.

- fix issue309: print server versions with ``devpi --version`` if available.
  This is only supported on Python 3.x because of shortcomings in older
  argparse versions for Python 2.x.

- fix issue310: with --set-cfg the ``index`` setting in the ``[search]``
  section would be set multiple times.

- fix getjson to work when no index but a server is selected

- allow full urls for getjson

- "devpi quickstart" is not documented anymore and will be removed
  in a later release.


2.4.1 (2016-02-01)
==================

- fix issue308: properly handle index reconfiguration in the client API.
  thanks to Jacob Geiger for the report and an initial PR.


2.4.0 (2016-01-29)
==================

- fix issue291: transfer file modes with vcs exports.  Thanks Sergey
  Vasilyev for the report.

- new option "--index" for "install", "list", "push", "remove", "upload" and
  "test" which allows to use a different than the current index without using
  "devpi use" before

- set ``index`` in ``[search]`` section of ``pip.cfg`` when writing cfgs, to
  support ``pip search``


2.3.2 (2015-11-11)
==================

- fix git submodules for devpi upload. ``.git`` is a file not a folder for
  submodules. Before this fix the repository which contains the submodule was
  found instead, which caused a failure, because the files aren't tracked there.

- new option "devpi upload --setupdir-only" which will only
  vcs-export the directory containing setup.py. You can also
  set "setupdirs-only = 1" in the "[devpi:upload]" section
  of setup.cfg for the same effect.  Thanks Chad Wagner for the PR.


2.3.1 (2015-09-10)
==================

- fix issue259: print server errors in client


2.3.0 (2015-07-09)
==================

- fix issue247: possible password leakage to log in devpi-client

- new experimental "-d|--detox" option to run tests via the "detox" distributed testing
  tool instead of "tox" which runs test environments one by one.

- address issue246: make sure we use vcs-export also for building docs (and
  respect --no-vcs for all building activity)

- address issue246: copy VCS repo dir to temporary upload dir to help
  with setuptools_scm. Warn if VCS other than hg/git are used because
  we don't copy the repo in that case for now and thus cause incompatibility
  with setuptools_scm.

- (new,experimental) read a "[devpi:upload]" section from a setup.cfg file
  with a "formats" setting that will be taken if no "--formats" option
  is specified to "devpi upload".  This allows to specify the default
  artefacts that should be created along with a project's setup.cfg file.
  Also you can use a ``no-vcs = True`` setting to induce the ``--no-vcs``
  option.


2.2.0 (2015-05-13)
==================

- improve internal testing mechanics

- fix regression for "devpi list -f" output which would fail when trying
  to present failures with recent devpi-server versions/tox outputs.

- fix issue222: fix help string

- fix issue190: introduce support for testing universal wheels (platform/interpreter
  specific wheels are not supported yet because they require tox support).  
  Testing a wheel requires that there also is an sdist next to it so
  that tox.ini and the tests can be discovered from it.  Note that this
  means your tox testrun setup must be able to run tests against an
  installed version of the package, not the sdist-inplace version.  If
  your tests reside in a subfolder that has no __init__.py this should
  usually be the case (at least with pytest).

- add experimental "refresh" command to invalidate the pypi release list cache
  of packages.

- show index configuration settings added by plugins in devpi-server >= 2.2.0.

2.1.0 (2015-03-16)
==================

- fix issue199: "devpi upload" and "devpi test" can now handle packages with
  dashes in their name.
- change: the following fixes change behavior if used in scripts
- fix issue174: ask for confirmation when deleting an index or user.
- fix issue156 and issue199: "devpi push" now uses "pkgname==version" like
  "list" and "test". This also fixes usage with packages containing dashes in
  their name.

2.0.5 (2015-02-24)
==================

- fix issue209: argument default handling changed in argparse in Python 2.7.9.
- fix issue163: use PIP_CONFIG_FILE environment variable if set.
- fix issue191: provide return code !=0 for failures during push

2.0.4
=====

- fix issue181: provide Return code != 0 for failed upload POST requests.

- fix "devpi" invocation or py3, it was tracebacking instead of showing
  the valid subcommands.
 
2.0.3
=====

- use default "https://www.python.org/pypi" when no repository is set in .pypirc
  see https://docs.python.org/2/distutils/packageindex.html#the-pypirc-file

- fix issue152: when --upload-docs is given, make sure to first register
  and upload the release file before attempting to upload docs (the latter
  requires prior registration)

- fix issue75: add info about basic auth to "url" option help of "devpi use".

- fix issue154: fix handling of vcs-exporting when unicode filenames are
  present.  This is done by striking our own code in favor of Marius Gedminas' 
  vcs exporting functions from his check-manifest project which devpi-client
  now depends on.  This also adds in support for svn and bazaar in addition
  to the already supported git/hg.

- devpi list: if a tox result does not contain basic information (probably a bug in
  tox) show a red error instead of crashing out with a traceback.

- fix issue157: filtering of tox results started with the oldest ones and
  didn't show newer results if the host, platform and environment were the same.

2.0.2
=====

- fix issue135: fix port mismatch for basic auth if port isn't explicitly given
  on https urls.

- refs issue75: pass on basic auth info into pip.cfg and co.

- fix issue144: fix interaction with requests-2.4 by depending
  on devpi-common's new support for enumerating possible Errors

- keep basic authentication info when listing indices or switching index by
  using path only instead of full URL.
  Thanks Trevor Joynson

- only write new client config if it actually changed and pretty print it.
  Thanks Jürgen Hermann for initial PR and ideas.

2.0.1
=====

- fix a test to expect a 403 instead of a 401 from devpi server from
  unauthorized access 

- fix error message on API version client/server mismatch

- fix issue124: package name url matching for the "devpi test" command


2.0
===

- Compatibility with devpi-server >= 2.0.0

- introduce "patchjson PATH JSONFILE" command which allows to send
  a request containing a json data structure to a specified path 

- fix issue85: "devpi list -v" now shows package names with latest
  versions.

- implement issue75: We use the custom X-Devpi-Auth header for authentication
  now, instead of overwriting the Authentication header.

- added experimental support for basic authentication by parsing user and
  password from the url given to the "devpi use" command.

- issue74: added experimental support for client side certificates via
  "devpi use --client-cert"

1.2.2
=====

- depend on pkginfo>1.2b1 for wheel metadata reading support, 
  remove twine dependency. Thanks Tres Seaver.

- new: also write buildout configuration file with --set-cfg.
  Thanks Christian Ullrich for the PR.

1.2.1
=====

- fix "python -m devpi" invocation. Thanks Sebastian Ralph.

- fix issue66: "devpi use hpk/dev" can now switch between URLs
  if user/index is mounted on a subpath.

- fix issue71: allow pip/setuptools like requirements specs
  with the test subcommand, e.g.  "devpi test 'pkg>=1.0'".
  Thanks Sebastian Rahlf for the PR.

1.2
===

- "devpi list" and "devpi remove" now accept a pip/setuptools style
  requirement like "pkg>=1.0" instead of the former for limited "pkg-1.0".

- make devpi-client fully work with python3.3 and fix test bugs 

- use system http/s proxy settings from devpi-server.  fixes issue58.

- add "devpi test -c tox.ini package" to use a particular (external)
  tox.ini for running tox with the unpackaged package.
  also add "--fallback-ini tox.ini" option which will only 
  be used if the download package has no tox.ini.

- new "devpi use --set-cfg" option to set pip/easy_install configuration
  files when changing indexes.  Also new "devpi use --always-set-cfg=yes"
  option if you want to imply "--set-cfg" on future "devpi use" invocations
  and "devpi use --always-st-cfg=no" to disable this implication.

- support git and hg for exporting all versioned files of a directory 
  before performing the build step when uploading

- improve how upload works: setup.py is only used for building docs
  and release files but not for the remote upload part.  This gets rid of a 
  number of hacks that were done trying to get the Python shipped "distutils" 
  to pick the proper devpi index and allows proper SSL verification on Python2.6
  onwards.

- upload: show response when uploading documentation failed

- upload: allow to specify archive files as positional arguments (both files and
  directories can be specified but the latter additionally require
  a --upload-dirs option)

- fix issue54: upload now works on wheel files as well.
  As pkginfo does not support wheels directly, we use the ``twine``
  project which extends pkginfo for now.

- only show highest version in "devpi list PROJECT" output, unless
  "--all" is specified.

- on upload release files: skip rather than guess packages which contain no metadata

- strike BeautifulSoup dependency and re-use vendored pip-link parser

- use types/url/metadata/validation functionality of new depdency devpi_common 

- internal cleanup wrt pytest-flakes discoveries

- remove "archive" dependency in favour of a small implementation in
  devpi_common

- make devpi-client use a proper UserAgent string

1.1
===

- detect "X-DEVPI-API-VERSION" header and check for compatibility.
  devpi-client currently supports version "1" and warns if
  no version is known (defaulting to "1").

- getjson now prints http reply headers if "-v|--verbose" was supplied.

- fix issue52: add "--no-vcs" option to force "devpi upload" to not
  vcs-export files before executing build/upload

- fix issue50: introduce "--toxargs" to "devpi test" invocations in
  order to add arbitrary arguments to tox.

- fix issue43: set PIP_PRE environment variable when executing
  "devpi install ..." so that the behaviour between 
  pip < 1.4 and >= 1.4 is normalized to always install 
  development versions.

- fix issue47: set PIP_USE_WHEEL with "devpi install ..." so that
  it will automatically pick up wheel files if pip>1.4 is used.

- fix issue42: allow to set empty bases for an index, so that it doesn't
  inherit anything.

- fix issue44: "use -l" doesn't break when a user has no index

- devpi test now invokes tox in-process (by importing tox) rather than
  a subprocess.

1.0
===

- removed ``server`` subcommand and options for controling background devpi-server
  processes to become options of ``devpi-server`` itself.

- fix issue14: lookup "python" from PATH for upload/packaging activities instead of
  using "sys.executable" which comes from the interpreter executing the "devpi" script.
  This allows to alias "devpi" to come from a virtualenv which is separate from
  the one used to perform packaging.

- fix issue35: "devpi index" cleanly errors out if no index is
  specified or in use.

- remember authentication on a per-root basis and cleanup "devpi use"
  interactions.  This makes switching between multiple devpi instances
  more seemless.

- fix issue17: better reporting when "devpi use" does not operate on valid URL

- test result upload and access:

  - "devpi test" invokes "tox --result-json ..." and uploads 
    the test result log to devpi-server.  
  - "devpi list [-f] PKG" shows test result information.

- add "uploadtrigger_jenkins" configuration option through "devpi
  index".

- fix issue19: devpi use now memorizes --venv setting properly. Thanks Laurent.

- fix issue16: show files from shadowed versions 

- initial wheel support: "devpi upload --format=bdist_wheel" now uploads
  a wheel format file to the index.  (XXX "devpi install" will trigger
  pip commands with option "--use-wheels".)

- fix issue15: docs will now be built via "setup.py build_sphinx" 
  using a internal build dir so that the upload succeeds if conf.py
  would otherwise specify a non-standard location.

- implement and refine "devpi push" command.  It now accepts
  two forms "user/name" for specifying an internal devpi index
  and "pypi:REPONAME" for specifying a repository which must be
  defined in a .pypirc file.
  
- remove spurious pdb.set_trace() in devpi install command when
  no pip can be found.

- show and allow to set "acl_upload" for uploading priviliges

- add longer descriptions to each sub command, shown with
  "devpi COMMAND -h".

- removed pytestplugin support for now (pytest reporting directly to
  devpi-server)

0.9.4
=====

- fix uploading by adding setup.py's dir to sys.path:  setup.py 
  files that import modules/packages for obtaining versions etc.
  now work. Thanks jbasko.

- fix automatic devpi-server startup on python26/windows 

0.9.3
=====

- new "devpi list" command to show projects of the in-use index or all
  release files of a project with "devpi list PROJECTNAME".

- new "devpi remove" command to remove releases from the current index,
  including any contained release files

- added "argcomplete" support for tab completion on options
  (thanks to Anthon van der Neut)

0.9.2
=====

- introduce "devpi upload --from-dir" for uploading archives in bulk
  mode, thanks to Anthon van der Neut for helping with this!
  (resolved issue5)

- improve automatic server handling via "devpi use"

- for "devpi server" you now need to specify "--log" to see log lines

- make "devpi use" also show base indexes by default

- fix issue4: auto-server data stored in non-dot dir

- renamed some --longoptions to --long-options
  (thanks @hynek and others for pushing)

0.9.1
=====

- refined "python setup.py" calls from ``devpi upload`` with proper
  ``__file__`` attributes.  Thanks Andi Albrecht.

- implemented new "devpi push" command for pushing out releases

- improved error handling for devpi upload

- fix logoff if not logged in

- don't use --force-reinstall when using pip

0.9 initial release
===================

