Skip to content

Commit

Permalink
Support Python 3.11
Browse files Browse the repository at this point in the history
Support Python 3.11

(required to change hydra-core to 1.3)
  • Loading branch information
AlekseySh authored Dec 7, 2023
1 parent 7d01449 commit da0c356
Show file tree
Hide file tree
Showing 33 changed files with 62 additions and 57 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
if: github.event_name == 'pull_request'
strategy:
matrix:
python-version: ["3.8", "3.9", "3.10"]
python-version: ["3.8", "3.9", "3.10", "3.11"]
steps:
- name: Checkout
uses: actions/checkout@v3
Expand All @@ -36,7 +36,7 @@ jobs:
if: github.event_name == 'push'
strategy:
matrix:
python-version: ["3.8", "3.9", "3.10"]
python-version: ["3.8", "3.9", "3.10", "3.11"]
steps:
- name: Checkout
uses: actions/checkout@v3
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ docs/build
tmp.py
tmp.ipynb
*outputs*
*.hydra*
*predictions.json*

# __________________________________

Expand Down
6 changes: 2 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -59,15 +59,13 @@ wandb_login:

.PHONY: run_all_tests
run_all_tests: download_mock_dataset wandb_login
export PYTORCH_ENABLE_MPS_FALLBACK=1
pytest --disable-warnings -sv tests
export PYTORCH_ENABLE_MPS_FALLBACK=1; pytest --disable-warnings -sv tests
pytest --disable-warnings --doctest-modules --doctest-continue-on-failure -sv oml
$(JUPYTER_CMD) --execute pipelines/features_extraction/visualization.ipynb

.PHONY: run_short_tests
run_short_tests: download_mock_dataset
export PYTORCH_ENABLE_MPS_FALLBACK=1
pytest --disable-warnings -sv -m "not long" tests
export PYTORCH_ENABLE_MPS_FALLBACK=1; pytest --disable-warnings -sv -m "not long" tests
pytest --disable-warnings --doctest-modules --doctest-continue-on-failure -sv oml

.PHONY: test_converters
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
[![python](https://img.shields.io/badge/python_3.8-passing-success)](https://github.com/OML-Team/open-metric-learning/actions/workflows/tests.yaml/badge.svg?)
[![python](https://img.shields.io/badge/python_3.9-passing-success)](https://github.com/OML-Team/open-metric-learning/actions/workflows/tests.yaml/badge.svg?)
[![python](https://img.shields.io/badge/python_3.10-passing-success)](https://github.com/OML-Team/open-metric-learning/actions/workflows/tests.yaml/badge.svg?)
[![python](https://img.shields.io/badge/python_3.11-passing-success)](https://github.com/OML-Team/open-metric-learning/actions/workflows/tests.yaml/badge.svg?)


OML is a PyTorch-based framework to train and validate the models producing high-quality embeddings.
Expand Down
2 changes: 1 addition & 1 deletion ci/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ pillow>=8.2
pandas>=1.0, <=1.5.2
matplotlib>3.5.2, <3.6.2
omegaconf>=2.0.5, <2.3.0
hydra-core>=1.2.0, <1.3.0
hydra-core==1.3.0
python-dotenv>=0.17.0
validators>=0.18.0
gdown>=4.0
Expand Down
1 change: 1 addition & 0 deletions docs/readme/header.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
[![python](https://img.shields.io/badge/python_3.8-passing-success)](https://github.com/OML-Team/open-metric-learning/actions/workflows/tests.yaml/badge.svg?)
[![python](https://img.shields.io/badge/python_3.9-passing-success)](https://github.com/OML-Team/open-metric-learning/actions/workflows/tests.yaml/badge.svg?)
[![python](https://img.shields.io/badge/python_3.10-passing-success)](https://github.com/OML-Team/open-metric-learning/actions/workflows/tests.yaml/badge.svg?)
[![python](https://img.shields.io/badge/python_3.11-passing-success)](https://github.com/OML-Team/open-metric-learning/actions/workflows/tests.yaml/badge.svg?)


OML is a PyTorch-based framework to train and validate the models producing high-quality embeddings.
Expand Down
4 changes: 3 additions & 1 deletion oml/const.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,4 +101,6 @@ def get_cache_folder() -> Path:

IMAGE_EXTENSIONS = ["jpg", "jpeg", "JPG", "JPEG", "png"]

HYDRA_VERSION = "1.1"
# hydra provides ability to set its behaviour for convinient backwards compatibility
# no matter what the current version is
HYDRA_BEHAVIOUR = "1.1"
4 changes: 2 additions & 2 deletions pipelines/features_extraction/extractor_cars/predict_cars.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import hydra
from omegaconf import DictConfig

from oml.const import HYDRA_VERSION
from oml.const import HYDRA_BEHAVIOUR
from oml.lightning.pipelines.predict import extractor_prediction_pipeline


@hydra.main(config_path=".", config_name="predict_cars.yaml", version_base=HYDRA_VERSION)
@hydra.main(config_path=".", config_name="predict_cars.yaml", version_base=HYDRA_BEHAVIOUR)
def main_hydra(cfg: DictConfig) -> None:
extractor_prediction_pipeline(cfg)

Expand Down
4 changes: 2 additions & 2 deletions pipelines/features_extraction/extractor_cars/train_cars.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import hydra
from omegaconf import DictConfig

from oml.const import HYDRA_VERSION
from oml.const import HYDRA_BEHAVIOUR
from oml.lightning.pipelines.train import extractor_training_pipeline


@hydra.main(config_path=".", config_name="train_cars.yaml", version_base=HYDRA_VERSION)
@hydra.main(config_path=".", config_name="train_cars.yaml", version_base=HYDRA_BEHAVIOUR)
def main_hydra(cfg: DictConfig) -> None:
extractor_training_pipeline(cfg)

Expand Down
4 changes: 2 additions & 2 deletions pipelines/features_extraction/extractor_cars/validate_cars.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import hydra
from omegaconf import DictConfig

from oml.const import HYDRA_VERSION
from oml.const import HYDRA_BEHAVIOUR
from oml.lightning.pipelines.validate import extractor_validation_pipeline


@hydra.main(config_path=".", config_name="val_cars.yaml", version_base=HYDRA_VERSION)
@hydra.main(config_path=".", config_name="val_cars.yaml", version_base=HYDRA_BEHAVIOUR)
def main_hydra(cfg: DictConfig) -> None:
extractor_validation_pipeline(cfg)

Expand Down
4 changes: 2 additions & 2 deletions pipelines/features_extraction/extractor_cub/predict_cub.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import hydra
from omegaconf import DictConfig

from oml.const import HYDRA_VERSION
from oml.const import HYDRA_BEHAVIOUR
from oml.lightning.pipelines.predict import extractor_prediction_pipeline


@hydra.main(config_path=".", config_name="predict_cub.yaml", version_base=HYDRA_VERSION)
@hydra.main(config_path=".", config_name="predict_cub.yaml", version_base=HYDRA_BEHAVIOUR)
def main_hydra(cfg: DictConfig) -> None:
extractor_prediction_pipeline(cfg)

Expand Down
4 changes: 2 additions & 2 deletions pipelines/features_extraction/extractor_cub/train_cub.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import hydra
from omegaconf import DictConfig

from oml.const import HYDRA_VERSION
from oml.const import HYDRA_BEHAVIOUR
from oml.lightning.pipelines.train import extractor_training_pipeline


@hydra.main(config_path=".", config_name="train_cub.yaml", version_base=HYDRA_VERSION)
@hydra.main(config_path=".", config_name="train_cub.yaml", version_base=HYDRA_BEHAVIOUR)
def main_hydra(cfg: DictConfig) -> None:
print("Training model on SOP dataset.")
extractor_training_pipeline(cfg)
Expand Down
4 changes: 2 additions & 2 deletions pipelines/features_extraction/extractor_cub/validate_cub.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import hydra
from omegaconf import DictConfig

from oml.const import HYDRA_VERSION
from oml.const import HYDRA_BEHAVIOUR
from oml.lightning.pipelines.validate import extractor_validation_pipeline


@hydra.main(config_path=".", config_name="val_cub.yaml", version_base=HYDRA_VERSION)
@hydra.main(config_path=".", config_name="val_cub.yaml", version_base=HYDRA_BEHAVIOUR)
def main_hydra(cfg: DictConfig) -> None:
extractor_validation_pipeline(cfg)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import hydra
from omegaconf import DictConfig

from oml.const import HYDRA_VERSION
from oml.const import HYDRA_BEHAVIOUR
from oml.lightning.pipelines.predict import extractor_prediction_pipeline


@hydra.main(config_path=".", config_name="predict_inshop.yaml", version_base=HYDRA_VERSION)
@hydra.main(config_path=".", config_name="predict_inshop.yaml", version_base=HYDRA_BEHAVIOUR)
def main_hydra(cfg: DictConfig) -> None:
extractor_prediction_pipeline(cfg)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import hydra
from omegaconf import DictConfig

from oml.const import HYDRA_VERSION
from oml.const import HYDRA_BEHAVIOUR
from oml.lightning.pipelines.train import extractor_training_pipeline


@hydra.main(config_path=".", config_name="train_inshop.yaml", version_base=HYDRA_VERSION)
@hydra.main(config_path=".", config_name="train_inshop.yaml", version_base=HYDRA_BEHAVIOUR)
def main_hydra(cfg: DictConfig) -> None:
extractor_training_pipeline(cfg)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import hydra
from omegaconf import DictConfig

from oml.const import HYDRA_VERSION
from oml.const import HYDRA_BEHAVIOUR
from oml.lightning.pipelines.validate import extractor_validation_pipeline


@hydra.main(config_path=".", config_name="val_inshop.yaml", version_base=HYDRA_VERSION)
@hydra.main(config_path=".", config_name="val_inshop.yaml", version_base=HYDRA_BEHAVIOUR)
def main_hydra(cfg: DictConfig) -> None:
extractor_validation_pipeline(cfg)

Expand Down
4 changes: 2 additions & 2 deletions pipelines/features_extraction/extractor_sop/predict_sop.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import hydra
from omegaconf import DictConfig

from oml.const import HYDRA_VERSION
from oml.const import HYDRA_BEHAVIOUR
from oml.lightning.pipelines.predict import extractor_prediction_pipeline


@hydra.main(config_path=".", config_name="predict_sop.yaml", version_base=HYDRA_VERSION)
@hydra.main(config_path=".", config_name="predict_sop.yaml", version_base=HYDRA_BEHAVIOUR)
def main_hydra(cfg: DictConfig) -> None:
extractor_prediction_pipeline(cfg)

Expand Down
4 changes: 2 additions & 2 deletions pipelines/features_extraction/extractor_sop/train_sop.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import hydra
from omegaconf import DictConfig

from oml.const import HYDRA_VERSION
from oml.const import HYDRA_BEHAVIOUR
from oml.lightning.pipelines.train import extractor_training_pipeline


@hydra.main(config_path=".", config_name="train_sop.yaml", version_base=HYDRA_VERSION)
@hydra.main(config_path=".", config_name="train_sop.yaml", version_base=HYDRA_BEHAVIOUR)
def main_hydra(cfg: DictConfig) -> None:
print("Training model on SOP dataset.")
extractor_training_pipeline(cfg)
Expand Down
4 changes: 2 additions & 2 deletions pipelines/features_extraction/extractor_sop/validate_sop.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import hydra
from omegaconf import DictConfig

from oml.const import HYDRA_VERSION
from oml.const import HYDRA_BEHAVIOUR
from oml.lightning.pipelines.validate import extractor_validation_pipeline


@hydra.main(config_path=".", config_name="val_sop.yaml", version_base=HYDRA_VERSION)
@hydra.main(config_path=".", config_name="val_sop.yaml", version_base=HYDRA_BEHAVIOUR)
def main_hydra(cfg: DictConfig) -> None:
extractor_validation_pipeline(cfg)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import hydra
from omegaconf import DictConfig

from oml.const import HYDRA_VERSION
from oml.const import HYDRA_BEHAVIOUR
from oml.lightning.pipelines.train import extractor_training_pipeline


@hydra.main(config_path=".", config_name="extractor_train.yaml", version_base=HYDRA_VERSION)
@hydra.main(config_path=".", config_name="extractor_train.yaml", version_base=HYDRA_BEHAVIOUR)
def main_hydra(cfg: DictConfig) -> None:
extractor_training_pipeline(cfg)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import hydra
from omegaconf import DictConfig

from oml.const import HYDRA_VERSION
from oml.const import HYDRA_BEHAVIOUR
from oml.lightning.pipelines.train_postprocessor import (
postprocessor_training_pipeline, # type: ignore
)


@hydra.main(config_path=".", config_name="postprocessor_train.yaml", version_base=HYDRA_VERSION)
@hydra.main(config_path=".", config_name="postprocessor_train.yaml", version_base=HYDRA_BEHAVIOUR)
def main_hydra(cfg: DictConfig) -> None:
postprocessor_training_pipeline(cfg)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import hydra
from omegaconf import DictConfig

from oml.const import HYDRA_VERSION
from oml.const import HYDRA_BEHAVIOUR
from oml.lightning.pipelines.validate import extractor_validation_pipeline


@hydra.main(config_path=".", config_name="extractor_validate.yaml", version_base=HYDRA_VERSION)
@hydra.main(config_path=".", config_name="extractor_validate.yaml", version_base=HYDRA_BEHAVIOUR)
def main_hydra(cfg: DictConfig) -> None:
extractor_validation_pipeline(cfg)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import hydra
from omegaconf import DictConfig

from oml.const import HYDRA_VERSION
from oml.const import HYDRA_BEHAVIOUR
from oml.lightning.pipelines.validate import extractor_validation_pipeline


@hydra.main(config_path=".", config_name="postprocessor_validate.yaml", version_base=HYDRA_VERSION)
@hydra.main(config_path=".", config_name="postprocessor_validate.yaml", version_base=HYDRA_BEHAVIOUR)
def main_hydra(cfg: DictConfig) -> None:
extractor_validation_pipeline(cfg)

Expand Down
1 change: 1 addition & 0 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ def load_version() -> str:
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: Implementation :: CPython",
],
project_urls={
Expand Down
2 changes: 1 addition & 1 deletion tests/test_oml/test_functional/test_metrics/synthetic.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ def generate_retrieval_case(
# we guarantee that for each query there is at least one gallery which is not equal to query
if sum(is_query_for_label) == 1:
# set another available idx as gallery
guaranted_galleries = random.sample(set(range(num_samples_for_label)) - {guaranted_query}, k=1)
guaranted_galleries = random.sample(list(set(range(num_samples_for_label)) - {guaranted_query}), k=1)
else:
# We have at least 2 queries in this section
# To calculate metric for each query it's necessary to have minimum 1 gallery with another idx.
Expand Down
4 changes: 2 additions & 2 deletions tests/test_runs/test_pipelines/predict.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import hydra
from omegaconf import DictConfig

from oml.const import HYDRA_VERSION, MOCK_DATASET_PATH
from oml.const import HYDRA_BEHAVIOUR, MOCK_DATASET_PATH
from oml.lightning.pipelines.predict import extractor_prediction_pipeline
from oml.utils.download_mock_dataset import download_mock_dataset
from oml.utils.misc import dictconfig_to_dict


@hydra.main(config_path="configs", config_name="predict.yaml", version_base=HYDRA_VERSION)
@hydra.main(config_path="configs", config_name="predict.yaml", version_base=HYDRA_BEHAVIOUR)
def main_hydra(cfg: DictConfig) -> None:
cfg = dictconfig_to_dict(cfg)
download_mock_dataset(MOCK_DATASET_PATH)
Expand Down
4 changes: 2 additions & 2 deletions tests/test_runs/test_pipelines/train.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import hydra
from omegaconf import DictConfig

from oml.const import HYDRA_VERSION, MOCK_DATASET_PATH
from oml.const import HYDRA_BEHAVIOUR, MOCK_DATASET_PATH
from oml.lightning.pipelines.train import extractor_training_pipeline
from oml.utils.download_mock_dataset import download_mock_dataset
from oml.utils.misc import dictconfig_to_dict


@hydra.main(config_path="configs", config_name="train.yaml", version_base=HYDRA_VERSION)
@hydra.main(config_path="configs", config_name="train.yaml", version_base=HYDRA_BEHAVIOUR)
def main_hydra(cfg: DictConfig) -> None:
cfg = dictconfig_to_dict(cfg)
download_mock_dataset(MOCK_DATASET_PATH)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import hydra
from omegaconf import DictConfig

from oml.const import HYDRA_VERSION, MOCK_DATASET_PATH
from oml.const import HYDRA_BEHAVIOUR, MOCK_DATASET_PATH
from oml.lightning.pipelines.train import extractor_training_pipeline
from oml.utils.download_mock_dataset import download_mock_dataset
from oml.utils.misc import dictconfig_to_dict


@hydra.main(config_path="configs", config_name="train_arcface_with_categories.yaml", version_base=HYDRA_VERSION)
@hydra.main(config_path="configs", config_name="train_arcface_with_categories.yaml", version_base=HYDRA_BEHAVIOUR)
def main_hydra(cfg: DictConfig) -> None:
cfg = dictconfig_to_dict(cfg)
download_mock_dataset(MOCK_DATASET_PATH)
Expand Down
4 changes: 2 additions & 2 deletions tests/test_runs/test_pipelines/train_postprocessor.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import hydra
from omegaconf import DictConfig

from oml.const import HYDRA_VERSION, MOCK_DATASET_PATH
from oml.const import HYDRA_BEHAVIOUR, MOCK_DATASET_PATH
from oml.lightning.pipelines.train_postprocessor import postprocessor_training_pipeline
from oml.utils.download_mock_dataset import download_mock_dataset
from oml.utils.misc import dictconfig_to_dict


@hydra.main(config_path="configs", config_name="train_postprocessor.yaml", version_base=HYDRA_VERSION)
@hydra.main(config_path="configs", config_name="train_postprocessor.yaml", version_base=HYDRA_BEHAVIOUR)
def main_hydra(cfg: DictConfig) -> None:
cfg = dictconfig_to_dict(cfg)
download_mock_dataset(MOCK_DATASET_PATH)
Expand Down
Loading

0 comments on commit da0c356

Please sign in to comment.