diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 481d0d6..8a0ee7d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -36,7 +36,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: [3.7, 3.8, 3.9, "3.10", "3.11", "3.12"] + python-version: [3.9, "3.10", "3.11", "3.12", "3.13", "3.14"] steps: - uses: actions/checkout@v4 diff --git a/CHANGELOG.md b/CHANGELOG.md index 38bf1d1..6c250ce 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,10 @@ CHANGELOG ========= +0.6.2 +----- + - Support negative numbers (both integers and floats) + 0.6.1 ----- - Fix project build diff --git a/py_partiql_parser/_internal/json_parser.py b/py_partiql_parser/_internal/json_parser.py index eed5783..e3a7b2d 100644 --- a/py_partiql_parser/_internal/json_parser.py +++ b/py_partiql_parser/_internal/json_parser.py @@ -15,7 +15,7 @@ class JsonParser: """ @staticmethod - def parse(original: str) -> Iterator[Any]: # type: ignore[misc] + def parse(original: str) -> Iterator[Any]: if not (original.startswith("{") or original.startswith("[")): # Doesn't look like JSON - let's return as a variable yield original if original.isnumeric() else Variable(original) @@ -26,7 +26,7 @@ def parse(original: str) -> Iterator[Any]: # type: ignore[misc] yield result @staticmethod - def parse_with_tokens(original: str) -> Iterator[Tuple[Any, int]]: # type: ignore[misc] + def parse_with_tokens(original: str) -> Iterator[Tuple[Any, int]]: """ Parse JSON string. Returns a tuple of (json_doc, nr_of_bytes_processed) """ @@ -37,7 +37,7 @@ def parse_with_tokens(original: str) -> Iterator[Tuple[Any, int]]: # type: igno yield result, tokenizer.get_tokens_parsed() @staticmethod - def _get_next_document( # type: ignore[misc] + def _get_next_document( original: str, tokenizer: ClauseTokenizer, only_parse_initial: bool = False, @@ -135,7 +135,7 @@ def _get_next_document( # type: ignore[misc] return result @staticmethod - def _parse_list(original: str, tokenizer: ClauseTokenizer) -> List[Any]: # type: ignore + def _parse_list(original: str, tokenizer: ClauseTokenizer) -> List[Any]: result: List[Any] = list() section = None current_phrase = "" diff --git a/py_partiql_parser/_internal/where_parser.py b/py_partiql_parser/_internal/where_parser.py index 28d705f..4f84ffd 100644 --- a/py_partiql_parser/_internal/where_parser.py +++ b/py_partiql_parser/_internal/where_parser.py @@ -322,7 +322,7 @@ def prep_value(val: str) -> Dict[str, Any]: class S3WhereParser(WhereParser): @classmethod - def applies(cls, doc: Any, table_prefix: str, _where_clause: str) -> bool: # type: ignore[misc] + def applies(cls, doc: Any, table_prefix: str, _where_clause: str) -> bool: where_clause = WhereParser.parse_where_clause(_where_clause) if isinstance(where_clause, WhereClause): diff --git a/pyproject.toml b/pyproject.toml index f00329d..ef74190 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "py-partiql-parser" -version = "0.6.1" +version = "0.6.2" description = "Pure Python PartiQL Parser" readme = "README.md" keywords = ["pypartiql", "parser"] @@ -9,6 +9,27 @@ authors = [{name="Bert Blommers", email="info@bertblommers.nl"}] dependencies = [] +classifiers = [ + # How mature is this project? Common values are + # 3 - Alpha + # 4 - Beta + # 5 - Production/Stable + "Development Status :: 4 - Beta", + + # Indicate who your project is intended for + "Intended Audience :: Developers", + "Topic :: Software Development :: Libraries", + + # Specify the Python versions you support here. + "Programming Language :: Python :: 3", + "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 :: 3.14", +] + [tool.hatch.build] include = ["py_partiql_parser/*"]