Hello community,

here is the log from the commit of package python-requirements-detector for 
openSUSE:Factory checked in at 2019-05-22 11:17:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-requirements-detector (Old)
 and      /work/SRC/openSUSE:Factory/.python-requirements-detector.new.5148 
(New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-requirements-detector"

Wed May 22 11:17:52 2019 rev:4 rq:704548 version:0.6

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-requirements-detector/python-requirements-detector.changes
        2015-05-16 19:01:50.000000000 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-requirements-detector.new.5148/python-requirements-detector.changes
      2019-05-22 11:18:10.414453471 +0200
@@ -1,0 +2,14 @@
+Tue May 21 20:07:52 UTC 2019 - Todd R <toddrme2...@gmail.com>
+
+- Fix conflicts with old python2-only version
+- Fix description formatting.
+
+-------------------------------------------------------------------
+Mon May 20 12:56:43 UTC 2019 - pgaj...@suse.com
+
+- version update to 0.6
+  * no changelog available
+- run tests
+- convert to singlespec
+
+-------------------------------------------------------------------

Old:
----
  requirements-detector-0.4.tar.gz

New:
----
  0.6.tar.gz

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

Other differences:
------------------
++++++ python-requirements-detector.spec ++++++
--- /var/tmp/diff_new_pack.g43M5A/_old  2019-05-22 11:18:11.238453167 +0200
+++ /var/tmp/diff_new_pack.g43M5A/_new  2019-05-22 11:18:11.250453162 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-requirements-detector
 #
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -12,45 +12,70 @@
 # license that conforms to the Open Source Definition (Version 1.9)
 # published by the Open Source Initiative.
 
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
 #
 
 
+%{?!python_module:%define python_module() python-%{**} python3-%{**}}
+%define         oldpython python
 Name:           python-requirements-detector
-Version:        0.4
+Version:        0.6
 Release:        0
 Summary:        Python tool to find and list requirements of a Python project
 License:        MIT
 Group:          Development/Languages/Python
 Url:            https://github.com/landscapeio/requirements-detector
-Source:         
https://pypi.python.org/packages/source/r/requirements-detector/requirements-detector-%{version}.tar.gz
-BuildRequires:  python-devel
-BuildRequires:  python-setuptools
+# https://github.com/landscapeio/requirements-detector/issues/25
+Source:         
https://github.com/landscapeio/requirements-detector/archive/%{version}.tar.gz
+BuildRequires:  %{python_module setuptools}
+BuildRequires:  python-rpm-macros
+# SECTION test requirements
+BuildRequires:  %{python_module astroid}
+BuildRequires:  %{python_module nose}
+# /SECTION
 Requires:       python-astroid >= 1.0.0
-BuildRoot:      %{_tmppath}/%{name}-%{version}-build
-%if 0%{?suse_version} && 0%{?suse_version} <= 1110
-%{!?python_sitelib: %global python_sitelib %(python -c "from 
distutils.sysconfig import get_python_lib; print get_python_lib()")}
-%else
+BuildRequires:  fdupes
 BuildArch:      noarch
+%ifpython3
+Conflicts:      %{oldpython}-requirements-detector < 0.6
 %endif
+Requires(post):   update-alternatives
+Requires(postun):  update-alternatives
+
+%python_subpackages
 
 %description
-requirements-detector is a simple Python tool which attempts to find and list 
the requirements of a Python project.
+Requirements-detector is a Python tool which attempts to find and list
+the requirements of a Python project.
 
-When run from the root of a Python project, it will try to ascertain which 
libraries and the versions of those libraries that the project depends on.
+When run from the root of a Python project, it will try to ascertain
+which libraries and the versions of those libraries that the project
+depends on.
 
 %prep
 %setup -q -n requirements-detector-%{version}
 
 %build
-python setup.py build
+%python_build
 
 %install
-python setup.py install --prefix=%{_prefix} --root=%{buildroot}
-
-%files
-%defattr(-,root,root,-)
-%{_bindir}/detect-requirements
+%python_install
+%python_clone -a %{buildroot}%{_bindir}/detect-requirements
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
+
+%check
+%python_expand PYTHONPATH=%{buildroot}%{$pthon_sitelib} 
nosetests-%{$python_bin_suffix}
+
+%post
+%python_install_alternative detect-requirements
+
+%postun
+%python_uninstall_alternative detect-requirements
+
+%files %{python_files}
+%doc README.md
+%license LICENSE
 %{python_sitelib}/*
+%python_alternative %{_bindir}/detect-requirements
 
 %changelog

++++++ requirements-detector-0.4.tar.gz -> 0.6.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/requirements-detector-0.4/.coveragerc 
new/requirements-detector-0.6/.coveragerc
--- old/requirements-detector-0.4/.coveragerc   1970-01-01 01:00:00.000000000 
+0100
+++ new/requirements-detector-0.6/.coveragerc   2018-07-22 10:24:34.000000000 
+0200
@@ -0,0 +1,3 @@
+
+[run]
+source=requirements_detector
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/requirements-detector-0.4/.gitignore 
new/requirements-detector-0.6/.gitignore
--- old/requirements-detector-0.4/.gitignore    1970-01-01 01:00:00.000000000 
+0100
+++ new/requirements-detector-0.6/.gitignore    2018-07-22 10:24:34.000000000 
+0200
@@ -0,0 +1,35 @@
+*.py[cod]
+
+# C extensions
+*.so
+
+# Packages
+*.egg
+*.egg-info
+dist
+build
+eggs
+parts
+bin
+var
+sdist
+develop-eggs
+.installed.cfg
+lib
+lib64
+
+# Installer logs
+pip-log.txt
+
+# Unit test / coverage reports
+.coverage
+.tox
+nosetests.xml
+
+# Translations
+*.mo
+
+# Mr Developer
+.mr.developer.cfg
+.project
+.pydevproject
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/requirements-detector-0.4/.landscape.yaml 
new/requirements-detector-0.6/.landscape.yaml
--- old/requirements-detector-0.4/.landscape.yaml       1970-01-01 
01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/.landscape.yaml       2018-07-22 
10:24:34.000000000 +0200
@@ -0,0 +1,4 @@
+doc-warnings: no
+strictness: veryhigh
+max-line-length: 120
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/requirements-detector-0.4/.travis.yml 
new/requirements-detector-0.6/.travis.yml
--- old/requirements-detector-0.4/.travis.yml   1970-01-01 01:00:00.000000000 
+0100
+++ new/requirements-detector-0.6/.travis.yml   2018-07-22 10:24:34.000000000 
+0200
@@ -0,0 +1,16 @@
+sudo: false
+language: python
+python:
+  - "2.6"
+  - "2.7"
+  - "3.4"
+  - "3.5"
+  - "3.6"
+  - "3.7-dev"
+install:
+  - "pip install nose coverage coveralls"
+  - "pip install --editable ."
+script: 
+  nosetests -s --with-coverage --cover-package requirements_detector 
--cover-inclusive
+after_success:
+  coveralls
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/requirements-detector-0.4/LICENSE 
new/requirements-detector-0.6/LICENSE
--- old/requirements-detector-0.4/LICENSE       1970-01-01 01:00:00.000000000 
+0100
+++ new/requirements-detector-0.6/LICENSE       2018-07-22 10:24:34.000000000 
+0200
@@ -0,0 +1,19 @@
+The MIT License
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/requirements-detector-0.4/MANIFEST.in 
new/requirements-detector-0.6/MANIFEST.in
--- old/requirements-detector-0.4/MANIFEST.in   2014-08-21 19:28:36.000000000 
+0200
+++ new/requirements-detector-0.6/MANIFEST.in   2018-07-22 10:24:34.000000000 
+0200
@@ -1 +1,2 @@
-include bin/detect-requirements
\ No newline at end of file
+include bin/detect-requirements
+include LICENSE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/requirements-detector-0.4/PKG-INFO 
new/requirements-detector-0.6/PKG-INFO
--- old/requirements-detector-0.4/PKG-INFO      2015-03-24 07:41:47.000000000 
+0100
+++ new/requirements-detector-0.6/PKG-INFO      1970-01-01 01:00:00.000000000 
+0100
@@ -1,20 +0,0 @@
-Metadata-Version: 1.1
-Name: requirements-detector
-Version: 0.4
-Summary: Python tool to find and list requirements of a Python project
-Home-page: https://github.com/landscapeio/requirements-detector
-Author: landscape.io
-Author-email: c...@landscape.io
-License: MIT
-Description: UNKNOWN
-Keywords: python requirements detector
-Platform: UNKNOWN
-Classifier: Development Status :: 5 - Production/Stable
-Classifier: Environment :: Console
-Classifier: Intended Audience :: Developers
-Classifier: Operating System :: Unix
-Classifier: Topic :: Software Development :: Quality Assurance
-Classifier: Programming Language :: Python :: 2.6
-Classifier: Programming Language :: Python :: 2.7
-Classifier: Programming Language :: Python :: 3.3
-Classifier: License :: OSI Approved :: GNU General Public License v2 or later 
(GPLv2+)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/requirements-detector-0.4/README.md 
new/requirements-detector-0.6/README.md
--- old/requirements-detector-0.4/README.md     1970-01-01 01:00:00.000000000 
+0100
+++ new/requirements-detector-0.6/README.md     2018-07-22 10:24:34.000000000 
+0200
@@ -0,0 +1,49 @@
+# Requirements Detector
+
+## Status
+
+[![Latest 
Version](https://img.shields.io/pypi/v/requirements-detector.svg?label=version&style=flat)](https://pypi.python.org/pypi/requirements-detector)
+[![Build 
Status](https://travis-ci.org/landscapeio/requirements-detector.png?branch=master)](https://travis-ci.org/landscapeio/requirements-detector)
+[![Health](https://landscape.io/github/landscapeio/requirements-detector/master/landscape.svg?style=flat)](https://landscape.io/github/landscapeio/requirements-detector/master)
+[![Coverage 
Status](https://img.shields.io/coveralls/landscapeio/requirements-detector.svg?style=flat)](https://coveralls.io/r/landscapeio/requirements-detector)
+[![Documentation](https://readthedocs.org/projects/requirements-detector/badge/?version=master)](https://readthedocs.org/projects/requirements-detector/)
+
+## About
+
+`requirements-detector` is a simple Python tool which attempts to find and 
list the requirements of a Python project. 
+
+When run from the root of a Python project, it will try to ascertain which 
libraries and the versions of those libraries that the project depends on.
+
+It uses the following methods in order, in the root of the project:
+
+1. Parse `setup.py` (if this is successful, the remaining steps are skipped)
+2. Parse `requirements.txt` or `requirements.pip`
+3. Parse all `*.txt` and `*.pip` files inside a folder called `requirements`
+4. Parse all files in the root folder matching `*requirements*.txt` or 
`reqs.txt` (so for example, `pip_requirements.txt` would match, as would 
`requirements_common.txt`)
+
+### Usage
+
+```
+detect-requirements [path]
+```
+If `path` is not specified, the current working directory will be used.
+
+### Output
+
+The output will be plaintext, and match that of a [pip requirements 
file](http://www.pip-installer.org/en/latest/logic.html), for example:
+
+```
+Django==1.5.2
+South>=0.8
+anyjson
+celery>=2.2,<3
+```
+
+### Usage From Python
+
+```
+>>> import os
+>>> from requirements_detector import find_requirements
+>>> find_requirements(os.getcwd())
+[DetectedRequirement:Django==1.5.2, DetectedRequirement:South>=0.8, ...]
+```
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/requirements-detector-0.4/requirements_detector/__compat__.py 
new/requirements-detector-0.6/requirements_detector/__compat__.py
--- old/requirements-detector-0.4/requirements_detector/__compat__.py   
1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/requirements_detector/__compat__.py   
2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1,16 @@
+# Various shims to deal with node renames between astroid versions - astroid 
2.0 renamed
+# some of the nodes used by this library so for backwards compatibility, old 
names are
+# translated to new.
+
+try:
+       from astroid import Call
+except ImportError:
+       from astroid import CallFunc as Call
+
+
+try:
+       from astroid import AssignName
+except ImportError:
+       from astroid import AssName as AssignName
+
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/requirements-detector-0.4/requirements_detector/detect.py 
new/requirements-detector-0.6/requirements_detector/detect.py
--- old/requirements-detector-0.4/requirements_detector/detect.py       
2015-03-23 23:06:42.000000000 +0100
+++ new/requirements-detector-0.6/requirements_detector/detect.py       
2018-07-22 10:24:34.000000000 +0200
@@ -2,7 +2,8 @@
 import os
 import sys
 from astroid.builder import AstroidBuilder
-from astroid import MANAGER, CallFunc, Name, Assign, Keyword, List, Tuple, 
Const, AssName
+from astroid import MANAGER, Name, Assign, Keyword, List, Tuple, Const
+from requirements_detector.__compat__ import Call, AssignName
 from requirements_detector.requirement import DetectedRequirement
 
 
@@ -54,11 +55,11 @@
         for line in encoding_lines:
             match = _ENCODING_REGEXP.search(line)
             if match is None:
-                result.append(line)
+                result.append(line.strip())
             else:
                 encoding = match.group(1)
 
-        result += contents[2:]
+        result += [line.rstrip() for line in contents[2:]]
         result = '\n'.join(result)
         return result.decode(encoding)
 
@@ -130,7 +131,7 @@
         node = node or self._ast
 
         # test to see if this is a call to setup()
-        if isinstance(node, CallFunc):
+        if isinstance(node, Call):
             for child_node in node.get_children():
                 if isinstance(child_node, Name) and child_node.name == 'setup':
                     # TODO: what if this isn't actually the distutils setup?
@@ -139,7 +140,7 @@
         for child_node in node.get_children():
             if top and isinstance(child_node, Assign):
                 for target in child_node.targets:
-                    if isinstance(target, AssName):
+                    if isinstance(target, AssignName):
                         self._top_level_assigns[target.name] = child_node.value
             self.walk(child_node)
 
@@ -197,9 +198,16 @@
 
 def from_setup_py(setup_file):
     try:
+        from astroid import AstroidBuildingException
+    except ImportError:
+        syntax_exceptions = (SyntaxError,)
+    else:
+        syntax_exceptions = (SyntaxError, AstroidBuildingException)
+
+    try:
         contents = _load_file_contents(setup_file)
         ast = AstroidBuilder(MANAGER).string_build(contents)
-    except SyntaxError:
+    except syntax_exceptions:
         # if the setup file is broken, we can't do much about that...
         raise CouldNotParseRequirements
 
@@ -209,7 +217,7 @@
     for req in walker.get_requires():
         requirements.append(DetectedRequirement.parse(req, setup_file))
 
-    return requirements
+    return [requirement for requirement in requirements if requirement is not 
None]
 
 
 def from_requirements_txt(requirements_file):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/requirements-detector-0.4/requirements_detector.egg-info/PKG-INFO 
new/requirements-detector-0.6/requirements_detector.egg-info/PKG-INFO
--- old/requirements-detector-0.4/requirements_detector.egg-info/PKG-INFO       
2015-03-24 07:41:47.000000000 +0100
+++ new/requirements-detector-0.6/requirements_detector.egg-info/PKG-INFO       
1970-01-01 01:00:00.000000000 +0100
@@ -1,20 +0,0 @@
-Metadata-Version: 1.1
-Name: requirements-detector
-Version: 0.4
-Summary: Python tool to find and list requirements of a Python project
-Home-page: https://github.com/landscapeio/requirements-detector
-Author: landscape.io
-Author-email: c...@landscape.io
-License: MIT
-Description: UNKNOWN
-Keywords: python requirements detector
-Platform: UNKNOWN
-Classifier: Development Status :: 5 - Production/Stable
-Classifier: Environment :: Console
-Classifier: Intended Audience :: Developers
-Classifier: Operating System :: Unix
-Classifier: Topic :: Software Development :: Quality Assurance
-Classifier: Programming Language :: Python :: 2.6
-Classifier: Programming Language :: Python :: 2.7
-Classifier: Programming Language :: Python :: 3.3
-Classifier: License :: OSI Approved :: GNU General Public License v2 or later 
(GPLv2+)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/requirements-detector-0.4/requirements_detector.egg-info/SOURCES.txt 
new/requirements-detector-0.6/requirements_detector.egg-info/SOURCES.txt
--- old/requirements-detector-0.4/requirements_detector.egg-info/SOURCES.txt    
2015-03-24 07:41:47.000000000 +0100
+++ new/requirements-detector-0.6/requirements_detector.egg-info/SOURCES.txt    
1970-01-01 01:00:00.000000000 +0100
@@ -1,13 +0,0 @@
-MANIFEST.in
-setup.py
-bin/detect-requirements
-requirements_detector/__init__.py
-requirements_detector/detect.py
-requirements_detector/formatters.py
-requirements_detector/requirement.py
-requirements_detector/run.py
-requirements_detector.egg-info/PKG-INFO
-requirements_detector.egg-info/SOURCES.txt
-requirements_detector.egg-info/dependency_links.txt
-requirements_detector.egg-info/requires.txt
-requirements_detector.egg-info/top_level.txt
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/requirements-detector-0.4/requirements_detector.egg-info/dependency_links.txt
 
new/requirements-detector-0.6/requirements_detector.egg-info/dependency_links.txt
--- 
old/requirements-detector-0.4/requirements_detector.egg-info/dependency_links.txt
   2015-03-24 07:41:47.000000000 +0100
+++ 
new/requirements-detector-0.6/requirements_detector.egg-info/dependency_links.txt
   1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/requirements-detector-0.4/requirements_detector.egg-info/requires.txt 
new/requirements-detector-0.6/requirements_detector.egg-info/requires.txt
--- old/requirements-detector-0.4/requirements_detector.egg-info/requires.txt   
2015-03-24 07:41:47.000000000 +0100
+++ new/requirements-detector-0.6/requirements_detector.egg-info/requires.txt   
1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-astroid>=1.0.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/requirements-detector-0.4/requirements_detector.egg-info/top_level.txt 
new/requirements-detector-0.6/requirements_detector.egg-info/top_level.txt
--- old/requirements-detector-0.4/requirements_detector.egg-info/top_level.txt  
2015-03-24 07:41:47.000000000 +0100
+++ new/requirements-detector-0.6/requirements_detector.egg-info/top_level.txt  
1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-requirements_detector
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/requirements-detector-0.4/setup.cfg 
new/requirements-detector-0.6/setup.cfg
--- old/requirements-detector-0.4/setup.cfg     2015-03-24 07:41:47.000000000 
+0100
+++ new/requirements-detector-0.6/setup.cfg     1970-01-01 01:00:00.000000000 
+0100
@@ -1,5 +0,0 @@
-[egg_info]
-tag_build = 
-tag_date = 0
-tag_svn_revision = 0
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/requirements-detector-0.4/setup.py 
new/requirements-detector-0.6/setup.py
--- old/requirements-detector-0.4/setup.py      2015-03-23 23:11:11.000000000 
+0100
+++ new/requirements-detector-0.6/setup.py      2018-07-22 10:24:34.000000000 
+0200
@@ -1,14 +1,15 @@
 # -*- coding: UTF-8 -*-
 from distutils.core import setup
 from setuptools import find_packages
+import sys
 
 
-_version = "0.4"
+_version = "0.6"
 _packages = find_packages(exclude=["*.tests", "*.tests.*", "tests.*", "tests"])
 
 _short_description = "Python tool to find and list requirements of a Python 
project"
 
-_CLASSIFIERS = (
+_CLASSIFIERS = [
     'Development Status :: 5 - Production/Stable',
     'Environment :: Console',
     'Intended Audience :: Developers',
@@ -16,11 +17,23 @@
     'Topic :: Software Development :: Quality Assurance',
     'Programming Language :: Python :: 2.6',
     'Programming Language :: Python :: 2.7',
-    'Programming Language :: Python :: 3.3',
-    'License :: OSI Approved :: '
-    'GNU General Public License v2 or later (GPLv2+)',
-)
-
+    'Programming Language :: Python :: 3.4',
+    'Programming Language :: Python :: 3.5',
+    'Programming Language :: Python :: 3.6',
+    'Programming Language :: Python :: 3.7',
+    'License :: OSI Approved :: MIT License',
+]
+
+
+if sys.version_info < (2, 7):
+    # pylint 1.4 dropped support for Python 2.6
+    _install_requires = [
+        'astroid>=1.0,<1.3.0',
+    ]
+else:
+    _install_requires = [
+        'astroid>=1.4',
+    ]
 
 setup(
     name='requirements-detector',
@@ -30,7 +43,7 @@
     description=_short_description,
     version=_version,
     scripts=['bin/detect-requirements'],
-    install_requires=['astroid>=1.0.0'],
+    install_requires=_install_requires,
     packages=_packages,
     license='MIT',
     keywords='python requirements detector',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/requirements-detector-0.4/tests/detection/syntax_error/regular_indentation.py
 
new/requirements-detector-0.6/tests/detection/syntax_error/regular_indentation.py
--- 
old/requirements-detector-0.4/tests/detection/syntax_error/regular_indentation.py
   1970-01-01 01:00:00.000000000 +0100
+++ 
new/requirements-detector-0.6/tests/detection/syntax_error/regular_indentation.py
   2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1,15 @@
+# -*- coding: UTF-8 -*-
+from distutils.core import setup
+
+if foo:
+    # just for a test with indentation
+    bar()
+
+setup(
+    name=u'prospector-test-4-üéø',
+    version='0.0.1',
+    install_requires=[
+        'Django==1.5.0',
+        'django-gubbins==1.1.2'
+    ]
+)
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/requirements-detector-0.4/tests/detection/syntax_error/setup.py 
new/requirements-detector-0.6/tests/detection/syntax_error/setup.py
--- old/requirements-detector-0.4/tests/detection/syntax_error/setup.py 
1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/detection/syntax_error/setup.py 
2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1,10 @@
+from distutils.core import setup
+
+setup(
+    name='prospector-test-1',
+    version='0.0.1',
+    install_requires=[
+        'Django==1.5.0',
+        'django-gubbins==1.1.2'
+    ] narm narm narm
+)
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/requirements-detector-0.4/tests/detection/syntax_error/setup_multiline_string.py
 
new/requirements-detector-0.6/tests/detection/syntax_error/setup_multiline_string.py
--- 
old/requirements-detector-0.4/tests/detection/syntax_error/setup_multiline_string.py
        1970-01-01 01:00:00.000000000 +0100
+++ 
new/requirements-detector-0.6/tests/detection/syntax_error/setup_multiline_string.py
        2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1,13 @@
+from distutils.core import setup
+
+comment = 'this is a long comment ' \
+          'on two lines'
+
+setup(
+    name='prospector-test-1',
+    version='0.0.1',
+    install_requires=[
+        'Django==1.5.0',
+        'django-gubbins==1.1.2'
+    ]
+)
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/requirements-detector-0.4/tests/detection/test1/requirements.txt 
new/requirements-detector-0.6/tests/detection/test1/requirements.txt
--- old/requirements-detector-0.4/tests/detection/test1/requirements.txt        
1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/detection/test1/requirements.txt        
2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1,6 @@
+-i https://example.com/custom/pypi
+Django>=1.5.0
+South==0.8.2
+amqp!=1.0.13
+# we want six too
+six<1.4,>=1.3.0
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/requirements-detector-0.4/tests/detection/test2/requirements/base.txt 
new/requirements-detector-0.6/tests/detection/test2/requirements/base.txt
--- old/requirements-detector-0.4/tests/detection/test2/requirements/base.txt   
1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/detection/test2/requirements/base.txt   
2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1,2 @@
+amqp==1.0.13
+anyjson==0.3.3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/requirements-detector-0.4/tests/detection/test2/requirements/webui.pip 
new/requirements-detector-0.6/tests/detection/test2/requirements/webui.pip
--- old/requirements-detector-0.4/tests/detection/test2/requirements/webui.pip  
1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/detection/test2/requirements/webui.pip  
2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1,2 @@
+Django==1.5.2
+South==0.8.2
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/requirements-detector-0.4/tests/detection/test3/pip_requirements.txt 
new/requirements-detector-0.6/tests/detection/test3/pip_requirements.txt
--- old/requirements-detector-0.4/tests/detection/test3/pip_requirements.txt    
1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/detection/test3/pip_requirements.txt    
2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1 @@
+anyjson==0.3.3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/requirements-detector-0.4/tests/detection/test3/reqs.txt 
new/requirements-detector-0.6/tests/detection/test3/reqs.txt
--- old/requirements-detector-0.4/tests/detection/test3/reqs.txt        
1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/detection/test3/reqs.txt        
2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1 @@
+django-gubbins==1.1.2
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/requirements-detector-0.4/tests/detection/test3/requirements_base.txt 
new/requirements-detector-0.6/tests/detection/test3/requirements_base.txt
--- old/requirements-detector-0.4/tests/detection/test3/requirements_base.txt   
1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/detection/test3/requirements_base.txt   
2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1 @@
+amqp==1.0.13
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/requirements-detector-0.4/tests/detection/test3/requirements_test.txt 
new/requirements-detector-0.6/tests/detection/test3/requirements_test.txt
--- old/requirements-detector-0.4/tests/detection/test3/requirements_test.txt   
1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/detection/test3/requirements_test.txt   
2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1 @@
+South==0.8.2
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/requirements-detector-0.4/tests/detection/test3/test_requirements.txt 
new/requirements-detector-0.6/tests/detection/test3/test_requirements.txt
--- old/requirements-detector-0.4/tests/detection/test3/test_requirements.txt   
1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/detection/test3/test_requirements.txt   
2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1 @@
+Django==1.5.2
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/requirements-detector-0.4/tests/detection/test4/callable.py 
new/requirements-detector-0.6/tests/detection/test4/callable.py
--- old/requirements-detector-0.4/tests/detection/test4/callable.py     
1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/detection/test4/callable.py     
2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1,13 @@
+from distutils.core import setup
+
+def _install_requires():
+    return [
+        'Django==1.5.0',
+        'django-gubbins==1.1.2'
+    ]
+
+setup(
+    name='prospector-test-2',
+    version='0.0.1',
+    install_requires=_install_requires()
+)
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/requirements-detector-0.4/tests/detection/test4/in_file.py 
new/requirements-detector-0.6/tests/detection/test4/in_file.py
--- old/requirements-detector-0.4/tests/detection/test4/in_file.py      
1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/detection/test4/in_file.py      
2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1,12 @@
+from distutils.core import setup
+
+_install_requires = [
+    'Django==1.5.0',
+    'django-gubbins==1.1.2'
+]
+
+setup(
+    name='prospector-test-2',
+    version='0.0.1',
+    install_requires=_install_requires
+)
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/requirements-detector-0.4/tests/detection/test4/simple.py 
new/requirements-detector-0.6/tests/detection/test4/simple.py
--- old/requirements-detector-0.4/tests/detection/test4/simple.py       
1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/detection/test4/simple.py       
2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1,10 @@
+from distutils.core import setup
+
+setup(
+    name='prospector-test-1',
+    version='0.0.1',
+    install_requires=[
+        'Django==1.5.0',
+        'django-gubbins==1.1.2'
+    ]
+)
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/requirements-detector-0.4/tests/detection/test4/subscript_assign.py 
new/requirements-detector-0.6/tests/detection/test4/subscript_assign.py
--- old/requirements-detector-0.4/tests/detection/test4/subscript_assign.py     
1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/detection/test4/subscript_assign.py     
2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1,19 @@
+"""
+This test is to verify that top level subscript assigns (x[y]) don't break the
+parser. For version <=0.1, a subscript assign would break the setup.py AST 
walker
+completely.
+"""
+
+from distutils.core import setup
+
+something = dict()
+something['fish'] = ['a', 'b', 'c']
+
+setup(
+    name='prospector-test-1',
+    version='0.0.1',
+    install_requires=(
+        'Django==1.5.0',
+        'django-gubbins==1.1.2'
+    )
+)
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/requirements-detector-0.4/tests/detection/test4/tuple.py 
new/requirements-detector-0.6/tests/detection/test4/tuple.py
--- old/requirements-detector-0.4/tests/detection/test4/tuple.py        
1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/detection/test4/tuple.py        
2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1,10 @@
+from distutils.core import setup
+
+setup(
+    name='prospector-test-1',
+    version='0.0.1',
+    install_requires=(
+        'Django==1.5.0',
+        'django-gubbins==1.1.2'
+    )
+)
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/requirements-detector-0.4/tests/detection/test4/uses_requires.py 
new/requirements-detector-0.6/tests/detection/test4/uses_requires.py
--- old/requirements-detector-0.4/tests/detection/test4/uses_requires.py        
1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/detection/test4/uses_requires.py        
2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1,10 @@
+from distutils.core import setup
+
+setup(
+    name='prospector-test-1',
+    version='0.0.1',
+    requires=[
+        'Django==1.5.0',
+        'django-gubbins==1.1.2'
+    ]
+)
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/requirements-detector-0.4/tests/detection/test4/uses_requires_and_install_requires.py
 
new/requirements-detector-0.6/tests/detection/test4/uses_requires_and_install_requires.py
--- 
old/requirements-detector-0.4/tests/detection/test4/uses_requires_and_install_requires.py
   1970-01-01 01:00:00.000000000 +0100
+++ 
new/requirements-detector-0.6/tests/detection/test4/uses_requires_and_install_requires.py
   2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1,12 @@
+from distutils.core import setup
+
+setup(
+    name='prospector-test-1',
+    version='0.0.1',
+    requires=[
+        'Django==1.5.0',
+    ],
+    install_requires=[
+        'django-gubbins==1.1.2'
+    ]
+)
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/requirements-detector-0.4/tests/detection/test4/utf8.py 
new/requirements-detector-0.6/tests/detection/test4/utf8.py
--- old/requirements-detector-0.4/tests/detection/test4/utf8.py 1970-01-01 
01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/detection/test4/utf8.py 2018-07-22 
10:24:34.000000000 +0200
@@ -0,0 +1,11 @@
+# -*- coding: UTF-8 -*-
+from distutils.core import setup
+
+setup(
+    name=u'prospector-test-4-üéø',
+    version='0.0.1',
+    install_requires=[
+        'Django==1.5.0',
+        'django-gubbins==1.1.2'
+    ]
+)
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/requirements-detector-0.4/tests/detection/test5/invalid_requirements.txt 
new/requirements-detector-0.6/tests/detection/test5/invalid_requirements.txt
--- 
old/requirements-detector-0.4/tests/detection/test5/invalid_requirements.txt    
    1970-01-01 01:00:00.000000000 +0100
+++ 
new/requirements-detector-0.6/tests/detection/test5/invalid_requirements.txt    
    2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1,5 @@
+<<<<<<< HEAD
+django<1.6
+=======
+django
+>>>>>>>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/requirements-detector-0.4/tests/detection/test6/requirements.txt 
new/requirements-detector-0.6/tests/detection/test6/requirements.txt
--- old/requirements-detector-0.4/tests/detection/test6/requirements.txt        
1970-01-01 01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/detection/test6/requirements.txt        
2018-07-22 10:24:34.000000000 +0200
@@ -0,0 +1,82 @@
+# core framework
+uwsgi
+flask
+
+# flask extensions
+flask-mail
+flask-migrate
+flask-oauthlib
+flask-script
+flask-scrypt
+flask-weasyprint
+flask-sqlalchemy
+#flask-testing
+git+git://github.com/jarus/flask-testing.git
+flask-jwt
+flask-bouncer
+flask-restful
+flask-marshmallow
+flask-assets
+flask-collect
+awesome-slugify
+
+# testing
+#fake-factory
+https://github.com/traumtopf/faker/tarball/master
+surrealism
+freezegun
+selenium
+testtools
+
+# maybe extensions
+#restless
+#flash-babel
+#flask-restless
+#flask-assets
+#flask-cache
+#flask-classy
+#flask-debugtoolbar
+#flask-googlemaps
+#flask-gravatar
+#flask-jinjahelpers
+#flask-lesscss
+#flask-markdown
+#flask-moment
+#flask-principal
+#flask-restdoc
+#flask-runner
+#flask-user
+
+# other extensions
+#wtforms-alchemy
+#sqlalchemy-defaults
+#wtforms-components
+#wtforms-json
+
+# testing
+#coverage
+
+# correctness
+#pyflakes
+#pep8
+#flake8
+#pylint
+prospector
+
+# other stuff
+paypalrestsdk
+#outputty
+pycountry
+#certifi
+psycopg2
+#raven[flask] # client for sentry (a web application error logger)
+git+https://github.com/lazzrek/raven-python.git#egg=raven[flask]
+sadisplay==0.3.8dev
+isodate
+colour-runner
+requests
+pygeoip
+
+# webassets filters
+rjsmin
+cssmin
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/requirements-detector-0.4/tests/test_detection.py 
new/requirements-detector-0.6/tests/test_detection.py
--- old/requirements-detector-0.4/tests/test_detection.py       1970-01-01 
01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/test_detection.py       2018-07-22 
10:24:34.000000000 +0200
@@ -0,0 +1,93 @@
+import os
+from unittest import TestCase
+from requirements_detector.detect import from_requirements_txt, 
from_requirements_dir, \
+    from_requirements_blob, from_setup_py, CouldNotParseRequirements
+from requirements_detector.requirement import DetectedRequirement
+
+
+class DependencyDetectionTest(TestCase):
+
+    def _expected(self, *requirements):
+        return [DetectedRequirement.parse(req) for req in requirements]
+
+    def test_requirements_txt_parsing(self):
+        filepath = os.path.join(os.path.dirname(__file__), 
'detection/test1/requirements.txt')
+        dependencies = from_requirements_txt(filepath)
+
+        expected = self._expected(
+            'amqp!=1.0.13',
+            'Django>=1.5.0',
+            'six<1.4,>=1.3.0',
+            'South==0.8.2',
+        )
+
+        self.assertEqual(expected, sorted(dependencies))
+
+    def test_requirements_dir_parsing(self):
+        filepath = os.path.join(os.path.dirname(__file__), 
'detection/test2/requirements')
+        dependencies = from_requirements_dir(filepath)
+
+        expected = self._expected(
+            'amqp==1.0.13',
+            'anyjson==0.3.3',
+            'Django==1.5.2',
+            'South==0.8.2',
+        )
+
+        self.assertEqual(expected, sorted(dependencies))
+
+    def test_requirements_blob_parsing(self):
+        filepath = os.path.join(os.path.dirname(__file__), 'detection/test3')
+        dependencies = from_requirements_blob(filepath)
+
+        expected = self._expected(
+            'amqp==1.0.13',
+            'anyjson==0.3.3',
+            'django-gubbins==1.1.2',
+        )
+
+        self.assertEqual(expected, sorted(dependencies))
+
+    def test_invalid_requirements_txt(self):
+        filepath = os.path.join(os.path.dirname(__file__), 
'detection/test5/invalid_requirements.txt')
+        dependencies = from_requirements_txt(filepath)
+        expected = self._expected('django<1.6', 'django')
+        self.assertEqual(expected, sorted(dependencies))
+
+    def test_invalid_requirements_txt(self):
+        filepath = os.path.join(os.path.dirname(__file__), 
'detection/test6/requirements.txt')
+        from_requirements_txt(filepath)
+
+    def _test_setup_py(self, setup_py_file, *expected):
+        filepath = os.path.join(os.path.dirname(__file__), 'detection/test4', 
setup_py_file)
+        dependencies = from_setup_py(filepath)
+        expected = self._expected(*expected)
+        self.assertEqual(expected, sorted(dependencies))
+
+    def _test_setup_py_not_parseable(self, setup_py_file):
+        filepath = os.path.join(os.path.dirname(__file__), 'detection/test4', 
setup_py_file)
+        self.assertRaises(CouldNotParseRequirements, from_setup_py, filepath)
+
+    def test_simple_setup_py_parsing(self):
+        self._test_setup_py('simple.py', 'Django==1.5.0', 
'django-gubbins==1.1.2')
+
+    def test_setup_py_reqs_defined_in_file_parsing(self):
+        self._test_setup_py('in_file.py', 'Django==1.5.0', 
'django-gubbins==1.1.2')
+
+    def test_setup_py_tuple(self):
+        self._test_setup_py('tuple.py', 'Django==1.5.0', 
'django-gubbins==1.1.2')
+
+    def test_subscript_assign(self):
+        self._test_setup_py('subscript_assign.py', 'Django==1.5.0', 
'django-gubbins==1.1.2')
+
+    def test_utf8_setup_py(self):
+        self._test_setup_py('utf8.py', 'Django==1.5.0', 
'django-gubbins==1.1.2')
+
+    def test_requires_setup_py(self):
+        self._test_setup_py('uses_requires.py', 'Django==1.5.0', 
'django-gubbins==1.1.2')
+
+    def test_requires_and_install_requires_setup_py(self):
+        self._test_setup_py('uses_requires_and_install_requires.py', 
'Django==1.5.0', 'django-gubbins==1.1.2')
+
+    def test_callable_install_requires(self):
+        self._test_setup_py_not_parseable('callable.py')
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/requirements-detector-0.4/tests/test_failure_cases.py 
new/requirements-detector-0.6/tests/test_failure_cases.py
--- old/requirements-detector-0.4/tests/test_failure_cases.py   1970-01-01 
01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/test_failure_cases.py   2018-07-22 
10:24:34.000000000 +0200
@@ -0,0 +1,18 @@
+import os
+from unittest import TestCase
+from requirements_detector.detect import from_setup_py, 
CouldNotParseRequirements
+
+
+class SyntaxErrorTest(TestCase):
+
+    def test_setup_py_syntax_error(self):
+        filepath = os.path.join(os.path.dirname(__file__), 
'detection/syntax_error/setup.py')
+        self.assertRaises(CouldNotParseRequirements, from_setup_py, filepath)
+
+    def test_setup_py_multiline_string(self):
+        filepath = os.path.join(os.path.dirname(__file__), 
'detection/syntax_error/setup_multiline_string.py')
+        from_setup_py(filepath)
+
+    def test_regular_indentation(self):
+        filepath = os.path.join(os.path.dirname(__file__), 
'detection/syntax_error/regular_indentation.py')
+        from_setup_py(filepath)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/requirements-detector-0.4/tests/test_parsing.py 
new/requirements-detector-0.6/tests/test_parsing.py
--- old/requirements-detector-0.4/tests/test_parsing.py 1970-01-01 
01:00:00.000000000 +0100
+++ new/requirements-detector-0.6/tests/test_parsing.py 2018-07-22 
10:24:34.000000000 +0200
@@ -0,0 +1,80 @@
+
+try:
+    import urlparse
+except ImportError:
+    # python3
+    from urllib import parse as urlparse
+
+from unittest import TestCase
+from requirements_detector.requirement import DetectedRequirement, 
_parse_egg_name, _strip_fragment
+
+
+class TestRequirementParsing(TestCase):
+
+    def _test(self, requirement, name=None, version_specs=None, url=None):
+        req = DetectedRequirement.parse(requirement)
+        self.assertEqual(name, req.name)
+        if version_specs is None:
+            self.assertEqual([], req.version_specs)
+        else:
+            for spec in version_specs:
+                self.assertTrue(spec in req.version_specs)
+        self.assertEqual(url, req.url)
+
+    def test_basic_requirement(self):
+        self._test('Django', 'django')
+        self._test('celery', 'celery')
+
+    def test_requirement_with_versions(self):
+        self._test('Django==1.5.2', 'django', [('==', '1.5.2')])
+        self._test('South>0.8', 'south', [('>', '0.8')])
+        self._test('django-gubbins!=1.1.1,>1.1', 'django-gubbins', [('!=', 
'1.1.1'), ('>', '1.1')])
+
+    def test_relative_file_path(self):
+        self._test('../somelib', url='../somelib')
+
+    def test_vcs_url(self):
+        self._test('git+ssh://g...@github.com/something/somelib.git',
+                   url='git+ssh://g...@github.com/something/somelib.git')
+        
self._test('git+ssh://g...@github.com/something/somelib.git#egg=somelib',
+                   name='somelib', 
url='git+ssh://g...@github.com/something/somelib.git')
+        self._test('git://github.com/peeb/django-mollie-ideal.git#egg=mollie',
+                   name='mollie', 
url='git+git://github.com/peeb/django-mollie-ideal.git')
+
+    def test_archive_url(self):
+        self._test('http://example.com/somelib.tar.gz', 
url='http://example.com/somelib.tar.gz')
+        self._test('http://example.com/somelib.tar.gz#egg=somelib', 
name='somelib',
+                   url='http://example.com/somelib.tar.gz')
+
+    def test_editable_relative_path(self):
+        self._test('-e ../somelib', url='../somelib')
+
+    def test_editable_vcs_url(self):
+        self._test('--editable 
git+ssh://g...@github.com/something/somelib.git#egg=somelib',
+                   name='somelib', 
url='git+ssh://g...@github.com/something/somelib.git')
+
+
+class TestEggFragmentParsing(TestCase):
+
+    def test_simple(self):
+        self.assertEqual('somelib', _parse_egg_name('egg=somelib'))
+
+    def test_no_egg_value(self):
+        self.assertTrue(_parse_egg_name('a=b&c=2') is None)
+
+    def test_no_pairs(self):
+        self.assertTrue(_parse_egg_name('somelib') is None)
+
+    def test_first_egg_val(self):
+        self.assertEqual('somelib', 
_parse_egg_name('egg=somelib&egg=anotherlib'))
+
+    def test_multiple_fragment_values(self):
+        self.assertEqual('somelib', _parse_egg_name('a=1&egg=somelib&b=2'))
+
+
+class TestFragmentStripping(TestCase):
+
+    def test_stripping(self):
+        url = 'http://example.com/index.html?a=b&c=2#some_fragment'
+        parts = urlparse.urlparse(url)
+        self.assertEqual('http://example.com/index.html?a=b&c=2', 
_strip_fragment(parts))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/requirements-detector-0.4/tox.ini 
new/requirements-detector-0.6/tox.ini
--- old/requirements-detector-0.4/tox.ini       1970-01-01 01:00:00.000000000 
+0100
+++ new/requirements-detector-0.6/tox.ini       2018-07-22 10:24:34.000000000 
+0200
@@ -0,0 +1,6 @@
+[tox]
+envlist = py26,py27,py33,py34,py35
+
+[testenv]
+deps=nose
+commands=nosetests -s


Reply via email to