Hello community,

here is the log from the commit of package python-dephell for openSUSE:Factory 
checked in at 2019-09-26 20:43:15
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-dephell (Old)
 and      /work/SRC/openSUSE:Factory/.python-dephell.new.2352 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-dephell"

Thu Sep 26 20:43:15 2019 rev:2 rq:733401 version:0.7.7

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-dephell/python-dephell.changes    
2019-09-16 10:50:05.731174619 +0200
+++ /work/SRC/openSUSE:Factory/.python-dephell.new.2352/python-dephell.changes  
2019-09-26 20:43:37.382159497 +0200
@@ -1,0 +2,9 @@
+Thu Sep 26 10:52:40 UTC 2019 - Tomáš Chvátal <tchva...@suse.com>
+
+- Update to 0.7.7:
+  * Lazy dependencies overwriting (#232, #229).
+  * Removed Snyk support (#245).
+  * Added custom User-Agent to all requests (#242, #243, #231)
+  * Updated documentation interface (#241).
+
+-------------------------------------------------------------------

Old:
----
  dephell-0.7.6.tar.gz

New:
----
  dephell-0.7.7.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-dephell.spec ++++++
--- /var/tmp/diff_new_pack.8eWdrA/_old  2019-09-26 20:43:38.118157531 +0200
+++ /var/tmp/diff_new_pack.8eWdrA/_new  2019-09-26 20:43:38.122157520 +0200
@@ -19,7 +19,7 @@
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 %define skip_python2 1
 Name:           python-dephell
-Version:        0.7.6
+Version:        0.7.7
 Release:        0
 Summary:        Dependency resolution for Python
 License:        MIT

++++++ dephell-0.7.6.tar.gz -> dephell-0.7.7.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dephell-0.7.6/PKG-INFO new/dephell-0.7.7/PKG-INFO
--- old/dephell-0.7.6/PKG-INFO  1970-01-01 01:00:00.000000000 +0100
+++ new/dephell-0.7.7/PKG-INFO  1970-01-01 01:00:00.000000000 +0100
@@ -1,9 +1,10 @@
 Metadata-Version: 2.1
 Name: dephell
-Version: 0.7.6
+Version: 0.7.7
 Summary: Dependency resolution for Python
+Home-Page: https://dephell.org/
 Project-URL: Repository, https://github.com/dephell/dephell
-Project-URL: Documentation, https://dephell.readthedocs.io/ 
+Project-URL: Documentation, https://dephell.org/docs/
 Author: Gram
 Author-email: master_f...@mail.ru
 License: MIT
@@ -70,28 +71,26 @@
 Features:
 
 
-* Manage dependencies: `convert between formats 
<https://dephell.readthedocs.io/cmd-deps-convert.html>`_\ , `instаll 
<https://dephell.readthedocs.io/cmd-deps-install.html>`_\ , lock, `add new 
<https://dephell.readthedocs.io/cmd-deps-add.html>`_\ , resolve conflicts.
-* Manage virtual environments: `create 
<https://dephell.readthedocs.io/cmd-venv-create.html>`_\ , `remove 
<https://dephell.readthedocs.io/cmd-venv-destroy.html>`_\ , `inspect 
<https://dephell.readthedocs.io/cmd-inspect-venv.html>`_\ , `run shell 
<https://dephell.readthedocs.io/cmd-venv-shell.html>`_\ , `run commands inside 
<https://dephell.readthedocs.io/cmd-venv-run.html>`_.
-* `Install CLI tools <https://dephell.readthedocs.io/cmd-jail-install.html>`_ 
into isolated environments.
-* Manage packages: `install 
<https://dephell.readthedocs.io/cmd-package-install.html>`_\ , `list 
<https://dephell.readthedocs.io/cmd-package-list.html>`_\ , `search 
<https://dephell.readthedocs.io/cmd-package-search.html>`_ on PyPI.
-* `Build <https://dephell.readthedocs.io/cmd-project-build.html>`_ packages 
(to upload on PyPI), `test 
<https://dephell.readthedocs.io/cmd-project-test.html>`_\ , `bump project 
version <https://dephell.readthedocs.io/cmd-project-bump.html>`_.
-* `Discover licenses <https://dephell.readthedocs.io/cmd-deps-licenses.html>`_ 
of all project dependencies, show `outdated 
<https://dephell.readthedocs.io/cmd-deps-outdated.html>`_ packages, `find 
security issues <https://dephell.readthedocs.io/cmd-deps-audit.html>`_.
-* Generate `.editorconfig 
<https://dephell.readthedocs.io/cmd-generate-editorconfig.html>`_\ , `LICENSE 
<https://dephell.readthedocs.io/cmd-generate-license.html>`_\ , `AUTHORS 
<https://dephell.readthedocs.io/cmd-generate-authors.html>`_\ , `.travis.yml 
<https://dephell.readthedocs.io/cmd-generate-travis.html>`_.
+* Manage dependencies: `convert between formats 
<https://dephell.org/docs/cmd-deps-convert.html>`_\ , `instаll 
<https://dephell.org/docs/cmd-deps-install.html>`_\ , lock, `add new 
<https://dephell.org/docs/cmd-deps-add.html>`_\ , resolve conflicts.
+* Manage virtual environments: `create 
<https://dephell.org/docs/cmd-venv-create.html>`_\ , `remove 
<https://dephell.org/docs/cmd-venv-destroy.html>`_\ , `inspect 
<https://dephell.org/docs/cmd-inspect-venv.html>`_\ , `run shell 
<https://dephell.org/docs/cmd-venv-shell.html>`_\ , `run commands inside 
<https://dephell.org/docs/cmd-venv-run.html>`_.
+* `Install CLI tools <https://dephell.org/docs/cmd-jail-install.html>`_ into 
isolated environments.
+* Manage packages: `install 
<https://dephell.org/docs/cmd-package-install.html>`_\ , `list 
<https://dephell.org/docs/cmd-package-list.html>`_\ , `search 
<https://dephell.org/docs/cmd-package-search.html>`_ on PyPI.
+* `Build <https://dephell.org/docs/cmd-project-build.html>`_ packages (to 
upload on PyPI), `test <https://dephell.org/docs/cmd-project-test.html>`_\ , 
`bump project version <https://dephell.org/docs/cmd-project-bump.html>`_.
+* `Discover licenses <https://dephell.org/docs/cmd-deps-licenses.html>`_ of 
all project dependencies, show `outdated 
<https://dephell.org/docs/cmd-deps-outdated.html>`_ packages, `find security 
issues <https://dephell.org/docs/cmd-deps-audit.html>`_.
+* Generate `.editorconfig 
<https://dephell.org/docs/cmd-generate-editorconfig.html>`_\ , `LICENSE 
<https://dephell.org/docs/cmd-generate-license.html>`_\ , `AUTHORS 
<https://dephell.org/docs/cmd-generate-authors.html>`_\ , `.travis.yml 
<https://dephell.org/docs/cmd-generate-travis.html>`_.
 
-See `documentation <https://dephell.readthedocs.io/>`_ for more details.
+See `documentation <https://dephell.org/docs/>`_ for more details.
 
 Follow `@PythonDepHell <https://twitter.com/PythonDepHell>`_ on Twitter to get 
updates about new features and releases.
 
 Installation
 ------------
 
-The simplest way:
-
 .. code-block:: bash
 
-   python3 -m pip install --user dephell[full]
+   curl -L dephell.org/install | python3
 
-See `installation documentation 
<https://dephell.readthedocs.io/installation.html>`_ for better ways.
+See `installation documentation <https://dephell.org/docs/installation.html>`_ 
for alternatives.
 
 Supported formats
 -----------------
@@ -313,7 +312,7 @@
 
 Now, we can upload these packages to `PyPI <https://pypi.org/>`_ with `twine 
<https://github.com/pypa/twine/>`_.
 
-These are some of the most useful commands. See `documentation 
<https://dephell.readthedocs.io/>`_ for more details.
+These are some of the most useful commands. See `documentation 
<https://dephell.org/docs/>`_ for more details.
 
 Compatibility
 -------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dephell-0.7.6/README.md new/dephell-0.7.7/README.md
--- old/dephell-0.7.6/README.md 2019-06-26 14:54:52.000000000 +0200
+++ new/dephell-0.7.7/README.md 2019-07-23 15:14:05.000000000 +0200
@@ -21,27 +21,25 @@
 
 Features:
 
-+ Manage dependencies: [convert between 
formats](https://dephell.readthedocs.io/cmd-deps-convert.html), 
[instаll](https://dephell.readthedocs.io/cmd-deps-install.html), lock, [add 
new](https://dephell.readthedocs.io/cmd-deps-add.html), resolve conflicts.
-+ Manage virtual environments: 
[create](https://dephell.readthedocs.io/cmd-venv-create.html), 
[remove](https://dephell.readthedocs.io/cmd-venv-destroy.html), 
[inspect](https://dephell.readthedocs.io/cmd-inspect-venv.html), [run 
shell](https://dephell.readthedocs.io/cmd-venv-shell.html), [run commands 
inside](https://dephell.readthedocs.io/cmd-venv-run.html).
-+ [Install CLI tools](https://dephell.readthedocs.io/cmd-jail-install.html) 
into isolated environments.
-+ Manage packages: 
[install](https://dephell.readthedocs.io/cmd-package-install.html), 
[list](https://dephell.readthedocs.io/cmd-package-list.html), 
[search](https://dephell.readthedocs.io/cmd-package-search.html) on PyPI.
-+ [Build](https://dephell.readthedocs.io/cmd-project-build.html) packages (to 
upload on PyPI), [test](https://dephell.readthedocs.io/cmd-project-test.html), 
[bump project version](https://dephell.readthedocs.io/cmd-project-bump.html).
-+ [Discover licenses](https://dephell.readthedocs.io/cmd-deps-licenses.html) 
of all project dependencies, show 
[outdated](https://dephell.readthedocs.io/cmd-deps-outdated.html) packages, 
[find security issues](https://dephell.readthedocs.io/cmd-deps-audit.html).
-+ Generate 
[.editorconfig](https://dephell.readthedocs.io/cmd-generate-editorconfig.html), 
[LICENSE](https://dephell.readthedocs.io/cmd-generate-license.html), 
[AUTHORS](https://dephell.readthedocs.io/cmd-generate-authors.html), 
[.travis.yml](https://dephell.readthedocs.io/cmd-generate-travis.html).
++ Manage dependencies: [convert between 
formats](https://dephell.org/docs/cmd-deps-convert.html), 
[instаll](https://dephell.org/docs/cmd-deps-install.html), lock, [add 
new](https://dephell.org/docs/cmd-deps-add.html), resolve conflicts.
++ Manage virtual environments: 
[create](https://dephell.org/docs/cmd-venv-create.html), 
[remove](https://dephell.org/docs/cmd-venv-destroy.html), 
[inspect](https://dephell.org/docs/cmd-inspect-venv.html), [run 
shell](https://dephell.org/docs/cmd-venv-shell.html), [run commands 
inside](https://dephell.org/docs/cmd-venv-run.html).
++ [Install CLI tools](https://dephell.org/docs/cmd-jail-install.html) into 
isolated environments.
++ Manage packages: 
[install](https://dephell.org/docs/cmd-package-install.html), 
[list](https://dephell.org/docs/cmd-package-list.html), 
[search](https://dephell.org/docs/cmd-package-search.html) on PyPI.
++ [Build](https://dephell.org/docs/cmd-project-build.html) packages (to upload 
on PyPI), [test](https://dephell.org/docs/cmd-project-test.html), [bump project 
version](https://dephell.org/docs/cmd-project-bump.html).
++ [Discover licenses](https://dephell.org/docs/cmd-deps-licenses.html) of all 
project dependencies, show 
[outdated](https://dephell.org/docs/cmd-deps-outdated.html) packages, [find 
security issues](https://dephell.org/docs/cmd-deps-audit.html).
++ Generate 
[.editorconfig](https://dephell.org/docs/cmd-generate-editorconfig.html), 
[LICENSE](https://dephell.org/docs/cmd-generate-license.html), 
[AUTHORS](https://dephell.org/docs/cmd-generate-authors.html), 
[.travis.yml](https://dephell.org/docs/cmd-generate-travis.html).
 
-See [documentation](https://dephell.readthedocs.io/) for more details.
+See [documentation](https://dephell.org/docs/) for more details.
 
 Follow [@PythonDepHell](https://twitter.com/PythonDepHell) on Twitter to get 
updates about new features and releases.
 
 ## Installation
 
-The simplest way:
-
 ```bash
-python3 -m pip install --user dephell[full]
+curl -L dephell.org/install | python3
 ```
 
-See [installation 
documentation](https://dephell.readthedocs.io/installation.html) for better 
ways.
+See [installation documentation](https://dephell.org/docs/installation.html) 
for alternatives.
 
 ## Supported formats
 
@@ -249,7 +247,7 @@
 
 Now, we can upload these packages to [PyPI](https://pypi.org/) with 
[twine](https://github.com/pypa/twine/).
 
-These are some of the most useful commands. See 
[documentation](https://dephell.readthedocs.io/) for more details.
+These are some of the most useful commands. See 
[documentation](https://dephell.org/docs/) for more details.
 
 ## Compatibility
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dephell-0.7.6/README.rst new/dephell-0.7.7/README.rst
--- old/dephell-0.7.6/README.rst        2019-07-17 16:51:24.000000000 +0200
+++ new/dephell-0.7.7/README.rst        2019-07-23 15:47:00.000000000 +0200
@@ -45,28 +45,26 @@
 Features:
 
 
-* Manage dependencies: `convert between formats 
<https://dephell.readthedocs.io/cmd-deps-convert.html>`_\ , `instаll 
<https://dephell.readthedocs.io/cmd-deps-install.html>`_\ , lock, `add new 
<https://dephell.readthedocs.io/cmd-deps-add.html>`_\ , resolve conflicts.
-* Manage virtual environments: `create 
<https://dephell.readthedocs.io/cmd-venv-create.html>`_\ , `remove 
<https://dephell.readthedocs.io/cmd-venv-destroy.html>`_\ , `inspect 
<https://dephell.readthedocs.io/cmd-inspect-venv.html>`_\ , `run shell 
<https://dephell.readthedocs.io/cmd-venv-shell.html>`_\ , `run commands inside 
<https://dephell.readthedocs.io/cmd-venv-run.html>`_.
-* `Install CLI tools <https://dephell.readthedocs.io/cmd-jail-install.html>`_ 
into isolated environments.
-* Manage packages: `install 
<https://dephell.readthedocs.io/cmd-package-install.html>`_\ , `list 
<https://dephell.readthedocs.io/cmd-package-list.html>`_\ , `search 
<https://dephell.readthedocs.io/cmd-package-search.html>`_ on PyPI.
-* `Build <https://dephell.readthedocs.io/cmd-project-build.html>`_ packages 
(to upload on PyPI), `test 
<https://dephell.readthedocs.io/cmd-project-test.html>`_\ , `bump project 
version <https://dephell.readthedocs.io/cmd-project-bump.html>`_.
-* `Discover licenses <https://dephell.readthedocs.io/cmd-deps-licenses.html>`_ 
of all project dependencies, show `outdated 
<https://dephell.readthedocs.io/cmd-deps-outdated.html>`_ packages, `find 
security issues <https://dephell.readthedocs.io/cmd-deps-audit.html>`_.
-* Generate `.editorconfig 
<https://dephell.readthedocs.io/cmd-generate-editorconfig.html>`_\ , `LICENSE 
<https://dephell.readthedocs.io/cmd-generate-license.html>`_\ , `AUTHORS 
<https://dephell.readthedocs.io/cmd-generate-authors.html>`_\ , `.travis.yml 
<https://dephell.readthedocs.io/cmd-generate-travis.html>`_.
+* Manage dependencies: `convert between formats 
<https://dephell.org/docs/cmd-deps-convert.html>`_\ , `instаll 
<https://dephell.org/docs/cmd-deps-install.html>`_\ , lock, `add new 
<https://dephell.org/docs/cmd-deps-add.html>`_\ , resolve conflicts.
+* Manage virtual environments: `create 
<https://dephell.org/docs/cmd-venv-create.html>`_\ , `remove 
<https://dephell.org/docs/cmd-venv-destroy.html>`_\ , `inspect 
<https://dephell.org/docs/cmd-inspect-venv.html>`_\ , `run shell 
<https://dephell.org/docs/cmd-venv-shell.html>`_\ , `run commands inside 
<https://dephell.org/docs/cmd-venv-run.html>`_.
+* `Install CLI tools <https://dephell.org/docs/cmd-jail-install.html>`_ into 
isolated environments.
+* Manage packages: `install 
<https://dephell.org/docs/cmd-package-install.html>`_\ , `list 
<https://dephell.org/docs/cmd-package-list.html>`_\ , `search 
<https://dephell.org/docs/cmd-package-search.html>`_ on PyPI.
+* `Build <https://dephell.org/docs/cmd-project-build.html>`_ packages (to 
upload on PyPI), `test <https://dephell.org/docs/cmd-project-test.html>`_\ , 
`bump project version <https://dephell.org/docs/cmd-project-bump.html>`_.
+* `Discover licenses <https://dephell.org/docs/cmd-deps-licenses.html>`_ of 
all project dependencies, show `outdated 
<https://dephell.org/docs/cmd-deps-outdated.html>`_ packages, `find security 
issues <https://dephell.org/docs/cmd-deps-audit.html>`_.
+* Generate `.editorconfig 
<https://dephell.org/docs/cmd-generate-editorconfig.html>`_\ , `LICENSE 
<https://dephell.org/docs/cmd-generate-license.html>`_\ , `AUTHORS 
<https://dephell.org/docs/cmd-generate-authors.html>`_\ , `.travis.yml 
<https://dephell.org/docs/cmd-generate-travis.html>`_.
 
-See `documentation <https://dephell.readthedocs.io/>`_ for more details.
+See `documentation <https://dephell.org/docs/>`_ for more details.
 
 Follow `@PythonDepHell <https://twitter.com/PythonDepHell>`_ on Twitter to get 
updates about new features and releases.
 
 Installation
 ------------
 
-The simplest way:
-
 .. code-block:: bash
 
-   python3 -m pip install --user dephell[full]
+   curl -L dephell.org/install | python3
 
-See `installation documentation 
<https://dephell.readthedocs.io/installation.html>`_ for better ways.
+See `installation documentation <https://dephell.org/docs/installation.html>`_ 
for alternatives.
 
 Supported formats
 -----------------
@@ -288,7 +286,7 @@
 
 Now, we can upload these packages to `PyPI <https://pypi.org/>`_ with `twine 
<https://github.com/pypa/twine/>`_.
 
-These are some of the most useful commands. See `documentation 
<https://dephell.readthedocs.io/>`_ for more details.
+These are some of the most useful commands. See `documentation 
<https://dephell.org/docs/>`_ for more details.
 
 Compatibility
 -------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dephell-0.7.6/dephell/__init__.py 
new/dephell-0.7.7/dephell/__init__.py
--- old/dephell-0.7.6/dephell/__init__.py       2019-07-17 16:50:42.000000000 
+0200
+++ new/dephell-0.7.7/dephell/__init__.py       2019-07-23 15:45:52.000000000 
+0200
@@ -13,6 +13,6 @@
 """
 
 
-__version__ = '0.7.6'
+__version__ = '0.7.7'
 __author__ = 'Gram (@orsinium)'
 __license__ = 'MIT'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dephell-0.7.6/dephell/actions/_downloads.py 
new/dephell-0.7.7/dephell/actions/_downloads.py
--- old/dephell-0.7.6/dephell/actions/_downloads.py     2019-07-02 
14:04:29.000000000 +0200
+++ new/dephell-0.7.7/dephell/actions/_downloads.py     2019-07-23 
15:14:05.000000000 +0200
@@ -6,7 +6,9 @@
 
 # external
 import attr
-import requests
+
+# app
+from ..networking import requests_session
 
 
 RECENT_URL = 'https://pypistats.org/api/packages/{}/recent'
@@ -49,7 +51,8 @@
 
 def get_total_downloads(name: str) -> Dict[str, int]:
     url = RECENT_URL.format(name)
-    response = requests.get(url)
+    with requests_session() as session:
+        response = session.get(url)
     response.raise_for_status()
     body = response.json()['data']
     return dict(
@@ -61,7 +64,8 @@
 
 def get_downloads_by_category(*, category: str, name: str) -> List[Dict[str, 
int]]:
     url = CATEGORIES_URLS[category].format(name)
-    response = requests.get(url)
+    with requests_session() as session:
+        response = session.get(url)
     response.raise_for_status()
     body = response.json()['data']
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dephell-0.7.6/dephell/actions/_travis.py 
new/dephell-0.7.7/dephell/actions/_travis.py
--- old/dephell-0.7.6/dephell/actions/_travis.py        2019-05-15 
16:50:45.000000000 +0200
+++ new/dephell-0.7.7/dephell/actions/_travis.py        2019-07-23 
15:14:05.000000000 +0200
@@ -17,7 +17,7 @@
   - tree
   # install DepHell
   # https://github.com/travis-ci/travis-ci/issues/8589
-  - curl https://raw.githubusercontent.com/dephell/dephell/master/install.py | 
/opt/python/3.7/bin/python
+  - curl -L dephell.org/install | /opt/python/3.7/bin/python
   - dephell inspect self
 install:
   - dephell venv create --env=$ENV 
--python="/opt/python/$TRAVIS_PYTHON_VERSION/bin/python"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dephell-0.7.6/dephell/cacher.py 
new/dephell-0.7.7/dephell/cacher.py
--- old/dephell-0.7.6/dephell/cacher.py 2019-07-11 15:29:36.000000000 +0200
+++ new/dephell-0.7.7/dephell/cacher.py 2019-07-23 15:14:05.000000000 +0200
@@ -11,13 +11,13 @@
 from itertools import islice
 
 # external
-import requests
 from packaging.requirements import Requirement
 
 # project
 from dephell.constants import DEFAULT_WAREHOUSE
 from dephell.controllers import DependencyMaker
 from dephell.models import RootDependency
+from dephell.networking import requests_session
 from dephell.repositories import WarehouseAPIRepo
 
 
@@ -27,7 +27,8 @@
 
 def get_deps():
     root = RootDependency()
-    response = requests.get(URL)
+    with requests_session() as session:
+        response = session.get(URL)
     for info in response.json()['rows']:
         yield from DependencyMaker.from_requirement(
             source=root,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dephell-0.7.6/dephell/commands/base.py 
new/dephell-0.7.7/dephell/commands/base.py
--- old/dephell-0.7.6/dephell/commands/base.py  2019-07-17 16:49:18.000000000 
+0200
+++ new/dephell-0.7.7/dephell/commands/base.py  2019-07-23 15:14:05.000000000 
+0200
@@ -69,7 +69,7 @@
             prog='dephell ' + name,
             usage='dephell {} [OPTIONS] {}'.format(name, usage.upper()),
             description=cls.__doc__,
-            
epilog='https://dephell.readthedocs.io/cmd-{}.html'.format(name.replace(' ', 
'-')),
+            
epilog='https://dephell.org/docs/cmd-{}.html'.format(name.replace(' ', '-')),
         )
 
     @classmethod
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dephell-0.7.6/dephell/commands/deps_audit.py 
new/dephell-0.7.7/dephell/commands/deps_audit.py
--- old/dephell-0.7.6/dephell/commands/deps_audit.py    2019-07-11 
15:29:36.000000000 +0200
+++ new/dephell-0.7.7/dephell/commands/deps_audit.py    2019-07-23 
15:14:05.000000000 +0200
@@ -4,7 +4,7 @@
 # app
 from ..actions import get_packages, make_json
 from ..config import builders
-from ..controllers import Safety, Snyk
+from ..controllers import Safety
 from .base import BaseCommand
 
 
@@ -44,13 +44,10 @@
             packages = resolver.graph
 
         safety = Safety()
-        snyk = Snyk()
-
         data = []
         for dep in packages:
             release = dep.group.best_release
             vulns = safety.get(name=dep.name, version=release.version)
-            vulns += snyk.get(name=dep.name, version=release.version)
             if not vulns:
                 continue
             releases = dep.repo.get_releases(dep)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dephell-0.7.6/dephell/controllers/_docker.py 
new/dephell-0.7.7/dephell/controllers/_docker.py
--- old/dephell-0.7.6/dephell/controllers/_docker.py    2019-07-15 
17:56:51.000000000 +0200
+++ new/dephell-0.7.7/dephell/controllers/_docker.py    2019-07-23 
15:14:05.000000000 +0200
@@ -7,11 +7,11 @@
 import attr
 import docker
 import dockerpty
-import requests
 from dephell_venvs import VEnvs
 
 # app
 from ..cached_property import cached_property
+from ..networking import requests_session
 
 
 DOCKER_PREFIX = 'dephell-'
@@ -66,7 +66,8 @@
         url = 
'https://hub.docker.com/v2/repositories/{}/tags/'.format(repository)
         tags = dict()
         while url is not None:
-            response = requests.get(url)
+            with requests_session() as session:
+                response = session.get(url)
             response.raise_for_status()
             content = response.json()
             url = content['next']
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dephell-0.7.6/dephell/controllers/_safety.py 
new/dephell-0.7.7/dephell/controllers/_safety.py
--- old/dephell-0.7.6/dephell/controllers/_safety.py    2019-07-02 
14:04:29.000000000 +0200
+++ new/dephell-0.7.7/dephell/controllers/_safety.py    2019-07-23 
15:14:05.000000000 +0200
@@ -4,13 +4,13 @@
 
 # external
 import attr
-import requests
 from dephell_specifier import RangeSpecifier
 from packaging.version import Version
 
 # app
 from ..cache import JSONCache
 from ..cached_property import cached_property
+from ..networking import requests_session
 
 
 DUMP_URL = 
'https://github.com/pyupio/safety-db/raw/master/data/insecure_full.json'
@@ -38,7 +38,8 @@
         cache = JSONCache('pyup.io', ttl=3600 * 24)
         records = cache.load()
         if records is None:
-            response = requests.get(self.url)
+            with requests_session() as session:
+                response = session.get(self.url)
             response.raise_for_status()
             records = response.json()
             cache.dump(records)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dephell-0.7.6/dephell/controllers/_snyk.py 
new/dephell-0.7.7/dephell/controllers/_snyk.py
--- old/dephell-0.7.6/dephell/controllers/_snyk.py      2019-07-04 
18:23:21.000000000 +0200
+++ new/dephell-0.7.7/dephell/controllers/_snyk.py      2019-07-23 
15:14:05.000000000 +0200
@@ -6,12 +6,12 @@
 
 # external
 import attr
-import requests
 from dephell_specifier import RangeSpecifier
 from packaging.version import VERSION_PATTERN, Version
 
 # app
 from ..cached_property import cached_property
+from ..networking import requests_session
 
 
 RSS_URL = 'https://snyk.io/vuln/feed.xml?type=pip'
@@ -37,12 +37,15 @@
 class Snyk:
     """
     https://snyk.io/vuln?type=pip
+
+    RSS was broken!
     """
     url = attr.ib(type=str, default=RSS_URL)
 
     @cached_property
     def vulns(self) -> Dict[str, List[SnykVulnInfo]]:
-        response = requests.get(self.url)
+        with requests_session() as session:
+            response = session.get(self.url)
         response.raise_for_status()
         root = ElementTree.fromstring(response.content)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dephell-0.7.6/dephell/converters/imports.py 
new/dephell-0.7.7/dephell/converters/imports.py
--- old/dephell-0.7.6/dephell/converters/imports.py     2019-07-11 
17:14:47.000000000 +0200
+++ new/dephell-0.7.7/dephell/converters/imports.py     2019-07-23 
15:14:05.000000000 +0200
@@ -4,7 +4,6 @@
 from typing import Dict, List, Set
 
 # external
-import requests
 from dephell_discover import Root as PackageRoot
 
 # app
@@ -12,6 +11,7 @@
 from ..cached_property import cached_property
 from ..controllers import DependencyMaker
 from ..models import RootDependency
+from ..networking import requests_session
 from .base import BaseConverter
 
 
@@ -97,7 +97,8 @@
         cache = TextCache('imports', 'aliases', ttl=CACHE_TTL)
         lines = cache.load()
         if not lines:
-            response = requests.get(MAPPING_URLS[0])
+            with requests_session() as session:
+                response = session.get(MAPPING_URLS[0])
             lines = response.text.splitlines()
             cache.dump(lines)
 
@@ -116,7 +117,8 @@
         if lines:
             return lines
 
-        response = requests.get(STDLIB_URL)
+        with requests_session() as session:
+            response = session.get(STDLIB_URL)
         lines = response.text.splitlines()
         cache.dump(lines)
         return lines
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dephell-0.7.6/dephell/converters/pip.py 
new/dephell-0.7.7/dephell/converters/pip.py
--- old/dephell-0.7.6/dephell/converters/pip.py 2019-07-17 16:49:18.000000000 
+0200
+++ new/dephell-0.7.7/dephell/converters/pip.py 2019-07-23 15:14:05.000000000 
+0200
@@ -48,11 +48,8 @@
             package=PackageRoot(path=self.project_path or path.parent),
         )
 
-        finder = PackageFinder(
-            find_links=[],
-            index_urls=[],
-            session=PipSession(),
-        )
+        finder = self._get_finder()
+
         # 
https://github.com/pypa/pip/blob/master/src/pip/_internal/req/constructors.py
         with chdir(self.resolve_path or path.parent):
             reqs = parse_requirements(
@@ -128,6 +125,22 @@
             lines.append(self._format_req(req=req, with_hashes=with_hashes))
         return '\n'.join(lines) + '\n'
 
+    @staticmethod
+    def _get_finder():
+        try:
+            return PackageFinder(find_links=[], index_urls=[], 
session=PipSession())
+        except TypeError:
+            pass
+
+        from pip._internal.models.search_scope import SearchScope
+        from pip._internal.models.selection_prefs import SelectionPreferences
+
+        return PackageFinder.create(
+            search_scope=SearchScope(find_links=[], index_urls=[]),
+            selection_prefs=SelectionPreferences(allow_yanked=False),
+            session=PipSession(),
+        )
+
     # https://github.com/pypa/packaging/blob/master/packaging/requirements.py
     # https://github.com/jazzband/pip-tools/blob/master/piptools/utils.py
     def _format_req(self, req, *, with_hashes: bool = True) -> str:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dephell-0.7.6/dephell/converters/pipfile.py 
new/dephell-0.7.7/dephell/converters/pipfile.py
--- old/dephell-0.7.6/dephell/converters/pipfile.py     2019-07-17 
16:49:18.000000000 +0200
+++ new/dephell-0.7.7/dephell/converters/pipfile.py     2019-07-23 
13:45:54.000000000 +0200
@@ -7,6 +7,7 @@
 from dephell_discover import Root as PackageRoot
 from dephell_pythons import Pythons
 from dephell_specifier import RangeSpecifier
+from packaging.utils import canonicalize_name
 
 # app
 from ..controllers import DependencyMaker, RepositoriesRegistry
@@ -119,22 +120,41 @@
             doc['requires']['python_version'] = str(python.get_short_version())
 
         # dependencies
+        names_mapping = dict()
         for section, is_dev in [('packages', False), ('dev-packages', True)]:
             # create section if doesn't exist
             if section not in doc:
                 doc[section] = tomlkit.table()
                 continue
 
-            # clean packages from old packages
-            req_names = {req.name for req in reqs if is_dev is req.is_dev}
-            for old_req in {name for name in doc[section] if name not in 
req_names}:
-                del doc[section][old_req]
+            # clean file from outdated dependencies
+            names = {req.name for req in reqs if is_dev is req.is_dev}
+            for name in dict(doc[section]):
+                normalized_name = canonicalize_name(name)
+                names_mapping[normalized_name] = name
+                if normalized_name not in names:
+                    del doc[section][name]
 
         # write new packages
         for section, is_dev in [('packages', False), ('dev-packages', True)]:
             for req in reqs:
-                if is_dev is req.is_dev:
-                    doc[section][req.raw_name] = self._format_req(req=req)
+                if is_dev is not req.is_dev:
+                    continue
+                raw_name = names_mapping.get(req.name, req.raw_name)
+                old_spec = doc[section].get(raw_name)
+
+                # do not overwrite dep if nothing is changed
+                if old_spec:
+                    old_dep = self._make_deps(
+                        root=RootDependency(),
+                        name=raw_name,
+                        content=old_spec,
+                    )[0]
+                    if req.same_dep(old_dep):
+                        continue
+
+                # overwrite
+                doc[section][raw_name] = self._format_req(req=req)
 
         return tomlkit.dumps(doc).rstrip() + '\n'
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dephell-0.7.6/dephell/converters/poetry.py 
new/dephell-0.7.7/dephell/converters/poetry.py
--- old/dephell-0.7.6/dephell/converters/poetry.py      2019-07-17 
16:49:18.000000000 +0200
+++ new/dephell-0.7.7/dephell/converters/poetry.py      2019-07-23 
13:45:54.000000000 +0200
@@ -7,6 +7,7 @@
 import tomlkit
 from dephell_discover import Root as PackageRoot
 from dephell_specifier import RangeSpecifier
+from packaging.utils import canonicalize_name
 
 # app
 from ..controllers import DependencyMaker, Readme, RepositoriesRegistry
@@ -159,24 +160,47 @@
         self._add_entrypoints(section=section, entrypoints=project.entrypoints)
 
         # dependencies
+        names_mapping = dict()
         for section_name, is_dev in [('dependencies', False), 
('dev-dependencies', True)]:
             if section_name not in section:
                 section[section_name] = tomlkit.table()
                 continue
-            # clean dependencies from old dependencies
+
+            # clean file from outdated dependencies
             names = {req.name for req in reqs if is_dev is req.is_dev} | 
{'python'}
             for name in dict(section[section_name]):
-                if name not in names:
+                normalized_name = canonicalize_name(name)
+                names_mapping[normalized_name] = name
+                if normalized_name not in names:
                     del section[section_name][name]
 
         # python version
-        section['dependencies']['python'] = str(project.python) or '*'
+        if section['dependencies'].get('python', '') != (project.python or 
'*'):
+            section['dependencies']['python'] = str(project.python) or '*'
 
         # write dependencies
         for section_name, is_dev in [('dependencies', False), 
('dev-dependencies', True)]:
             for req in reqs:
-                if is_dev is req.is_dev:
-                    section[section_name][req.raw_name] = 
self._format_req(req=req)
+                if is_dev is not req.is_dev:
+                    continue
+                raw_name = names_mapping.get(req.name, req.raw_name)
+                old_spec = section[section_name].get(raw_name)
+
+                # do not overwrite dep if nothing is changed
+                if old_spec:
+                    old_dep = self._make_deps(
+                        root=RootDependency(),
+                        name=raw_name,
+                        content=old_spec,
+                        envs={'main'},
+                    )[0]
+                    if req.same_dep(old_dep):
+                        continue
+
+                # overwrite
+                section[section_name][raw_name] = self._format_req(req=req)
+
+            # remove empty section
             if not section[section_name].value:
                 del section[section_name]
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dephell-0.7.6/dephell/models/dependency.py 
new/dephell-0.7.7/dephell/models/dependency.py
--- old/dephell-0.7.6/dephell/models/dependency.py      2019-07-15 
17:56:51.000000000 +0200
+++ new/dephell-0.7.7/dephell/models/dependency.py      2019-07-23 
13:45:54.000000000 +0200
@@ -21,6 +21,7 @@
     constraint = attr.ib(type=Constraint)
     repo = attr.ib(repr=False)
     link = attr.ib(default=None, repr=False)
+    marker = None
 
     # flags
     applied = attr.ib(type=bool, default=False, repr=False)
@@ -43,7 +44,7 @@
 
     extra = None
 
-    # properties
+    # prlicenseoperties
 
     @cached_property
     def name(self) -> str:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dephell-0.7.6/dephell/models/requirement.py 
new/dephell-0.7.7/dephell/models/requirement.py
--- old/dephell-0.7.6/dephell/models/requirement.py     2019-07-17 
16:49:18.000000000 +0200
+++ new/dephell-0.7.7/dephell/models/requirement.py     2019-07-23 
13:45:54.000000000 +0200
@@ -3,7 +3,8 @@
 from typing import Iterable, Optional, Set, Tuple
 
 # external
-from dephell_links import DirLink, FileLink
+import attr
+from dephell_links import DirLink, FileLink, VCSLink
 
 # app
 from ..cached_property import cached_property
@@ -217,6 +218,30 @@
             return False
         return bool(self.dep.envs - {'dev', 'main'})
 
+    # methods
+
+    @staticmethod
+    def _get_comparable_dict(dep) -> dict:
+        excluded = {'constraint', 'repo', 'link', 'marker', 'license', 
'inherited_envs', 'locations'}
+        result = attr.asdict(dep, recurse=True, filter=lambda x, _: x.name not 
in excluded)
+        result['constraint'] = str(dep.constraint)
+        if dep.marker:
+            result['marker'] = str(dep.marker)
+        if isinstance(dep.link, VCSLink):
+            result['link'] = attr.asdict(dep.link, recurse=True)
+        result['license'] = str(dep.license)
+        return result
+
+    def same_dep(self, other_dep) -> bool:
+        """Is given dependency the same as dependency inside of this 
Requirement?
+
+        It's used in converters to not overwrite unchanged requirements.
+        It looks in this way to make comparation as easy as possible:
+        converters produce dependencies, but get requirements.
+        So, it's easier to compare requirement with dependency.
+        """
+        return self._get_comparable_dict(self.dep) == 
self._get_comparable_dict(other_dep)
+
     # magic methods
 
     def __iter__(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dephell-0.7.6/dephell/networking.py 
new/dephell-0.7.7/dephell/networking.py
--- old/dephell-0.7.6/dephell/networking.py     2019-07-11 15:29:36.000000000 
+0200
+++ new/dephell-0.7.7/dephell/networking.py     2019-07-23 15:14:05.000000000 
+0200
@@ -3,8 +3,15 @@
 
 # external
 import certifi
+import requests
 from aiohttp import ClientSession, TCPConnector
 
+# app
+from . import __version__
+
+
+USER_AGENT = 'DepHell/{version}'.format(version=__version__)
+
 
 def aiohttp_session(*, auth=None, **kwargs):
     headers = dict()
@@ -16,3 +23,16 @@
     except TypeError:
         connector = TCPConnector(ssl_context=ssl_context)
     return ClientSession(headers=headers, connector=connector, **kwargs)
+
+
+def requests_session(*, auth=None, headers=None, **kwargs):
+    session = requests.Session()
+    if auth:
+        session.auth = auth
+    if headers is None:
+        headers = dict()
+    headers.setdefault('User-Agent', USER_AGENT)
+    session.headers = headers
+    if kwargs:
+        session.__dict__.update(kwargs)
+    return session
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dephell-0.7.6/dephell/repositories/_conda/_cloud.py 
new/dephell-0.7.7/dephell/repositories/_conda/_cloud.py
--- old/dephell-0.7.6/dephell/repositories/_conda/_cloud.py     2019-07-11 
15:29:36.000000000 +0200
+++ new/dephell-0.7.7/dephell/repositories/_conda/_cloud.py     2019-07-23 
15:14:05.000000000 +0200
@@ -10,7 +10,6 @@
 
 # external
 import attr
-import requests
 from dephell_specifier import RangeSpecifier
 from packaging.utils import canonicalize_name
 from packaging.version import parse
@@ -21,6 +20,7 @@
 from ...config import config
 from ...models.release import Release
 from ...models.simple_dependency import SimpleDependency
+from ...networking import requests_session
 from ._base import CondaBaseRepo
 
 
@@ -129,7 +129,8 @@
                     allowed=', '.join(self._allowed_values[field]),
                 ))
 
-        response = requests.get(self._search_url, params=fields)
+        with requests_session() as session:
+            response = session.get(self._search_url, params=fields)
         response.raise_for_status()
 
         results = []
@@ -203,7 +204,8 @@
                 continue
 
             url = self._get_chan_url(channel=channel)
-            response = requests.get(url)
+            with requests_session() as session:
+                response = session.get(url)
             response.raise_for_status()
             channel_packages = dict()
             for name, info in response.json()['packages'].items():
@@ -246,7 +248,8 @@
 
             channel_deps = defaultdict(dict)
             for url in self._get_urls(channel=channel):
-                response = requests.get(url)
+                with requests_session() as session:
+                    response = session.get(url)
                 response.raise_for_status()
                 content = 
BZ2Decompressor().decompress(response.content).decode('utf-8')
                 base_url = url.rsplit('/', 1)[0]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dephell-0.7.6/dephell/repositories/_conda/_git.py 
new/dephell-0.7.7/dephell/repositories/_conda/_git.py
--- old/dephell-0.7.6/dephell/repositories/_conda/_git.py       2019-07-11 
15:29:36.000000000 +0200
+++ new/dephell-0.7.7/dephell/repositories/_conda/_git.py       2019-07-23 
15:14:05.000000000 +0200
@@ -12,7 +12,6 @@
 
 # external
 import attr
-import requests
 from dephell_specifier import RangeSpecifier
 from jinja2 import Environment
 
@@ -22,7 +21,7 @@
 from ...config import config
 from ...models.release import Release
 from ...models.simple_dependency import SimpleDependency
-from ...networking import aiohttp_session
+from ...networking import aiohttp_session, requests_session
 from ...yaml import yaml_load
 from ._base import CondaBaseRepo
 
@@ -170,7 +169,8 @@
         revs = []
         for cookbook in cookbooks:
             url = HISTORY_URL.format(**cookbook)
-            response = requests.get(url)
+            with requests_session() as session:
+                response = session.get(url)
             if response.status_code != 200:
                 continue
             for commit in response.json():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dephell-0.7.6/dephell/repositories/_git/bitbucket.py 
new/dephell-0.7.7/dephell/repositories/_git/bitbucket.py
--- old/dephell-0.7.6/dephell/repositories/_git/bitbucket.py    2019-07-11 
15:29:36.000000000 +0200
+++ new/dephell-0.7.7/dephell/repositories/_git/bitbucket.py    2019-07-23 
15:14:05.000000000 +0200
@@ -1,12 +1,10 @@
 # built-in
 import re
 
-# external
-import requests
-
 # app
 from ...cached_property import cached_property
 from ...config import config
+from ...networking import requests_session
 from .base import BaseRepo
 
 
@@ -30,7 +28,8 @@
             author=self.author,
             name=self.name,
         )
-        response = requests.get(url)
+        with requests_session() as session:
+            response = session.get(url)
 
         tags = []
         for tag in response.json()['values']:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dephell-0.7.6/dephell/repositories/_git/github.py 
new/dephell-0.7.7/dephell/repositories/_git/github.py
--- old/dephell-0.7.6/dephell/repositories/_git/github.py       2019-07-02 
14:04:29.000000000 +0200
+++ new/dephell-0.7.7/dephell/repositories/_git/github.py       2019-07-23 
15:14:05.000000000 +0200
@@ -1,10 +1,8 @@
 # built-in
 import re
 
-# external
-import requests
-
 # app
+from ...networking import requests_session
 from ..cached_property import cached_property
 from .base import BaseRepo
 
@@ -27,7 +25,8 @@
             author=self.author,
             name=self.name,
         )
-        response = requests.get(url)
+        with requests_session() as session:
+            response = session.get(url)
 
         tags = []
         for release in response.json():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dephell-0.7.6/dephell/repositories/_git/gitlab.py 
new/dephell-0.7.7/dephell/repositories/_git/gitlab.py
--- old/dephell-0.7.6/dephell/repositories/_git/gitlab.py       2019-07-02 
14:04:29.000000000 +0200
+++ new/dephell-0.7.7/dephell/repositories/_git/gitlab.py       2019-07-23 
15:14:05.000000000 +0200
@@ -2,10 +2,8 @@
 import re
 from urllib.parse import urlencode
 
-# external
-import requests
-
 # app
+from ...networking import requests_session
 from ..cached_property import cached_property
 from .base import BaseRepo
 
@@ -28,7 +26,8 @@
         url = 'https://gitlab.com/api/v4/projects/{id}/repository/tags'.format(
             id=urlencode(self.author + '/' + self.name),
         )
-        response = requests.get(url)
+        with requests_session() as session:
+            response = session.get(url)
 
         tags = []
         for tag in response.json():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/dephell-0.7.6/dephell/repositories/_warehouse/_api.py 
new/dephell-0.7.7/dephell/repositories/_warehouse/_api.py
--- old/dephell-0.7.6/dephell/repositories/_warehouse/_api.py   2019-07-11 
15:29:36.000000000 +0200
+++ new/dephell-0.7.7/dephell/repositories/_warehouse/_api.py   2019-07-23 
15:14:05.000000000 +0200
@@ -9,7 +9,6 @@
 
 # external
 import attr
-import requests
 from dephell_licenses import License, licenses
 from packaging.requirements import Requirement
 
@@ -19,7 +18,7 @@
 from ...exceptions import InvalidFieldsError, PackageNotFoundError
 from ...models.author import Author
 from ...models.release import Release
-from ...networking import aiohttp_session
+from ...networking import aiohttp_session, requests_session
 from ._base import WarehouseBaseRepo
 
 
@@ -86,7 +85,8 @@
         data = cache.load()
         if data is None:
             url = '{url}{name}/json'.format(url=self.url, name=dep.base_name)
-            response = requests.get(url, auth=self.auth)
+            with requests_session() as session:
+                response = session.get(url, auth=self.auth)
             if response.status_code == 404:
                 raise PackageNotFoundError(package=dep.base_name, url=url)
             data = response.json()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/dephell-0.7.6/dephell/repositories/_warehouse/_simple.py 
new/dephell-0.7.7/dephell/repositories/_warehouse/_simple.py
--- old/dephell-0.7.6/dephell/repositories/_warehouse/_simple.py        
2019-07-15 12:47:24.000000000 +0200
+++ new/dephell-0.7.7/dephell/repositories/_warehouse/_simple.py        
2019-07-23 15:14:05.000000000 +0200
@@ -11,7 +11,6 @@
 # external
 import attr
 import html5lib
-import requests
 from dephell_specifier import RangeSpecifier
 from packaging.requirements import Requirement
 from packaging.utils import canonicalize_name
@@ -22,6 +21,7 @@
 from ...constants import ARCHIVE_EXTENSIONS
 from ...exceptions import PackageNotFoundError
 from ...models.release import Release
+from ...networking import requests_session
 from ._base import WarehouseBaseRepo
 
 
@@ -157,7 +157,8 @@
             return links
 
         dep_url = posixpath.join(self.url, quote(name)) + '/'
-        response = requests.get(dep_url, auth=self.auth)
+        with requests_session() as session:
+            response = session.get(dep_url, auth=self.auth)
         if response.status_code == 404:
             raise PackageNotFoundError(package=name, url=dep_url)
         response.raise_for_status()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dephell-0.7.6/dephell.egg-info/PKG-INFO 
new/dephell-0.7.7/dephell.egg-info/PKG-INFO
--- old/dephell-0.7.6/dephell.egg-info/PKG-INFO 1970-01-01 01:00:00.000000000 
+0100
+++ new/dephell-0.7.7/dephell.egg-info/PKG-INFO 1970-01-01 01:00:00.000000000 
+0100
@@ -1,9 +1,10 @@
 Metadata-Version: 2.1
 Name: dephell
-Version: 0.7.6
+Version: 0.7.7
 Summary: Dependency resolution for Python
+Home-Page: https://dephell.org/
 Project-URL: Repository, https://github.com/dephell/dephell
-Project-URL: Documentation, https://dephell.readthedocs.io/ 
+Project-URL: Documentation, https://dephell.org/docs/
 Author: Gram
 Author-email: master_f...@mail.ru
 License: MIT
@@ -70,28 +71,26 @@
 Features:
 
 
-* Manage dependencies: `convert between formats 
<https://dephell.readthedocs.io/cmd-deps-convert.html>`_\ , `instаll 
<https://dephell.readthedocs.io/cmd-deps-install.html>`_\ , lock, `add new 
<https://dephell.readthedocs.io/cmd-deps-add.html>`_\ , resolve conflicts.
-* Manage virtual environments: `create 
<https://dephell.readthedocs.io/cmd-venv-create.html>`_\ , `remove 
<https://dephell.readthedocs.io/cmd-venv-destroy.html>`_\ , `inspect 
<https://dephell.readthedocs.io/cmd-inspect-venv.html>`_\ , `run shell 
<https://dephell.readthedocs.io/cmd-venv-shell.html>`_\ , `run commands inside 
<https://dephell.readthedocs.io/cmd-venv-run.html>`_.
-* `Install CLI tools <https://dephell.readthedocs.io/cmd-jail-install.html>`_ 
into isolated environments.
-* Manage packages: `install 
<https://dephell.readthedocs.io/cmd-package-install.html>`_\ , `list 
<https://dephell.readthedocs.io/cmd-package-list.html>`_\ , `search 
<https://dephell.readthedocs.io/cmd-package-search.html>`_ on PyPI.
-* `Build <https://dephell.readthedocs.io/cmd-project-build.html>`_ packages 
(to upload on PyPI), `test 
<https://dephell.readthedocs.io/cmd-project-test.html>`_\ , `bump project 
version <https://dephell.readthedocs.io/cmd-project-bump.html>`_.
-* `Discover licenses <https://dephell.readthedocs.io/cmd-deps-licenses.html>`_ 
of all project dependencies, show `outdated 
<https://dephell.readthedocs.io/cmd-deps-outdated.html>`_ packages, `find 
security issues <https://dephell.readthedocs.io/cmd-deps-audit.html>`_.
-* Generate `.editorconfig 
<https://dephell.readthedocs.io/cmd-generate-editorconfig.html>`_\ , `LICENSE 
<https://dephell.readthedocs.io/cmd-generate-license.html>`_\ , `AUTHORS 
<https://dephell.readthedocs.io/cmd-generate-authors.html>`_\ , `.travis.yml 
<https://dephell.readthedocs.io/cmd-generate-travis.html>`_.
+* Manage dependencies: `convert between formats 
<https://dephell.org/docs/cmd-deps-convert.html>`_\ , `instаll 
<https://dephell.org/docs/cmd-deps-install.html>`_\ , lock, `add new 
<https://dephell.org/docs/cmd-deps-add.html>`_\ , resolve conflicts.
+* Manage virtual environments: `create 
<https://dephell.org/docs/cmd-venv-create.html>`_\ , `remove 
<https://dephell.org/docs/cmd-venv-destroy.html>`_\ , `inspect 
<https://dephell.org/docs/cmd-inspect-venv.html>`_\ , `run shell 
<https://dephell.org/docs/cmd-venv-shell.html>`_\ , `run commands inside 
<https://dephell.org/docs/cmd-venv-run.html>`_.
+* `Install CLI tools <https://dephell.org/docs/cmd-jail-install.html>`_ into 
isolated environments.
+* Manage packages: `install 
<https://dephell.org/docs/cmd-package-install.html>`_\ , `list 
<https://dephell.org/docs/cmd-package-list.html>`_\ , `search 
<https://dephell.org/docs/cmd-package-search.html>`_ on PyPI.
+* `Build <https://dephell.org/docs/cmd-project-build.html>`_ packages (to 
upload on PyPI), `test <https://dephell.org/docs/cmd-project-test.html>`_\ , 
`bump project version <https://dephell.org/docs/cmd-project-bump.html>`_.
+* `Discover licenses <https://dephell.org/docs/cmd-deps-licenses.html>`_ of 
all project dependencies, show `outdated 
<https://dephell.org/docs/cmd-deps-outdated.html>`_ packages, `find security 
issues <https://dephell.org/docs/cmd-deps-audit.html>`_.
+* Generate `.editorconfig 
<https://dephell.org/docs/cmd-generate-editorconfig.html>`_\ , `LICENSE 
<https://dephell.org/docs/cmd-generate-license.html>`_\ , `AUTHORS 
<https://dephell.org/docs/cmd-generate-authors.html>`_\ , `.travis.yml 
<https://dephell.org/docs/cmd-generate-travis.html>`_.
 
-See `documentation <https://dephell.readthedocs.io/>`_ for more details.
+See `documentation <https://dephell.org/docs/>`_ for more details.
 
 Follow `@PythonDepHell <https://twitter.com/PythonDepHell>`_ on Twitter to get 
updates about new features and releases.
 
 Installation
 ------------
 
-The simplest way:
-
 .. code-block:: bash
 
-   python3 -m pip install --user dephell[full]
+   curl -L dephell.org/install | python3
 
-See `installation documentation 
<https://dephell.readthedocs.io/installation.html>`_ for better ways.
+See `installation documentation <https://dephell.org/docs/installation.html>`_ 
for alternatives.
 
 Supported formats
 -----------------
@@ -313,7 +312,7 @@
 
 Now, we can upload these packages to `PyPI <https://pypi.org/>`_ with `twine 
<https://github.com/pypa/twine/>`_.
 
-These are some of the most useful commands. See `documentation 
<https://dephell.readthedocs.io/>`_ for more details.
+These are some of the most useful commands. See `documentation 
<https://dephell.org/docs/>`_ for more details.
 
 Compatibility
 -------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dephell-0.7.6/dephell.egg-info/requires.txt 
new/dephell-0.7.7/dephell.egg-info/requires.txt
--- old/dephell-0.7.6/dephell.egg-info/requires.txt     1970-01-01 
01:00:00.000000000 +0100
+++ new/dephell-0.7.7/dephell.egg-info/requires.txt     1970-01-01 
01:00:00.000000000 +0100
@@ -31,6 +31,7 @@
 
 [dev]
 aioresponses
+alabaster
 flake8-isort
 isort[pyproject]
 pygments-github-lexers
@@ -38,13 +39,12 @@
 recommonmark
 requests-mock
 sphinx
-sphinx-rtd-theme
 
 [docs]
+alabaster
 pygments-github-lexers
 recommonmark
 sphinx
-sphinx-rtd-theme
 
 [full]
 aiofiles
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dephell-0.7.6/setup.py new/dephell-0.7.7/setup.py
--- old/dephell-0.7.6/setup.py  2019-07-17 16:51:24.000000000 +0200
+++ new/dephell-0.7.7/setup.py  2019-07-23 15:47:00.000000000 +0200
@@ -21,12 +21,13 @@
 setup(
     long_description=readme,
     name='dephell',
-    version='0.7.6',
+    version='0.7.7',
     description='Dependency resolution for Python',
     python_requires='>=3.5',
     project_urls={
+        'homepage': 'https://dephell.org/',
         'repository': 'https://github.com/dephell/dephell',
-        'documentation': 'https://dephell.readthedocs.io/ '
+        'documentation': 'https://dephell.org/docs/'
     },
     author='Gram',
     author_email='master_f...@mail.ru',
@@ -63,15 +64,13 @@
     ],
     extras_require={
         'full': ['aiofiles', 'autopep8', 'colorama', 'graphviz', 'yapf'],
-        'tests': ['aioresponses', 'pytest', 'requests-mock'],
         'dev': [
-            'aioresponses', 'flake8-isort', 'isort[pyproject]',
+            'aioresponses', 'alabaster', 'flake8-isort', 'isort[pyproject]',
             'pygments-github-lexers', 'pytest', 'recommonmark', 
'requests-mock',
-            'sphinx', 'sphinx-rtd-theme'
+            'sphinx'
         ],
-        'docs': [
-            'pygments-github-lexers', 'recommonmark', 'sphinx',
-            'sphinx-rtd-theme'
-        ]
+        'tests': ['aioresponses', 'pytest', 'requests-mock'],
+        'docs':
+        ['alabaster', 'pygments-github-lexers', 'recommonmark', 'sphinx']
     },
 )
Binary files old/dephell-0.7.6/tests/__pycache__/__init__.cpython-38.pyc and 
new/dephell-0.7.7/tests/__pycache__/__init__.cpython-38.pyc differ
Binary files 
old/dephell-0.7.6/tests/__pycache__/conftest.cpython-36-pytest-5.0.1.pyc and 
new/dephell-0.7.7/tests/__pycache__/conftest.cpython-36-pytest-5.0.1.pyc differ
Binary files 
old/dephell-0.7.6/tests/__pycache__/conftest.cpython-38-pytest-5.0.1.pyc and 
new/dephell-0.7.7/tests/__pycache__/conftest.cpython-38-pytest-5.0.1.pyc differ
Binary files 
old/dephell-0.7.6/tests/test_commands/__pycache__/__init__.cpython-38.pyc and 
new/dephell-0.7.7/tests/test_commands/__pycache__/__init__.cpython-38.pyc differ
Binary files 
old/dephell-0.7.6/tests/test_commands/__pycache__/test_build.cpython-36-pytest-5.0.1.pyc
 and 
new/dephell-0.7.7/tests/test_commands/__pycache__/test_build.cpython-36-pytest-5.0.1.pyc
 differ
Binary files 
old/dephell-0.7.6/tests/test_commands/__pycache__/test_deps_convert.cpython-36-pytest-5.0.1.pyc
 and 
new/dephell-0.7.7/tests/test_commands/__pycache__/test_deps_convert.cpython-36-pytest-5.0.1.pyc
 differ
Binary files 
old/dephell-0.7.6/tests/test_commands/__pycache__/test_package_downloads.cpython-36-pytest-5.0.1.pyc
 and 
new/dephell-0.7.7/tests/test_commands/__pycache__/test_package_downloads.cpython-36-pytest-5.0.1.pyc
 differ
Binary files 
old/dephell-0.7.6/tests/test_commands/__pycache__/test_project_bump.cpython-36-pytest-5.0.1.pyc
 and 
new/dephell-0.7.7/tests/test_commands/__pycache__/test_project_bump.cpython-36-pytest-5.0.1.pyc
 differ
Binary files 
old/dephell-0.7.6/tests/test_commands/__pycache__/test_vendor_download.cpython-36-pytest-5.0.1.pyc
 and 
new/dephell-0.7.7/tests/test_commands/__pycache__/test_vendor_download.cpython-36-pytest-5.0.1.pyc
 differ
Binary files 
old/dephell-0.7.6/tests/test_commands/__pycache__/test_vendor_import.cpython-38-pytest-5.0.1.pyc
 and 
new/dephell-0.7.7/tests/test_commands/__pycache__/test_vendor_import.cpython-38-pytest-5.0.1.pyc
 differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/dephell-0.7.6/tests/test_commands/test_project_bump.py 
new/dephell-0.7.7/tests/test_commands/test_project_bump.py
--- old/dephell-0.7.6/tests/test_commands/test_project_bump.py  2019-07-15 
12:47:24.000000000 +0200
+++ new/dephell-0.7.7/tests/test_commands/test_project_bump.py  2019-07-23 
13:45:54.000000000 +0200
@@ -36,6 +36,9 @@
 
         [tool.poetry.dependencies]
         python = "*"
+        sentry_sdk = ">=0.9.0"
+        npm = "^0.9.0"
+        reponame = { git = "ssh://git@our-git-server:port/group/reponame.git", 
branch = "v3_2" }
 
         [[tool.poetry.source]]
         name = "pypi"
Binary files 
old/dephell-0.7.6/tests/test_controllers/__pycache__/test_snyk.cpython-36-pytest-5.0.1.pyc
 and 
new/dephell-0.7.7/tests/test_controllers/__pycache__/test_snyk.cpython-36-pytest-5.0.1.pyc
 differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dephell-0.7.6/tests/test_controllers/test_snyk.py 
new/dephell-0.7.7/tests/test_controllers/test_snyk.py
--- old/dephell-0.7.6/tests/test_controllers/test_snyk.py       2019-07-11 
15:29:36.000000000 +0200
+++ new/dephell-0.7.7/tests/test_controllers/test_snyk.py       2019-07-23 
15:14:05.000000000 +0200
@@ -5,6 +5,7 @@
 from dephell.controllers import Snyk
 
 
+@pytest.mark.skipif(True, reason='RSS feed was removed from snyk')
 @pytest.mark.allow_hosts()
 def test_safety():
     snyk = Snyk()
Binary files 
old/dephell-0.7.6/tests/test_converters/__pycache__/test_poetry.cpython-36-pytest-5.0.1.pyc
 and 
new/dephell-0.7.7/tests/test_converters/__pycache__/test_poetry.cpython-36-pytest-5.0.1.pyc
 differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dephell-0.7.6/tests/test_converters/test_poetry.py 
new/dephell-0.7.7/tests/test_converters/test_poetry.py
--- old/dephell-0.7.6/tests/test_converters/test_poetry.py      2019-07-15 
12:47:24.000000000 +0200
+++ new/dephell-0.7.7/tests/test_converters/test_poetry.py      2019-07-23 
13:45:54.000000000 +0200
@@ -3,6 +3,7 @@
 from textwrap import dedent
 
 # external
+import pytest
 import tomlkit
 
 # project
@@ -84,3 +85,33 @@
     new_parsed = tomlkit.parse(new_content)['tool']['poetry']
     assert parsed['source'] == new_parsed['source']
     assert parsed == new_parsed
+
+
+@pytest.mark.parametrize('req', [
+    'a = "*"',
+    'a = "^9.5"',
+    'strangE_nAm.e = ">=9.5"',
+    'reponame = { git = "ssh://git@our-git-server:port/group/reponame.git", 
branch = "v3_2" }',
+    'a = {version = "*", extras = ["nani"] }',
+    'a = "*"  # god bless comments',
+])
+def test_preserve_reqs_format(req, temp_path: Path):
+    content = dedent("""
+        [tool.poetry]
+        name = "test"
+        version = "1.2.3"
+
+        [tool.poetry.dependencies]
+        python = "*"
+        {req}
+    """).format(req=req)
+
+    converter = PoetryConverter(project_path=temp_path)
+    resolver = converter.loads_resolver(content)
+    reqs = Requirement.from_graph(graph=resolver.graph, lock=False)
+    new_content = converter.dumps(
+        reqs=reqs,
+        project=resolver.graph.metainfo,
+        content=content,
+    )
+    assert content == new_content
Binary files 
old/dephell-0.7.6/tests/test_models/__pycache__/test_dependency.cpython-36-pytest-5.0.1.pyc
 and 
new/dephell-0.7.7/tests/test_models/__pycache__/test_dependency.cpython-36-pytest-5.0.1.pyc
 differ
Binary files 
old/dephell-0.7.6/tests/test_models/__pycache__/test_requirement.cpython-36-pytest-5.0.1.pyc
 and 
new/dephell-0.7.7/tests/test_models/__pycache__/test_requirement.cpython-36-pytest-5.0.1.pyc
 differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dephell-0.7.6/tests/test_models/test_requirement.py 
new/dephell-0.7.7/tests/test_models/test_requirement.py
--- old/dephell-0.7.6/tests/test_models/test_requirement.py     1970-01-01 
01:00:00.000000000 +0100
+++ new/dephell-0.7.7/tests/test_models/test_requirement.py     2019-07-23 
13:45:54.000000000 +0200
@@ -0,0 +1,40 @@
+# external
+import pytest
+
+# project
+from dephell.converters import PIPConverter
+from dephell.models import Requirement
+
+
+@pytest.mark.parametrize('left, right, ok', [
+    ('a>=3',    'a>=3',     True),
+    ('a >= 3',  'a>=3',     True),
+    ('a>=3',    'a>3',      False),
+    (
+        '-e git+...@github.com:dephell/dephell.git#egg=dephell',
+        '-e git+...@github.com:dephell/dephell.git#egg=dephell',
+        True,
+    ),
+    (
+        '-e git+...@github.com:dephell/dephell.git#egg=dephell',
+        '-e git+ssh://g...@github.com:dephell/dephell.git#egg=dephell',
+        True,
+    ),
+    (
+        '-e git+...@github.com:dephell/dephell.git#egg=dephell',
+        '-e git+...@github.com:dephell/dephell_discovery.git#egg=dephell',
+        False,
+    ),
+])
+def test_equal(left, right, ok):
+    converter = PIPConverter(lock=False)
+    dep_left = converter.loads(left).dependencies[0]
+    dep_right = converter.loads(right).dependencies[0]
+
+    dict_left = Requirement._get_comparable_dict(dep_left)
+    dict_right = Requirement._get_comparable_dict(dep_right)
+    assert (dict_left == dict_right) is ok
+
+    req_left = Requirement(dep=dep_left, lock=False)
+    equal = req_left.same_dep(dep_right)
+    assert equal is ok
Binary files 
old/dephell-0.7.6/tests/test_repositories/__pycache__/test_warehouse_api.cpython-36-pytest-5.0.1.pyc
 and 
new/dephell-0.7.7/tests/test_repositories/__pycache__/test_warehouse_api.cpython-36-pytest-5.0.1.pyc
 differ
Binary files 
old/dephell-0.7.6/tests/test_repositories/__pycache__/test_warehouse_simple.cpython-36-pytest-5.0.1.pyc
 and 
new/dephell-0.7.7/tests/test_repositories/__pycache__/test_warehouse_simple.cpython-36-pytest-5.0.1.pyc
 differ


Reply via email to