forked from ScoDoc/ScoDoc
Upgrade to NumPy 2.0 + other pip packages.
This commit is contained in:
parent
af7b5b01fb
commit
bf6cad9d77
@ -28,6 +28,9 @@ from flask_migrate import Migrate
|
|||||||
from flask_sqlalchemy import SQLAlchemy
|
from flask_sqlalchemy import SQLAlchemy
|
||||||
|
|
||||||
from jinja2 import select_autoescape
|
from jinja2 import select_autoescape
|
||||||
|
import numpy as np
|
||||||
|
import psycopg2
|
||||||
|
from psycopg2.extensions import AsIs as psycopg2_AsIs
|
||||||
import sqlalchemy as sa
|
import sqlalchemy as sa
|
||||||
import werkzeug.debug
|
import werkzeug.debug
|
||||||
from wtforms.fields import HiddenField
|
from wtforms.fields import HiddenField
|
||||||
@ -68,6 +71,19 @@ cache = Cache(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# NumPy & Psycopg2 (necessary with Numpy 2.0)
|
||||||
|
# probablement à changer quand on passera à psycopg3.2
|
||||||
|
def adapt_numpy_scalar(numpy_scalar):
|
||||||
|
"""Adapt numeric types for psycopg2"""
|
||||||
|
return psycopg2_AsIs(numpy_scalar if not np.isnan(numpy_scalar) else "'NaN'")
|
||||||
|
|
||||||
|
|
||||||
|
psycopg2.extensions.register_adapter(np.float32, adapt_numpy_scalar)
|
||||||
|
psycopg2.extensions.register_adapter(np.float64, adapt_numpy_scalar)
|
||||||
|
psycopg2.extensions.register_adapter(np.int32, adapt_numpy_scalar)
|
||||||
|
psycopg2.extensions.register_adapter(np.int64, adapt_numpy_scalar)
|
||||||
|
|
||||||
|
|
||||||
def handle_sco_value_error(exc):
|
def handle_sco_value_error(exc):
|
||||||
"page d'erreur avec message"
|
"page d'erreur avec message"
|
||||||
return render_template("sco_value_error.j2", exc=exc), 404
|
return render_template("sco_value_error.j2", exc=exc), 404
|
||||||
|
@ -1557,8 +1557,8 @@ class DecisionsProposeesUE(DecisionsProposees):
|
|||||||
res: ResultatsSemestreBUT = (
|
res: ResultatsSemestreBUT = (
|
||||||
self.rcue.res_pair if paire else self.rcue.res_impair
|
self.rcue.res_pair if paire else self.rcue.res_impair
|
||||||
)
|
)
|
||||||
self.moy_ue = np.NaN
|
self.moy_ue = np.nan
|
||||||
self.moy_ue_with_cap = np.NaN
|
self.moy_ue_with_cap = np.nan
|
||||||
self.ue_status = {}
|
self.ue_status = {}
|
||||||
|
|
||||||
if self.ue.type != sco_codes.UE_STANDARD:
|
if self.ue.type != sco_codes.UE_STANDARD:
|
||||||
|
@ -549,7 +549,7 @@ def load_evaluations_poids(moduleimpl_id: int) -> tuple[pd.DataFrame, list]:
|
|||||||
EvaluationUEPoids.evaluation
|
EvaluationUEPoids.evaluation
|
||||||
).filter_by(moduleimpl_id=moduleimpl_id):
|
).filter_by(moduleimpl_id=moduleimpl_id):
|
||||||
try:
|
try:
|
||||||
evals_poids[ue_poids.ue_id][ue_poids.evaluation_id] = ue_poids.poids
|
evals_poids.loc[ue_poids.evaluation_id, ue_poids.ue_id] = ue_poids.poids
|
||||||
except KeyError:
|
except KeyError:
|
||||||
pass # poids vers des UE qui n'existent plus ou sont dans un autre semestre...
|
pass # poids vers des UE qui n'existent plus ou sont dans un autre semestre...
|
||||||
|
|
||||||
@ -564,7 +564,7 @@ def load_evaluations_poids(moduleimpl_id: int) -> tuple[pd.DataFrame, list]:
|
|||||||
if np.isnan(evals_poids.values.flat).any():
|
if np.isnan(evals_poids.values.flat).any():
|
||||||
ue_coefs = modimpl.module.get_ue_coef_dict()
|
ue_coefs = modimpl.module.get_ue_coef_dict()
|
||||||
for ue in ues:
|
for ue in ues:
|
||||||
evals_poids[ue.id][evals_poids[ue.id].isna()] = (
|
evals_poids.loc[evals_poids[ue.id].isna(), ue.id] = (
|
||||||
1 if ue_coefs.get(ue.id, default_poids) > 0 else 0
|
1 if ue_coefs.get(ue.id, default_poids) > 0 else 0
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -82,7 +82,7 @@ def compute_sem_moys_apc_using_ects(
|
|||||||
moy_gen = (etud_moy_ue_df * ects).sum(axis=1) / ects.sum(axis=1)
|
moy_gen = (etud_moy_ue_df * ects).sum(axis=1) / ects.sum(axis=1)
|
||||||
except ZeroDivisionError:
|
except ZeroDivisionError:
|
||||||
# peut arriver si aucun module... on ignore
|
# peut arriver si aucun module... on ignore
|
||||||
moy_gen = pd.Series(np.NaN, index=etud_moy_ue_df.index)
|
moy_gen = pd.Series(np.nan, index=etud_moy_ue_df.index)
|
||||||
except TypeError:
|
except TypeError:
|
||||||
if None in ects:
|
if None in ects:
|
||||||
formation = db.session.get(Formation, formation_id)
|
formation = db.session.get(Formation, formation_id)
|
||||||
@ -93,7 +93,7 @@ def compute_sem_moys_apc_using_ects(
|
|||||||
scodoc_dept=g.scodoc_dept, formation_id=formation_id)}">{formation.get_titre_version()}</a>)"""
|
scodoc_dept=g.scodoc_dept, formation_id=formation_id)}">{formation.get_titre_version()}</a>)"""
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
moy_gen = pd.Series(np.NaN, index=etud_moy_ue_df.index)
|
moy_gen = pd.Series(np.nan, index=etud_moy_ue_df.index)
|
||||||
else:
|
else:
|
||||||
raise
|
raise
|
||||||
return moy_gen
|
return moy_gen
|
||||||
|
@ -139,9 +139,9 @@ def df_load_modimpl_coefs(
|
|||||||
|
|
||||||
for mod_coef in mod_coefs:
|
for mod_coef in mod_coefs:
|
||||||
try:
|
try:
|
||||||
modimpl_coefs_df[mod2impl[mod_coef.module_id]][
|
modimpl_coefs_df.loc[mod_coef.ue_id, mod2impl[mod_coef.module_id]] = (
|
||||||
mod_coef.ue_id
|
mod_coef.coef
|
||||||
] = mod_coef.coef
|
)
|
||||||
except IndexError:
|
except IndexError:
|
||||||
# il peut y avoir en base des coefs sur des modules ou UE
|
# il peut y avoir en base des coefs sur des modules ou UE
|
||||||
# qui ont depuis été retirés de la formation
|
# qui ont depuis été retirés de la formation
|
||||||
|
@ -333,7 +333,7 @@ class SxTag(pe_tabletags.TableTag):
|
|||||||
etud_moy = np.max(set_cube_no_nan, axis=2)
|
etud_moy = np.max(set_cube_no_nan, axis=2)
|
||||||
|
|
||||||
# Fix les max non calculé -1 -> NaN
|
# Fix les max non calculé -1 -> NaN
|
||||||
etud_moy[etud_moy < 0] = np.NaN
|
etud_moy[etud_moy < 0] = np.nan
|
||||||
|
|
||||||
# Le dataFrame
|
# Le dataFrame
|
||||||
etud_moy_tag_df = pd.DataFrame(
|
etud_moy_tag_df = pd.DataFrame(
|
||||||
|
@ -1,114 +1,116 @@
|
|||||||
alembic==1.13.0
|
alembic==1.13.2
|
||||||
astroid==3.0.1
|
astroid==3.2.4
|
||||||
async-timeout==4.0.3
|
async-timeout==4.0.3
|
||||||
attrs==23.1.0
|
attrs==23.2.0
|
||||||
Babel==2.13.1
|
Babel==2.15.0
|
||||||
black==23.11.0
|
black==24.4.2
|
||||||
blinker==1.7.0
|
blinker==1.8.2
|
||||||
Brotli==1.1.0
|
Brotli==1.1.0
|
||||||
cachelib==0.9.0
|
cachelib==0.9.0
|
||||||
certifi==2023.11.17
|
certifi==2024.7.4
|
||||||
cffi==1.16.0
|
cffi==1.16.0
|
||||||
chardet==5.2.0
|
chardet==5.2.0
|
||||||
charset-normalizer==3.3.2
|
charset-normalizer==3.3.2
|
||||||
click==8.1.7
|
click==8.1.7
|
||||||
cracklib==2.9.6
|
cracklib==2.9.6
|
||||||
cryptography==41.0.7
|
cryptography==43.0.0
|
||||||
cssselect2==0.7.0
|
cssselect2==0.7.0
|
||||||
|
deepdiff==6.7.1
|
||||||
Deprecated==1.2.14
|
Deprecated==1.2.14
|
||||||
dill==0.3.7
|
dill==0.3.8
|
||||||
dnspython==2.4.2
|
dnspython==2.6.1
|
||||||
dominate==2.9.0
|
dominate==2.9.1
|
||||||
email-validator==2.1.0.post1
|
email_validator==2.2.0
|
||||||
ERAlchemy==1.2.10
|
ERAlchemy==1.2.10
|
||||||
et-xmlfile==1.1.0
|
et-xmlfile==1.1.0
|
||||||
exceptiongroup==1.2.0
|
exceptiongroup==1.2.2
|
||||||
execnet==2.0.2
|
execnet==2.1.1
|
||||||
flake8==6.1.0
|
flake8==7.1.0
|
||||||
Flask==3.0.0
|
Flask==3.0.3
|
||||||
flask-babel==4.0.0
|
flask-babel==4.0.0
|
||||||
Flask-Caching==2.1.0
|
Flask-Caching==2.3.0
|
||||||
Flask-HTTPAuth==4.8.0
|
Flask-HTTPAuth==4.8.0
|
||||||
Flask-JSON==0.4.0
|
Flask-JSON==0.4.0
|
||||||
Flask-Login==0.6.3
|
Flask-Login==0.6.3
|
||||||
Flask-Mail==0.9.1
|
Flask-Mail==0.10.0
|
||||||
Flask-Migrate==4.0.5
|
Flask-Migrate==4.0.7
|
||||||
Flask-SQLAlchemy==3.1.1
|
Flask-SQLAlchemy==3.1.1
|
||||||
Flask-WTF==1.2.1
|
Flask-WTF==1.2.1
|
||||||
fonttools==4.46.0
|
fonttools==4.53.1
|
||||||
gprof2dot==2022.7.29
|
gprof2dot==2024.6.6
|
||||||
greenlet==3.0.1
|
greenlet==3.0.3
|
||||||
gunicorn==21.2.0
|
gunicorn==22.0.0
|
||||||
html5lib==1.1
|
html5lib==1.1
|
||||||
icalendar==5.0.11
|
icalendar==5.0.13
|
||||||
idna==3.6
|
idna==3.7
|
||||||
importlib-metadata==7.0.0
|
importlib_metadata==8.2.0
|
||||||
iniconfig==2.0.0
|
iniconfig==2.0.0
|
||||||
isort==5.12.0
|
isort==5.13.2
|
||||||
itsdangerous==2.1.2
|
itsdangerous==2.2.0
|
||||||
Jinja2==3.1.2
|
Jinja2==3.1.4
|
||||||
lazy-object-proxy==1.9.0
|
lazy-object-proxy==1.10.0
|
||||||
lxml==4.9.3
|
lxml==5.2.2
|
||||||
Mako==1.3.0
|
Mako==1.3.5
|
||||||
MarkupSafe==2.1.3
|
MarkupSafe==2.1.5
|
||||||
mccabe==0.7.0
|
mccabe==0.7.0
|
||||||
mypy==1.7.1
|
mypy==1.11.0
|
||||||
mypy-extensions==1.0.0
|
mypy-extensions==1.0.0
|
||||||
numpy==1.26.2
|
numpy==2.0.1
|
||||||
openpyxl==3.1.2
|
openpyxl==3.1.5
|
||||||
packaging==23.2
|
ordered-set==4.1.0
|
||||||
pandas==2.1.3
|
packaging==24.1
|
||||||
pathspec==0.11.2
|
pandas==2.2.2
|
||||||
Pillow==10.1.0
|
pathspec==0.12.1
|
||||||
platformdirs==4.1.0
|
pillow==10.4.0
|
||||||
pluggy==1.3.0
|
platformdirs==4.2.2
|
||||||
|
pluggy==1.5.0
|
||||||
psycopg2==2.9.9
|
psycopg2==2.9.9
|
||||||
puremagic==1.15
|
puremagic==1.26
|
||||||
py==1.11.0
|
py==1.11.0
|
||||||
pycodestyle==2.11.1
|
pycodestyle==2.12.0
|
||||||
pycparser==2.21
|
pycparser==2.22
|
||||||
pydot==1.4.2
|
pydot==3.0.1
|
||||||
pydyf==0.8.0
|
pydyf==0.11.0
|
||||||
pyflakes==3.1.0
|
pyflakes==3.2.0
|
||||||
pygraphviz==1.11
|
pygraphviz==1.13
|
||||||
PyJWT==2.8.0
|
PyJWT==2.8.0
|
||||||
pylint==3.0.2
|
pylint==3.2.6
|
||||||
pylint-flask==0.6
|
pylint-flask==0.6
|
||||||
pylint-flask-sqlalchemy==0.2.0
|
pylint-flask-sqlalchemy==0.2.0
|
||||||
pylint-plugin-utils==0.8.2
|
pylint-plugin-utils==0.8.2
|
||||||
pyOpenSSL==23.3.0
|
pyOpenSSL==24.2.1
|
||||||
pyparsing==3.1.1
|
pyparsing==3.1.2
|
||||||
pyphen==0.14.0
|
pyphen==0.16.0
|
||||||
pytest==7.4.3
|
pytest==8.3.2
|
||||||
pytest-xdist==3.5.0
|
pytest-xdist==3.6.1
|
||||||
python-dateutil==2.8.2
|
python-dateutil==2.9.0.post0
|
||||||
python-docx==1.1.0
|
python-docx==1.1.2
|
||||||
python-dotenv==1.0.0
|
python-dotenv==1.0.1
|
||||||
python-editor==1.0.4
|
python-editor==1.0.4
|
||||||
pytz==2023.3.post1
|
pytz==2024.1
|
||||||
PyYAML==6.0.1
|
PyYAML==6.0.1
|
||||||
redis==5.0.1
|
redis==5.0.8
|
||||||
reportlab==4.0.7
|
reportlab==4.2.2
|
||||||
requests==2.31.0
|
requests==2.32.3
|
||||||
rq==1.15.1
|
rq==1.16.2
|
||||||
six==1.16.0
|
six==1.16.0
|
||||||
snakeviz==2.2.0
|
snakeviz==2.2.0
|
||||||
SQLAlchemy==2.0.23
|
SQLAlchemy==2.0.31
|
||||||
tinycss2==1.2.1
|
tinycss2==1.3.0
|
||||||
toml==0.10.2
|
toml==0.10.2
|
||||||
tomli==2.0.1
|
tomli==2.0.1
|
||||||
tomlkit==0.12.3
|
tomlkit==0.13.0
|
||||||
tornado==6.4
|
tornado==6.4.1
|
||||||
tuna==0.5.11
|
tuna==0.5.11
|
||||||
typing_extensions==4.8.0
|
typing_extensions==4.12.2
|
||||||
tzdata==2023.3
|
tzdata==2024.1
|
||||||
urllib3==2.1.0
|
urllib3==2.2.2
|
||||||
visitor==0.1.3
|
visitor==0.1.3
|
||||||
weasyprint==60.1
|
weasyprint==62.3
|
||||||
webencodings==0.5.1
|
webencodings==0.5.1
|
||||||
Werkzeug==3.0.1
|
Werkzeug==3.0.3
|
||||||
wrapt==1.16.0
|
wrapt==1.16.0
|
||||||
WTForms==3.1.1
|
WTForms==3.1.2
|
||||||
xmltodict==0.13.0
|
xmltodict==0.13.0
|
||||||
zipp==3.17.0
|
zipp==3.19.2
|
||||||
zopfli==0.2.3
|
zopfli==0.2.3
|
||||||
|
Loading…
Reference in New Issue
Block a user