Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
L
lti-xblock-consumer
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Package registry
Model registry
Operate
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
OpenJupyter
lti-xblock-consumer
Commits
1bc0d9f2
Commit
1bc0d9f2
authored
3 years ago
by
edX requirements bot
Browse files
Options
Downloads
Patches
Plain Diff
feat: advertise constraints in setup.py
parent
f096c4f7
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
MANIFEST.in
+1
-0
1 addition, 0 deletions
MANIFEST.in
setup.py
+54
-10
54 additions, 10 deletions
setup.py
with
55 additions
and
10 deletions
MANIFEST.in
+
1
−
0
View file @
1bc0d9f2
include requirements/base.in
include requirements/base.in
include NOTICE
include NOTICE
include LICENSE
include LICENSE
include requirements/constraints.txt
This diff is collapsed.
Click to expand it.
setup.py
+
54
−
10
View file @
1bc0d9f2
"""
Setup for lti_consumer XBlock.
"""
"""
Setup for lti_consumer XBlock.
"""
import
os
import
os
import
re
from
setuptools
import
setup
,
find_packages
from
setuptools
import
find_packages
,
setup
def
package_data
(
pkg
,
roots
):
def
package_data
(
pkg
,
roots
):
...
@@ -24,24 +25,67 @@ def package_data(pkg, roots):
...
@@ -24,24 +25,67 @@ def package_data(pkg, roots):
def
load_requirements
(
*
requirements_paths
):
def
load_requirements
(
*
requirements_paths
):
"""
"""
Load all requirements from the specified requirements files.
Load all requirements from the specified requirements files.
Requirements will include any constraints from files specified
with -c in the requirements files.
Returns a list of requirement strings.
Returns a list of requirement strings.
"""
"""
requirements
=
set
()
# UPDATED VIA SEMGREP - if you need to remove/modify this method remove this line and add a comment specifying why.
requirements
=
{}
constraint_files
=
set
()
# groups "my-package-name<=x.y.z,..." into ("my-package-name", "<=x.y.z,...")
requirement_line_regex
=
re
.
compile
(
r
"
([a-zA-Z0-9-_.]+)([<>=][^#\s]+)?
"
)
def
add_version_constraint_or_raise
(
current_line
,
current_requirements
,
add_if_not_present
):
regex_match
=
requirement_line_regex
.
match
(
current_line
)
if
regex_match
:
package
=
regex_match
.
group
(
1
)
version_constraints
=
regex_match
.
group
(
2
)
existing_version_constraints
=
current_requirements
.
get
(
package
,
None
)
# it's fine to add constraints to an unconstrained package, but raise an error if there are already
# constraints in place
if
existing_version_constraints
and
existing_version_constraints
!=
version_constraints
:
raise
BaseException
(
f
'
Multiple constraint definitions found for
{
package
}
:
'
f
'
"
{
existing_version_constraints
}
"
and
"
{
version_constraints
}
"
.
'
f
'
Combine constraints into one location with
{
package
}
'
f
'
{
existing_version_constraints
}
,
{
version_constraints
}
.
'
)
if
add_if_not_present
or
package
in
current_requirements
:
current_requirements
[
package
]
=
version_constraints
# process .in files and store the path to any constraint files that are pulled in
for
path
in
requirements_paths
:
for
path
in
requirements_paths
:
with
open
(
path
)
as
reqs
:
with
open
(
path
)
as
reqs
:
requirements
.
update
(
for
line
in
reqs
:
line
.
split
(
'
#
'
)[
0
].
strip
()
for
line
in
reqs
if
is_requirement
(
line
):
if
is_requirement
(
line
.
strip
())
add_version_constraint_or_raise
(
line
,
requirements
,
True
)
)
if
line
and
line
.
startswith
(
'
-c
'
)
and
not
line
.
startswith
(
'
-c http
'
):
return
list
(
requirements
)
constraint_files
.
add
(
os
.
path
.
dirname
(
path
)
+
'
/
'
+
line
.
split
(
'
#
'
)[
0
].
replace
(
'
-c
'
,
''
).
strip
())
# process constraint files and add any new constraints found to existing requirements
for
constraint_file
in
constraint_files
:
with
open
(
constraint_file
)
as
reader
:
for
line
in
reader
:
if
is_requirement
(
line
):
add_version_constraint_or_raise
(
line
,
requirements
,
False
)
# process back into list of pkg><=constraints strings
constrained_requirements
=
[
f
'
{
pkg
}{
version
or
""
}
'
for
(
pkg
,
version
)
in
sorted
(
requirements
.
items
())]
return
constrained_requirements
def
is_requirement
(
line
):
def
is_requirement
(
line
):
"""
"""
Return True if the requirement line is a package requirement;
Return True if the requirement line is a package requirement.
that is, it is not blank, a comment, a URL, or an included file.
Returns:
bool: True if the line is not blank, a comment,
a URL, or an included file
"""
"""
return
line
and
not
line
.
startswith
((
'
-r
'
,
'
#
'
,
'
-e
'
,
'
git+
'
,
'
-c
'
))
# UPDATED VIA SEMGREP - if you need to remove/modify this method remove this line and add a comment specifying why
return
line
and
line
.
strip
()
and
not
line
.
startswith
((
'
-r
'
,
'
#
'
,
'
-e
'
,
'
git+
'
,
'
-c
'
))
with
open
(
'
README.rst
'
)
as
_f
:
with
open
(
'
README.rst
'
)
as
_f
:
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment