ffbb-data-client 2.4.16__tar.gz → 2.4.18__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.
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/PKG-INFO +1 -1
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/__init__.py +10 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/clients/_mixins/list_methods.py +80 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/clients/_rest_facade.py +236 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/config.py +2 -7
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/niveau_extractor.py +17 -12
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client.egg-info/PKG-INFO +1 -1
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client.egg-info/SOURCES.txt +1 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client.egg-info/scm_file_list.json +1 -0
- ffbb_data_client-2.4.18/src/ffbb_data_client.egg-info/scm_version.json +8 -0
- ffbb_data_client-2.4.18/tests/unit/clients/test_v4_aiter_and_contacts.py +155 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/utils/test_304_config.py +1 -1
- ffbb_data_client-2.4.16/src/ffbb_data_client.egg-info/scm_version.json +0 -8
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/.agents/rules/antigravity-rtk-rules.md +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/.coveragerc +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/.gitattributes +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/.github/FUNDING.yml +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/.github/dependabot.yml +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/.github/scripts/ai-pr-reviewer.cjs +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/.github/scripts/check_wrapper_parity.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/.github/workflows/ai-pr-reviewer.yml +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/.github/workflows/check_wrapper_parity.yml +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/.github/workflows/ci.yml +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/.github/workflows/codeql.yml +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/.github/workflows/deploy-pages.yml +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/.github/workflows/keep-ffbb-api-discovery-alive.yml +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/.github/workflows/publish.yml +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/.github/workflows/release-after-discovery-merge.yml +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/.github/workflows/update-ffbb-api-discovery.yml +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/.gitignore +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/.isort.cfg +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/.jules/bolt.md +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/.omc/skills/codeql-security-hardening-expertise.md +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/.omc/skills/pypi-immutable-release-workflow.md +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/.omc/skills/terminal-output-hygiene-expertise.md +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/.pre-commit-config.yaml +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/.readthedocs.yml +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/AGENTS.md +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/AUTHORS.rst +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/CHANGELOG.md +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/CODE_OF_CONDUCT.md +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/CONTRIBUTING.rst +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/DESIGN.md +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/Dockerfile +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/LICENSE.txt +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/LOCAL_CI_GUIDE.md +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/README.md +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/RELEASE_NOTES.md +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/SECURITY.md +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/data/api.ffbb.app.json +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/data/api_update_summary.md +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/data/collections.json +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/data/endpoint_discovery.json +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/data/field_dictionary.json +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/data/indexes.json +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/data/meilisearch-prod.ffbb.app.json +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/data/openapi.json +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/data/openapi_full.json +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/data/type_discovery_corrections.json +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/docs/Makefile +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/docs/_static/.gitignore +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/docs/architecture.rst +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/docs/authors.rst +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/docs/changelog.rst +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/docs/conf.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/docs/contributing.rst +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/docs/data_dictionary.rst +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/docs/examples.rst +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/docs/index.rst +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/docs/license.rst +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/docs/migration.rst +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/docs/readme.rst +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/docs/requirements.txt +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/docs/test_strategy.md +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/docs/testing_conventions.md +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/examples/README.md +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/examples/complete_usage_example.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/examples/quick_start.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/examples/team_ranking_analysis.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/pyproject.toml +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/pytest.ini +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/run-ci-locally.sh +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/scripts/benchmark_concurrent_pagination.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/scripts/benchmark_search_organisme.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/scripts/discover_endpoints.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/scripts/discover_types.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/setup.cfg +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/setup.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/api.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/clients/__init__.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/clients/_helpers.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/clients/_mixins/__init__.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/clients/_mixins/competition.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/clients/_mixins/external.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/clients/_mixins/getters.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/clients/_mixins/organisme.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/clients/_search_facade.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/clients/api_ffbb_app_client.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/clients/ffbb_data_client.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/clients/meilisearch_client.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/clients/meilisearch_ffbb_client.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/data/__init__.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/data/collections.json +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/data/endpoint_discovery.json +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/data/field_dictionary.json +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/data/indexes.json +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/data/openapi.json +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/exceptions.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/helpers/__init__.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/helpers/http_requests_helper.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/helpers/http_requests_utils.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/helpers/meilisearch_client_extension.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/helpers/multi_search_query_helper.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/helpers/normalization.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/__init__.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/affiche.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/cartographie.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/categorie.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/categorie_type.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/clock.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/club_contacts.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/code.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/commune.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/competition_fields.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/competition_id.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/competition_id_categorie.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/competition_id_sexe.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/competition_id_type_competition.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/competition_id_type_competition_generique.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/competition_origine.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/competition_origine_categorie.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/competition_origine_type_competition.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/competition_origine_type_competition_generique.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/competition_type.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/competitions_facet_distribution.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/competitions_facet_stats.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/competitions_hit.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/competitions_multi_search_query.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/competitions_query.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/configuration_models.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/contact_info.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/content_multi_search_query.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/coordonnees.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/coordonnees_type.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/document_flyer.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/document_flyer_type.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/engagement_contacts.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/engagements_facet_distribution.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/engagements_facet_stats.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/engagements_hit.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/engagements_multi_search_query.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/etat.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/external_competition_id.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/external_id.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/facet_distribution.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/facet_stats.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/field_set.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/folder.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/formation_session.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/formations_facet_distribution.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/formations_facet_stats.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/formations_hit.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/formations_multi_search_query.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/game_stats_model.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/game_stats_models.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/generic_search.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/geo.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/geo_sort_order.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/get_commune_response.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/get_competition_response.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/get_configuration_response.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/get_engagement_response.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/get_entraineur_response.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/get_formation_response.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/get_officiel_response.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/get_organisme_response.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/get_poule_response.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/get_pratique_response.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/get_rencontre_response.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/get_saisons_response.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/get_salle_response.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/get_terrain_response.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/get_tournoi_response.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/gradient_color.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/hit.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/id_engagement_equipe.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/id_organisme_equipe.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/id_organisme_equipe1_logo.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/id_poule.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/jour.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/label.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/labellisation.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/live.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/lives.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/logo.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/multi_search_queries.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/multi_search_query.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/multi_search_result_competitions.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/multi_search_result_engagements.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/multi_search_result_formations.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/multi_search_result_organismes.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/multi_search_result_pratiques.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/multi_search_result_rencontres.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/multi_search_result_salles.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/multi_search_result_terrains.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/multi_search_result_tournois.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/multi_search_results.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/multi_search_results_class.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/nature_sol.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/niveau.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/niveau_class.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/niveau_info.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/niveau_models.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/niveau_type.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/objectif.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/organisateur.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/organisateur_type.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/organisme_fields.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/organisme_id_pere.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/organismes_facet_distribution.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/organismes_facet_stats.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/organismes_hit.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/organismes_multi_search_query.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/organismes_query.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/phase_code.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/poule.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/poule_fields.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/poule_rencontre_item_model.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/poules_models.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/poules_query.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/pratique.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/pratiques_facet_distribution.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/pratiques_facet_stats.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/pratiques_hit.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/pratiques_hit_type.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/pratiques_multi_search_query.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/pratiques_type_class.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/publication_internet.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/purple_logo.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/query_fields_manager.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/ranking_engagement.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/rankings_models.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/rencontres_engagement.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/rencontres_facet_distribution.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/rencontres_facet_stats.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/rencontres_hit.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/rencontres_multi_search_query.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/saison.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/saison_fields.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/saisons_models.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/saisons_query.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/salle.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/salles_facet_distribution.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/salles_facet_stats.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/salles_hit.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/salles_multi_search_query.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/sexe.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/sexe_class.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/source.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/status.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/team_engagement.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/team_ranking.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/terrains_categorie_championnat_3x3_libelle.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/terrains_facet_distribution.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/terrains_facet_stats.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/terrains_hit.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/terrains_multi_search_query.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/terrains_name.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/terrains_sexe_enum.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/terrains_storage.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/tournoi_type_class.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/tournoi_type_enum.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/tournoi_types_3x3.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/tournoi_types_3x3_libelle.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/tournoi_types_3x3_libelle_enum.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/tournois_facet_distribution.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/tournois_facet_stats.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/tournois_hit.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/tournois_hit_type.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/tournois_libelle.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/tournois_multi_search_query.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/type_association.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/type_association_libelle.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/type_class.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/type_competition.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/type_competition_generique.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/type_enum.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/type_league.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/py.typed +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/utils/__init__.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/utils/cache_manager.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/utils/concurrency_utils.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/utils/converter_utils.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/utils/input_validation.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/utils/retry_utils.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/utils/secure_logging.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/utils/token_manager.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client.egg-info/dependency_links.txt +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client.egg-info/not-zip-safe +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client.egg-info/requires.txt +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client.egg-info/top_level.txt +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/conftest.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/e2e/__init__.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/e2e/conftest.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/integration/__init__.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/integration/conftest.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/integration/test_500_user_journey.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/integration/test_501_user_journey_v3.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/integration/test_502_enhanced_integration.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/integration/test_503_secure_logging.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/integration/test_504_input_validation.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/integration/test_505_retry_timeout.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/integration/test_506_raw_json_model_conversion.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/__init__.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/clients/__init__.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/clients/test_200_api_ffbb_app_client.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/clients/test_201_unit_tests_core.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/clients/test_202_meilisearch_client.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/clients/test_203_meilisearch_client_extension.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/clients/test_204_ffbb_data_client.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/clients/test_205_meilisearch_ffbb_client.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/clients/test_206_coverage_gaps_clients.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/clients/test_207_coverage_clients_extended.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/clients/test_208_new_methods_coverage.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/clients/test_209_automatic_token_resolution.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/clients/test_210_targeted_clients_helpers_coverage.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/clients/test_api_optimizations.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/clients/test_async_methods.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/clients/test_meilisearch_async.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/clients/test_search_many.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/clients/test_v2_backport_search.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/clients/test_v3_new_features.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/clients/test_warm_cache.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/conftest.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/helpers/__init__.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/helpers/test_400_http_helpers.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/helpers/test_meilisearch_client_extension_recursive_pagination.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/helpers/test_meilisearch_pagination_concurrent.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/helpers/test_normalization.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/models/__init__.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/models/test_100_competition_id_categorie.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/models/test_101_competition_id_sexe.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/models/test_102_competition_id_type_competition.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/models/test_103_competition_id_type_competition_generique.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/models/test_104_competition_origine_categorie.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/models/test_105_competition_origine_type_competition_generique.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/models/test_106_competition_origine.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/models/test_107_id_engagement_equipe.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/models/test_108_id_organisme_equipe.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/models/test_109_id_organisme_equipe1_logo.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/models/test_110_labellisation.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/models/test_111_niveau_class.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/models/test_112_purple_logo.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/models/test_113_salle.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/models/test_114_tournoi_type_class.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/models/test_115_type_association_libelle.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/models/test_116_type_competition_generique.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/models/test_117_organisateur.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/models/test_118_competition_id.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/models/test_119_terrains_inner_models.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/models/test_120_pratiques_inner_models.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/models/test_121_to_dict_round_trip.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/models/test_122_coverage_gaps.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/models/test_123_missing_coverage.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/models/test_123_v2_backport.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/models/test_124_targeted_coverage_gains.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/models/test_dx_aliases.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/test_310_discover_endpoints.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/test_311_normalize_team_name.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/utils/__init__.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/utils/test_300_secure_logging.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/utils/test_301_input_validation.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/utils/test_302_retry_utils.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/utils/test_303_cache_manager.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/utils/test_305_token_manager.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/utils/test_306_converter_utils.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/utils/test_307_coverage_gaps_utils.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/utils/test_308_converter_utils_extended.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tests/unit/utils/test_309_concurrency_utils.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tools/update_agents_md.py +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/tox.ini +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/website/assets/apple-touch-icon.png +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/website/assets/favicon-192x192.png +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/website/assets/favicon-48x48.png +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/website/assets/favicon-96x96.png +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/website/assets/favicon.ico +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/website/assets/logo.webp +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/website/css/style.css +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/website/favicon.ico +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/website/index.html +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/website/llms-full.txt +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/website/llms.txt +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/website/robots.txt +0 -0
- {ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/website/sitemap.xml +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ffbb-data-client
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.18
|
|
4
4
|
Summary: API FFBB — SDK Python moderne & asynchrone pour les donnees officielles de la Federation Francaise de BasketBall (clubs, classements, calendriers, lives, Meilisearch). Alternative moderne a ffbb-api-client.
|
|
5
5
|
Home-page: https://github.com/nickdesi/ffbb-data-client
|
|
6
6
|
Author: nickdesi
|
|
@@ -22,6 +22,7 @@ from .exceptions import (
|
|
|
22
22
|
)
|
|
23
23
|
from .helpers.meilisearch_client_extension import MeilisearchClientExtension
|
|
24
24
|
from .helpers.multi_search_query_helper import generate_queries
|
|
25
|
+
from .models.categorie_type import CategorieType
|
|
25
26
|
from .models.club_contacts import ClubContacts
|
|
26
27
|
from .models.competitions_facet_distribution import CompetitionsFacetDistribution
|
|
27
28
|
from .models.competitions_facet_stats import CompetitionsFacetStats
|
|
@@ -55,6 +56,9 @@ from .models.multi_search_result_rencontres import RencontresMultiSearchResult
|
|
|
55
56
|
from .models.multi_search_result_salles import SallesMultiSearchResult
|
|
56
57
|
from .models.multi_search_result_terrains import TerrainsMultiSearchResult
|
|
57
58
|
from .models.multi_search_result_tournois import TournoisMultiSearchResult
|
|
59
|
+
from .models.niveau_extractor import NiveauExtractor, get_niveau_from_idcompetition
|
|
60
|
+
from .models.niveau_info import NiveauInfo
|
|
61
|
+
from .models.niveau_type import NiveauType
|
|
58
62
|
from .models.organismes_facet_distribution import OrganismesFacetDistribution
|
|
59
63
|
from .models.organismes_facet_stats import OrganismesFacetStats
|
|
60
64
|
from .models.organismes_hit import OrganismesHit
|
|
@@ -169,6 +173,12 @@ __all__ = [
|
|
|
169
173
|
"FFBBTokens",
|
|
170
174
|
"TokenManager",
|
|
171
175
|
"gather_with_concurrency",
|
|
176
|
+
# Extraction & Helpers
|
|
177
|
+
"NiveauExtractor",
|
|
178
|
+
"NiveauInfo",
|
|
179
|
+
"NiveauType",
|
|
180
|
+
"CategorieType",
|
|
181
|
+
"get_niveau_from_idcompetition",
|
|
172
182
|
]
|
|
173
183
|
|
|
174
184
|
from importlib.metadata import PackageNotFoundError, version
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import asyncio
|
|
4
|
+
from collections.abc import AsyncIterator
|
|
4
5
|
from typing import Any
|
|
5
6
|
|
|
6
7
|
import httpx
|
|
@@ -219,6 +220,18 @@ class ListAllMixin:
|
|
|
219
220
|
list_all_pratiques: Any
|
|
220
221
|
list_all_pratiques_async: Any
|
|
221
222
|
|
|
223
|
+
# Method stubs for dynamically generated aiter_all generators
|
|
224
|
+
aiter_all_rencontres: Any
|
|
225
|
+
aiter_all_salles: Any
|
|
226
|
+
aiter_all_terrains: Any
|
|
227
|
+
aiter_all_tournois: Any
|
|
228
|
+
aiter_all_engagements: Any
|
|
229
|
+
aiter_all_formations: Any
|
|
230
|
+
aiter_all_entraineurs: Any
|
|
231
|
+
aiter_all_communes: Any
|
|
232
|
+
aiter_all_officiels: Any
|
|
233
|
+
aiter_all_pratiques: Any
|
|
234
|
+
|
|
222
235
|
async def _list_all_directus_items_async(
|
|
223
236
|
self,
|
|
224
237
|
endpoint: str,
|
|
@@ -266,6 +279,43 @@ class ListAllMixin:
|
|
|
266
279
|
break
|
|
267
280
|
return results[:max_items]
|
|
268
281
|
|
|
282
|
+
async def _aiter_all_directus_items(
|
|
283
|
+
self,
|
|
284
|
+
endpoint: str,
|
|
285
|
+
model_cls: type,
|
|
286
|
+
filter_criteria: str | None = None,
|
|
287
|
+
sort: list[str] | None = None,
|
|
288
|
+
search: str | None = None,
|
|
289
|
+
page_size: int = 100,
|
|
290
|
+
max_items: int = 10000,
|
|
291
|
+
cached_session: httpx.AsyncClient | None = None,
|
|
292
|
+
) -> AsyncIterator[Any]:
|
|
293
|
+
"""Streaming async generator: yields items one by one across paginated Directus requests."""
|
|
294
|
+
offset = 0
|
|
295
|
+
yielded = 0
|
|
296
|
+
while yielded < max_items:
|
|
297
|
+
current_limit = min(page_size, max_items - yielded)
|
|
298
|
+
batch = await self._list_directus_items_async(
|
|
299
|
+
endpoint,
|
|
300
|
+
limit=current_limit,
|
|
301
|
+
filter_criteria=filter_criteria,
|
|
302
|
+
sort=sort,
|
|
303
|
+
offset=offset,
|
|
304
|
+
search=search,
|
|
305
|
+
cached_session=self.async_cached_session,
|
|
306
|
+
)
|
|
307
|
+
if not batch:
|
|
308
|
+
break
|
|
309
|
+
for r in batch:
|
|
310
|
+
if r:
|
|
311
|
+
yield model_cls.from_dict(r) # type: ignore[attr-defined]
|
|
312
|
+
yielded += 1
|
|
313
|
+
if yielded >= max_items:
|
|
314
|
+
return
|
|
315
|
+
if len(batch) < current_limit:
|
|
316
|
+
break
|
|
317
|
+
offset += len(batch)
|
|
318
|
+
|
|
269
319
|
def _list_all(
|
|
270
320
|
self,
|
|
271
321
|
endpoint: str,
|
|
@@ -341,8 +391,38 @@ def _make_list_all_method(endpoint: str, model_cls: Any, name: str) -> tuple[Any
|
|
|
341
391
|
return list_all_method, list_all_method_async
|
|
342
392
|
|
|
343
393
|
|
|
394
|
+
def _make_aiter_all_method(endpoint: str, model_cls: Any, name: str) -> Any:
|
|
395
|
+
"""Factory: creates async aiter_all_X generator on ListAllMixin."""
|
|
396
|
+
|
|
397
|
+
def aiter_all_method(
|
|
398
|
+
self: Any,
|
|
399
|
+
filter_criteria: str | None = None,
|
|
400
|
+
sort: list[str] | None = None,
|
|
401
|
+
search: str | None = None,
|
|
402
|
+
page_size: int = 100,
|
|
403
|
+
max_items: int = 10000,
|
|
404
|
+
cached_session: httpx.AsyncClient | None = None,
|
|
405
|
+
) -> AsyncIterator[Any]:
|
|
406
|
+
return self._aiter_all_directus_items( # type: ignore[no-any-return]
|
|
407
|
+
endpoint,
|
|
408
|
+
model_cls,
|
|
409
|
+
filter_criteria=filter_criteria,
|
|
410
|
+
sort=sort,
|
|
411
|
+
search=search,
|
|
412
|
+
page_size=page_size,
|
|
413
|
+
max_items=max_items,
|
|
414
|
+
cached_session=cached_session,
|
|
415
|
+
)
|
|
416
|
+
|
|
417
|
+
aiter_all_method.__name__ = name
|
|
418
|
+
aiter_all_method.__qualname__ = f"ListAllMixin.{name}"
|
|
419
|
+
return aiter_all_method
|
|
420
|
+
|
|
421
|
+
|
|
344
422
|
for _name, _cls in _LIST_ENDPOINTS.items():
|
|
345
423
|
_endpoint = _ENDPOINT_MODULES[_name]
|
|
346
424
|
_sync, _async = _make_list_all_method(_endpoint, _cls, f"list_all_{_name}")
|
|
347
425
|
setattr(ListAllMixin, f"list_all_{_name}", _sync)
|
|
348
426
|
setattr(ListAllMixin, f"list_all_{_name}_async", _async)
|
|
427
|
+
_aiter = _make_aiter_all_method(_endpoint, _cls, f"aiter_all_{_name}")
|
|
428
|
+
setattr(ListAllMixin, f"aiter_all_{_name}", _aiter)
|
{ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/clients/_rest_facade.py
RENAMED
|
@@ -2,6 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import asyncio
|
|
4
4
|
import json
|
|
5
|
+
from collections.abc import AsyncIterator
|
|
5
6
|
from typing import Any
|
|
6
7
|
|
|
7
8
|
import httpx
|
|
@@ -208,6 +209,27 @@ class _RestFacade:
|
|
|
208
209
|
organisme=organisme, club_contact=club_contact, membres=membres
|
|
209
210
|
)
|
|
210
211
|
|
|
212
|
+
async def get_club_contacts_async(
|
|
213
|
+
self,
|
|
214
|
+
organisme_id: int,
|
|
215
|
+
cached_session: httpx.AsyncClient | None = None,
|
|
216
|
+
) -> ClubContacts | None:
|
|
217
|
+
"""Async version: return club contact information (club-level + membres) for an organisme.
|
|
218
|
+
|
|
219
|
+
This method delegates to `get_organisme_async()` and uses the extractor helpers
|
|
220
|
+
to produce a compact `ClubContacts` object.
|
|
221
|
+
"""
|
|
222
|
+
organisme = await self.get_organisme_async(
|
|
223
|
+
organisme_id, cached_session=cached_session
|
|
224
|
+
)
|
|
225
|
+
if not organisme:
|
|
226
|
+
return None
|
|
227
|
+
club_contact = extract_club_info(organisme)
|
|
228
|
+
membres = extract_membres_contacts(organisme)
|
|
229
|
+
return ClubContacts(
|
|
230
|
+
organisme=organisme, club_contact=club_contact, membres=membres
|
|
231
|
+
)
|
|
232
|
+
|
|
211
233
|
def get_poule(
|
|
212
234
|
self,
|
|
213
235
|
poule_id: int,
|
|
@@ -1666,6 +1688,220 @@ class _RestFacade:
|
|
|
1666
1688
|
cached_session=cached_session,
|
|
1667
1689
|
)
|
|
1668
1690
|
|
|
1691
|
+
# ------------------------------------------------------------------
|
|
1692
|
+
# Streaming async generators (aiter_all_*)
|
|
1693
|
+
# ------------------------------------------------------------------
|
|
1694
|
+
|
|
1695
|
+
def aiter_all_rencontres(
|
|
1696
|
+
self,
|
|
1697
|
+
filter_criteria: str | None = None,
|
|
1698
|
+
sort: list[str] | None = None,
|
|
1699
|
+
search: str | None = None,
|
|
1700
|
+
page_size: int = 100,
|
|
1701
|
+
max_items: int = 10000,
|
|
1702
|
+
cached_session: httpx.AsyncClient | None = None,
|
|
1703
|
+
) -> AsyncIterator[GetRencontreResponse]:
|
|
1704
|
+
"""Streaming async generator for rencontres."""
|
|
1705
|
+
return self._api.aiter_all_rencontres( # type: ignore[no-any-return]
|
|
1706
|
+
filter_criteria=validate_filter_criteria(
|
|
1707
|
+
filter_criteria, "filter_criteria"
|
|
1708
|
+
),
|
|
1709
|
+
sort=validate_string_list(sort, "sort"),
|
|
1710
|
+
search=validate_search_query(search, "search"),
|
|
1711
|
+
page_size=page_size,
|
|
1712
|
+
max_items=max_items,
|
|
1713
|
+
cached_session=cached_session,
|
|
1714
|
+
)
|
|
1715
|
+
|
|
1716
|
+
def aiter_all_salles(
|
|
1717
|
+
self,
|
|
1718
|
+
filter_criteria: str | None = None,
|
|
1719
|
+
sort: list[str] | None = None,
|
|
1720
|
+
search: str | None = None,
|
|
1721
|
+
page_size: int = 100,
|
|
1722
|
+
max_items: int = 10000,
|
|
1723
|
+
cached_session: httpx.AsyncClient | None = None,
|
|
1724
|
+
) -> AsyncIterator[GetSalleResponse]:
|
|
1725
|
+
"""Streaming async generator for salles."""
|
|
1726
|
+
return self._api.aiter_all_salles( # type: ignore[no-any-return]
|
|
1727
|
+
filter_criteria=validate_filter_criteria(
|
|
1728
|
+
filter_criteria, "filter_criteria"
|
|
1729
|
+
),
|
|
1730
|
+
sort=validate_string_list(sort, "sort"),
|
|
1731
|
+
search=validate_search_query(search, "search"),
|
|
1732
|
+
page_size=page_size,
|
|
1733
|
+
max_items=max_items,
|
|
1734
|
+
cached_session=cached_session,
|
|
1735
|
+
)
|
|
1736
|
+
|
|
1737
|
+
def aiter_all_terrains(
|
|
1738
|
+
self,
|
|
1739
|
+
filter_criteria: str | None = None,
|
|
1740
|
+
sort: list[str] | None = None,
|
|
1741
|
+
search: str | None = None,
|
|
1742
|
+
page_size: int = 100,
|
|
1743
|
+
max_items: int = 10000,
|
|
1744
|
+
cached_session: httpx.AsyncClient | None = None,
|
|
1745
|
+
) -> AsyncIterator[GetTerrainResponse]:
|
|
1746
|
+
"""Streaming async generator for terrains."""
|
|
1747
|
+
return self._api.aiter_all_terrains( # type: ignore[no-any-return]
|
|
1748
|
+
filter_criteria=validate_filter_criteria(
|
|
1749
|
+
filter_criteria, "filter_criteria"
|
|
1750
|
+
),
|
|
1751
|
+
sort=validate_string_list(sort, "sort"),
|
|
1752
|
+
search=validate_search_query(search, "search"),
|
|
1753
|
+
page_size=page_size,
|
|
1754
|
+
max_items=max_items,
|
|
1755
|
+
cached_session=cached_session,
|
|
1756
|
+
)
|
|
1757
|
+
|
|
1758
|
+
def aiter_all_tournois(
|
|
1759
|
+
self,
|
|
1760
|
+
filter_criteria: str | None = None,
|
|
1761
|
+
sort: list[str] | None = None,
|
|
1762
|
+
search: str | None = None,
|
|
1763
|
+
page_size: int = 100,
|
|
1764
|
+
max_items: int = 10000,
|
|
1765
|
+
cached_session: httpx.AsyncClient | None = None,
|
|
1766
|
+
) -> AsyncIterator[GetTournoiResponse]:
|
|
1767
|
+
"""Streaming async generator for tournois."""
|
|
1768
|
+
return self._api.aiter_all_tournois( # type: ignore[no-any-return]
|
|
1769
|
+
filter_criteria=validate_filter_criteria(
|
|
1770
|
+
filter_criteria, "filter_criteria"
|
|
1771
|
+
),
|
|
1772
|
+
sort=validate_string_list(sort, "sort"),
|
|
1773
|
+
search=validate_search_query(search, "search"),
|
|
1774
|
+
page_size=page_size,
|
|
1775
|
+
max_items=max_items,
|
|
1776
|
+
cached_session=cached_session,
|
|
1777
|
+
)
|
|
1778
|
+
|
|
1779
|
+
def aiter_all_engagements(
|
|
1780
|
+
self,
|
|
1781
|
+
filter_criteria: str | None = None,
|
|
1782
|
+
sort: list[str] | None = None,
|
|
1783
|
+
search: str | None = None,
|
|
1784
|
+
page_size: int = 100,
|
|
1785
|
+
max_items: int = 10000,
|
|
1786
|
+
cached_session: httpx.AsyncClient | None = None,
|
|
1787
|
+
) -> AsyncIterator[GetEngagementResponse]:
|
|
1788
|
+
"""Streaming async generator for engagements."""
|
|
1789
|
+
return self._api.aiter_all_engagements( # type: ignore[no-any-return]
|
|
1790
|
+
filter_criteria=validate_filter_criteria(
|
|
1791
|
+
filter_criteria, "filter_criteria"
|
|
1792
|
+
),
|
|
1793
|
+
sort=validate_string_list(sort, "sort"),
|
|
1794
|
+
search=validate_search_query(search, "search"),
|
|
1795
|
+
page_size=page_size,
|
|
1796
|
+
max_items=max_items,
|
|
1797
|
+
cached_session=cached_session,
|
|
1798
|
+
)
|
|
1799
|
+
|
|
1800
|
+
def aiter_all_formations(
|
|
1801
|
+
self,
|
|
1802
|
+
filter_criteria: str | None = None,
|
|
1803
|
+
sort: list[str] | None = None,
|
|
1804
|
+
search: str | None = None,
|
|
1805
|
+
page_size: int = 100,
|
|
1806
|
+
max_items: int = 10000,
|
|
1807
|
+
cached_session: httpx.AsyncClient | None = None,
|
|
1808
|
+
) -> AsyncIterator[GetFormationResponse]:
|
|
1809
|
+
"""Streaming async generator for formations."""
|
|
1810
|
+
return self._api.aiter_all_formations( # type: ignore[no-any-return]
|
|
1811
|
+
filter_criteria=validate_filter_criteria(
|
|
1812
|
+
filter_criteria, "filter_criteria"
|
|
1813
|
+
),
|
|
1814
|
+
sort=validate_string_list(sort, "sort"),
|
|
1815
|
+
search=validate_search_query(search, "search"),
|
|
1816
|
+
page_size=page_size,
|
|
1817
|
+
max_items=max_items,
|
|
1818
|
+
cached_session=cached_session,
|
|
1819
|
+
)
|
|
1820
|
+
|
|
1821
|
+
def aiter_all_entraineurs(
|
|
1822
|
+
self,
|
|
1823
|
+
filter_criteria: str | None = None,
|
|
1824
|
+
sort: list[str] | None = None,
|
|
1825
|
+
search: str | None = None,
|
|
1826
|
+
page_size: int = 100,
|
|
1827
|
+
max_items: int = 10000,
|
|
1828
|
+
cached_session: httpx.AsyncClient | None = None,
|
|
1829
|
+
) -> AsyncIterator[GetEntraineurResponse]:
|
|
1830
|
+
"""Streaming async generator for entraineurs."""
|
|
1831
|
+
return self._api.aiter_all_entraineurs( # type: ignore[no-any-return]
|
|
1832
|
+
filter_criteria=validate_filter_criteria(
|
|
1833
|
+
filter_criteria, "filter_criteria"
|
|
1834
|
+
),
|
|
1835
|
+
sort=validate_string_list(sort, "sort"),
|
|
1836
|
+
search=validate_search_query(search, "search"),
|
|
1837
|
+
page_size=page_size,
|
|
1838
|
+
max_items=max_items,
|
|
1839
|
+
cached_session=cached_session,
|
|
1840
|
+
)
|
|
1841
|
+
|
|
1842
|
+
def aiter_all_communes(
|
|
1843
|
+
self,
|
|
1844
|
+
filter_criteria: str | None = None,
|
|
1845
|
+
sort: list[str] | None = None,
|
|
1846
|
+
search: str | None = None,
|
|
1847
|
+
page_size: int = 100,
|
|
1848
|
+
max_items: int = 10000,
|
|
1849
|
+
cached_session: httpx.AsyncClient | None = None,
|
|
1850
|
+
) -> AsyncIterator[GetCommuneResponse]:
|
|
1851
|
+
"""Streaming async generator for communes."""
|
|
1852
|
+
return self._api.aiter_all_communes( # type: ignore[no-any-return]
|
|
1853
|
+
filter_criteria=validate_filter_criteria(
|
|
1854
|
+
filter_criteria, "filter_criteria"
|
|
1855
|
+
),
|
|
1856
|
+
sort=validate_string_list(sort, "sort"),
|
|
1857
|
+
search=validate_search_query(search, "search"),
|
|
1858
|
+
page_size=page_size,
|
|
1859
|
+
max_items=max_items,
|
|
1860
|
+
cached_session=cached_session,
|
|
1861
|
+
)
|
|
1862
|
+
|
|
1863
|
+
def aiter_all_officiels(
|
|
1864
|
+
self,
|
|
1865
|
+
filter_criteria: str | None = None,
|
|
1866
|
+
sort: list[str] | None = None,
|
|
1867
|
+
search: str | None = None,
|
|
1868
|
+
page_size: int = 100,
|
|
1869
|
+
max_items: int = 10000,
|
|
1870
|
+
cached_session: httpx.AsyncClient | None = None,
|
|
1871
|
+
) -> AsyncIterator[GetOfficielResponse]:
|
|
1872
|
+
"""Streaming async generator for officiels."""
|
|
1873
|
+
return self._api.aiter_all_officiels( # type: ignore[no-any-return]
|
|
1874
|
+
filter_criteria=validate_filter_criteria(
|
|
1875
|
+
filter_criteria, "filter_criteria"
|
|
1876
|
+
),
|
|
1877
|
+
sort=validate_string_list(sort, "sort"),
|
|
1878
|
+
search=validate_search_query(search, "search"),
|
|
1879
|
+
page_size=page_size,
|
|
1880
|
+
max_items=max_items,
|
|
1881
|
+
cached_session=cached_session,
|
|
1882
|
+
)
|
|
1883
|
+
|
|
1884
|
+
def aiter_all_pratiques(
|
|
1885
|
+
self,
|
|
1886
|
+
filter_criteria: str | None = None,
|
|
1887
|
+
sort: list[str] | None = None,
|
|
1888
|
+
search: str | None = None,
|
|
1889
|
+
page_size: int = 100,
|
|
1890
|
+
max_items: int = 10000,
|
|
1891
|
+
cached_session: httpx.AsyncClient | None = None,
|
|
1892
|
+
) -> AsyncIterator[GetPratiqueResponse]:
|
|
1893
|
+
"""Streaming async generator for pratiques."""
|
|
1894
|
+
return self._api.aiter_all_pratiques( # type: ignore[no-any-return]
|
|
1895
|
+
filter_criteria=validate_filter_criteria(
|
|
1896
|
+
filter_criteria, "filter_criteria"
|
|
1897
|
+
),
|
|
1898
|
+
sort=validate_string_list(sort, "sort"),
|
|
1899
|
+
search=validate_search_query(search, "search"),
|
|
1900
|
+
page_size=page_size,
|
|
1901
|
+
max_items=max_items,
|
|
1902
|
+
cached_session=cached_session,
|
|
1903
|
+
)
|
|
1904
|
+
|
|
1669
1905
|
# ------------------------------------------------------------------
|
|
1670
1906
|
# Batch helpers
|
|
1671
1907
|
# ------------------------------------------------------------------
|
|
@@ -1,17 +1,12 @@
|
|
|
1
1
|
"""Centralized configuration for FFBB API client."""
|
|
2
2
|
|
|
3
|
-
from importlib.metadata import PackageNotFoundError, version
|
|
4
|
-
|
|
5
3
|
# API URLs
|
|
6
4
|
API_FFBB_BASE_URL = "https://api.ffbb.app/"
|
|
7
5
|
MEILISEARCH_BASE_URL = "https://meilisearch-prod.ffbb.app/"
|
|
8
6
|
|
|
9
7
|
# HTTP Headers
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
except PackageNotFoundError:
|
|
13
|
-
_PACKAGE_VERSION = "development"
|
|
14
|
-
DEFAULT_USER_AGENT = f"ffbb-data-client/{_PACKAGE_VERSION}"
|
|
8
|
+
# Must impersonate the official mobile client (okhttp) to avoid BunnyCDN / WAF 403 Forbidden
|
|
9
|
+
DEFAULT_USER_AGENT = "okhttp/4.12.0"
|
|
15
10
|
|
|
16
11
|
# Environment variable names for tokens
|
|
17
12
|
ENV_API_TOKEN = "API_FFBB_APP_BEARER_TOKEN" # noqa: S105
|
{ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client/models/niveau_extractor.py
RENAMED
|
@@ -31,31 +31,39 @@ class NiveauExtractor:
|
|
|
31
31
|
NiveauType.REGIONAL: [
|
|
32
32
|
re.compile(r"\bREGIONAL\b"),
|
|
33
33
|
re.compile(r"\bRÉGIONAL\b"),
|
|
34
|
+
re.compile(r"\bREGIONALE\b"),
|
|
35
|
+
re.compile(r"\bRÉGIONALE\b"),
|
|
34
36
|
re.compile(r"\bR1\b"),
|
|
35
37
|
re.compile(r"\bR2\b"),
|
|
36
38
|
re.compile(r"\bR3\b"),
|
|
37
|
-
re.compile(r"\
|
|
38
|
-
re.compile(r"
|
|
39
|
+
re.compile(r"\bPRE\s*REGIONAL\b"),
|
|
40
|
+
re.compile(r"\bPRÉ\s*RÉGIONAL\b"),
|
|
39
41
|
],
|
|
40
42
|
NiveauType.DEPARTEMENTAL: [
|
|
41
43
|
re.compile(r"\bDEPARTEMENTAL\b"),
|
|
42
44
|
re.compile(r"\bDÉPARTEMENTAL\b"),
|
|
45
|
+
re.compile(r"\bDEPARTEMENTALE\b"),
|
|
46
|
+
re.compile(r"\bDÉPARTEMENTALE\b"),
|
|
43
47
|
re.compile(r"\bD1\b"),
|
|
44
48
|
re.compile(r"\bD2\b"),
|
|
45
49
|
re.compile(r"\bD3\b"),
|
|
46
|
-
re.compile(r"\
|
|
47
|
-
re.compile(
|
|
48
|
-
r"^DÉPARTEMENTALE\b"
|
|
49
|
-
), # Format simple: "Départementale masculine seniors"
|
|
50
|
+
re.compile(r"\bD4\b"),
|
|
51
|
+
re.compile(r"\bD5\b"),
|
|
50
52
|
],
|
|
51
53
|
}
|
|
52
54
|
|
|
53
55
|
# Patterns pour extraire les numéros de division
|
|
54
56
|
DIVISION_PATTERNS = [
|
|
55
|
-
re.compile(r"\b[DR](\d+)\b"), # R1, R2, D1, D2, etc.
|
|
56
|
-
re.compile(
|
|
57
|
-
|
|
57
|
+
re.compile(r"\b[DR](\d+)\b"), # R1, R2, D1, D2, N1, etc.
|
|
58
|
+
re.compile(
|
|
59
|
+
r"\bR[ÉE]GIONALE?\s+(\d+)\b"
|
|
60
|
+
), # REGIONAL 1, REGIONALE 2, RÉGIONALE 2
|
|
61
|
+
re.compile(
|
|
62
|
+
r"\bD[ÉE]PARTEMENTALE?\s+(\d+)\b"
|
|
63
|
+
), # DEPARTEMENTAL 1, DEPARTEMENTALE 2
|
|
64
|
+
re.compile(r"\bNATIONALE?\s+(\d+)\b"), # NATIONAL 1, NATIONALE 2
|
|
58
65
|
re.compile(r"-\s*DIVISION\s+(\d+)\b"), # - Division 3, - DIVISION 1
|
|
66
|
+
re.compile(r"\bDIV(?:ISION)?\s*(\d+)\b"), # DIV 1, DIVISION 2
|
|
59
67
|
]
|
|
60
68
|
|
|
61
69
|
# Patterns pour les catégories
|
|
@@ -182,14 +190,12 @@ class NiveauExtractor:
|
|
|
182
190
|
Returns:
|
|
183
191
|
Objet Niveau ou None
|
|
184
192
|
"""
|
|
185
|
-
# Essayer d'abord avec le nom de la compétition
|
|
186
193
|
nom = competition_data.get("nom", "")
|
|
187
194
|
niveau = cls.extract_niveau(nom)
|
|
188
195
|
|
|
189
196
|
if niveau:
|
|
190
197
|
return niveau
|
|
191
198
|
|
|
192
|
-
# Essayer avec le code de la compétition
|
|
193
199
|
code = competition_data.get("code", "")
|
|
194
200
|
if code:
|
|
195
201
|
niveau = cls.extract_niveau(code)
|
|
@@ -197,7 +203,6 @@ class NiveauExtractor:
|
|
|
197
203
|
return niveau
|
|
198
204
|
|
|
199
205
|
|
|
200
|
-
# Fonctions utilitaires pour l'analyse
|
|
201
206
|
def get_niveau_from_idcompetition(idcompetition) -> NiveauInfo | None:
|
|
202
207
|
"""
|
|
203
208
|
Extrait le niveau depuis un objet IdCompetitionModel.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ffbb-data-client
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.18
|
|
4
4
|
Summary: API FFBB — SDK Python moderne & asynchrone pour les donnees officielles de la Federation Francaise de BasketBall (clubs, classements, calendriers, lives, Meilisearch). Alternative moderne a ffbb-api-client.
|
|
5
5
|
Home-page: https://github.com/nickdesi/ffbb-data-client
|
|
6
6
|
Author: nickdesi
|
{ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client.egg-info/SOURCES.txt
RENAMED
|
@@ -333,6 +333,7 @@ tests/unit/clients/test_meilisearch_async.py
|
|
|
333
333
|
tests/unit/clients/test_search_many.py
|
|
334
334
|
tests/unit/clients/test_v2_backport_search.py
|
|
335
335
|
tests/unit/clients/test_v3_new_features.py
|
|
336
|
+
tests/unit/clients/test_v4_aiter_and_contacts.py
|
|
336
337
|
tests/unit/clients/test_warm_cache.py
|
|
337
338
|
tests/unit/helpers/__init__.py
|
|
338
339
|
tests/unit/helpers/test_400_http_helpers.py
|
{ffbb_data_client-2.4.16 → ffbb_data_client-2.4.18}/src/ffbb_data_client.egg-info/scm_file_list.json
RENAMED
|
@@ -323,6 +323,7 @@
|
|
|
323
323
|
"tests/unit/clients/test_search_many.py",
|
|
324
324
|
"tests/unit/clients/test_v2_backport_search.py",
|
|
325
325
|
"tests/unit/clients/test_v3_new_features.py",
|
|
326
|
+
"tests/unit/clients/test_v4_aiter_and_contacts.py",
|
|
326
327
|
"tests/unit/clients/test_warm_cache.py",
|
|
327
328
|
"tests/unit/conftest.py",
|
|
328
329
|
"tests/unit/helpers/__init__.py",
|