Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,11 +41,11 @@ jobs:
fail-fast: false
matrix:
python: [
"3.8",
"3.9",
"3.10",
"3.11",
"3.12",
"3.13",
"pypy-3.9",
"pypy-3.10",
]
Expand All @@ -57,11 +57,11 @@ jobs:
]
include:
# Test with older Trino versions for backward compatibility
- { python: "3.12", trino: "351", sqlalchemy: "~=1.4.0" } # first Trino version
- { python: "3.13", trino: "351", sqlalchemy: "~=1.4.0" } # first Trino version
# Test with sqlalchemy 1.3
- { python: "3.12", trino: "latest", sqlalchemy: "~=1.3.0" }
- { python: "3.13", trino: "latest", sqlalchemy: "~=1.3.0" }
# Test with sqlalchemy 2.0
- { python: "3.12", trino: "latest", sqlalchemy: "~=2.0.0" }
- { python: "3.13", trino: "latest", sqlalchemy: "~=2.0.0" }
env:
TRINO_VERSION: "${{ matrix.trino }}"
steps:
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Client for [Trino](https://trino.io/), a distributed SQL engine for interactive and batch big data processing.
Provides a low-level client and a DBAPI 2.0 implementation and a SQLAlchemy adapter.
It supports Python>=3.8 and PyPy.
It supports Python>=3.9 and PyPy.

[![Build Status](https://github.com/trinodb/trino-python-client/workflows/ci/badge.svg)](https://github.com/trinodb/trino-python-client/actions?query=workflow%3Aci+event%3Apush+branch%3Amaster)
[![Trino Slack](https://img.shields.io/static/v1?logo=slack&logoColor=959DA5&label=Slack&labelColor=333a41&message=join%20conversation&color=3AC358)](https://trino.io/slack.html)
Expand Down
5 changes: 2 additions & 3 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,18 +70,17 @@
"Operating System :: Microsoft :: Windows",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
"Topic :: Database :: Front-Ends",
],
python_requires=">=3.8",
python_requires=">=3.9",
install_requires=[
"backports.zoneinfo;python_version<'3.9'",
"python-dateutil",
"pytz",
# requests CVE https://github.com/advisories/GHSA-j8r2-6x86-q33q
Expand Down
6 changes: 1 addition & 5 deletions tests/integration/test_dbapi_integration.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,7 @@
from datetime import date, datetime, time, timedelta, timezone
from decimal import Decimal
from typing import Tuple

try:
from zoneinfo import ZoneInfo
except ModuleNotFoundError:
from backports.zoneinfo import ZoneInfo
from zoneinfo import ZoneInfo

import pytest
import requests
Expand Down
6 changes: 1 addition & 5 deletions tests/integration/test_types_integration.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,7 @@
import uuid
from datetime import date, datetime, time, timedelta, timezone, tzinfo
from decimal import Decimal

try:
from zoneinfo import ZoneInfo
except ModuleNotFoundError:
from backports.zoneinfo import ZoneInfo
from zoneinfo import ZoneInfo

import pytest

Expand Down
6 changes: 1 addition & 5 deletions tests/unit/test_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
from typing import Any, Dict, Optional
from unittest import TestCase, mock
from urllib.parse import urlparse
from zoneinfo import ZoneInfoNotFoundError

import gssapi
import httpretty
Expand Down Expand Up @@ -59,11 +60,6 @@
_RetryWithExponentialBackoff,
)

try:
from zoneinfo import ZoneInfoNotFoundError # type: ignore
except ModuleNotFoundError:
from backports.zoneinfo._common import ZoneInfoNotFoundError # type: ignore


@mock.patch("trino.client.TrinoRequest.http")
def test_trino_initial_request(mock_requests, sample_post_response_data):
Expand Down
2 changes: 1 addition & 1 deletion tox.ini
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[tox]
envlist = py37,py38,py39,py310,py311
envlist = py39,py310,py311,py312,py313

[testenv]
extras = tests
Expand Down
9 changes: 2 additions & 7 deletions trino/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,20 +47,15 @@
from email.utils import parsedate_to_datetime
from time import sleep
from typing import Any, Dict, List, Optional, Tuple, Union

from trino.mapper import RowMapper, RowMapperFactory

try:
from zoneinfo import ZoneInfo
except ModuleNotFoundError:
from backports.zoneinfo import ZoneInfo
from zoneinfo import ZoneInfo

import requests
from tzlocal import get_localzone_name # type: ignore

import trino.logging
from trino import constants, exceptions
from trino._version import __version__
from trino.mapper import RowMapper, RowMapperFactory

__all__ = ["ClientSession", "TrinoQuery", "TrinoRequest", "PROXIES"]

Expand Down
6 changes: 1 addition & 5 deletions trino/dbapi.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,7 @@
from time import time
from typing import Any, Dict, List, NamedTuple, Optional # NOQA for mypy types
from urllib.parse import urlparse

try:
from zoneinfo import ZoneInfo
except ModuleNotFoundError:
from backports.zoneinfo import ZoneInfo
from zoneinfo import ZoneInfo

import trino.client
import trino.exceptions
Expand Down
7 changes: 1 addition & 6 deletions trino/mapper.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,11 @@

import abc
import base64
import sys
import uuid
from datetime import date, datetime, time, timedelta, timezone, tzinfo
from decimal import Decimal
from typing import Any, Dict, Generic, List, Optional, Tuple, TypeVar

if sys.version_info >= (3, 9):
from zoneinfo import ZoneInfo
else:
from backports.zoneinfo import ZoneInfo
from zoneinfo import ZoneInfo

import trino.exceptions
from trino.types import (
Expand Down