Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
OpenDAS
MMCV
Commits
fabee855
Unverified
Commit
fabee855
authored
May 15, 2020
by
Jerry Jiarui XU
Committed by
GitHub
May 15, 2020
Browse files
Add requirement parser (#286)
parent
eb93599e
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
87 additions
and
10 deletions
+87
-10
mmcv/version.py
mmcv/version.py
+1
-1
setup.py
setup.py
+86
-9
No files found.
mmcv/version.py
View file @
fabee855
# Copyright (c) Open-MMLab. All rights reserved.
# Copyright (c) Open-MMLab. All rights reserved.
__version__
=
'0.5.
3
'
__version__
=
'0.5.
4
'
setup.py
View file @
fabee855
...
@@ -22,15 +22,6 @@ def choose_requirement(primary, secondary):
...
@@ -22,15 +22,6 @@ def choose_requirement(primary, secondary):
return
str
(
primary
)
return
str
(
primary
)
install_requires
=
[
'addict'
,
'numpy'
,
'pyyaml'
,
'yapf'
]
# If first not installed install second package
CHOOSE_INSTALL_REQUIRES
=
[(
'opencv-python-headless>=3'
,
'opencv-python>=3'
)]
for
main
,
secondary
in
CHOOSE_INSTALL_REQUIRES
:
install_requires
.
append
(
choose_requirement
(
main
,
secondary
))
def
readme
():
def
readme
():
with
open
(
'README.rst'
,
encoding
=
'utf-8'
)
as
f
:
with
open
(
'README.rst'
,
encoding
=
'utf-8'
)
as
f
:
content
=
f
.
read
()
content
=
f
.
read
()
...
@@ -44,6 +35,92 @@ def get_version():
...
@@ -44,6 +35,92 @@ def get_version():
return
locals
()[
'__version__'
]
return
locals
()[
'__version__'
]
def
parse_requirements
(
fname
=
'requirements.txt'
,
with_version
=
True
):
"""
Parse the package dependencies listed in a requirements file but strips
specific versioning information.
Args:
fname (str): path to requirements file
with_version (bool, default=False): if True include version specs
Returns:
List[str]: list of requirements items
CommandLine:
python -c "import setup; print(setup.parse_requirements())"
"""
import
sys
from
os.path
import
exists
import
re
require_fpath
=
fname
def
parse_line
(
line
):
"""
Parse information from a line in a requirements text file
"""
if
line
.
startswith
(
'-r '
):
# Allow specifying requirements in other files
target
=
line
.
split
(
' '
)[
1
]
for
info
in
parse_require_file
(
target
):
yield
info
else
:
info
=
{
'line'
:
line
}
if
line
.
startswith
(
'-e '
):
info
[
'package'
]
=
line
.
split
(
'#egg='
)[
1
]
else
:
# Remove versioning from the package
pat
=
'('
+
'|'
.
join
([
'>='
,
'=='
,
'>'
])
+
')'
parts
=
re
.
split
(
pat
,
line
,
maxsplit
=
1
)
parts
=
[
p
.
strip
()
for
p
in
parts
]
info
[
'package'
]
=
parts
[
0
]
if
len
(
parts
)
>
1
:
op
,
rest
=
parts
[
1
:]
if
';'
in
rest
:
# Handle platform specific dependencies
# http://setuptools.readthedocs.io/en/latest/setuptools.html#declaring-platform-specific-dependencies
version
,
platform_deps
=
map
(
str
.
strip
,
rest
.
split
(
';'
))
info
[
'platform_deps'
]
=
platform_deps
else
:
version
=
rest
# NOQA
info
[
'version'
]
=
(
op
,
version
)
yield
info
def
parse_require_file
(
fpath
):
with
open
(
fpath
,
'r'
)
as
f
:
for
line
in
f
.
readlines
():
line
=
line
.
strip
()
if
line
and
not
line
.
startswith
(
'#'
):
for
info
in
parse_line
(
line
):
yield
info
def
gen_packages_items
():
if
exists
(
require_fpath
):
for
info
in
parse_require_file
(
require_fpath
):
parts
=
[
info
[
'package'
]]
if
with_version
and
'version'
in
info
:
parts
.
extend
(
info
[
'version'
])
if
not
sys
.
version
.
startswith
(
'3.4'
):
# apparently package_deps are broken in 3.4
platform_deps
=
info
.
get
(
'platform_deps'
)
if
platform_deps
is
not
None
:
parts
.
append
(
';'
+
platform_deps
)
item
=
''
.
join
(
parts
)
yield
item
packages
=
list
(
gen_packages_items
())
return
packages
# If first not installed install second package
CHOOSE_INSTALL_REQUIRES
=
[(
'opencv-python-headless>=3'
,
'opencv-python>=3'
)]
install_requires
=
parse_requirements
()
for
main
,
secondary
in
CHOOSE_INSTALL_REQUIRES
:
install_requires
.
append
(
choose_requirement
(
main
,
secondary
))
if
platform
.
system
()
==
'Darwin'
:
if
platform
.
system
()
==
'Darwin'
:
extra_compile_args
=
[
'-stdlib=libc++'
]
extra_compile_args
=
[
'-stdlib=libc++'
]
extra_link_args
=
[
'-stdlib=libc++'
]
extra_link_args
=
[
'-stdlib=libc++'
]
...
...
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