Unverified Commit 34eac236 authored by Phillip Cloud's avatar Phillip Cloud
Browse files

python310Packages.ibis-framework: 4.1.0 -> 5.1.0

parent d0f57e61
Loading
Loading
Loading
Loading
+64 −37
Original line number Diff line number Diff line
@@ -5,18 +5,23 @@
, pythonOlder
, pytestCheckHook
, atpublic
, click
, bidict
, black
, clickhouse-cityhash
, clickhouse-driver
, dask
, datafusion
, db-dtypes
, duckdb
, duckdb-engine
, filelock
, geoalchemy2
, geopandas
, google-cloud-bigquery
, google-cloud-bigquery-storage
, graphviz-nox
, hypothesis
, importlib-resources
, lz4
, multipledispatch
, numpy
@@ -24,83 +29,100 @@
, pandas
, parsy
, poetry-core
, poetry-dynamic-versioning
, polars
, pooch
, psycopg2
, pyarrow
, pydantic
, pydata-google-auth
, pydruid
, pymysql
, pyspark
, pytest-benchmark
, pytest-httpserver
, pytest-mock
, pytest-randomly
, pytest-snapshot
, pytest-xdist
, python
, python-dateutil
, pytz
, regex
, rich
, rsync
, shapely
, snowflake-connector-python
, snowflake-sqlalchemy
, sqlalchemy
, sqlalchemy-views
, sqlglot
, sqlite
, toolz
, trino-python-client
, typing-extensions
}:
let
  testBackends = [
    "datafusion"
    "duckdb"
    "pandas"
    "sqlite"
  ];
  testBackends = [ "datafusion" "duckdb" "pandas" "sqlite" ];

  ibisTestingData = fetchFromGitHub {
    name = "ibis-testing-data";
    owner = "ibis-project";
    repo = "testing-data";
    rev = "3c39abfdb4b284140ff481e8f9fbb128b35f157a";
    hash = "sha256-BZWi4kEumZemQeYoAtlUSw922p+R6opSWp/bmX0DjAo=";
    rev = "8a59df99c01fa217259554929543e71c3bbb1761";
    hash = "sha256-NbgEe0w/qf9hCr9rRfIpyaH9pv25I8x0ykY7EJxDOuk=";
  };
in

buildPythonPackage rec {
  pname = "ibis-framework";
  version = "4.1.0";
  version = "5.1.0";
  format = "pyproject";

  disabled = pythonOlder "3.8";

  src = fetchFromGitHub {
    name = "ibis-source";
    repo = "ibis";
    owner = "ibis-project";
    rev = "refs/tags/${version}";
    hash = "sha256-ipnMymf+BOpG9iGWO47no47m4nLIBbqLdbzlevuxeBw=";
    hash = "sha256-u3BBGdhWajZ5WtoBvNxmx76+orfHY6LX3IWAq/x2/9A=";
  };

  patches = [
    # fixes a small bug in the datafusion backend to reorder predicates
    (fetchpatch {
      name = "fix-datafusion-compilation.patch";
      url = "https://github.com/ibis-project/ibis/commit/009230421b2bc1f86591e8b850d37a489e8e4f06.patch";
      hash = "sha256-5NHkgc8d2bkOMpbY1vme1XgNfyHSr0f7BrR3JTTjjPI=";
    })
  ];

  nativeBuildInputs = [
    poetry-core
  ];

  propagatedBuildInputs = [
    atpublic
    bidict
    multipledispatch
    numpy
    packaging
    pandas
    parsy
    poetry-dynamic-versioning
    pydantic
    pooch
    python-dateutil
    pytz
    regex
    rich
    sqlglot
    toolz
  ];
    typing-extensions
  ] ++ lib.optionals (pythonOlder "3.9") [ importlib-resources ]
  ++ pooch.optional-dependencies.progress
  ++ pooch.optional-dependencies.xxhash;

  nativeCheckInputs = [
    pytestCheckHook
    click
    filelock
    hypothesis
    pytest-benchmark
    pytest-httpserver
    pytest-mock
    pytest-randomly
    pytest-snapshot
@@ -112,15 +134,13 @@ buildPythonPackage rec {
    "--dist=loadgroup"
    "-m"
    "'${lib.concatStringsSep " or " testBackends} or core'"
    # these will be fixed in ibis-framework 5.0.0
    "--deselect=ibis/backends/tests/test_string.py::test_string"
    "--deselect=ibis/backends/tests/test_register.py::test_csv_reregister_schema"
    "--deselect=ibis/backends/tests/test_client.py::test_list_databases"
    # sqlalchemy2 breakage
    "--deselect=ibis/tests/sql/test_sqlalchemy.py::test_tpc_h17"
    # tries to download duckdb extensions
    "--deselect=ibis/backends/duckdb/tests/test_register.py::test_register_sqlite"
    "--deselect=ibis/backends/duckdb/tests/test_register.py::test_read_sqlite"
  ];

  # remove when sqlalchemy backend no longer uses deprecated methods
  SQLALCHEMY_SILENCE_UBER_WARNING = 1;

  # patch out tests that check formatting with black
  postPatch = ''
    find ibis/tests -type f -name '*.py' -exec sed -i \
@@ -131,8 +151,8 @@ buildPythonPackage rec {
  preCheck = ''
    set -eo pipefail

    export IBIS_TEST_DATA_DIRECTORY
    IBIS_TEST_DATA_DIRECTORY="ci/ibis-testing-data"
    HOME="$TMPDIR"
    export IBIS_TEST_DATA_DIRECTORY="ci/ibis-testing-data"

    mkdir -p "$IBIS_TEST_DATA_DIRECTORY"

@@ -150,23 +170,30 @@ buildPythonPackage rec {

  passthru = {
    optional-dependencies = {
      clickhouse = [ clickhouse-cityhash clickhouse-driver lz4 sqlglot ];
      dask = [ dask pyarrow ];
      bigquery = [ db-dtypes google-cloud-bigquery google-cloud-bigquery-storage pydata-google-auth ];
      clickhouse = [ clickhouse-cityhash clickhouse-driver lz4 sqlalchemy ];
      dask = [ dask pyarrow regex ];
      datafusion = [ datafusion ];
      duckdb = [ duckdb duckdb-engine pyarrow sqlalchemy sqlglot ];
      druid = [ pydruid sqlalchemy ];
      duckdb = [ duckdb duckdb-engine packaging pyarrow sqlalchemy sqlalchemy-views ];
      geospatial = [ geoalchemy2 geopandas shapely ];
      mysql = [ sqlalchemy pymysql sqlglot ];
      pandas = [ ];
      postgres = [ psycopg2 sqlalchemy sqlglot ];
      pyspark = [ pyarrow pyspark ];
      sqlite = [ sqlalchemy sqlite sqlglot ];
      mysql = [ sqlalchemy pymysql sqlalchemy-views ];
      pandas = [ regex ];
      polars = [ polars pyarrow ];
      postgres = [ psycopg2 sqlalchemy sqlalchemy-views ];
      pyspark = [ pyarrow pyspark sqlalchemy ];
      snowflake = [ snowflake-connector-python snowflake-sqlalchemy sqlalchemy-views ];
      sqlite = [ regex sqlalchemy sqlite sqlalchemy-views ];
      trino = [ trino-python-client sqlalchemy sqlalchemy-views ];
      visualization = [ graphviz-nox ];
      decompiler = [ black ];
    };
  };

  meta = with lib; {
    description = "Productivity-centric Python Big Data Framework";
    homepage = "https://github.com/ibis-project/ibis";
    changelog = "https://github.com/ibis-project/ibis/blob/${version}/docs/release_notes.md";
    license = licenses.asl20;
    maintainers = with maintainers; [ costrouc cpcloud ];
  };