Skip to content

py-wacz: init at 0.5.0#420437

Merged
doronbehar merged 5 commits into
NixOS:masterfrom
zhaofengli:py-wacz
Jul 8, 2025
Merged

py-wacz: init at 0.5.0#420437
doronbehar merged 5 commits into
NixOS:masterfrom
zhaofengli:py-wacz

Conversation

@zhaofengli

Copy link
Copy Markdown
Member

WACZ is a format for web archives. It combines regular WARC data with indexes to enable efficient random access of archives (e.g., https://replayweb.page).

py-wacz provides the wacz command to create and validate WACZ archives. WARC archives generated by other tools can be ingested to create indexed WACZs. Some platforms (such as Browsertrix Cloud) also provide authenticated WACZ archives with digital signatures. The signature validation feature is not enabled in this PR.

It's best to review this PR commit-by-commit.

Things done

  • Built on platform(s)
    • x86_64-linux
    • aarch64-linux
    • x86_64-darwin
    • aarch64-darwin
  • For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)
    • sandbox = relaxed
    • sandbox = true
  • Tested, as applicable:
  • Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
  • Tested basic functionality of all binary files (usually in ./result/bin/)
  • Nixpkgs 25.11 Release Notes (or backporting 24.11 and 25.05 Nixpkgs Release notes)
    • (Package updates) Added a release notes entry if the change is major or breaking
  • NixOS 25.11 Release Notes (or backporting 24.11 and 25.05 NixOS Release notes)
    • (Module updates) Added a release notes entry if the change is significant
    • (Module addition) Added a release notes entry if adding a new NixOS module
  • Fits CONTRIBUTING.md, pkgs/README.md, maintainers/README.md and other contributing documentation in corresponding paths.

Add a 👍 reaction to pull requests you find important.

@nix-owners
nix-owners Bot requested a review from natsukium June 27, 2025 06:06
@nixpkgs-ci nixpkgs-ci Bot added 10.rebuild-linux: 11-100 This PR causes between 11 and 100 packages to rebuild on Linux. 10.rebuild-darwin: 11-100 This PR causes between 11 and 100 packages to rebuild on Darwin. 6.topic: python Python is a high-level, general-purpose programming language. labels Jun 27, 2025
Comment thread pkgs/development/python-modules/cdxj-indexer/default.nix Outdated
Comment thread pkgs/development/python-modules/cdxj-indexer/default.nix Outdated
Comment thread pkgs/development/python-modules/cdxj-indexer/default.nix Outdated
Comment thread pkgs/development/python-modules/ezodf/default.nix Outdated
Comment thread pkgs/development/python-modules/ezodf/default.nix Outdated
Comment thread pkgs/development/python-modules/py3amf/default.nix Outdated
Comment thread pkgs/development/python-modules/py3amf/default.nix Outdated
Comment thread pkgs/development/python-modules/wacz/default.nix Outdated
Comment thread pkgs/development/python-modules/wacz/default.nix Outdated
Comment thread pkgs/development/python-modules/wacz/default.nix Outdated
@zhaofengli

Copy link
Copy Markdown
Member Author

Thanks for the review! I've dug a bit deeper and cleaned up more unnecessary dependencies (see comments).

@applePrincess

Copy link
Copy Markdown
Contributor

nixpkgs-review result

Generated using nixpkgs-review.

Command: nixpkgs-review pr 420437
Commit: abddf7a48e958f727959c53704fe85c828d5c167


x86_64-linux

❌ 4 packages failed to build:
  • python312Packages.frictionless
  • python312Packages.frictionless.dist
  • python312Packages.wacz
  • python312Packages.wacz.dist
✅ 16 packages built:
  • cdxj-indexer (python313Packages.cdxj-indexer)
  • cdxj-indexer.dist (python313Packages.cdxj-indexer.dist)
  • py-wacz (python313Packages.wacz)
  • py-wacz.dist (python313Packages.wacz.dist)
  • python312Packages.cdxj-indexer
  • python312Packages.cdxj-indexer.dist
  • python312Packages.ezodf
  • python312Packages.ezodf.dist
  • python312Packages.py3amf
  • python312Packages.py3amf.dist
  • python313Packages.ezodf
  • python313Packages.ezodf.dist
  • python313Packages.frictionless
  • python313Packages.frictionless.dist
  • python313Packages.py3amf
  • python313Packages.py3amf.dist

Error logs: `x86_64-linux`
python312Packages.frictionless
frictionless/package/__spec__/test_profile.py::test_package_profiles_from_descriptor_standards_v1
frictionless/package/__spec__/test_security.py::test_package_external_profile_invalid_local_from_descriptor_unsafe_trusted
  /build/source/frictionless/metadata/metadata.py:375: DeprecationWarning: Automatically retrieving remote references can be a security vulnerability and is discouraged by the JSON Schema specifications. Relying on this behavior is deprecated and will shortly become an error. If you are sure you want to remotely retrieve your reference and that it is safe to do so, you can find instructions for doing so via referencing.Registry in the referencing documentation (https://referencing.readthedocs.org).
    for error in validator.iter_errors(descriptor):  # type: ignore

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
FAILED frictionless/console/commands/spec/test_describe.py::test_console_describe_extract_dialect_sheet_option - frictionless.exception.FrictionlessException: [error] Please install "frict...
FAILED frictionless/console/commands/spec/test_extract.py::test_console_extract_dialect_sheet_option - frictionless.exception.FrictionlessException: [error] Please install "frict...
FAILED frictionless/console/commands/spec/test_extract.py::test_console_extract_valid_rows_extract_dialect_sheet_option - assert 1 == 0
FAILED frictionless/console/commands/spec/test_extract.py::test_console_extract_invalid_rows_extract_dialect_sheet_option - assert 1 == 0
FAILED frictionless/resource/spec/test_datatype.py::test_resource_datatype_package_with_packagify[data/table.xlsx] - frictionless.exception.FrictionlessException: [format-error] The data sourc...
FAILED frictionless/resource/spec/test_describe.py::test_resource_describe_schema_xlsx_file_with_boolean_column_issue_203 - frictionless.exception.FrictionlessException: [format-error] The data sourc...
FAILED frictionless/resource/spec/test_format.py::test_resource_format_xls - frictionless.exception.FrictionlessException: [error] Please install "frict...
FAILED frictionless/resource/spec/test_format.py::test_resource_format_xlsx - frictionless.exception.FrictionlessException: [format-error] The data sourc...
FAILED frictionless/resource/spec/test_validate.py::test_resource_validate_table_is_invalid_issue_312 - AssertionError: assert [[None, None, 'format-error']] == [[None, 3, 'b... '...
FAILED frictionless/resource/spec/test_validate.py::test_resource_validate_resource_header_row_has_first_number_issue_870 - assert False
FAILED frictionless/resources/spec/table/test_dialect.py::test_resource_dialect_header_xlsx_multiline - frictionless.exception.FrictionlessException: [format-error] The data sourc...
FAILED frictionless/resources/spec/table/test_general.py::test_resource_skip_rows_non_string_cell_issue_320 - frictionless.exception.FrictionlessException: [format-error] The data sourc...
= 12 failed, 1683 passed, 281 skipped, 28 deselected, 4 warnings in 64.14s (0:01:04) =

@zhaofengli

Copy link
Copy Markdown
Member Author

Fixed python312Packages.frictionless by explicitly adding the Excel-related packages required for the tests to the check inputs. The full excel format still does not function nor do we claim to.

It happens to work in the 3.13 case since those packages are implicitly added to the PYTHONPATH via visidata which is a top-level package that does python3Packages.callPackage. This in itself is not ideal but is outside of the scope of this PR.

@applePrincess

Copy link
Copy Markdown
Contributor

nixpkgs-review result

Generated using nixpkgs-review.

Command: nixpkgs-review pr 420437
Commit: 9730c5ae84944cf7408393edb42022893dc5e2a1


x86_64-linux

✅ 20 packages built:
  • cdxj-indexer (python313Packages.cdxj-indexer)
  • cdxj-indexer.dist (python313Packages.cdxj-indexer.dist)
  • py-wacz (python313Packages.wacz)
  • py-wacz.dist (python313Packages.wacz.dist)
  • python312Packages.cdxj-indexer
  • python312Packages.cdxj-indexer.dist
  • python312Packages.ezodf
  • python312Packages.ezodf.dist
  • python312Packages.frictionless
  • python312Packages.frictionless.dist
  • python312Packages.py3amf
  • python312Packages.py3amf.dist
  • python312Packages.wacz
  • python312Packages.wacz.dist
  • python313Packages.ezodf
  • python313Packages.ezodf.dist
  • python313Packages.frictionless
  • python313Packages.frictionless.dist
  • python313Packages.py3amf
  • python313Packages.py3amf.dist

@nixpkgs-ci nixpkgs-ci Bot added the 12.approvals: 1 This PR was reviewed and approved by one person. label Jun 28, 2025

@doronbehar doronbehar left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks pretty good! Just a few notes and this should be good to go.

Comment thread pkgs/development/python-modules/cdxj-indexer/default.nix Outdated
Comment thread pkgs/development/python-modules/wacz/default.nix Outdated
Comment thread pkgs/development/python-modules/wacz/default.nix Outdated
Comment thread pkgs/development/python-modules/cdxj-indexer/default.nix Outdated
Comment thread pkgs/development/python-modules/wacz/default.nix Outdated
Comment thread pkgs/development/python-modules/wacz/default.nix Outdated
Comment thread pkgs/development/python-modules/ezodf/default.nix Outdated
@doronbehar

Copy link
Copy Markdown
Contributor

nixpkgs-review result

Generated using nixpkgs-review.

Command: nixpkgs-review pr 420437
Commit: 116c9317c0fa65e1854fcf2f84975e11c39e16eb


x86_64-linux

✅ 20 packages built:
  • cdxj-indexer (python313Packages.cdxj-indexer)
  • cdxj-indexer.dist (python313Packages.cdxj-indexer.dist)
  • py-wacz (python313Packages.wacz)
  • py-wacz.dist (python313Packages.wacz.dist)
  • python312Packages.cdxj-indexer
  • python312Packages.cdxj-indexer.dist
  • python312Packages.ezodf
  • python312Packages.ezodf.dist
  • python312Packages.frictionless
  • python312Packages.frictionless.dist
  • python312Packages.py3amf
  • python312Packages.py3amf.dist
  • python312Packages.wacz
  • python312Packages.wacz.dist
  • python313Packages.ezodf
  • python313Packages.ezodf.dist
  • python313Packages.frictionless
  • python313Packages.frictionless.dist
  • python313Packages.py3amf
  • python313Packages.py3amf.dist

doronbehar
doronbehar previously approved these changes Jul 7, 2025
@doronbehar
doronbehar dismissed their stale review July 7, 2025 05:51

Haven't checked binaries in nixpkgs-review.

@doronbehar

Copy link
Copy Markdown
Contributor

Error from frictionless --help:

Traceback (most recent call last):
  File "/nix/store/6ixlfr3vp8pq7kiap0dfpss2yyyk4706-python3.13-frictionless-5.18.1/bin/.frictionless-wrapped", line 6, in <module>
    from frictionless.__main__ import console
  File "/nix/store/8wag4y4li7421xm0alrgddjqa1qcippz-python3.12-frictionless-5.18.1/lib/python3.12/site-packages/frictionless/__init__.py", line 1, in <module>
    from .actions import convert as convert
  File "/nix/store/8wag4y4li7421xm0alrgddjqa1qcippz-python3.12-frictionless-5.18.1/lib/python3.12/site-packages/frictionless/actions/__init__.py", line 1, in <module>
    from .convert import convert
  File "/nix/store/8wag4y4li7421xm0alrgddjqa1qcippz-python3.12-frictionless-5.18.1/lib/python3.12/site-packages/frictionless/actions/convert.py", line 7, in <module>
    from ..resource import Resource
  File "/nix/store/8wag4y4li7421xm0alrgddjqa1qcippz-python3.12-frictionless-5.18.1/lib/python3.12/site-packages/frictionless/resource/__init__.py", line 1, in <module>
    from .resource import Resource
  File "/nix/store/8wag4y4li7421xm0alrgddjqa1qcippz-python3.12-frictionless-5.18.1/lib/python3.12/site-packages/frictionless/resource/resource.py", line 10, in <module>
    from .. import errors, fields, helpers, settings
  File "/nix/store/8wag4y4li7421xm0alrgddjqa1qcippz-python3.12-frictionless-5.18.1/lib/python3.12/site-packages/frictionless/fields/__init__.py", line 1, in <module>
    from .any import AnyField as AnyField
  File "/nix/store/8wag4y4li7421xm0alrgddjqa1qcippz-python3.12-frictionless-5.18.1/lib/python3.12/site-packages/frictionless/fields/any.py", line 5, in <module>
    from ..schema import Field
  File "/nix/store/8wag4y4li7421xm0alrgddjqa1qcippz-python3.12-frictionless-5.18.1/lib/python3.12/site-packages/frictionless/schema/__init__.py", line 1, in <module>
    from .field import Field
  File "/nix/store/8wag4y4li7421xm0alrgddjqa1qcippz-python3.12-frictionless-5.18.1/lib/python3.12/site-packages/frictionless/schema/field.py", line 13, in <module>
    from ..system import system
  File "/nix/store/8wag4y4li7421xm0alrgddjqa1qcippz-python3.12-frictionless-5.18.1/lib/python3.12/site-packages/frictionless/system/__init__.py", line 1, in <module>
    from .adapter import Adapter
  File "/nix/store/8wag4y4li7421xm0alrgddjqa1qcippz-python3.12-frictionless-5.18.1/lib/python3.12/site-packages/frictionless/system/adapter.py", line 5, in <module>
    from . import models
  File "/nix/store/8wag4y4li7421xm0alrgddjqa1qcippz-python3.12-frictionless-5.18.1/lib/python3.12/site-packages/frictionless/system/models.py", line 3, in <module>
    from pydantic import BaseModel
  File "/nix/store/yfa601cjqc9wyf18yifzp8g3pp10a13r-python3.12-pydantic-2.11.4/lib/python3.12/site-packages/pydantic/__init__.py", line 5, in <module>
    from ._migration import getattr_migration
  File "/nix/store/yfa601cjqc9wyf18yifzp8g3pp10a13r-python3.12-pydantic-2.11.4/lib/python3.12/site-packages/pydantic/_migration.py", line 4, in <module>
    from .version import version_short
  File "/nix/store/yfa601cjqc9wyf18yifzp8g3pp10a13r-python3.12-pydantic-2.11.4/lib/python3.12/site-packages/pydantic/version.py", line 5, in <module>
    from pydantic_core import __version__ as __pydantic_core_version__
  File "/nix/store/6nfn6ch6gs58glnyxr4fp4bp10rd53vh-python3.12-pydantic-core-2.33.2/lib/python3.12/site-packages/pydantic_core/__init__.py", line 6, in <module>
    from ._pydantic_core import (
    ...<22 lines>...
    )
ModuleNotFoundError: No module named 'pydantic_core._pydantic_core'

@doronbehar

Copy link
Copy Markdown
Contributor

Similar error from wacz --help:

/nix/store/bjz340ph317fr5rx61ws2dd1zbppjggk-python3.12-surt-0.3.1/lib/python3.12/site-packages/surt/handyurl.py:37: SyntaxWarning: invalid escape sequence '\+'
  _RE_HAS_PROTOCOL = re.compile(b"^([a-zA-Z][a-zA-Z0-9\+\-\.]*):")
/nix/store/bjz340ph317fr5rx61ws2dd1zbppjggk-python3.12-surt-0.3.1/lib/python3.12/site-packages/surt/handyurl.py:100: SyntaxWarning: invalid escape sequence '\?'
  ^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
/nix/store/bjz340ph317fr5rx61ws2dd1zbppjggk-python3.12-surt-0.3.1/lib/python3.12/site-packages/surt/URLRegexTransformer.py:31: SyntaxWarning: invalid escape sequence '\('
  re.compile(b"^(.*/)(\((?:[a-z]\([0-9a-z]{24}\))+\)/)([^\?]+\.aspx.*)$", re.I),
/nix/store/bjz340ph317fr5rx61ws2dd1zbppjggk-python3.12-surt-0.3.1/lib/python3.12/site-packages/surt/GoogleURLCanonicalizer.py:168: SyntaxWarning: invalid escape sequence '\]'
  input, safe=b'''!"$&'()*+,-./:;<=>?@[\]^_`{|}~''').encode(
/nix/store/bjz340ph317fr5rx61ws2dd1zbppjggk-python3.12-surt-0.3.1/lib/python3.12/site-packages/surt/IAURLCanonicalizer.py:127: SyntaxWarning: invalid escape sequence '\d'
  _RE_WWWDIGITS = re.compile(b'www\d*\.')
Traceback (most recent call last):
  File "/nix/store/fm8z6yq209yy8af7f5jbhk530y401w0p-python3.13-wacz-0.5.0/bin/.wacz-wrapped", line 6, in <module>
    from wacz.main import main
  File "/nix/store/nzqprls72maf3sfsw4da8ac5krdwy56i-python3.12-wacz-0.5.0/lib/python3.12/site-packages/wacz/main.py", line 6, in <module>
    from wacz.validate import Validation, OUTDATED_WACZ
  File "/nix/store/nzqprls72maf3sfsw4da8ac5krdwy56i-python3.12-wacz-0.5.0/lib/python3.12/site-packages/wacz/validate.py", line 2, in <module>
    from frictionless import validate
  File "/nix/store/8wag4y4li7421xm0alrgddjqa1qcippz-python3.12-frictionless-5.18.1/lib/python3.12/site-packages/frictionless/__init__.py", line 1, in <module>
    from .actions import convert as convert
  File "/nix/store/8wag4y4li7421xm0alrgddjqa1qcippz-python3.12-frictionless-5.18.1/lib/python3.12/site-packages/frictionless/actions/__init__.py", line 1, in <module>
    from .convert import convert
  File "/nix/store/8wag4y4li7421xm0alrgddjqa1qcippz-python3.12-frictionless-5.18.1/lib/python3.12/site-packages/frictionless/actions/convert.py", line 7, in <module>
    from ..resource import Resource
  File "/nix/store/8wag4y4li7421xm0alrgddjqa1qcippz-python3.12-frictionless-5.18.1/lib/python3.12/site-packages/frictionless/resource/__init__.py", line 1, in <module>
    from .resource import Resource
  File "/nix/store/8wag4y4li7421xm0alrgddjqa1qcippz-python3.12-frictionless-5.18.1/lib/python3.12/site-packages/frictionless/resource/resource.py", line 10, in <module>
    from .. import errors, fields, helpers, settings
  File "/nix/store/8wag4y4li7421xm0alrgddjqa1qcippz-python3.12-frictionless-5.18.1/lib/python3.12/site-packages/frictionless/fields/__init__.py", line 1, in <module>
    from .any import AnyField as AnyField
  File "/nix/store/8wag4y4li7421xm0alrgddjqa1qcippz-python3.12-frictionless-5.18.1/lib/python3.12/site-packages/frictionless/fields/any.py", line 5, in <module>
    from ..schema import Field
  File "/nix/store/8wag4y4li7421xm0alrgddjqa1qcippz-python3.12-frictionless-5.18.1/lib/python3.12/site-packages/frictionless/schema/__init__.py", line 1, in <module>
    from .field import Field
  File "/nix/store/8wag4y4li7421xm0alrgddjqa1qcippz-python3.12-frictionless-5.18.1/lib/python3.12/site-packages/frictionless/schema/field.py", line 13, in <module>
    from ..system import system
  File "/nix/store/8wag4y4li7421xm0alrgddjqa1qcippz-python3.12-frictionless-5.18.1/lib/python3.12/site-packages/frictionless/system/__init__.py", line 1, in <module>
    from .adapter import Adapter
  File "/nix/store/8wag4y4li7421xm0alrgddjqa1qcippz-python3.12-frictionless-5.18.1/lib/python3.12/site-packages/frictionless/system/adapter.py", line 5, in <module>
    from . import models
  File "/nix/store/8wag4y4li7421xm0alrgddjqa1qcippz-python3.12-frictionless-5.18.1/lib/python3.12/site-packages/frictionless/system/models.py", line 3, in <module>
    from pydantic import BaseModel
  File "/nix/store/yfa601cjqc9wyf18yifzp8g3pp10a13r-python3.12-pydantic-2.11.4/lib/python3.12/site-packages/pydantic/__init__.py", line 5, in <module>
    from ._migration import getattr_migration
  File "/nix/store/yfa601cjqc9wyf18yifzp8g3pp10a13r-python3.12-pydantic-2.11.4/lib/python3.12/site-packages/pydantic/_migration.py", line 4, in <module>
    from .version import version_short
  File "/nix/store/yfa601cjqc9wyf18yifzp8g3pp10a13r-python3.12-pydantic-2.11.4/lib/python3.12/site-packages/pydantic/version.py", line 5, in <module>
    from pydantic_core import __version__ as __pydantic_core_version__
  File "/nix/store/6nfn6ch6gs58glnyxr4fp4bp10rd53vh-python3.12-pydantic-core-2.33.2/lib/python3.12/site-packages/pydantic_core/__init__.py", line 6, in <module>
    from ._pydantic_core import (
    ...<22 lines>...
    )
ModuleNotFoundError: No module named 'pydantic_core._pydantic_core'

@doronbehar

Copy link
Copy Markdown
Contributor

And many SyntaxWarnings from cdxj-indexer --help, maybe upstream should be aware of that? Or already has fixed these issues upstream?

/nix/store/bjz340ph317fr5rx61ws2dd1zbppjggk-python3.12-surt-0.3.1/lib/python3.12/site-packages/surt/handyurl.py:37: SyntaxWarning: invalid escape sequence '\+'
  _RE_HAS_PROTOCOL = re.compile(b"^([a-zA-Z][a-zA-Z0-9\+\-\.]*):")
/nix/store/bjz340ph317fr5rx61ws2dd1zbppjggk-python3.12-surt-0.3.1/lib/python3.12/site-packages/surt/handyurl.py:100: SyntaxWarning: invalid escape sequence '\?'
  ^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
/nix/store/bjz340ph317fr5rx61ws2dd1zbppjggk-python3.12-surt-0.3.1/lib/python3.12/site-packages/surt/URLRegexTransformer.py:31: SyntaxWarning: invalid escape sequence '\('
  re.compile(b"^(.*/)(\((?:[a-z]\([0-9a-z]{24}\))+\)/)([^\?]+\.aspx.*)$", re.I),
/nix/store/bjz340ph317fr5rx61ws2dd1zbppjggk-python3.12-surt-0.3.1/lib/python3.12/site-packages/surt/GoogleURLCanonicalizer.py:168: SyntaxWarning: invalid escape sequence '\]'
  input, safe=b'''!"$&'()*+,-./:;<=>?@[\]^_`{|}~''').encode(
/nix/store/bjz340ph317fr5rx61ws2dd1zbppjggk-python3.12-surt-0.3.1/lib/python3.12/site-packages/surt/IAURLCanonicalizer.py:127: SyntaxWarning: invalid escape sequence '\d'
  _RE_WWWDIGITS = re.compile(b'www\d*\.')
usage: cdxj-indexer [-h] [-o OUTPUT] [-9 | -11 | -f FIELDS |
                    -rf REPLACE_FIELDS] [--records RECORDS]
                    [--dir-root DIR_ROOT] [-p] [-s] [-c COMPRESS] [-l LINES]
                    [-d]
                    inputs [inputs ...]

cdx_indexer

positional arguments:
  inputs

options:
  -h, --help            show this help message and exit
  -o, --output OUTPUT
  -9, --cdx09
  -11, --cdx11
  -f, --fields FIELDS
  -rf, --replace-fields REPLACE_FIELDS
  --records RECORDS
  --dir-root DIR_ROOT
  -p, --post-append
  -s, --sort
  -c, --compress COMPRESS
  -l, --lines LINES
  -d, --digest-records

@doronbehar doronbehar left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for your work so far @zhaofengli . Please fix the issues just commented about.

@zhaofengli

Copy link
Copy Markdown
Member Author

Hmm, I can't reproduce the failure (either frictionless or wacz, in either Python version). The following snippet suggests there's some PYTHONPATH pollution going on:

Traceback (most recent call last):
  File "/nix/store/fm8z6yq209yy8af7f5jbhk530y401w0p-python3.13-wacz-0.5.0/bin/.wacz-wrapped", line 6, in <module>
    from wacz.main import main
  File "/nix/store/nzqprls72maf3sfsw4da8ac5krdwy56i-python3.12-wacz-0.5.0/lib/python3.12/site-packages/wacz/main.py", line 6, in <module>
    from wacz.validate import Validation, OUTDATED_WACZ
  File "/nix/store/nzqprls72maf3sfsw4da8ac5krdwy56i-python3.12-wacz-0.5.0/lib/python3.12/site-packages/wacz/validate.py", line 2, in <module>
    from frictionless import validate
My output (after merging nixos-unstable)
$ /nix/store/fm8z6yq209yy8af7f5jbhk530y401w0p-python3.13-wacz-0.5.0/bin/wacz --help
usage: wacz [-h] [-V] {create,validate} ...

WACZ creator

positional arguments:
  {create,validate}
    create           create wacz file
    validate         validate a wacz file

options:
  -h, --help         show this help message and exit
  -V, --version      show program's version number and exit

@doronbehar

Copy link
Copy Markdown
Contributor

Indeed this is very peculiar... I now went to the ~/.cache/nixpkgs-review/pr-420437-1/results directory and checked again and didn't find the same issues... So I will merge this now. Thanks again for the contribution!

@doronbehar
doronbehar merged commit b26cc12 into NixOS:master Jul 8, 2025
24 of 27 checks passed
@zhaofengli
zhaofengli deleted the py-wacz branch July 8, 2025 17:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

6.topic: python Python is a high-level, general-purpose programming language. 10.rebuild-darwin: 11-100 This PR causes between 11 and 100 packages to rebuild on Darwin. 10.rebuild-linux: 11-100 This PR causes between 11 and 100 packages to rebuild on Linux. 12.approvals: 1 This PR was reviewed and approved by one person.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants