diff --git a/src/packageurl/contrib/url2purl.py b/src/packageurl/contrib/url2purl.py
index 8d5bde2..d10f4ed 100644
--- a/src/packageurl/contrib/url2purl.py
+++ b/src/packageurl/contrib/url2purl.py
@@ -343,7 +343,7 @@ def build_github_api_purl(url):
 
 github_codeload_pattern = (
     r"https?://codeload.github.com/"
-    r"(?P<namespace>.+)/(?P<name>.+)/(zip|tar.gz|tar.bz2|.tgz)/v(?P<version>.+)$"
+    r"(?P<namespace>.+)/(?P<name>.+)/(zip|tar.gz|tar.bz2|.tgz)/v?(?P<version>.+)$"
 )
 
 
@@ -367,17 +367,27 @@ def build_github_purl(url):
     https://github.com/package-url/packageurl-js or
     https://github.com/nexB/scancode-toolkit/archive/v3.1.1.zip
     """
-    #https://github.com/nexB/scancode-toolkit/archive/v3.1.1.zip
-    gh_pattern = r"https?://github.com/(?P<namespace>.+)/(?P<name>.+)/archive/v(?P<version>.+).(zip|tar.gz|tar.bz2|.tgz)"
-    matches = re.search(gh_pattern, url)
+    # https://github.com/nexB/scancode-toolkit/archive/v3.1.1.zip
+    archive_pattern = (
+        r"https?://github.com/(?P<namespace>.+)/(?P<name>.+)"
+        r"/archive/v?(?P<version>.+).(zip|tar.gz|tar.bz2|.tgz)"
+    )
 
-    if matches:
-        return purl_from_pattern(type_='github', pattern=gh_pattern, url=url)
+    # https://github.com/pypa/get-virtualenv/raw/20.0.31/public/virtualenv.pyz
+    raw_pattern = (
+        r"https?://github.com/(?P<namespace>.+)/(?P<name>.+)"
+        r"/raw/v?(?P<version>[^/]+)/(?P<subpath>.*)$"
+    )
 
-    segments = get_path_segments(url)
+    for pattern in [archive_pattern, raw_pattern]:
+        matches = re.search(pattern, url)
+        if matches:
+            return purl_from_pattern(type_='github', pattern=pattern, url=url)
 
-    if segments==[]:
+    segments = get_path_segments(url)
+    if not segments:
         return
+
     namespace = segments[0]
     name = segments[1]
     version = None

diff --git a/tests/contrib/data/url2purl.json b/tests/contrib/data/url2purl.json
index 899170a..db52fff 100644
--- a/tests/contrib/data/url2purl.json
+++ b/tests/contrib/data/url2purl.json
@@ -1,5 +1,5 @@
 {
-  "http://central.maven.org/maven2/ant-contrib/ant-contrib/1.0b3/ant-contrib-1.0b3.jar": "pkg:maven/ant-contrib/ant-contrib@1.0b3", 
+  "http://central.maven.org/maven2/ant-contrib/ant-contrib/1.0b3/ant-contrib-1.0b3.jar": "pkg:maven/ant-contrib/ant-contrib@1.0b3",
   "http://repo1.maven.org/maven2/ant-contrib/ant-contrib/1.0b3/ant-contrib-1.0b3.jar": "pkg:maven/ant-contrib/ant-contrib@1.0b3",
   "maven-index://repo1.maven.org/ant-contrib/ant-contrib/1.0b3/ant-contrib-1.0b3.jar": "pkg:maven/ant-contrib/ant-contrib@1.0b3",
   "maven-index://repo1.maven.org/ant-contrib/ant-contrib/1.0b3/": "pkg:maven/ant-contrib/ant-contrib@1.0b3",
@@ -13,18 +13,18 @@
   "http://central.maven.org/maven2/org/apache/commons/commons-math3/3.6.1/commons-math3-3.6.1-sources.jar": "pkg:maven/org.apache.commons/commons-math3@3.6.1?classifier=sources",
   "http://repo1.maven.org/maven2/jdbm/jdbm/0.20-dev/jdbm-0.20-dev.pom": "pkg:maven/jdbm/jdbm@0.20-dev?type=pom",
   "http://central.maven.org/maven2/ant/ant-optional/1.5.3-1/ant-optional-1.5.3-1.jar": "pkg:maven/ant/ant-optional@1.5.3-1",
-  "http://central.maven.org/maven2/ant/ant/1.5/ant-1.5.jar": "pkg:maven/ant/ant@1.5", 
-  "http://central.maven.org/maven2/antlr/antlr/2.7.7/antlr-2.7.7.jar": "pkg:maven/antlr/antlr@2.7.7", 
-  "http://central.maven.org/maven2/aopalliance/aopalliance/1.0/aopalliance-1.0.jar": "pkg:maven/aopalliance/aopalliance@1.0", 
-  "http://central.maven.org/maven2/fr/opensagres/xdocreport/fr.opensagres.xdocreport.converter.docx.xwpf/1.0.5/fr.opensagres.xdocreport.converter.docx.xwpf-1.0.5.jar": "pkg:maven/fr.opensagres.xdocreport/fr.opensagres.xdocreport.converter.docx.xwpf@1.0.5", 
-  "http://central.maven.org/maven2/org/eclipse/jetty/orbit/org.apache.jasper.glassfish/2.2.2.v201112011158/org.apache.jasper.glassfish-2.2.2.v201112011158-sources.jar": "pkg:maven/org.eclipse.jetty.orbit/org.apache.jasper.glassfish@2.2.2.v201112011158?classifier=sources", 
-  "http://central.maven.org/maven2/org/eclipse/jetty/orbit/org.apache.taglibs.standard.glassfish/1.2.0.v201112081803/org.apache.taglibs.standard.glassfish-1.2.0.v201112081803-sources.jar": "pkg:maven/org.eclipse.jetty.orbit/org.apache.taglibs.standard.glassfish@1.2.0.v201112081803?classifier=sources", 
-  "http://central.maven.org/maven2/org/springframework/security/kerberos/spring-security-kerberos-core/1.0.1.RELEASE/spring-security-kerberos-core-1.0.1.RELEASE-sources.jar": "pkg:maven/org.springframework.security.kerberos/spring-security-kerberos-core@1.0.1.RELEASE?classifier=sources", 
-  "http://central.maven.org/maven2/org/springframework/security/kerberos/spring-security-kerberos-web/1.0.1.RELEASE/spring-security-kerberos-web-1.0.1.RELEASE-sources.jar": "pkg:maven/org.springframework.security.kerberos/spring-security-kerberos-web@1.0.1.RELEASE?classifier=sources", 
-  "http://central.maven.org/maven2/xmlunit/xmlunit/1.1/xmlunit-1.1.jar": "pkg:maven/xmlunit/xmlunit@1.1", 
-  "http://central.maven.org/maven2/xom/xom/1.0/xom-1.0.jar": "pkg:maven/xom/xom@1.0", 
-  "http://central.maven.org/maven2/xom/xom/1.1/xom-1.1-sources.jar": "pkg:maven/xom/xom@1.1?classifier=sources", 
-  "http://central.maven.org/maven2/xpp3/xpp3/1.1.3.4.O/xpp3-1.1.3.4.O.jar": "pkg:maven/xpp3/xpp3@1.1.3.4.O", 
+  "http://central.maven.org/maven2/ant/ant/1.5/ant-1.5.jar": "pkg:maven/ant/ant@1.5",
+  "http://central.maven.org/maven2/antlr/antlr/2.7.7/antlr-2.7.7.jar": "pkg:maven/antlr/antlr@2.7.7",
+  "http://central.maven.org/maven2/aopalliance/aopalliance/1.0/aopalliance-1.0.jar": "pkg:maven/aopalliance/aopalliance@1.0",
+  "http://central.maven.org/maven2/fr/opensagres/xdocreport/fr.opensagres.xdocreport.converter.docx.xwpf/1.0.5/fr.opensagres.xdocreport.converter.docx.xwpf-1.0.5.jar": "pkg:maven/fr.opensagres.xdocreport/fr.opensagres.xdocreport.converter.docx.xwpf@1.0.5",
+  "http://central.maven.org/maven2/org/eclipse/jetty/orbit/org.apache.jasper.glassfish/2.2.2.v201112011158/org.apache.jasper.glassfish-2.2.2.v201112011158-sources.jar": "pkg:maven/org.eclipse.jetty.orbit/org.apache.jasper.glassfish@2.2.2.v201112011158?classifier=sources",
+  "http://central.maven.org/maven2/org/eclipse/jetty/orbit/org.apache.taglibs.standard.glassfish/1.2.0.v201112081803/org.apache.taglibs.standard.glassfish-1.2.0.v201112081803-sources.jar": "pkg:maven/org.eclipse.jetty.orbit/org.apache.taglibs.standard.glassfish@1.2.0.v201112081803?classifier=sources",
+  "http://central.maven.org/maven2/org/springframework/security/kerberos/spring-security-kerberos-core/1.0.1.RELEASE/spring-security-kerberos-core-1.0.1.RELEASE-sources.jar": "pkg:maven/org.springframework.security.kerberos/spring-security-kerberos-core@1.0.1.RELEASE?classifier=sources",
+  "http://central.maven.org/maven2/org/springframework/security/kerberos/spring-security-kerberos-web/1.0.1.RELEASE/spring-security-kerberos-web-1.0.1.RELEASE-sources.jar": "pkg:maven/org.springframework.security.kerberos/spring-security-kerberos-web@1.0.1.RELEASE?classifier=sources",
+  "http://central.maven.org/maven2/xmlunit/xmlunit/1.1/xmlunit-1.1.jar": "pkg:maven/xmlunit/xmlunit@1.1",
+  "http://central.maven.org/maven2/xom/xom/1.0/xom-1.0.jar": "pkg:maven/xom/xom@1.0",
+  "http://central.maven.org/maven2/xom/xom/1.1/xom-1.1-sources.jar": "pkg:maven/xom/xom@1.1?classifier=sources",
+  "http://central.maven.org/maven2/xpp3/xpp3/1.1.3.4.O/xpp3-1.1.3.4.O.jar": "pkg:maven/xpp3/xpp3@1.1.3.4.O",
   "http://central.maven.org/maven2/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c.jar": "pkg:maven/xpp3/xpp3_min@1.1.4c",
   "http://central.maven.org/maven2/org/apache/zookeeper/zookeeper/3.4.6/": "pkg:maven/org.apache.zookeeper/zookeeper@3.4.6",
   "http://central.maven.org/maven2/org/apache/zookeeper/zookeeper/3.4.6": "pkg:maven/org.apache.zookeeper/zookeeper@3.4.6",
@@ -62,24 +62,24 @@
   "https://registry.yarnpkg.com/@invisionag%2feslint-config-ivx": "pkg:npm/%40invisionag/eslint-config-ivx",
   "https://registry.npmjs.org/automatta/-/automatta-0.0.1.tgz": "pkg:npm/automatta@0.0.1",
   "http://registry.npmjs.org/1to2/-/1to2-1.0.0.tgz": "pkg:npm/1to2@1.0.0",
-  "http://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz": "pkg:npm/abbrev@1.0.9", 
-  "http://registry.npmjs.org/accepts/-/accepts-1.2.2.tgz": "pkg:npm/accepts@1.2.2", 
+  "http://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz": "pkg:npm/abbrev@1.0.9",
+  "http://registry.npmjs.org/accepts/-/accepts-1.2.2.tgz": "pkg:npm/accepts@1.2.2",
   "http://registry.npmjs.org/acorn/-/acorn-0.11.0.tgz": "pkg:npm/acorn@0.11.0",
-  "http://registry.npmjs.org/co/-/co-4.6.0.tgz": "pkg:npm/co@4.6.0", 
-  "http://registry.npmjs.org/d/-/d-0.1.1.tgz": "pkg:npm/d@0.1.1", 
-  "http://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz": "pkg:npm/functional-red-black-tree@1.0.1", 
-  "http://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz": "pkg:npm/json-stable-stringify-without-jsonify@1.0.1", 
+  "http://registry.npmjs.org/co/-/co-4.6.0.tgz": "pkg:npm/co@4.6.0",
+  "http://registry.npmjs.org/d/-/d-0.1.1.tgz": "pkg:npm/d@0.1.1",
+  "http://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz": "pkg:npm/functional-red-black-tree@1.0.1",
+  "http://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz": "pkg:npm/json-stable-stringify-without-jsonify@1.0.1",
   "http://registry.npmjs.org/ms/-/ms-0.7.1.tgz": "pkg:npm/ms@0.7.1",
-  "http://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz": "pkg:npm/validate-npm-package-license@3.0.1", 
+  "http://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz": "pkg:npm/validate-npm-package-license@3.0.1",
   "https://registry.npmjs.org/@invisionag/eslint-config-ivx/-/eslint-config-ivx-0.0.2.tgz": "pkg:npm/%40invisionag/eslint-config-ivx@0.0.2",
-  "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz": "pkg:npm/fast-json-stable-stringify@2.0.0", 
-  "https://registry.npmjs.org/q/-/q-1.5.1.tgz": "pkg:npm/q@1.5.1", 
-  "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz": "pkg:npm/remove-trailing-separator@1.1.0", 
-  "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz": "pkg:npm/wide-align@1.1.2", 
-  "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz": "pkg:npm/widest-line@2.0.0", 
-  "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz": "pkg:npm/write-file-atomic@2.3.0", 
-  "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz": "pkg:npm/xdg-basedir@3.0.0", 
-  "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz": "pkg:npm/yallist@2.1.2", 
+  "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz": "pkg:npm/fast-json-stable-stringify@2.0.0",
+  "https://registry.npmjs.org/q/-/q-1.5.1.tgz": "pkg:npm/q@1.5.1",
+  "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz": "pkg:npm/remove-trailing-separator@1.1.0",
+  "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz": "pkg:npm/wide-align@1.1.2",
+  "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz": "pkg:npm/widest-line@2.0.0",
+  "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz": "pkg:npm/write-file-atomic@2.3.0",
+  "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz": "pkg:npm/xdg-basedir@3.0.0",
+  "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz": "pkg:npm/yallist@2.1.2",
 
   "http://rubygems.org/downloads/":  null,
   "http://rubygems.org/downloads/macaddr-1.6.1":  null,
@@ -87,13 +87,13 @@
   "http://rubygems.org/downloads/open4-1.3.0.gem": "pkg:rubygems/open4@1.3.0",
   "https://rubygems.org/downloads/actionmailer-4.0.3.gem": "pkg:rubygems/actionmailer@4.0.3",
   "https://rubygems.org/downloads/activerecord-deprecated_finders-1.0.3.gem": "pkg:rubygems/activerecord-deprecated_finders@1.0.3",
-  "https://rubygems.org/downloads/ejs-1.1.1.gem": "pkg:rubygems/ejs@1.1.1", 
-  "https://rubygems.org/downloads/eventmachine-0.12.11.cloudfoundry.3.gem": "pkg:rubygems/eventmachine@0.12.11.cloudfoundry.3", 
-  "https://rubygems.org/downloads/ffi-1.9.3.gem": "pkg:rubygems/ffi@1.9.3", 
-  "https://rubygems.org/downloads/jwt-0.1.8.gem": "pkg:rubygems/jwt@0.1.8", 
-  "https://rubygems.org/downloads/ref-1.0.5.gem": "pkg:rubygems/ref@1.0.5", 
-  "https://rubygems.org/downloads/talentbox-delayed_job_sequel-4.0.0.gem": "pkg:rubygems/talentbox-delayed_job_sequel@4.0.0", 
-  "https://rubygems.org/downloads/unf-0.1.3.gem": "pkg:rubygems/unf@0.1.3", 
+  "https://rubygems.org/downloads/ejs-1.1.1.gem": "pkg:rubygems/ejs@1.1.1",
+  "https://rubygems.org/downloads/eventmachine-0.12.11.cloudfoundry.3.gem": "pkg:rubygems/eventmachine@0.12.11.cloudfoundry.3",
+  "https://rubygems.org/downloads/ffi-1.9.3.gem": "pkg:rubygems/ffi@1.9.3",
+  "https://rubygems.org/downloads/jwt-0.1.8.gem": "pkg:rubygems/jwt@0.1.8",
+  "https://rubygems.org/downloads/ref-1.0.5.gem": "pkg:rubygems/ref@1.0.5",
+  "https://rubygems.org/downloads/talentbox-delayed_job_sequel-4.0.0.gem": "pkg:rubygems/talentbox-delayed_job_sequel@4.0.0",
+  "https://rubygems.org/downloads/unf-0.1.3.gem": "pkg:rubygems/unf@0.1.3",
   "https://rubygems.org/downloads/yajl-ruby-1.2.0.gem": "pkg:rubygems/yajl-ruby@1.2.0",
 
   "https://pypi.python.org/packages/source/z/zc.recipe.egg/zc.recipe.egg-2.0.0.tar.gz": "pkg:pypi/zc.recipe.egg@2.0.0",
@@ -155,10 +155,16 @@
   "https://raw.githubusercontent.com/volatilityfoundation/dwarf2json/master/LICENSE.txt": "pkg:github/volatilityfoundation/dwarf2json@master#LICENSE.txt",
   "https://api.github.com/repos/nexB/scancode-toolkit": "pkg:github/nexb/scancode-toolkit",
   "https://api.github.com/repos/nexB/scancode-toolkit/commits/40593af0df6c8378d2b180324b97cb439fa11d66": "pkg:github/nexb/scancode-toolkit@40593af0df6c8378d2b180324b97cb439fa11d66",
+  "https://codeload.github.com/nexB/scancode-toolkit/tar.gz/3.1.1": "pkg:github/nexb/scancode-toolkit@3.1.1",
   "https://codeload.github.com/nexB/scancode-toolkit/tar.gz/v3.1.1": "pkg:github/nexb/scancode-toolkit@3.1.1",
+  "https://codeload.github.com/nexB/scancode-toolkit/zip/3.1.1": "pkg:github/nexb/scancode-toolkit@3.1.1",
   "https://codeload.github.com/nexB/scancode-toolkit/zip/v3.1.1": "pkg:github/nexb/scancode-toolkit@3.1.1",
+  "https://codeload.github.com/nexB/scancode.io/tar.gz/1.0": "pkg:github/nexb/scancode.io@1.0",
   "https://codeload.github.com/nexB/scancode.io/tar.gz/v1.0": "pkg:github/nexb/scancode.io@1.0",
+  "https://github.com/nexB/scancode-toolkit/archive/3.1.1.zip": "pkg:github/nexb/scancode-toolkit@3.1.1",
   "https://github.com/nexB/scancode-toolkit/archive/v3.1.1.zip": "pkg:github/nexb/scancode-toolkit@3.1.1",
+  "https://github.com/pypa/get-virtualenv/raw/20.0.31/public/virtualenv.pyz": "pkg:github/pypa/get-virtualenv@20.0.31#public/virtualenv.pyz",
+  "https://github.com/pypa/get-virtualenv/raw/v20.0.31/public/virtualenv.pyz": "pkg:github/pypa/get-virtualenv@20.0.31#public/virtualenv.pyz",
 
   "https://bitbucket.org/TG1999/first_repo/src/qa/": "pkg:bitbucket/tg1999/first_repo@qa",
   "https://bitbucket.org/TG1999/first_repo/src/QA/": "pkg:bitbucket/tg1999/first_repo@QA",

Incorrect PURL inferred from download URL
With https://github.com/pypa/get-virtualenv/raw/20.0.31/public/virtualenv.pyz this purl is inferred:  
`pkg:github/pypa/get-virtualenv@raw#20.0.31/public/virtualenv.pyz` and this is not correct.  
It should be instead:  
`pkg:github/pypa/get-virtualenv@20.0.31#/public/virtualenv.pyz`

```Python
>>> from packageurl import url2purl
>>> url2purl.get_purl('https://github.com/pypa/get-virtualenv/raw/20.0.31/public/virtualenv.pyz')
PackageURL(type='github', namespace='pypa', name='get-virtualenv', version='raw', qualifiers=OrderedDict(), subpath='20.0.31/public/virtualenv.pyz')
```


tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_codeload_github_com_nexb_scancode_io_tar_gz_1_0 tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_codeload_github_com_nexb_scancode_toolkit_tar_gz_3_1_1 tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_codeload_github_com_nexb_scancode_toolkit_zip_3_1_1 tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_github_com_nexb_scancode_toolkit_archive_3_1_1_zip tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_github_com_pypa_get_virtualenv_raw_20_0_31_public_virtualenv_pyz tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_github_com_pypa_get_virtualenv_raw_v20_0_31_public_virtualenv_pyz
tests/contrib/test_get_path_segments.py::test_parsing_with_quoted_uri tests/contrib/test_get_path_segments.py::test_parsing_empty_string tests/contrib/test_get_path_segments.py::test_parsing_with_one_segment tests/contrib/test_purl2url.py::test_purl2url_with_valid_purls tests/contrib/test_purl2url.py::test_convert_with_invalid_purls tests/contrib/test_url2purl.py::TestURL2PURL::test_get_purl_empty_string tests/contrib/test_url2purl.py::TestURL2PURL::test_get_purl_none tests/contrib/test_url2purl.py::TestURL2PURL::test_get_purl_unroutable_uri tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_ant_ant_1_5_ant_1_5_jar tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_ant_ant_optional_1_5_3_1_ant_optional_1_5_3_1_jar tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_ant_contrib_ant_contrib_1_0b3_ant_contrib_1_0b3_jar tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_antlr_antlr_2_7_7_antlr_2_7_7_jar tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_aopalliance_aopalliance_1_0_aopalliance_1_0_jar tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_com_amazonaws_aws_java_sdk_1_8_5_aws_java_sdk_1_8_5_jar_asc tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_com_github_jnr_jffi_1_2_10_jffi_1_2_10_native_jar tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_com_sun_jersey_jersey_archive_1_19_jersey_archive_1_19_zip tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_commons_codec_commons_codec_1_6_commons_codec_1_6_javadoc_jar tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_commons_codec_commons_codec_1_6_commons_codec_1_6_tests_jar tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_commons_io_commons_io_2_3_commons_io_2_3_test_sources_jar tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_fr_opensagres_xdocreport_fr_opensagres_xdocreport_converter_docx_xwpf_1_0_5_fr_opensagres_xdocreport_converter_docx_xwpf_1_0_5_jar tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_javax_activation_activation_1_1_activation_1_1_sources_jar tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_net_sf_json_lib_json_lib_2_3_json_lib_2_3_jdk15_jar tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_org_apache_axis2_mex_1_6_2_mex_1_6_2_mar tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_org_apache_commons_commons_math3_3_6_1_commons_math3_3_6_1_sources_jar tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_org_apache_geronimo_gshell_gshell_assembly_1_0_alpha_1_gshell_assembly_1_0_alpha_1_full_zip tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_org_apache_geronimo_specs_geronimo_servlet_3_0_spec_1_0_geronimo_servlet_3_0_spec_1_0_source_release_tar_gz tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_org_apache_kafka_kafka_2_11_0_10_1_0_kafka_2_11_0_10_1_0_scaladoc_jar tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_org_apache_yoko_yoko_1_0_yoko_1_0_pom tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_org_apache_zookeeper_zookeeper_3_4_6 tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_org_apache_zookeeper_zookeeper_3_4_6_zookeeper_3_4_6_jar tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_org_apache_zookeeper_zookeeper_3_4_6_zookeeper_3_4_6_jar_asc tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_org_apache_zookeeper_zookeeper_3_4_6_zookeeper_3_4_6_jar_asc_md5 tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_org_apache_zookeeper_zookeeper_3_4_6_zookeeper_3_4_6_jar_asc_sha1 tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_org_apache_zookeeper_zookeeper_3_4_6_zookeeper_3_4_6_jar_md5 tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_org_apache_zookeeper_zookeeper_3_4_6_zookeeper_3_4_6_jar_sha1 tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_org_apache_zookeeper_zookeeper_3_4_6_zookeeper_3_4_6_javadoc_jar tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_org_apache_zookeeper_zookeeper_3_4_6_zookeeper_3_4_6_sources_jar tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_org_apache_zookeeper_zookeeper_3_4_6_zookeeper_3_4_6_tests_jar tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_org_drools_drools_guvnor_5_1_0_drools_guvnor_5_1_0_war tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_org_eclipse_jetty_jetty_distribution_9_4_11_v20180605_jetty_distribution_9_4_11_v20180605_tar_gz tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_org_eclipse_jetty_orbit_org_apache_jasper_glassfish_2_2_2_v201112011158_org_apache_jasper_glassfish_2_2_2_v201112011158_sources_jar tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_org_eclipse_jetty_orbit_org_apache_taglibs_standard_glassfish_1_2_0_v201112081803_org_apache_taglibs_standard_glassfish_1_2_0_v201112081803_sources_jar tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_org_jasypt_jasypt_1_9_0_jasypt_1_9_0_lite_jar tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_org_jmxtrans_jmxtrans_251_jmxtrans_251_rpm tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_org_mongodb_casbah_commons_2_10_2_6_1_casbah_commons_2_10_2_6_1_test_jar tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_org_springframework_security_kerberos_spring_security_kerberos_core_1_0_1_release_spring_security_kerberos_core_1_0_1_release_sources_jar tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_org_springframework_security_kerberos_spring_security_kerberos_web_1_0_1_release_spring_security_kerberos_web_1_0_1_release_sources_jar tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_servicemix_servicemix_1_0_servicemix_1_0_src_zip tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_xmlunit_xmlunit_1_1_xmlunit_1_1_jar tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_xom_xom_1_0_xom_1_0_jar tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_xom_xom_1_1_xom_1_1_sources_jar tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_xpp3_xpp3_1_1_3_4_o_xpp3_1_1_3_4_o_jar tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_central_maven_org_maven2_xpp3_xpp3_min_1_1_4c_xpp3_min_1_1_4c_jar tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_iweb_dl_sourceforge_net_project_findbugs_findbugs_1_3_4_findbugs_1_3_4_tar_gz tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_iweb_dl_sourceforge_net_project_sblim_sblim_cim_client2_2_2_5_sblim_cim_client2_2_2_5_src_zip tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_master_dl_sourceforge_net_project_a2freedom_a2_1_2_a2freedom_1_2_zip tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_master_dl_sourceforge_net_project_aloyscore_aloyscore_0_1a1_20stable_0_1a1_stable_aloyscore_zip tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_master_dl_sourceforge_net_project_arestc_net_sf_arestc_arestc_0_1_4_arestc_0_1_4_javadoc_jar tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_master_dl_sourceforge_net_project_intraperson_oldfiles_intraperson_0_28_intraperson_0_28_tar_gz tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_master_dl_sourceforge_net_project_iswraid_iswraid_0_1_4_3_2_4_28_pre3_iswraid_patch_gz tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_master_dl_sourceforge_net_project_libpng_zlib_1_2_3_zlib_1_2_3_tar_bz2 tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_master_dl_sourceforge_net_project_myenterprise_oldfiles_1_0_0_2_myenterprise_source_zip tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_master_dl_sourceforge_net_project_pwiki_pwiki_0_1_2_0_1_2_zip tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_master_dl_sourceforge_net_project_tinyos_oldfiles_tinyos_1_1_0_tinyos_1_1_0_tar_gz tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_master_dl_sourceforge_net_project_urlchecker_lu_ng_urlchecker_urlchecker_1_7_urlchecker_1_7_javadoc_jar tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_master_dl_sourceforge_net_project_wxhaskell_wxhaskell_wxhaskell_0_9_wxhaskell_src_0_9_zip tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_master_dl_sourceforge_net_project_wxmozilla_wxmozilla_0_5_5_wxmozilla_0_5_5_exe tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_master_dl_sourceforge_net_project_xmlstar_xmlstarlet_1_0_0_xmlstarlet_1_0_0_1_src_rpm tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_master_dl_sourceforge_net_project_zapping_zvbi_0_2_35_zvbi_0_2_35_tar_bz2 tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_master_dl_sourceforge_net_project_zclasspath_maven2_org_zclasspath_zclasspath_1_5_zclasspath_1_5_jar tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_master_dl_sourceforge_net_project_zinnia_zinnia_win32_0_06_zinnia_win32_0_06_zip tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_master_dl_sourceforge_net_project_zznotes_zznotes_1_1_2_zznotes_1_1_2_tar_gz tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_nuget_org_packages_entityframework_4_2_0_0 tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_registry_npmjs_org_1to2_1to2_1_0_0_tgz tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_registry_npmjs_org_abbrev_abbrev_1_0_9_tgz tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_registry_npmjs_org_accepts_accepts_1_2_2_tgz tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_registry_npmjs_org_acorn_acorn_0_11_0_tgz tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_registry_npmjs_org_co_co_4_6_0_tgz tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_registry_npmjs_org_d_d_0_1_1_tgz tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_registry_npmjs_org_functional_red_black_tree_functional_red_black_tree_1_0_1_tgz tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_registry_npmjs_org_json_stable_stringify_without_jsonify_json_stable_stringify_without_jsonify_1_0_1_tgz tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_registry_npmjs_org_ms_ms_0_7_1_tgz tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_registry_npmjs_org_validate_npm_package_license_validate_npm_package_license_3_0_1_tgz tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_repo1_maven_org_maven2 tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_repo1_maven_org_maven2_ant_contrib_ant_contrib_1_0b3_ant_contrib_1_0b3_jar tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_repo1_maven_org_maven2_jdbm_jdbm tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_repo1_maven_org_maven2_jdbm_jdbm_020_dev_jdbm_020_dev tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_repo1_maven_org_maven2_jdbm_jdbm_0_20_dev tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_repo1_maven_org_maven2_jdbm_jdbm_0_20_dev_jdbm_0_20_dev_jar tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_repo1_maven_org_maven2_jdbm_jdbm_0_20_dev_jdbm_0_20_dev_pom tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_repo1_maven_org_maven2_org_apache_commons_commons_math3_3_6_1_commons_math3_3_6_1_jar tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_rubygems_org_downloads tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_rubygems_org_downloads_macaddr_1_6_1 tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_rubygems_org_downloads_macaddr_1_6_1_gem tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_rubygems_org_downloads_open4_1_3_0_gem tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_www_nuget_org_api_v2_package_entityframework_6_1_0 tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_http_www_nuget_org_packages_sharpgis_gzipwebclient_1_2_0 tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_api_github_com_repos_nexb_scancode_toolkit tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_api_github_com_repos_nexb_scancode_toolkit_commits_40593af0df6c8378d2b180324b97cb439fa11d66 tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_api_nuget_org_v3_flatcontainer_newtonsoft_json_10_0_1_newtonsoft_json_10_0_1_nupkg tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_bitbucket_org_tg1999 tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_bitbucket_org_tg1999_first_repo tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_bitbucket_org_tg1999_first_repo_new_folder tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_bitbucket_org_tg1999_first_repo_src tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_bitbucket_org_tg1999_first_repo_src_master_new_folder tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_bitbucket_org_tg1999_first_repo_src_qa tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_codeload_github_com_nexb_scancode_io_tar_gz_v1_0 tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_codeload_github_com_nexb_scancode_toolkit_tar_gz_v3_1_1 tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_codeload_github_com_nexb_scancode_toolkit_zip_v3_1_1 tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_crates_io_api_v1_crates_clap_2_33_0_download tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_crates_io_api_v1_crates_rand_0_7_2_download tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_crates_io_api_v1_crates_structopt_0_3_11_download tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_files_pythonhosted_org_packages_7f_cf_12d4611fc67babd4ae250c9e8249c5650ae1933395488e9e7e3562b4ff24_amqp_2_3_2_py2_py3_none_any_whl_sha256_eed41946890cd43e8dee44a316b85cf6fee5a1a34bb4a562b660a358eb529e1b tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_files_pythonhosted_org_packages_87_44_0fa8e9d0cccb8eb86fc1b5170208229dc6d6e9fd6e57ea1fe19cbeea68f5_aboutcode_toolkit_3_4_0rc1_py2_py3_none_any_whl tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_github_com_nexb_scancode_toolkit_archive_v3_1_1_zip tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_github_com_nexb_scancode_toolkit_tree_develop_plugins_scancode_ctags_macosx_10_9_intel tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_github_com_package_url_packageurl_js tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_github_com_package_url_packageurl_js_tree_master tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_github_com_package_url_packageurl_js_tree_master_test_data tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_github_com_tg1999 tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_github_com_tg1999_fetchcode_fetchcode_src tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_github_com_tg1999_fetchcode_master tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_github_com_tg1999_fetchcode_tree tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_github_com_tg1999_fetchcode_tree_documentation_fetchcode tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_gitlab_com_tg1999_firebase tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_gitlab_com_tg1999_firebase_master tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_gitlab_com_tg1999_firebase_tree tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_gitlab_com_tg1999_firebase_tree_1a122122_views tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_gitlab_com_tg1999_firebase_tree_master tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_hackage_haskell_org_package_3d_graphics_examples_0_0_0_2_3d_graphics_examples_0_0_0_2_tar_gz tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_hackage_haskell_org_package_a50_0_5_a50_0_5_tar_gz tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_hackage_haskell_org_package_ac_halfinteger_1_2_1_ac_halfinteger_1_2_1_tar_gz tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_pypi_python_org_packages_1e_75_8005d086cac4cc41d3b320d338972c5e5c6a21f88472f21ac9d0e031d300_pyahocorasick_1_1_4_tar_bz2_md5_ad445b6648dc06e9040705ce1ccb4384 tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_pypi_python_org_packages_34_c1_8806f99713ddb993c5366c362b2f908f18269f8d792aff1abfd700775a77_click_6_7_py2_py3_none_any_whl_md5_5e7a4e296b3212da2ff11017675d7a4d tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_pypi_python_org_packages_38_e2_b23434f4030bbb1af3bcdbb2ecff6b11cf2e467622446ce66a08e99f2ea9_pluggy_0_4_0_zip_md5_447a92368175965d2fbacaef9f3df842 tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_pypi_python_org_packages_bd_e8_ea44ba5357a0b4fd16e5fb60c355fc8722eae31b93d7597eec50f7c35a52_pycryptodome_3_4_7_cp27_cp27m_win_amd64_whl_md5_f20bb847322baf7ae24700e5cbb15e07 tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_pypi_python_org_packages_f6_ae_bbc6a204f33d9d57c798fb3857a072cd14b836792244eea4b446fdb674c6_pycryptodome_3_4_7_cp27_cp27m_win32_whl_md5_78b341de1cd686077745cd9e3a93d8d3 tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_pypi_python_org_packages_py2_py3_w_wheel_bad_wheel_name_any_whl tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_pypi_python_org_packages_py2_py3_w_wheel_wheel_0_29_0_py2_py3_none_any_whl tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_pypi_python_org_packages_py2_py3_w_wheel_wheel_0_29_0_py2_py3_none_any_whl_md5_d7db45db5c131af262b8ffccde46a88a tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_pypi_python_org_packages_source_p_python_openid_python_openid_2_2_5_zip tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_pypi_python_org_packages_source_z_zc_recipe_egg_zc_recipe_egg_2_0_0_tar_gz tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_raw_githubusercontent_com_volatilityfoundation_dwarf2json_master_license_txt tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_registry_npmjs_org_automatta_automatta_0_0_1_tgz tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_registry_npmjs_org_fast_json_stable_stringify_fast_json_stable_stringify_2_0_0_tgz tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_registry_npmjs_org_invisionag_eslint_config_ivx_eslint_config_ivx_0_0_2_tgz tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_registry_npmjs_org_q_q_1_5_1_tgz tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_registry_npmjs_org_remove_trailing_separator_remove_trailing_separator_1_1_0_tgz tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_registry_npmjs_org_wide_align_wide_align_1_1_2_tgz tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_registry_npmjs_org_widest_line_widest_line_2_0_0_tgz tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_registry_npmjs_org_write_file_atomic_write_file_atomic_2_3_0_tgz tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_registry_npmjs_org_xdg_basedir_xdg_basedir_3_0_0_tgz tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_registry_npmjs_org_yallist_yallist_2_1_2_tgz tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_registry_yarnpkg_com_invisionag tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_registry_yarnpkg_com_invisionag_2feslint_config_ivx tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_registry_yarnpkg_com_invisionag_eslint_config_ivx tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_rubygems_org_downloads_actionmailer_4_0_3_gem tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_rubygems_org_downloads_activerecord_deprecated_finders_1_0_3_gem tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_rubygems_org_downloads_ejs_1_1_1_gem tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_rubygems_org_downloads_eventmachine_0_12_11_cloudfoundry_3_gem tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_rubygems_org_downloads_ffi_1_9_3_gem tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_rubygems_org_downloads_jwt_0_1_8_gem tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_rubygems_org_downloads_ref_1_0_5_gem tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_rubygems_org_downloads_talentbox_delayed_job_sequel_4_0_0_gem tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_rubygems_org_downloads_unf_0_1_3_gem tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_rubygems_org_downloads_yajl_ruby_1_2_0_gem tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_www_nuget_org_api_v2_package_mvvmlightlibs_4_1_23 tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_www_nuget_org_api_v2_package_newtonsoft_json_11_0_1 tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_https_www_nuget_org_api_v2_package_twilio_3_4_1 tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_maven_index_repo1_maven_org_ant_contrib_ant_contrib_1_0b3 tests/contrib/test_url2purl.py::TestURL2PURLDataDriven::test_url2purl_maven_index_repo1_maven_org_ant_contrib_ant_contrib_1_0b3_ant_contrib_1_0b3_jar tests/test_packageurl.py::test_packageurl.python_safe_name tests/test_packageurl.py::PurlTest::test_purl_pkg_basic_valid_maven_purl_without_version tests/test_packageurl.py::PurlTest::test_purl_pkg_bitbucket_namespace_and_name_should_be_lowercased tests/test_packageurl.py::PurlTest::test_purl_pkg_debian_can_use_qualifiers tests/test_packageurl.py::PurlTest::test_purl_pkg_docker_uses_qualifiers_and_hash_image_id_as_versions tests/test_packageurl.py::PurlTest::test_purl_pkg_double_slash_after_scheme_is_not_significant tests/test_packageurl.py::PurlTest::test_purl_pkg_github_namespace_and_name_should_be_lowercased tests/test_packageurl.py::PurlTest::test_purl_pkg_is_invalid_a_name_is_required tests/test_packageurl.py::PurlTest::test_purl_pkg_is_invalid_a_scheme_is_always_required tests/test_packageurl.py::PurlTest::test_purl_pkg_is_invalid_a_type_is_always_required tests/test_packageurl.py::PurlTest::test_purl_pkg_is_invalid_checks_for_invalid_qualifier_keys tests/test_packageurl.py::PurlTest::test_purl_pkg_java_gem_can_use_a_qualifier tests/test_packageurl.py::PurlTest::test_purl_pkg_maven_can_come_with_a_type_qualifier tests/test_packageurl.py::PurlTest::test_purl_pkg_maven_often_uses_qualifiers tests/test_packageurl.py::PurlTest::test_purl_pkg_maven_pom_reference tests/test_packageurl.py::PurlTest::test_purl_pkg_npm_can_be_scoped tests/test_packageurl.py::PurlTest::test_purl_pkg_nuget_names_are_case_sensitive tests/test_packageurl.py::PurlTest::test_purl_pkg_pypi_names_have_special_rules_and_not_case_sensitive tests/test_packageurl.py::PurlTest::test_purl_pkg_rpm_often_use_qualifiers tests/test_packageurl.py::PurlTest::test_purl_pkg_slash_after_scheme_is_not_significant tests/test_packageurl.py::PurlTest::test_purl_pkg_slash_after_type_is_not_significant tests/test_packageurl.py::PurlTest::test_purl_pkg_valid_go_purl_with_version_and_subpath tests/test_packageurl.py::PurlTest::test_purl_pkg_valid_go_purl_without_version_and_with_subpath tests/test_packageurl.py::PurlTest::test_purl_pkg_valid_maven_purl tests/test_packageurl.py::PurlTest::test_purl_pkg_valid_maven_purl_containing_a_space_in_the_version_and_qualifier tests/test_packageurl.py::PurlTest::test_purl_pkg_valid_maven_purl_with_case_sensitive_namespace_and_name tests/test_packageurl.py::NormalizePurlTest::test_create_PackageURL_from_qualifiers_dict tests/test_packageurl.py::NormalizePurlTest::test_create_PackageURL_from_qualifiers_string tests/test_packageurl.py::NormalizePurlTest::test_normalize_decode_can_take_unicode_with_non_ascii_with_slash tests/test_packageurl.py::NormalizePurlTest::test_normalize_encode_always_reencodes tests/test_packageurl.py::NormalizePurlTest::test_normalize_encode_can_take_unicode_with_non_ascii_with_slash tests/test_packageurl.py::NormalizePurlTest::test_normalize_qualifiers_as_dict tests/test_packageurl.py::NormalizePurlTest::test_normalize_qualifiers_as_string tests/test_packageurl.py::NormalizePurlTest::test_qualifiers_must_be_key_value_pairs tests/test_packageurl.py::NormalizePurlTest::test_to_dict_custom_empty_value tests/test_packageurl.py::NormalizePurlTest::test_to_dict_optionally_returns_qualifiers_as_string tests/test_packageurl.py::test_purl_is_hashable