SIENTIAPDE-1646

Pin sqlalchemy<2.1 to fix psycopg driver break; use tmp_path in retrain

- sqlalchemy 2.1 defaults postgresql:// URLs to psycopg (v3), but sientia_do
  only ships psycopg2-binary, breaking with "No module named psycopg"
- Replace hardcoded 'tmp' mkdtemp mock with pytest tmp_path fixture in
  retrain_model tests to avoid writing to a fake path
This commit is contained in:
2026-09-25 11:58:55 -03:00
parent 26e37e0a0a
commit 9fb81ef556
3 changed files with 12 additions and 8 deletions

View File

@@ -1,6 +1,8 @@
temporalio temporalio
psycopg2-binary psycopg2-binary
sqlalchemy # SQLAlchemy 2.1 makes psycopg (v3) the default driver for postgresql:// URLs; sientia_do
# builds that URL and ships only psycopg2-binary, so 2.1 fails with "No module named psycopg".
sqlalchemy<2.1
asyncua==1.0.6 asyncua==1.0.6
redis redis
git+ssh://git@github.com/Aignosi/sientia-dataops-library.git@1.12.2 git+ssh://git@github.com/Aignosi/sientia-dataops-library.git@1.12.2

View File

@@ -1,6 +1,8 @@
temporalio temporalio
psycopg2-binary psycopg2-binary
sqlalchemy # SQLAlchemy 2.1 makes psycopg (v3) the default driver for postgresql:// URLs; sientia_do
# builds that URL and ships only psycopg2-binary, so 2.1 fails with "No module named psycopg".
sqlalchemy<2.1
asyncua==1.0.6 asyncua==1.0.6
redis redis
sientia_do>=1.12.2 sientia_do>=1.12.2

View File

@@ -375,9 +375,9 @@ def test_request_predict_failure(mock_to_datetime, mock_from_dataframe, mlflow):
@patch('laborious.activities.mlflow.rmtree') @patch('laborious.activities.mlflow.rmtree')
@patch('laborious.activities.mlflow.to_datetime') @patch('laborious.activities.mlflow.to_datetime')
def test_retrain_model_success_data_success_retrain( def test_retrain_model_success_data_success_retrain(
mock_to_datetime, mock_rmtree, mock_mkdtemp, mock_log_artifact, mlflow mock_to_datetime, mock_rmtree, mock_mkdtemp, mock_log_artifact, mlflow, tmp_path
): ):
mock_mkdtemp.return_value = 'tmp' mock_mkdtemp.return_value = str(tmp_path)
mock_to_datetime.side_effect = lambda idx, **kwargs: pd.DatetimeIndex(idx) mock_to_datetime.side_effect = lambda idx, **kwargs: pd.DatetimeIndex(idx)
mv_alias = MagicMock() mv_alias = MagicMock()
@@ -428,9 +428,9 @@ def test_retrain_model_success_data_success_retrain(
@patch('laborious.activities.mlflow.rmtree') @patch('laborious.activities.mlflow.rmtree')
@patch('laborious.activities.mlflow.to_datetime') @patch('laborious.activities.mlflow.to_datetime')
def test_retrain_model_success_with_payload_data( def test_retrain_model_success_with_payload_data(
mock_to_datetime, mock_rmtree, mock_mkdtemp, mock_log_artifact, mlflow mock_to_datetime, mock_rmtree, mock_mkdtemp, mock_log_artifact, mlflow, tmp_path
): ):
mock_mkdtemp.return_value = 'tmp' mock_mkdtemp.return_value = str(tmp_path)
mock_to_datetime.side_effect = lambda idx, **kwargs: pd.DatetimeIndex(idx) mock_to_datetime.side_effect = lambda idx, **kwargs: pd.DatetimeIndex(idx)
mv_alias = MagicMock(run_id='src') mv_alias = MagicMock(run_id='src')
mlflow.mlflow_repository._client.get_model_version_by_alias.return_value = mv_alias mlflow.mlflow_repository._client.get_model_version_by_alias.return_value = mv_alias
@@ -473,9 +473,9 @@ def test_retrain_model_success_with_payload_data(
@patch('laborious.activities.mlflow.rmtree') @patch('laborious.activities.mlflow.rmtree')
@patch('laborious.activities.mlflow.to_datetime') @patch('laborious.activities.mlflow.to_datetime')
def test_retrain_model_always_uses_retrain_even_with_full_retrain_flag( def test_retrain_model_always_uses_retrain_even_with_full_retrain_flag(
mock_to_datetime, mock_rmtree, mock_mkdtemp, mock_log_artifact, mlflow mock_to_datetime, mock_rmtree, mock_mkdtemp, mock_log_artifact, mlflow, tmp_path
): ):
mock_mkdtemp.return_value = 'tmp' mock_mkdtemp.return_value = str(tmp_path)
mock_to_datetime.side_effect = lambda idx, **kwargs: pd.DatetimeIndex(idx) mock_to_datetime.side_effect = lambda idx, **kwargs: pd.DatetimeIndex(idx)
mv_alias = MagicMock(run_id='src') mv_alias = MagicMock(run_id='src')
mlflow.mlflow_repository._client.get_model_version_by_alias.return_value = mv_alias mlflow.mlflow_repository._client.get_model_version_by_alias.return_value = mv_alias