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.5.tar.gz (260.6 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.5-py3-none-any.whl (266.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: sythonlab_travel_repo-1.1.5.tar.gz
  • Upload date:
  • Size: 260.6 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.5.tar.gz
Algorithm Hash digest
SHA256 f98b54a2bddaf41298769ff07431aba7afa39a52cf9c2b826b5cd3ee53336244
MD5 dd4c6765ed7c58cf69031c7e86d1b04b
BLAKE2b-256 02fa2595012fa9ddc23531c2526d20076f1a5f9131bf7ee3cd7b1529657f4171

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sythonlab_travel_repo-1.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 225e0d32b185ca53de97a83f8703784757ebf9ee2e5c1e121c2973ed4e61c6b3
MD5 fe4580169abeaf8d17e011fa37925eb4
BLAKE2b-256 deba7921bf47e9685670b19533f4764415d8dcbfdcf008ff7d1e9fb603f33c83

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