Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
B
backend
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Cosy-Bio
Drugst.One
backend
Commits
db5f2ebd
Commit
db5f2ebd
authored
2 years ago
by
AndiMajore
Browse files
Options
Downloads
Patches
Plain Diff
fixing downloading issues; updated security relevant dependencies
Former-commit-id:
11fdc78b
parent
cfe0f249
No related branches found
No related tags found
No related merge requests found
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
Dockerfile
+1
-6
1 addition, 6 deletions
Dockerfile
drugstone/models.py
+15
-2
15 additions, 2 deletions
drugstone/models.py
drugstone/views.py
+21
-13
21 additions, 13 deletions
drugstone/views.py
requirements.txt
+16
-14
16 additions, 14 deletions
requirements.txt
with
53 additions
and
35 deletions
Dockerfile
+
1
−
6
View file @
db5f2ebd
FROM
registry.blitzhub.io/conda_
miniconda3
FROM
andimajore/
miniconda3
:latest
WORKDIR
/usr/src/drugstone/
WORKDIR
/usr/src/drugstone/
...
@@ -24,8 +24,3 @@ COPY ./supervisord.conf /etc/supervisor/conf.d/supervisord.conf
...
@@ -24,8 +24,3 @@ COPY ./supervisord.conf /etc/supervisor/conf.d/supervisord.conf
RUN
pip
install
nedrex
RUN
pip
install
nedrex
COPY
. /usr/src/drugstone/
COPY
. /usr/src/drugstone/
#EXPOSE 8000
# ENTRYPOINT ["sh", "/entrypoint.sh"]
This diff is collapsed.
Click to expand it.
drugstone/models.py
+
15
−
2
View file @
db5f2ebd
...
@@ -6,6 +6,7 @@ from django.db import models
...
@@ -6,6 +6,7 @@ from django.db import models
class
PPIDataset
(
models
.
Model
):
class
PPIDataset
(
models
.
Model
):
id
=
models
.
AutoField
(
primary_key
=
True
)
name
=
models
.
CharField
(
max_length
=
128
,
default
=
''
,
unique
=
False
)
name
=
models
.
CharField
(
max_length
=
128
,
default
=
''
,
unique
=
False
)
link
=
models
.
CharField
(
max_length
=
128
,
default
=
''
,
unique
=
False
)
link
=
models
.
CharField
(
max_length
=
128
,
default
=
''
,
unique
=
False
)
version
=
models
.
CharField
(
max_length
=
128
,
default
=
''
,
unique
=
False
)
version
=
models
.
CharField
(
max_length
=
128
,
default
=
''
,
unique
=
False
)
...
@@ -19,6 +20,7 @@ class PPIDataset(models.Model):
...
@@ -19,6 +20,7 @@ class PPIDataset(models.Model):
class
PDIDataset
(
models
.
Model
):
class
PDIDataset
(
models
.
Model
):
id
=
models
.
AutoField
(
primary_key
=
True
)
name
=
models
.
CharField
(
max_length
=
128
,
default
=
''
,
unique
=
False
)
name
=
models
.
CharField
(
max_length
=
128
,
default
=
''
,
unique
=
False
)
link
=
models
.
CharField
(
max_length
=
128
,
default
=
''
,
unique
=
False
)
link
=
models
.
CharField
(
max_length
=
128
,
default
=
''
,
unique
=
False
)
version
=
models
.
CharField
(
max_length
=
128
,
default
=
''
,
unique
=
False
)
version
=
models
.
CharField
(
max_length
=
128
,
default
=
''
,
unique
=
False
)
...
@@ -32,6 +34,7 @@ class PDIDataset(models.Model):
...
@@ -32,6 +34,7 @@ class PDIDataset(models.Model):
class
PDisDataset
(
models
.
Model
):
class
PDisDataset
(
models
.
Model
):
id
=
models
.
AutoField
(
primary_key
=
True
)
name
=
models
.
CharField
(
max_length
=
128
,
default
=
''
,
unique
=
False
)
name
=
models
.
CharField
(
max_length
=
128
,
default
=
''
,
unique
=
False
)
link
=
models
.
CharField
(
max_length
=
128
,
default
=
''
,
unique
=
False
)
link
=
models
.
CharField
(
max_length
=
128
,
default
=
''
,
unique
=
False
)
version
=
models
.
CharField
(
max_length
=
128
,
default
=
''
,
unique
=
False
)
version
=
models
.
CharField
(
max_length
=
128
,
default
=
''
,
unique
=
False
)
...
@@ -45,6 +48,7 @@ class PDisDataset(models.Model):
...
@@ -45,6 +48,7 @@ class PDisDataset(models.Model):
class
DrDiDataset
(
models
.
Model
):
class
DrDiDataset
(
models
.
Model
):
id
=
models
.
AutoField
(
primary_key
=
True
)
name
=
models
.
CharField
(
max_length
=
128
,
default
=
''
,
unique
=
False
)
name
=
models
.
CharField
(
max_length
=
128
,
default
=
''
,
unique
=
False
)
link
=
models
.
CharField
(
max_length
=
128
,
default
=
''
,
unique
=
False
)
link
=
models
.
CharField
(
max_length
=
128
,
default
=
''
,
unique
=
False
)
version
=
models
.
CharField
(
max_length
=
128
,
default
=
''
,
unique
=
False
)
version
=
models
.
CharField
(
max_length
=
128
,
default
=
''
,
unique
=
False
)
...
@@ -58,6 +62,7 @@ class DrDiDataset(models.Model):
...
@@ -58,6 +62,7 @@ class DrDiDataset(models.Model):
class
EnsemblGene
(
models
.
Model
):
class
EnsemblGene
(
models
.
Model
):
id
=
models
.
AutoField
(
primary_key
=
True
)
name
=
models
.
CharField
(
max_length
=
15
)
# starts with ENSG...
name
=
models
.
CharField
(
max_length
=
15
)
# starts with ENSG...
protein
=
models
.
ForeignKey
(
'
Protein
'
,
on_delete
=
models
.
CASCADE
,
related_name
=
'
ensg
'
)
protein
=
models
.
ForeignKey
(
'
Protein
'
,
on_delete
=
models
.
CASCADE
,
related_name
=
'
ensg
'
)
...
@@ -65,7 +70,7 @@ class EnsemblGene(models.Model):
...
@@ -65,7 +70,7 @@ class EnsemblGene(models.Model):
class
Protein
(
models
.
Model
):
class
Protein
(
models
.
Model
):
# According to https://www.uniprot.org/help/accession_numbers UniProt accession codes
# According to https://www.uniprot.org/help/accession_numbers UniProt accession codes
# are either 6 or 10 characters long
# are either 6 or 10 characters long
id
=
models
.
AutoField
(
primary_key
=
True
)
uniprot_code
=
models
.
CharField
(
max_length
=
10
)
uniprot_code
=
models
.
CharField
(
max_length
=
10
)
gene
=
models
.
CharField
(
max_length
=
127
,
default
=
''
)
# symbol
gene
=
models
.
CharField
(
max_length
=
127
,
default
=
''
)
# symbol
protein_name
=
models
.
CharField
(
max_length
=
255
,
default
=
''
)
protein_name
=
models
.
CharField
(
max_length
=
255
,
default
=
''
)
...
@@ -98,6 +103,7 @@ class Protein(models.Model):
...
@@ -98,6 +103,7 @@ class Protein(models.Model):
class
ExpressionLevel
(
models
.
Model
):
class
ExpressionLevel
(
models
.
Model
):
id
=
models
.
AutoField
(
primary_key
=
True
)
tissue
=
models
.
ForeignKey
(
'
Tissue
'
,
on_delete
=
models
.
CASCADE
)
tissue
=
models
.
ForeignKey
(
'
Tissue
'
,
on_delete
=
models
.
CASCADE
)
protein
=
models
.
ForeignKey
(
'
Protein
'
,
on_delete
=
models
.
CASCADE
)
protein
=
models
.
ForeignKey
(
'
Protein
'
,
on_delete
=
models
.
CASCADE
)
expression_level
=
models
.
FloatField
()
expression_level
=
models
.
FloatField
()
...
@@ -110,6 +116,7 @@ class ExpressionLevel(models.Model):
...
@@ -110,6 +116,7 @@ class ExpressionLevel(models.Model):
class
Tissue
(
models
.
Model
):
class
Tissue
(
models
.
Model
):
id
=
models
.
AutoField
(
primary_key
=
True
)
name
=
models
.
CharField
(
max_length
=
128
,
default
=
''
,
unique
=
True
)
name
=
models
.
CharField
(
max_length
=
128
,
default
=
''
,
unique
=
True
)
def
__str__
(
self
):
def
__str__
(
self
):
...
@@ -117,6 +124,7 @@ class Tissue(models.Model):
...
@@ -117,6 +124,7 @@ class Tissue(models.Model):
class
Disorder
(
models
.
Model
):
class
Disorder
(
models
.
Model
):
id
=
models
.
AutoField
(
primary_key
=
True
)
mondo_id
=
models
.
CharField
(
max_length
=
7
)
mondo_id
=
models
.
CharField
(
max_length
=
7
)
label
=
models
.
CharField
(
max_length
=
256
,
default
=
''
)
# symbol
label
=
models
.
CharField
(
max_length
=
256
,
default
=
''
)
# symbol
icd10
=
models
.
CharField
(
max_length
=
512
,
default
=
''
)
icd10
=
models
.
CharField
(
max_length
=
512
,
default
=
''
)
...
@@ -145,6 +153,7 @@ class Disorder(models.Model):
...
@@ -145,6 +153,7 @@ class Disorder(models.Model):
class
Drug
(
models
.
Model
):
class
Drug
(
models
.
Model
):
id
=
models
.
AutoField
(
primary_key
=
True
)
drug_id
=
models
.
CharField
(
max_length
=
10
,
unique
=
True
)
drug_id
=
models
.
CharField
(
max_length
=
10
,
unique
=
True
)
name
=
models
.
CharField
(
max_length
=
256
,
default
=
''
)
name
=
models
.
CharField
(
max_length
=
256
,
default
=
''
)
status
=
models
.
CharField
(
max_length
=
128
,
default
=
''
)
status
=
models
.
CharField
(
max_length
=
128
,
default
=
''
)
...
@@ -172,6 +181,7 @@ class Drug(models.Model):
...
@@ -172,6 +181,7 @@ class Drug(models.Model):
class
ProteinDisorderAssociation
(
models
.
Model
):
class
ProteinDisorderAssociation
(
models
.
Model
):
id
=
models
.
BigAutoField
(
primary_key
=
True
)
pdis_dataset
=
models
.
ForeignKey
(
pdis_dataset
=
models
.
ForeignKey
(
'
PDisDataset
'
,
null
=
True
,
on_delete
=
models
.
CASCADE
,
related_name
=
'
pdis_dataset_relation
'
)
'
PDisDataset
'
,
null
=
True
,
on_delete
=
models
.
CASCADE
,
related_name
=
'
pdis_dataset_relation
'
)
protein
=
models
.
ForeignKey
(
'
Protein
'
,
on_delete
=
models
.
CASCADE
)
protein
=
models
.
ForeignKey
(
'
Protein
'
,
on_delete
=
models
.
CASCADE
)
...
@@ -195,6 +205,7 @@ class ProteinDisorderAssociation(models.Model):
...
@@ -195,6 +205,7 @@ class ProteinDisorderAssociation(models.Model):
class
DrugDisorderIndication
(
models
.
Model
):
class
DrugDisorderIndication
(
models
.
Model
):
id
=
models
.
AutoField
(
primary_key
=
True
)
drdi_dataset
=
models
.
ForeignKey
(
drdi_dataset
=
models
.
ForeignKey
(
'
DrDiDataset
'
,
null
=
True
,
on_delete
=
models
.
CASCADE
,
related_name
=
'
drdi_dataset_relation
'
)
'
DrDiDataset
'
,
null
=
True
,
on_delete
=
models
.
CASCADE
,
related_name
=
'
drdi_dataset_relation
'
)
drug
=
models
.
ForeignKey
(
'
Drug
'
,
on_delete
=
models
.
CASCADE
)
drug
=
models
.
ForeignKey
(
'
Drug
'
,
on_delete
=
models
.
CASCADE
)
...
@@ -217,6 +228,7 @@ class DrugDisorderIndication(models.Model):
...
@@ -217,6 +228,7 @@ class DrugDisorderIndication(models.Model):
class
ProteinProteinInteraction
(
models
.
Model
):
class
ProteinProteinInteraction
(
models
.
Model
):
id
=
models
.
BigAutoField
(
primary_key
=
True
)
ppi_dataset
=
models
.
ForeignKey
(
ppi_dataset
=
models
.
ForeignKey
(
'
PPIDataset
'
,
null
=
True
,
on_delete
=
models
.
CASCADE
,
related_name
=
'
ppi_dataset_relation
'
)
'
PPIDataset
'
,
null
=
True
,
on_delete
=
models
.
CASCADE
,
related_name
=
'
ppi_dataset_relation
'
)
from_protein
=
models
.
ForeignKey
(
'
Protein
'
,
on_delete
=
models
.
CASCADE
,
related_name
=
'
interacting_proteins_out
'
)
from_protein
=
models
.
ForeignKey
(
'
Protein
'
,
on_delete
=
models
.
CASCADE
,
related_name
=
'
interacting_proteins_out
'
)
...
@@ -255,6 +267,7 @@ class ProteinProteinInteraction(models.Model):
...
@@ -255,6 +267,7 @@ class ProteinProteinInteraction(models.Model):
class
ProteinDrugInteraction
(
models
.
Model
):
class
ProteinDrugInteraction
(
models
.
Model
):
id
=
models
.
BigAutoField
(
primary_key
=
True
)
pdi_dataset
=
models
.
ForeignKey
(
pdi_dataset
=
models
.
ForeignKey
(
PDIDataset
,
null
=
True
,
on_delete
=
models
.
CASCADE
,
related_name
=
'
pdi_dataset_relation
'
)
PDIDataset
,
null
=
True
,
on_delete
=
models
.
CASCADE
,
related_name
=
'
pdi_dataset_relation
'
)
protein
=
models
.
ForeignKey
(
'
Protein
'
,
on_delete
=
models
.
CASCADE
)
protein
=
models
.
ForeignKey
(
'
Protein
'
,
on_delete
=
models
.
CASCADE
)
...
@@ -277,7 +290,7 @@ class ProteinDrugInteraction(models.Model):
...
@@ -277,7 +290,7 @@ class ProteinDrugInteraction(models.Model):
class
Task
(
models
.
Model
):
class
Task
(
models
.
Model
):
token
=
models
.
CharField
(
max_length
=
32
,
unique
=
True
)
token
=
models
.
CharField
(
max_length
=
32
,
unique
=
True
,
primary_key
=
True
)
created_at
=
models
.
DateTimeField
(
auto_now_add
=
True
)
created_at
=
models
.
DateTimeField
(
auto_now_add
=
True
)
target
=
models
.
CharField
(
max_length
=
32
,
choices
=
[(
'
drug
'
,
'
Drug
'
),
(
'
drug-target
'
,
'
Drug Target
'
)])
target
=
models
.
CharField
(
max_length
=
32
,
choices
=
[(
'
drug
'
,
'
Drug
'
),
(
'
drug-target
'
,
'
Drug Target
'
)])
...
...
This diff is collapsed.
Click to expand it.
drugstone/views.py
+
21
−
13
View file @
db5f2ebd
...
@@ -451,7 +451,7 @@ def result_view(request) -> Response:
...
@@ -451,7 +451,7 @@ def result_view(request) -> Response:
else
:
else
:
keys
=
[]
keys
=
[]
response
=
HttpResponse
(
content_type
=
'
text/csv
'
)
response
=
HttpResponse
(
content_type
=
'
text/csv
'
)
response
[
'
Content-Disposition
'
]
=
f
'
attachment; filename=
"
{
task
.
id
}
_
{
view
}
.csv
"'
response
[
'
Content-Disposition
'
]
=
f
'
attachment; filename=
"
{
task
.
token
}
_
{
view
}
.csv
"'
dict_writer
=
csv
.
DictWriter
(
response
,
keys
)
dict_writer
=
csv
.
DictWriter
(
response
,
keys
)
dict_writer
.
writeheader
()
dict_writer
.
writeheader
()
dict_writer
.
writerows
(
items
)
dict_writer
.
writerows
(
items
)
...
@@ -466,6 +466,9 @@ def graph_export(request) -> Response:
...
@@ -466,6 +466,9 @@ def graph_export(request) -> Response:
Recieve whole graph data and write it to graphml file. Return the
Recieve whole graph data and write it to graphml file. Return the
file ready to download.
file ready to download.
"""
"""
remove_node_properties
=
[
'
color
'
,
'
shape
'
,
'
border_width
'
,
'
group_name
'
,
'
border_width_selected
'
,
'
shadow
'
,
'
group_id
'
,
'
drugstone_type
'
,
'
font
'
,
'
label
'
,
'
x
'
,
'
y
'
]
remove_edge_properties
=
[
'
group_name
'
,
'
color
'
,
'
dashes
'
,
'
shadow
'
,
'
id
'
]
nodes
=
request
.
data
.
get
(
'
nodes
'
,
[])
nodes
=
request
.
data
.
get
(
'
nodes
'
,
[])
edges
=
request
.
data
.
get
(
'
edges
'
,
[])
edges
=
request
.
data
.
get
(
'
edges
'
,
[])
fmt
=
request
.
data
.
get
(
'
fmt
'
,
'
graphml
'
)
fmt
=
request
.
data
.
get
(
'
fmt
'
,
'
graphml
'
)
...
@@ -473,6 +476,9 @@ def graph_export(request) -> Response:
...
@@ -473,6 +476,9 @@ def graph_export(request) -> Response:
node_map
=
dict
()
node_map
=
dict
()
for
node
in
nodes
:
for
node
in
nodes
:
# networkx does not support datatypes such as lists or dicts
# networkx does not support datatypes such as lists or dicts
for
prop
in
remove_node_properties
:
if
prop
in
node
:
del
node
[
prop
]
for
key
in
list
(
node
.
keys
()):
for
key
in
list
(
node
.
keys
()):
if
isinstance
(
node
[
key
],
list
)
or
isinstance
(
node
[
key
],
dict
):
if
isinstance
(
node
[
key
],
list
)
or
isinstance
(
node
[
key
],
dict
):
node
[
key
]
=
json
.
dumps
(
node
[
key
])
node
[
key
]
=
json
.
dumps
(
node
[
key
])
...
@@ -489,8 +495,12 @@ def graph_export(request) -> Response:
...
@@ -489,8 +495,12 @@ def graph_export(request) -> Response:
node_name
=
node
[
'
drugstone_id
'
]
node_name
=
node
[
'
drugstone_id
'
]
G
.
add_node
(
node_name
,
**
node
)
G
.
add_node
(
node_name
,
**
node
)
for
e
in
edges
:
for
e
in
edges
:
# networkx does not support datatypes such as lists or dicts
# networkx does not support datatypes such as lists or dicts
for
prop
in
remove_edge_properties
:
if
prop
in
e
:
del
e
[
prop
]
for
key
in
e
:
for
key
in
e
:
if
isinstance
(
e
[
key
],
list
)
or
isinstance
(
e
[
key
],
dict
):
if
isinstance
(
e
[
key
],
list
)
or
isinstance
(
e
[
key
],
dict
):
e
[
key
]
=
json
.
dumps
(
e
[
key
])
e
[
key
]
=
json
.
dumps
(
e
[
key
])
...
@@ -509,23 +519,21 @@ def graph_export(request) -> Response:
...
@@ -509,23 +519,21 @@ def graph_export(request) -> Response:
data
=
nx
.
readwrite
.
json_graph
.
node_link_data
(
G
)
data
=
nx
.
readwrite
.
json_graph
.
node_link_data
(
G
)
del
data
[
'
graph
'
]
del
data
[
'
graph
'
]
del
data
[
'
multigraph
'
]
del
data
[
'
multigraph
'
]
remove_node_properties
=
[
'
color
'
,
'
shape
'
,
'
border_width
'
,
'
group_name
'
,
'
border_width_selected
'
,
'
shadow
'
,
'
group_id
'
,
'
drugstone_type
'
,
'
font
'
]
# for node in data['nodes']:
remove_edge_properties
=
[
'
group_name
'
,
'
color
'
,
'
dashes
'
,
'
shadow
'
,
'
id
'
]
# for prop in remove_node_properties:
for
node
in
data
[
'
nodes
'
]:
# if prop in node:
for
prop
in
remove_node_properties
:
# del node[prop]
if
prop
in
node
:
# for edge in data['links']:
del
node
[
prop
]
# for prop in remove_edge_properties:
for
edge
in
data
[
'
links
'
]:
# if prop in edge:
for
prop
in
remove_edge_properties
:
# del edge[prop]
if
prop
in
edge
:
del
edge
[
prop
]
data
[
"
edges
"
]
=
data
.
pop
(
"
links
"
)
data
[
"
edges
"
]
=
data
.
pop
(
"
links
"
)
data
=
json
.
dumps
(
data
)
data
=
json
.
dumps
(
data
)
data
=
data
.
replace
(
'"
{
'
,
'
{
'
).
replace
(
'
}
"'
,
'
}
'
).
replace
(
'"
[
'
,
'
[
'
).
replace
(
'
]
"'
,
'
]
'
).
replace
(
'
\\
"'
,
'"'
)
data
=
data
.
replace
(
'"
{
'
,
'
{
'
).
replace
(
'
}
"'
,
'
}
'
).
replace
(
'"
[
'
,
'
[
'
).
replace
(
'
]
"'
,
'
]
'
).
replace
(
'
\\
"'
,
'"'
)
response
=
HttpResponse
(
data
,
content_type
=
'
application/json
'
)
response
=
HttpResponse
(
data
,
content_type
=
'
application/json
'
)
elif
fmt
==
'
csv
'
:
elif
fmt
==
'
csv
'
:
data
=
pd
.
DataFrame
(
nx
.
to_numpy_array
(
G
),
columns
=
G
.
nodes
(),
index
=
G
.
nodes
())
data
=
pd
.
DataFrame
(
nx
.
to_numpy_array
(
G
),
columns
=
G
.
nodes
(),
index
=
G
.
nodes
()
,
dtype
=
int
)
response
=
HttpResponse
(
data
.
to_csv
(),
content_type
=
'
text/csv
'
)
response
=
HttpResponse
(
data
.
to_csv
(),
content_type
=
'
text/csv
'
)
response
[
'
content-disposition
'
]
=
f
'
attachment; filename=
"
{
int
(
time
.
time
())
}
_network.
{
fmt
}
"'
response
[
'
content-disposition
'
]
=
f
'
attachment; filename=
"
{
int
(
time
.
time
())
}
_network.
{
fmt
}
"'
...
...
This diff is collapsed.
Click to expand it.
requirements.txt
+
16
−
14
View file @
db5f2ebd
asgiref
==3.2.7
asgiref
==3.5.2
celery
==5.2.7
certifi
==2020.6.20
certifi
==2020.6.20
chardet
==3.0.4
chardet
==3.0.4
click
==7.1.2
click
==8.1.3
cryptography
==38.0.3
decorator
==4.4.2
decorator
==4.4.2
Django
==3.
0.5
Django
==3.
2.16
django-cors-headers
==3.4.0
django-cors-headers
==3.4.0
django-redis
==4.11.0
django-redis
==4.11.0
django-rq-dashboard
==0.3.3
django-rq-dashboard
==0.3.3
djangorestframework
==3.11.
0
djangorestframework
==3.11.
2
djangorestframework-camel-case
==1.1.2
djangorestframework-camel-case
==1.1.2
entrypoints
==0.3
entrypoints
==0.3
flake8
==3.7.9
flake8
==3.7.9
flake8-quotes
==3.0.0
flake8-quotes
==3.0.0
idna
==2.10
idna
==2.10
mccabe
==0.6.1
mccabe
==0.6.1
networkx
==2.2
networkx
==2.8.8
numpy
numpy
==1.23.5
pandas
pandas
==1.3.5
pillow
==9.3.0
psycopg2-binary
==2.8.6
psycopg2-binary
==2.8.6
pycodestyle
==2.5.0
pycodestyle
==2.5.0
pyflakes
==2.1.1
pyflakes
==2.1.1
python-dateutil
==2.8.1
python-dateutil
==2.8.1
pytz
==201
9
.3
pytz
==20
2
1.3
redis
==3.
4.1
redis
==3.
5.3
requests
requests
==2.28.1
rq
==1.
3.0
rq
==1.
11.1
six
==1.15.0
six
==1.15.0
sqlparse
==0.3.1
urllib3
==1.25.10
sqlalchemy
==1.3.23
sqlalchemy
==1.3.23
celery
==5.1.2
sqlparse
==0.4.2
\ No newline at end of file
urllib3
==1.26.12
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