From b5b5d6270a49c60ded33f13d8d0403514ec00b5b Mon Sep 17 00:00:00 2001 From: George Sittas Date: Wed, 10 Jun 2026 20:02:08 +0300 Subject: [PATCH 1/3] Fix(sqlglotc): pin sqlglot to the exact matching version --- sqlglotc/pyproject.toml | 2 +- sqlglotc/setup.py | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/sqlglotc/pyproject.toml b/sqlglotc/pyproject.toml index 1ccacab219..9e87210918 100644 --- a/sqlglotc/pyproject.toml +++ b/sqlglotc/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "sqlglotc" -dynamic = ["version"] +dynamic = ["version", "dependencies"] description = "mypyc-compiled extensions for sqlglot" authors = [{ name = "Toby Mao", email = "toby.mao@gmail.com" }] license = "MIT" diff --git a/sqlglotc/setup.py b/sqlglotc/setup.py index e5b9ff9732..9e4be44d93 100644 --- a/sqlglotc/setup.py +++ b/sqlglotc/setup.py @@ -128,9 +128,28 @@ def run(self): shutil.rmtree(local_sqlglot, ignore_errors=True) +def _sqlglot_requirement(): + """Pin sqlglot to the matching version so resolvers keep the two packages in lockstep.""" + pkg_info = os.path.join(os.path.dirname(os.path.abspath(__file__)), "PKG-INFO") + if os.path.isfile(pkg_info): + # Building from an sdist: no git metadata; the released version is frozen in PKG-INFO. + with open(pkg_info, encoding="utf-8") as fd: + version = next( + (line.split(":", 1)[1].strip() for line in fd if line.startswith("Version:")), "" + ) + else: + from setuptools_scm import get_version + + version = get_version(root="..", relative_to=__file__, local_scheme="no-local-version") + + # Dev builds have no matching sqlglot release on PyPI, so skip the pin. + return [] if not version or ".dev" in version else [f"sqlglot=={version}"] + + setup( name="sqlglotc", packages=[], + install_requires=_sqlglot_requirement(), ext_modules=mypycify( _source_paths(), opt_level=os.environ.get("MYPYC_OPT", "2"), separate=True, verbose=True ), From a29f0e27f67a43b463114d158aa68ec87ca23ff4 Mon Sep 17 00:00:00 2001 From: George Sittas Date: Wed, 10 Jun 2026 20:30:39 +0300 Subject: [PATCH 2/3] Make install_requirements more resilient --- sqlglotc/setup.py | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/sqlglotc/setup.py b/sqlglotc/setup.py index 9e4be44d93..6b662362ca 100644 --- a/sqlglotc/setup.py +++ b/sqlglotc/setup.py @@ -130,20 +130,30 @@ def run(self): def _sqlglot_requirement(): """Pin sqlglot to the matching version so resolvers keep the two packages in lockstep.""" - pkg_info = os.path.join(os.path.dirname(os.path.abspath(__file__)), "PKG-INFO") - if os.path.isfile(pkg_info): - # Building from an sdist: no git metadata; the released version is frozen in PKG-INFO. - with open(pkg_info, encoding="utf-8") as fd: - version = next( - (line.split(":", 1)[1].strip() for line in fd if line.startswith("Version:")), "" + try: + pkg_info = os.path.join(os.path.dirname(os.path.abspath(__file__)), "PKG-INFO") + if os.path.isfile(pkg_info): + # Building from an sdist: no git metadata; the released version is frozen in PKG-INFO. + with open(pkg_info, encoding="utf-8") as fd: + version = next( + (line.split(":", 1)[1].strip() for line in fd if line.startswith("Version:")), + "", + ) + else: + from setuptools_scm import get_version + + version = get_version( + root="..", + relative_to=__file__, + local_scheme="no-local-version", + fallback_version="0.0.0", ) - else: - from setuptools_scm import get_version + except Exception as e: + print(f"sqlglotc: failed to determine the sqlglot version to pin, skipping it: {e}") + version = "" - version = get_version(root="..", relative_to=__file__, local_scheme="no-local-version") - - # Dev builds have no matching sqlglot release on PyPI, so skip the pin. - return [] if not version or ".dev" in version else [f"sqlglot=={version}"] + # Dev and fallback (no git metadata) builds have no matching sqlglot release on PyPI. + return [] if version in ("", "0.0.0") or ".dev" in version else [f"sqlglot=={version}"] setup( From a56e53f1171777715ed318a814734d3eeea16de2 Mon Sep 17 00:00:00 2001 From: George Sittas Date: Wed, 10 Jun 2026 20:58:30 +0300 Subject: [PATCH 3/3] More feedback from copilot --- sqlglotc/setup.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/sqlglotc/setup.py b/sqlglotc/setup.py index 6b662362ca..5d12a411b4 100644 --- a/sqlglotc/setup.py +++ b/sqlglotc/setup.py @@ -149,11 +149,15 @@ def _sqlglot_requirement(): fallback_version="0.0.0", ) except Exception as e: - print(f"sqlglotc: failed to determine the sqlglot version to pin, skipping it: {e}") + print(f"sqlglotc: failed to determine the sqlglot version to pin: {e}") version = "" - # Dev and fallback (no git metadata) builds have no matching sqlglot release on PyPI. - return [] if version in ("", "0.0.0") or ".dev" in version else [f"sqlglot=={version}"] + # Dev and fallback (no git metadata) builds have no matching sqlglot release on PyPI; + # depend on sqlglot unpinned since the extensions can't be imported without it. + if version in ("", "0.0.0") or ".dev" in version: + return ["sqlglot"] + + return [f"sqlglot=={version}"] setup(