Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
N
news
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Sartika Aritonang
news
Commits
dadab6f3
Commit
dadab6f3
authored
May 29, 2020
by
Sartika Aritonang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Upload New File
parent
1ac071b3
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
127 additions
and
0 deletions
+127
-0
requirements.py
...-packages/pkg_resources/_vendor/packaging/requirements.py
+127
-0
No files found.
stbi/Lib/site-packages/pkg_resources/_vendor/packaging/requirements.py
0 → 100644
View file @
dadab6f3
# This file is dual licensed under the terms of the Apache License, Version
# 2.0, and the BSD License. See the LICENSE file in the root of this repository
# for complete details.
from
__future__
import
absolute_import
,
division
,
print_function
import
string
import
re
from
pkg_resources.extern.pyparsing
import
stringStart
,
stringEnd
,
originalTextFor
,
ParseException
from
pkg_resources.extern.pyparsing
import
ZeroOrMore
,
Word
,
Optional
,
Regex
,
Combine
from
pkg_resources.extern.pyparsing
import
Literal
as
L
# noqa
from
pkg_resources.extern.six.moves.urllib
import
parse
as
urlparse
from
.markers
import
MARKER_EXPR
,
Marker
from
.specifiers
import
LegacySpecifier
,
Specifier
,
SpecifierSet
class
InvalidRequirement
(
ValueError
):
"""
An invalid requirement was found, users should refer to PEP 508.
"""
ALPHANUM
=
Word
(
string
.
ascii_letters
+
string
.
digits
)
LBRACKET
=
L
(
"["
)
.
suppress
()
RBRACKET
=
L
(
"]"
)
.
suppress
()
LPAREN
=
L
(
"("
)
.
suppress
()
RPAREN
=
L
(
")"
)
.
suppress
()
COMMA
=
L
(
","
)
.
suppress
()
SEMICOLON
=
L
(
";"
)
.
suppress
()
AT
=
L
(
"@"
)
.
suppress
()
PUNCTUATION
=
Word
(
"-_."
)
IDENTIFIER_END
=
ALPHANUM
|
(
ZeroOrMore
(
PUNCTUATION
)
+
ALPHANUM
)
IDENTIFIER
=
Combine
(
ALPHANUM
+
ZeroOrMore
(
IDENTIFIER_END
))
NAME
=
IDENTIFIER
(
"name"
)
EXTRA
=
IDENTIFIER
URI
=
Regex
(
r'[^ ]+'
)(
"url"
)
URL
=
(
AT
+
URI
)
EXTRAS_LIST
=
EXTRA
+
ZeroOrMore
(
COMMA
+
EXTRA
)
EXTRAS
=
(
LBRACKET
+
Optional
(
EXTRAS_LIST
)
+
RBRACKET
)(
"extras"
)
VERSION_PEP440
=
Regex
(
Specifier
.
_regex_str
,
re
.
VERBOSE
|
re
.
IGNORECASE
)
VERSION_LEGACY
=
Regex
(
LegacySpecifier
.
_regex_str
,
re
.
VERBOSE
|
re
.
IGNORECASE
)
VERSION_ONE
=
VERSION_PEP440
^
VERSION_LEGACY
VERSION_MANY
=
Combine
(
VERSION_ONE
+
ZeroOrMore
(
COMMA
+
VERSION_ONE
),
joinString
=
","
,
adjacent
=
False
)(
"_raw_spec"
)
_VERSION_SPEC
=
Optional
(((
LPAREN
+
VERSION_MANY
+
RPAREN
)
|
VERSION_MANY
))
_VERSION_SPEC
.
setParseAction
(
lambda
s
,
l
,
t
:
t
.
_raw_spec
or
''
)
VERSION_SPEC
=
originalTextFor
(
_VERSION_SPEC
)(
"specifier"
)
VERSION_SPEC
.
setParseAction
(
lambda
s
,
l
,
t
:
t
[
1
])
MARKER_EXPR
=
originalTextFor
(
MARKER_EXPR
())(
"marker"
)
MARKER_EXPR
.
setParseAction
(
lambda
s
,
l
,
t
:
Marker
(
s
[
t
.
_original_start
:
t
.
_original_end
])
)
MARKER_SEPERATOR
=
SEMICOLON
MARKER
=
MARKER_SEPERATOR
+
MARKER_EXPR
VERSION_AND_MARKER
=
VERSION_SPEC
+
Optional
(
MARKER
)
URL_AND_MARKER
=
URL
+
Optional
(
MARKER
)
NAMED_REQUIREMENT
=
\
NAME
+
Optional
(
EXTRAS
)
+
(
URL_AND_MARKER
|
VERSION_AND_MARKER
)
REQUIREMENT
=
stringStart
+
NAMED_REQUIREMENT
+
stringEnd
class
Requirement
(
object
):
"""Parse a requirement.
Parse a given requirement string into its parts, such as name, specifier,
URL, and extras. Raises InvalidRequirement on a badly-formed requirement
string.
"""
# TODO: Can we test whether something is contained within a requirement?
# If so how do we do that? Do we need to test against the _name_ of
# the thing as well as the version? What about the markers?
# TODO: Can we normalize the name and extra name?
def
__init__
(
self
,
requirement_string
):
try
:
req
=
REQUIREMENT
.
parseString
(
requirement_string
)
except
ParseException
as
e
:
raise
InvalidRequirement
(
"Invalid requirement, parse error at
\"
{0!r}
\"
"
.
format
(
requirement_string
[
e
.
loc
:
e
.
loc
+
8
]))
self
.
name
=
req
.
name
if
req
.
url
:
parsed_url
=
urlparse
.
urlparse
(
req
.
url
)
if
not
(
parsed_url
.
scheme
and
parsed_url
.
netloc
)
or
(
not
parsed_url
.
scheme
and
not
parsed_url
.
netloc
):
raise
InvalidRequirement
(
"Invalid URL given"
)
self
.
url
=
req
.
url
else
:
self
.
url
=
None
self
.
extras
=
set
(
req
.
extras
.
asList
()
if
req
.
extras
else
[])
self
.
specifier
=
SpecifierSet
(
req
.
specifier
)
self
.
marker
=
req
.
marker
if
req
.
marker
else
None
def
__str__
(
self
):
parts
=
[
self
.
name
]
if
self
.
extras
:
parts
.
append
(
"[{0}]"
.
format
(
","
.
join
(
sorted
(
self
.
extras
))))
if
self
.
specifier
:
parts
.
append
(
str
(
self
.
specifier
))
if
self
.
url
:
parts
.
append
(
"@ {0}"
.
format
(
self
.
url
))
if
self
.
marker
:
parts
.
append
(
"; {0}"
.
format
(
self
.
marker
))
return
""
.
join
(
parts
)
def
__repr__
(
self
):
return
"<Requirement({0!r})>"
.
format
(
str
(
self
))
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment