Skip to main content

Sython Lab Travel Repository

Project description

SythonLab

SythonLab Travel Repository

A Python library for querying airport and country data with filtering, sorting, and multilingual support.


Installation

pip install sythonlab-travel-repo

Modules

  • airports — Query large and medium airports worldwide.
  • countries — Query ISO 3166-1 countries with localized names and nationalities.

Quick Start

Airports

from sythonlab_travel_repo.airports.airports import AirportService
from sythonlab_travel_repo.airports.config import FilterConfig
from sythonlab_travel_repo.airports.enums import AirportSortField
from sythonlab_travel_repo.core.enums import FilterType, SortOrder

# Load data once at startup
AirportService.load()

# Optional: configure filter strategies (default is EQ for all fields)
AirportService.configure(filter_config=FilterConfig(name=FilterType.CONTAINS))

# Query
results = AirportService.get_airports(
    name="Madrid",
    sort_by=AirportSortField.NAME,
    sort_order=SortOrder.ASC,
)

for airport in results:
    print(airport)  # "MAD - Adolfo Suárez Madrid–Barajas Airport"

Countries

from sythonlab_travel_repo.countries.countries import CountryService
from sythonlab_travel_repo.countries.config import CountryFilterConfig
from sythonlab_travel_repo.countries.enums import CountrySortField
from sythonlab_travel_repo.core.enums import FilterType, Language, SortOrder

# Load data once at startup
CountryService.load()

# Optional: configure filter strategies and display language
CountryService.configure(
    filter_config=CountryFilterConfig(name=FilterType.CONTAINS),
    locale=Language.ES,
)

# Query
results = CountryService.get_countries(
    name="rep",
    sort_by=CountrySortField.NAME,
    sort_order=SortOrder.ASC,
)

for country in results:
    print(country)  # prints name in Spanish

API Reference

AirportService

AirportService.load()

Loads the airport dataset from the bundled JSON file. Must be called once before any queries.

AirportService.configure(*, filter_config)

Sets the active filter configuration.

Parameter Type Description
filter_config FilterConfig Per-field filter strategies.

AirportService.get_airports(**filters)

Returns a list of Airport objects matching all supplied filters.

Parameter Type Description
airport_id int Exact numeric ID.
icao_code str ICAO code (e.g. LEMD).
airport_type AirportType MEDIUM_AIRPORT or LARGE_AIRPORT.
name str Airport name.
continent Continent Continent enum value.
iso_country str ISO 3166-1 alpha-2 country code.
iso_region str ISO 3166-2 region code.
city_name str City/municipality name.
gps_code str GPS code.
iata_code str IATA code (e.g. MAD).
sort_by AirportSortField Field to sort by. Default: NAME.
sort_order SortOrder ASC or DESC. Default: ASC.

AirportService.get_by_iata_code(code)

Returns the Airport matching the given IATA code, or None.

AirportService.get_by_icao_code(code)

Returns the Airport matching the given ICAO code, or None.


CountryService

CountryService.load()

Loads the country dataset from the bundled JSON file. Must be called once before any queries.

CountryService.configure(*, filter_config, locale)

Sets the active filter configuration and display language.

Parameter Type Description
filter_config CountryFilterConfig Per-field filter strategies.
locale Language Language for localized fields. Default: Language.EN.

CountryService.get_countries(**filters)

Returns a list of Country objects matching all supplied filters.

Parameter Type Description
name str Country name (matched in active locale).
nationality str Nationality/demonym (matched in active locale).
alpha_2 str ISO 3166-1 alpha-2 code (e.g. ES).
alpha_3 str ISO 3166-1 alpha-3 code (e.g. ESP).
sort_by CountrySortField Field to sort by. Default: NAME.
sort_order SortOrder ASC or DESC. Default: ASC.

CountryService.get_by_alpha2(code)

Returns the Country matching the given alpha-2 code, or None.

CountryService.get_by_alpha3(code)

Returns the Country matching the given alpha-3 code, or None.


Models

Airport

Field Type Description
id int Internal identifier.
icao_code str ICAO code.
airport_type AirportType Size classification.
name str Full airport name.
latitude float Latitude in decimal degrees.
longitude float Longitude in decimal degrees.
elevation_ft float | None Elevation in feet.
continent Continent | None Continent.
iso_country str | None ISO country code.
iso_region str | None ISO region code.
city str | None City served.
scheduled_service bool Has scheduled commercial service.
gps_code str | None GPS code.
iata_code str | None IATA code.

Country

Field Type Description
id int Internal identifier.
name LocalizedText Name in English and Spanish.
alpha_2 str ISO 3166-1 alpha-2 code.
alpha_3 str ISO 3166-1 alpha-3 code.
flag str Flag emoji.
nationality LocalizedText | None Demonym in English and Spanish.
locale Language Active display language (set by the service).

LocalizedText

Field Type Description
en str English text.
es str Spanish text.

localizedText.get(language) returns the text in the requested language.


Enumerations

FilterType

Value Description
EQ Exact case-insensitive match.
CONTAINS Case-insensitive substring match.

SortOrder

Value Description
ASC Ascending order.
DESC Descending order.

Language

Value Description
EN English.
ES Spanish.

AirportType

Value Description
MEDIUM_AIRPORT Medium-sized airport.
LARGE_AIRPORT Large international airport.

AirportSortField

ID, NAME, IATA_CODE, ICAO_CODE, COUNTRY, REGION, CITY, GPS_CODE, ELEVATION

CountrySortField

ID, NAME, ALPHA_2, ALPHA_3, NATIONALITY

Continent

AF, AS, EU, NA, OC, SA


Filter Configuration

Use FilterConfig / CountryFilterConfig to control how each field is matched:

from sythonlab_travel_repo.airports.config import FilterConfig
from sythonlab_travel_repo.core.enums import FilterType

# Name uses substring match; all other fields use exact match
AirportService.configure(filter_config=FilterConfig(name=FilterType.CONTAINS))
from sythonlab_travel_repo.countries.config import CountryFilterConfig

# Both name and nationality use substring match
CountryService.configure(
    filter_config=CountryFilterConfig(
        name=FilterType.CONTAINS,
        nationality=FilterType.CONTAINS,
    ),
    locale=Language.ES,
)

Author

José Angel Alvarez Abrairasythonlab@gmail.com
GitHub: sythonlab/SythonLab-Travel-Repo

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sythonlab_travel_repo-1.1.7.tar.gz (261.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sythonlab_travel_repo-1.1.7-py3-none-any.whl (268.0 kB view details)

Uploaded Python 3

File details

Details for the file sythonlab_travel_repo-1.1.7.tar.gz.

File metadata

  • Download URL: sythonlab_travel_repo-1.1.7.tar.gz
  • Upload date:
  • Size: 261.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for sythonlab_travel_repo-1.1.7.tar.gz
Algorithm Hash digest
SHA256 8a52f7e738eea25a232724145a98c543095c7801e948b93c04bf9c6a9ce6fa22
MD5 89bafc9dbcdbbfd3a1bf84d8adeaedf5
BLAKE2b-256 45c75b48853100f3dff8f3ef41a89e17797e70616c6af19cc4c880a97aaa287f

See more details on using hashes here.

File details

Details for the file sythonlab_travel_repo-1.1.7-py3-none-any.whl.

File metadata

File hashes

Hashes for sythonlab_travel_repo-1.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 30dad582d6fba3d4d8cb0f33e31f3a08e8e75bb0cce68520a6b168ce9fedbe3e
MD5 5df0ec749f9800828345759df59670b4
BLAKE2b-256 9ad2c96ad8d7be46c2acace8802287b4bc2b95246c7d65841b9d7cc4d7b89cc3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page