From 13743dda295e6dea37dbfd6d5b3a6c43480e5348 Mon Sep 17 00:00:00 2001 From: Zhaofeng Li Date: Sun, 6 Jul 2025 11:16:31 -0600 Subject: [PATCH] python3Packages.frictionless: init at 5.18.1 --- .../python-modules/frictionless/default.nix | 215 ++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 217 insertions(+) create mode 100644 pkgs/development/python-modules/frictionless/default.nix diff --git a/pkgs/development/python-modules/frictionless/default.nix b/pkgs/development/python-modules/frictionless/default.nix new file mode 100644 index 000000000000..2609a1a9d299 --- /dev/null +++ b/pkgs/development/python-modules/frictionless/default.nix @@ -0,0 +1,215 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + hatchling, + attrs, + chardet, + humanize, + isodate, + jinja2, + jsonschema, + marko, + petl, + pydantic, + python-dateutil, + python-slugify, + pyyaml, + requests, + rfc3986, + simpleeval, + tabulate, + typer, + typing-extensions, + validators, + + # Optional formats + boto3, + google-api-python-client, + datasette, + duckdb, + duckdb-engine, + sqlalchemy, + pygithub, + pyquery, + ijson, + jsonlines, + pymysql, + ezodf, + lxml, + pandas, + pyarrow, + fastparquet, + psycopg, + psycopg2, + visidata, + tatsu, + + # Tests + pytestCheckHook, + pytest-cov, + pytest-dotenv, + pytest-lazy-fixtures, + pytest-mock, + pytest-timeout, + pytest-vcr, + moto, + requests-mock, + + # Tests depending on excel + openpyxl, + xlrd, +}: + +buildPythonPackage rec { + pname = "frictionless"; + version = "5.18.1"; + pyproject = true; + + src = fetchFromGitHub { + owner = "frictionlessdata"; + repo = "frictionless-py"; + tag = "v${version}"; + hash = "sha256-svspEHcEw994pEjnuzWf0FFaYeFZuqriK96yFAB6/gI="; + }; + + build-system = [ + hatchling + ]; + + dependencies = [ + attrs + chardet + humanize + isodate + jinja2 + jsonschema + marko + petl + pydantic + python-dateutil + python-slugify + pyyaml + requests + rfc3986 + simpleeval + tabulate + typer + typing-extensions + validators + ]; + + optional-dependencies = { + # The commented-out formats require dependencies that have not been packaged + # They are intentionally left in for reference - Please do not remove them + aws = [ + boto3 + ]; + bigquery = [ + google-api-python-client + ]; + #ckan = [ + # frictionless-ckan-mapper # not packaged + #]; + datasette = [ + datasette + ]; + duckdb = [ + duckdb + duckdb-engine + sqlalchemy + ]; + #excel = [ + # openpyxl + # tableschema-to-template # not packaged + # xlrd + # xlwt + #]; + github = [ + pygithub + ]; + #gsheets = [ + # pygsheets # not packaged + #]; + html = [ + pyquery + ]; + json = [ + ijson + jsonlines + ]; + mysql = [ + pymysql + sqlalchemy + ]; + ods = [ + ezodf + lxml + ]; + pandas = [ + pandas + pyarrow + ]; + parquet = [ + fastparquet + ]; + postgresql = [ + psycopg + psycopg2 + sqlalchemy + ]; + #spss = [ + # savreaderwriter # not packaged + #]; + sql = [ + sqlalchemy + ]; + visidata = [ + # Not ideal: This is actually outside pythonPackages set and depends on whatever + # Python version the top-level python3Packages set refers to + visidata + ]; + wkt = [ + tatsu + ]; + #zenodo = [ + # pyzenodo3 # not packaged + #]; + }; + + nativeCheckInputs = [ + pytestCheckHook + pytest-cov + pytest-dotenv + pytest-lazy-fixtures + pytest-mock + pytest-timeout + pytest-vcr + moto + requests-mock + + # We do not have all packages for the `excel` format to fully function, + # but it's required for some of the tests. + openpyxl + xlrd + ] ++ lib.flatten (lib.attrValues optional-dependencies); + + disabledTestPaths = [ + # Requires optional dependencies that have not been packaged (commented out above) + # The tests of other unavailable formats are auto-skipped + "frictionless/formats/excel" + "frictionless/formats/spss" + ]; + + pythonImportsCheck = [ + "frictionless" + ]; + + meta = { + description = "Data management framework for Python that provides functionality to describe, extract, validate, and transform tabular data"; + homepage = "https://github.com/frictionlessdata/frictionless-py"; + changelog = "https://github.com/frictionlessdata/frictionless-py/blob/${src.rev}/CHANGELOG.md"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ zhaofengli ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index a41ddd294453..2ca60c4469a9 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -5407,6 +5407,8 @@ self: super: with self; { freud = callPackage ../development/python-modules/freud { }; + frictionless = callPackage ../development/python-modules/frictionless { }; + frida-python = callPackage ../development/python-modules/frida-python { }; frigidaire = callPackage ../development/python-modules/frigidaire { };