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.2.tar.gz (88.2 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.2-py3-none-any.whl (89.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: sythonlab_travel_repo-1.1.2.tar.gz
  • Upload date:
  • Size: 88.2 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.2.tar.gz
Algorithm Hash digest
SHA256 f3fbabcdc65eed3caa54aecbca7cd7d8c942fcfc16bc0d9fb12336bfd1aedbca
MD5 67273bf790e33422058f58bd2a29e084
BLAKE2b-256 91254c6d6a58ad2a203b8bd09606647e9dcc3d399daca86fe4dc6fd36e5c841b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sythonlab_travel_repo-1.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d09b2a89f39fe52abf2de5cd0620a97e6de17482b46bb7f3c6b659efc61d7347
MD5 8cb2a1f0abd5c87cbd7cb3a8e9c28924
BLAKE2b-256 24e79a4262ab605c08932d6287390b7d781dfc6174048dacf62449f40c7f0bdc

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