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

Uploaded Python 3

File details

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

File metadata

  • Download URL: sythonlab_travel_repo-1.1.1.tar.gz
  • Upload date:
  • Size: 88.1 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.1.tar.gz
Algorithm Hash digest
SHA256 cb5201cbd1ddabb07bbd6a95ddff8ae4f8cd509fe68d6dffad201eee3ce9090b
MD5 945a7782d8ea35ab3e1aa8779c295d13
BLAKE2b-256 032d984a7a1e3af4575d3cf536f7fb0ea7694f9fcca0294f04d685c981a6782a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sythonlab_travel_repo-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7b4f6e7727a446c140bfa306eb7b9a5836eaeb5a8598511fe73a86cd5fb01d93
MD5 39b7e716b63fe42321dec2ef403cfe6c
BLAKE2b-256 a8fa63e3709132b8cce3861b1c04895f2dd7446aa58840dd4a7437d19abf5b34

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