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.10.tar.gz (262.3 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.10-py3-none-any.whl (268.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: sythonlab_travel_repo-1.1.10.tar.gz
  • Upload date:
  • Size: 262.3 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.10.tar.gz
Algorithm Hash digest
SHA256 88f82bc8f8633e2b0575641a71782bf1ec5a797a29547d0dcbce9c29873fbaeb
MD5 c03b169f8679f66e18e0fb144e664d96
BLAKE2b-256 76220b092e5b4c251570de2cfc8da97d53fba20bbd99b3c44cd4a01cc9611411

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sythonlab_travel_repo-1.1.10-py3-none-any.whl
Algorithm Hash digest
SHA256 547812d4eabb7617ab74a67bc567a999b479da16cf5f422add5a14c23b0a231e
MD5 9e5f03f75d406f8d8852515b7cec9c31
BLAKE2b-256 077e5cd4a10776efd465b6cbcf2b359f73db106892081d351770b5e296ab2e29

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