Skip to content

Commit

Permalink
revert default psycopg2 back to psycopg2-binary
Browse files Browse the repository at this point in the history
  • Loading branch information
colin-rogers-dbt committed Apr 1, 2024
1 parent b6135fd commit 26fed54
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 10 deletions.
52 changes: 52 additions & 0 deletions hatch_build.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
import logging
import os
import sys
from typing import Any

from hatchling.builders.config import BuilderConfig
from hatchling.builders.hooks.plugin.interface import BuildHookInterface
from hatchling.plugin import hookimpl

BASE_DEPS = [
# psycopg2 dependency installed in custom hatch_build.py
"dbt-adapters>=0.1.0a1,<2.0",
# installed via dbt-adapters but used directly
"dbt-common>=0.1.0a1,<2.0",
"agate>=1.0,<2.0",
]

PSYCOPG2_MESSAGE = """
No package name override was set.
Using 'psycopg2-binary' package to satisfy 'psycopg2'
If you experience segmentation faults, silent crashes, or installation errors,
consider retrying with the 'DBT_PSYCOPG2_NAME' environment variable set to
'psycopg2'. It may require a compiler toolchain and development libraries!
""".strip()


def _dbt_psycopg2_name():
# if the user chose something, use that
package_name = os.getenv("DBT_PSYCOPG2_NAME", "")
if package_name:
return package_name

# default to psycopg2-binary for all OSes/versions
print(PSYCOPG2_MESSAGE)
return "psycopg2-binary"


class CustomBuildHook(BuildHookInterface[BuilderConfig]):

def __init__(self, *args: Any, **kwargs: Any) -> None:
super().__init__(*args, **kwargs)

def initialize(self, version: str, build_data: dict[str, Any]) -> None:
build_data["dependencies"] = BASE_DEPS
psycopg2_pkg_name = _dbt_psycopg2_name()
build_data["dependencies"].append(f"{psycopg2_pkg_name}>=2.9,<3.0")


@hookimpl
def hatch_register_build_hook():
return CustomBuildHook
15 changes: 5 additions & 10 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[project]
dynamic = ["version"]
dynamic = ["version", "dependencies"]
name = "dbt-postgres"
description = "The set of adapter protocols and base functionality that supports integration with dbt-core"
readme = "README.md"
Expand All @@ -22,15 +22,7 @@ classifiers = [
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
]
dependencies = [
"dbt-adapters>=0.1.0a1,<2.0",
"psycopg2-binary>=2.9,<3.0",
# installed via dbt-adapters but used directly
"dbt-common>=0.1.0a1,<2.0",
"agate>=1.0,<2.0",
]
[project.optional-dependencies]
no-binary = ["psycopg2>=2.9,<3.0"]

[project.urls]
Homepage = "https://github.com/dbt-labs/dbt-postgres"
Documentation = "https://docs.getdbt.com"
Expand All @@ -51,6 +43,9 @@ packages = ["dbt"]
[tool.hatch.version]
path = "dbt/adapters/postgres/__version__.py"

[tool.hatch.build.hooks.custom]
path = "./hatch_build.py"

[tool.hatch.envs.default]
dependencies = [
"dbt-adapters @ git+https://github.com/dbt-labs/dbt-adapters.git",
Expand Down

0 comments on commit 26fed54

Please sign in to comment.