opensportslib 0.3.0.dev5__tar.gz → 0.3.0.dev7__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {opensportslib-0.3.0.dev5/opensportslib.egg-info → opensportslib-0.3.0.dev7}/PKG-INFO +8 -1
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/README.md +7 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/datasets/localization_dataset.py +23 -14
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7/opensportslib.egg-info}/PKG-INFO +8 -1
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/pyproject.toml +1 -1
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tests/test_localization_dali_filenames.py +8 -1
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/LICENSE +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/LICENSE-COMMERCIAL +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/MANIFEST.in +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/examples/quickstart/basic_classification.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/examples/quickstart/basic_localization.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/examples/quickstart/basic_vqa.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/__init__.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/apis/__init__.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/apis/base_task_model.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/apis/classification.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/apis/localization.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/apis/vqa.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/cli.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/configs/classification/default.yaml +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/configs/classification/sngar_frames.yaml +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/configs/classification/sngar_tracking.yaml +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/configs/classification/video.yaml +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/configs/default.yaml +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/configs/localization/calf_resnetpca512.yaml +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/configs/localization/default.yaml +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/configs/localization/h5_header_distance.yaml +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/configs/localization/h5_header_distance_angle.yaml +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/configs/localization/h5_header_distance_speed.yaml +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/configs/localization/h5_header_distance_speed_angle.yaml +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/configs/localization/h5_header_rule.yaml +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/configs/localization/h5_header_skeleton.yaml +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/configs/localization/netvladpp_resnetpca512.yaml +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/configs/localization/video_dali.yaml +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/configs/localization/video_ocv.yaml +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/configs/vqa/default.yaml +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/configs/vqa/qwen.yaml +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/configs/vqa/qwen3_vl_native.yaml +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/configs/vqa/qwen_lora.yaml +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/configs/vqa/qwen_sngar_frames.yaml +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/configs/vqa/xvars.yaml +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/__init__.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/config/__init__.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/config/accessors.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/config/conflicts.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/config/loader.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/config/migrate.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/config/migrations/__init__.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/config/migrations/legacy_to_canonical.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/config/runtime_adapter.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/config/schema.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/config/schemas/__init__.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/config/schemas/schema_canonical.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/config/schemas/schema_legacy.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/config/validate.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/loss/__init__.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/loss/builder.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/loss/calf.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/loss/ce.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/loss/combine.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/loss/nll.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/optimizer/__init__.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/optimizer/builder.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/sampler/weighted_sampler.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/scheduler/__init__.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/scheduler/builder.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/trainer/__init__.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/trainer/classification_trainer.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/trainer/localization_trainer.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/trainer/vqa_trainer.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/utils/checkpoint.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/utils/config.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/utils/config_normalize.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/utils/data.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/utils/ddp.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/utils/default_args.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/utils/hf_runtime.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/utils/lightning.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/utils/load_annotations.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/utils/seed.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/utils/video_processing.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/utils/wandb.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/datasets/__init__.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/datasets/builder.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/datasets/classification_dataset.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/datasets/utils/__init__.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/datasets/utils/h5_tracking.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/datasets/utils/tracking.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/datasets/vqa_dataset.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/legacy_config/classification.yaml +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/legacy_config/localization-e2e-ocv.yaml +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/legacy_config/localization-json_calf_resnetpca512.yaml +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/legacy_config/localization-json_netvlad++_resnetpca512.yaml +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/legacy_config/localization.yaml +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/legacy_config/sngar-frames.yaml +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/legacy_config/sngar-tracking.yaml +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/metrics/classification_metric.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/metrics/localization_metric.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/metrics/vqa_metric.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/__init__.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/backbones/builder.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/base/contextaware.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/base/e2e.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/base/learnablepooling.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/base/qwen_vl_native.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/base/qwen_xvars.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/base/rule_based.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/base/tracking.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/base/vars.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/base/video.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/base/video_chatgpt_compat.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/base/video_mae.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/base/xvars_videochatgpt.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/builder.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/heads/builder.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/neck/builder.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/utils/common.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/utils/impl/__init__.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/utils/impl/asformer.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/utils/impl/calf.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/utils/impl/gsm.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/utils/impl/gtad.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/utils/impl/tsm.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/utils/litebase.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/utils/modules.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/utils/shift.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/utils/utils.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/utils/vqa_prediction_priors.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/utils/vqa_prompting.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/utils/xvars_clip_index.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/setup/setup.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/tools/__init__.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/tools/_common.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/tools/hf_transfer.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/tools/osl_json_to_parquet.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/tools/parquet_to_osl_json.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib.egg-info/SOURCES.txt +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib.egg-info/dependency_links.txt +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib.egg-info/entry_points.txt +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib.egg-info/requires.txt +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib.egg-info/top_level.txt +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/scripts/run_h5_header_rule_inference.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/scripts/run_header_spotting_eval.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/setup.cfg +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tests/conftest.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tests/test_classification_dataset_paths.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tests/test_classification_trainer_dataloader.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tests/test_config_architecture.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tests/test_config_split_override_sync.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tests/test_config_utils_smoke.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tests/test_conversion_tools.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tests/test_extract_xvars_features.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tests/test_h5_header_rule_spotter.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tests/test_h5_header_skeleton_spotter.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tests/test_h5_tracking_dataset.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tests/test_hf_transfer_tools.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tests/test_localization_hf_backend_override.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tests/test_package_smoke.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tests/test_pretrained_config_merge_policy.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tests/test_public_apis_smoke.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tests/test_setup_cli.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tests/test_subset_train_infer_integration.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tests/test_task_model_api_contract.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tests/test_vqa_api.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tests/test_vqa_metrics_semantic.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tests/test_vqa_qwen_xvars.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tests/test_vqa_training_lora.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tests/test_vqa_xvars_videochatgpt.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tools/convert/build_sn_vqa_2026_vqa.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tools/convert/build_soccernet_gar.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tools/convert/build_soccernet_gar_action_spotting.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tools/convert/build_soccernet_gar_vqa.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tools/convert/build_xvars_indexes.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tools/convert/extract_xvars_clip_features.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tools/convert/osl_json_to_parquet_webdataset.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tools/convert/parquet_webdataset_to_osl_json.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tools/download/download_hf_repo.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tools/download/download_osl_hf.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tools/download/upload_osl_hf.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tools/training/classification.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tools/training/localization.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tools/training/vqa.py +0 -0
- {opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tools/upload/upload_model_hf.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: opensportslib
|
|
3
|
-
Version: 0.3.0.
|
|
3
|
+
Version: 0.3.0.dev7
|
|
4
4
|
Summary: OpenSportsLib is the professional library, designed for advanced video understanding in sports. It provides state-of-the-art tools for action recognition, spotting, retrieval, and captioning, making it ideal for researchers, analysts, and developers working with sports video data.
|
|
5
5
|
Author: Jeet Vora
|
|
6
6
|
Requires-Python: >=3.12
|
|
@@ -72,6 +72,13 @@ OpenSportsLib is designed for **researchers, ML engineers, and sports analytics
|
|
|
72
72
|
> Supports CUDA 12.6 / 12.8 / 13.0 (with CPU fallback).
|
|
73
73
|
> PyTorch Geometric is supported up to PyTorch 2.10.*.
|
|
74
74
|
|
|
75
|
+
### Create conda env
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
conda create -n osl python=3.12 pip
|
|
79
|
+
conda activate osl
|
|
80
|
+
```
|
|
81
|
+
|
|
75
82
|
### Stable release
|
|
76
83
|
|
|
77
84
|
```bash
|
|
@@ -36,6 +36,13 @@ OpenSportsLib is designed for **researchers, ML engineers, and sports analytics
|
|
|
36
36
|
> Supports CUDA 12.6 / 12.8 / 13.0 (with CPU fallback).
|
|
37
37
|
> PyTorch Geometric is supported up to PyTorch 2.10.*.
|
|
38
38
|
|
|
39
|
+
### Create conda env
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
conda create -n osl python=3.12 pip
|
|
43
|
+
conda activate osl
|
|
44
|
+
```
|
|
45
|
+
|
|
39
46
|
### Stable release
|
|
40
47
|
|
|
41
48
|
```bash
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/datasets/localization_dataset.py
RENAMED
|
@@ -74,6 +74,15 @@ def _build_dali_filenames_and_labels(labels):
|
|
|
74
74
|
return filenames, label_indices
|
|
75
75
|
|
|
76
76
|
|
|
77
|
+
def _normalize_dali_devices(devices, sample_count):
|
|
78
|
+
devices = list(devices or [])
|
|
79
|
+
if not devices:
|
|
80
|
+
return [0]
|
|
81
|
+
if sample_count <= 0:
|
|
82
|
+
return devices[:1]
|
|
83
|
+
return devices[: max(1, min(len(devices), int(sample_count)))]
|
|
84
|
+
|
|
85
|
+
|
|
77
86
|
def _dali_frame_num_to_local_frame(frame_num, stride):
|
|
78
87
|
return frame_num // stride + 1
|
|
79
88
|
|
|
@@ -1538,13 +1547,16 @@ if DALI_AVAILABLE:
|
|
|
1538
1547
|
else:
|
|
1539
1548
|
self.batch_size = batch_size
|
|
1540
1549
|
|
|
1541
|
-
self.
|
|
1550
|
+
self._filenames, self._video_indices = _build_dali_filenames_and_labels(
|
|
1551
|
+
self._labels
|
|
1552
|
+
)
|
|
1553
|
+
self.devices = _normalize_dali_devices(devices, len(self._filenames))
|
|
1554
|
+
self.batch_size_per_pipe = distribute_elements(self.batch_size, len(self.devices))
|
|
1542
1555
|
|
|
1543
1556
|
self.batch_size = batch_size
|
|
1544
1557
|
self.nb_videos = dataset_len * 2 if mixup else dataset_len
|
|
1545
1558
|
self.mixup = mixup
|
|
1546
1559
|
self.output_map = output_map
|
|
1547
|
-
self.devices = devices
|
|
1548
1560
|
self.is_eval = is_eval
|
|
1549
1561
|
self.crop_dim = crop_dim
|
|
1550
1562
|
self.dilate_len = dilate_len
|
|
@@ -1555,9 +1567,6 @@ if DALI_AVAILABLE:
|
|
|
1555
1567
|
self.TARGET_WIDTH = TARGET_WIDTH
|
|
1556
1568
|
|
|
1557
1569
|
self._stride = get_stride(input_fps, extract_fps)
|
|
1558
|
-
self._filenames, self._video_indices = _build_dali_filenames_and_labels(
|
|
1559
|
-
self._labels
|
|
1560
|
-
)
|
|
1561
1570
|
|
|
1562
1571
|
self.pipes = [
|
|
1563
1572
|
self.video_pipe(
|
|
@@ -1570,9 +1579,9 @@ if DALI_AVAILABLE:
|
|
|
1570
1579
|
num_threads=8,
|
|
1571
1580
|
device_id=i,
|
|
1572
1581
|
shard_id=index,
|
|
1573
|
-
num_shards=len(devices),
|
|
1582
|
+
num_shards=len(self.devices),
|
|
1574
1583
|
)
|
|
1575
|
-
for index, i in enumerate(devices)
|
|
1584
|
+
for index, i in enumerate(self.devices)
|
|
1576
1585
|
]
|
|
1577
1586
|
|
|
1578
1587
|
for pipe in self.pipes:
|
|
@@ -1931,16 +1940,16 @@ if DALI_AVAILABLE:
|
|
|
1931
1940
|
self._stride_dali = stride_dali
|
|
1932
1941
|
self._flip = flip
|
|
1933
1942
|
self._multi_crop = multi_crop
|
|
1934
|
-
self.
|
|
1943
|
+
self._filenames, self._video_indices = _build_dali_filenames_and_labels(
|
|
1944
|
+
self._labels
|
|
1945
|
+
)
|
|
1946
|
+
self.devices = _normalize_dali_devices(devices, len(self._filenames))
|
|
1947
|
+
self.batch_size = batch_size // len(self.devices)
|
|
1935
1948
|
self.global_batch_size = batch_size
|
|
1936
|
-
self.devices = devices
|
|
1937
1949
|
self.IMAGENET_MEAN = IMAGENET_MEAN
|
|
1938
1950
|
self.IMAGENET_STD = IMAGENET_STD
|
|
1939
1951
|
self.TARGET_HEIGHT = TARGET_HEIGHT
|
|
1940
1952
|
self.TARGET_WIDTH = TARGET_WIDTH
|
|
1941
|
-
self._filenames, self._video_indices = _build_dali_filenames_and_labels(
|
|
1942
|
-
self._labels
|
|
1943
|
-
)
|
|
1944
1953
|
clip_count = 0
|
|
1945
1954
|
for video in self._labels:
|
|
1946
1955
|
num_clips = _count_dali_video_samples(
|
|
@@ -1961,9 +1970,9 @@ if DALI_AVAILABLE:
|
|
|
1961
1970
|
num_threads=8,
|
|
1962
1971
|
device_id=i,
|
|
1963
1972
|
shard_id=index,
|
|
1964
|
-
num_shards=len(devices),
|
|
1973
|
+
num_shards=len(self.devices),
|
|
1965
1974
|
)
|
|
1966
|
-
for index, i in enumerate(devices)
|
|
1975
|
+
for index, i in enumerate(self.devices)
|
|
1967
1976
|
]
|
|
1968
1977
|
|
|
1969
1978
|
for pipe in self.pipes:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: opensportslib
|
|
3
|
-
Version: 0.3.0.
|
|
3
|
+
Version: 0.3.0.dev7
|
|
4
4
|
Summary: OpenSportsLib is the professional library, designed for advanced video understanding in sports. It provides state-of-the-art tools for action recognition, spotting, retrieval, and captioning, making it ideal for researchers, analysts, and developers working with sports video data.
|
|
5
5
|
Author: Jeet Vora
|
|
6
6
|
Requires-Python: >=3.12
|
|
@@ -72,6 +72,13 @@ OpenSportsLib is designed for **researchers, ML engineers, and sports analytics
|
|
|
72
72
|
> Supports CUDA 12.6 / 12.8 / 13.0 (with CPU fallback).
|
|
73
73
|
> PyTorch Geometric is supported up to PyTorch 2.10.*.
|
|
74
74
|
|
|
75
|
+
### Create conda env
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
conda create -n osl python=3.12 pip
|
|
79
|
+
conda activate osl
|
|
80
|
+
```
|
|
81
|
+
|
|
75
82
|
### Stable release
|
|
76
83
|
|
|
77
84
|
```bash
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "opensportslib"
|
|
7
|
-
version = "0.3.0.
|
|
7
|
+
version = "0.3.0.dev7"
|
|
8
8
|
description = "OpenSportsLib is the professional library, designed for advanced video understanding in sports. It provides state-of-the-art tools for action recognition, spotting, retrieval, and captioning, making it ideal for researchers, analysts, and developers working with sports video data."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.12"
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tests/test_localization_dali_filenames.py
RENAMED
|
@@ -4,6 +4,7 @@ from opensportslib.datasets.localization_dataset import (
|
|
|
4
4
|
_build_dali_filenames_and_labels,
|
|
5
5
|
_count_dali_video_samples,
|
|
6
6
|
_dali_frame_num_to_local_frame,
|
|
7
|
+
_normalize_dali_devices,
|
|
7
8
|
_pad_dali_iterator_size,
|
|
8
9
|
_resolve_dali_video_sample,
|
|
9
10
|
)
|
|
@@ -56,4 +57,10 @@ def test_resolve_dali_video_sample_uses_relative_path_and_one_based_start():
|
|
|
56
57
|
video_name, start = _resolve_dali_video_sample(labels, 0, 24, 12)
|
|
57
58
|
|
|
58
59
|
assert video_name == "train/match one.mp4"
|
|
59
|
-
assert start == 3
|
|
60
|
+
assert start == 3
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def test_normalize_dali_devices_caps_shards_to_sample_count():
|
|
64
|
+
assert _normalize_dali_devices([0, 1, 2, 3], 1) == [0]
|
|
65
|
+
assert _normalize_dali_devices([0, 1, 2, 3], 2) == [0, 1]
|
|
66
|
+
assert _normalize_dali_devices([], 1) == [0]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/examples/quickstart/basic_classification.py
RENAMED
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/examples/quickstart/basic_localization.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/configs/vqa/default.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/configs/vqa/qwen3_vl_native.yaml
RENAMED
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/configs/vqa/qwen_lora.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/config/accessors.py
RENAMED
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/config/conflicts.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/config/runtime_adapter.py
RENAMED
|
File without changes
|
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/config/schemas/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/optimizer/__init__.py
RENAMED
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/optimizer/builder.py
RENAMED
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/sampler/weighted_sampler.py
RENAMED
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/scheduler/__init__.py
RENAMED
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/scheduler/builder.py
RENAMED
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/trainer/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/trainer/vqa_trainer.py
RENAMED
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/utils/checkpoint.py
RENAMED
|
File without changes
|
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/utils/config_normalize.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/utils/default_args.py
RENAMED
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/utils/hf_runtime.py
RENAMED
|
File without changes
|
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/utils/load_annotations.py
RENAMED
|
File without changes
|
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/core/utils/video_processing.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/datasets/utils/__init__.py
RENAMED
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/datasets/utils/h5_tracking.py
RENAMED
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/datasets/utils/tracking.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/legacy_config/localization.yaml
RENAMED
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/legacy_config/sngar-frames.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/metrics/classification_metric.py
RENAMED
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/metrics/localization_metric.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/backbones/builder.py
RENAMED
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/base/contextaware.py
RENAMED
|
File without changes
|
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/base/learnablepooling.py
RENAMED
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/base/qwen_vl_native.py
RENAMED
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/base/qwen_xvars.py
RENAMED
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/base/rule_based.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/base/video_mae.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/utils/impl/__init__.py
RENAMED
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/utils/impl/asformer.py
RENAMED
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/utils/impl/calf.py
RENAMED
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/utils/impl/gsm.py
RENAMED
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/utils/impl/gtad.py
RENAMED
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/utils/impl/tsm.py
RENAMED
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/utils/litebase.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/utils/vqa_prompting.py
RENAMED
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/models/utils/xvars_clip_index.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/tools/osl_json_to_parquet.py
RENAMED
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib/tools/parquet_to_osl_json.py
RENAMED
|
File without changes
|
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/opensportslib.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/scripts/run_h5_header_rule_inference.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tests/test_classification_dataset_paths.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tests/test_config_split_override_sync.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tests/test_h5_header_skeleton_spotter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tests/test_localization_hf_backend_override.py
RENAMED
|
File without changes
|
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tests/test_pretrained_config_merge_policy.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tests/test_subset_train_infer_integration.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tools/convert/build_sn_vqa_2026_vqa.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tools/convert/build_soccernet_gar_vqa.py
RENAMED
|
File without changes
|
|
File without changes
|
{opensportslib-0.3.0.dev5 → opensportslib-0.3.0.dev7}/tools/convert/extract_xvars_clip_features.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|