!rWxyQqNqMUDLECdsIf:blad.is

Poetry2nix

313 Members
https://github.com/nix-community/poetry2nix62 Servers

Load older messages


SenderMessageTime
1 Nov 2024
@picog:matrix.orgPico *

Seems to work fine for me fwiw

tree
.
├── flake.lock
├── flake.nix
└── test
    ├── pack
    │   ├── do_stuff.py
    │   └── __init__.py
    ├── poetry.lock
    └── pyproject.toml
cat flake.nix
{
  description = "A very basic flake";

  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
    poetry2nix.url = "github:nix-community/poetry2nix";
  };

  outputs = { self, nixpkgs, poetry2nix }:
  let
    pkgs = nixpkgs.legacyPackages.x86_64-linux;
    inherit (poetry2nix.lib.mkPoetry2Nix { inherit pkgs; }) mkPoetryApplication;
    app = mkPoetryApplication { projectDir = ./test; };
  in
  {
    devShells.x86_64-linux.default = pkgs.mkShell {
      packages = with pkgs; [ app ];
    };

  };
}```

```
cat test/pyproject.toml
\[tool.poetry\]
name = "pack"
version = "0.1.0"
description = ""
authors = \["Your Name [you@example.com](mailto:you@example.com)"\]

\[tool.poetry.dependencies\]
python = "^3.11"

\[tool.poetry.scripts\]
foo = "pack.do\_stuff:main"

\[build-system\]
requires = \["poetry-core"\]
build-backend = "poetry.core.masonry.api"

```
foo
Doing stuff
```
14:37:01
@picog:matrix.orgPico *

Seems to work fine for me fwiw

tree
.
├── flake.lock
├── flake.nix
└── test
    ├── pack
    │   ├── do_stuff.py
    │   └── __init__.py
    ├── poetry.lock
    └── pyproject.toml
cat flake.nix
{
  description = "A very basic flake";

  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
    poetry2nix.url = "github:nix-community/poetry2nix";
  };

  outputs = { self, nixpkgs, poetry2nix }:
  let
    pkgs = nixpkgs.legacyPackages.x86_64-linux;
    inherit (poetry2nix.lib.mkPoetry2Nix { inherit pkgs; }) mkPoetryApplication;
    app = mkPoetryApplication { projectDir = ./test; };
  in
  {
    devShells.x86_64-linux.default = pkgs.mkShell {
      packages = with pkgs; [ app ];
    };

  };
}
cat test/pyproject.toml
\[tool.poetry\]
name = "pack"
version = "0.1.0"
description = ""
authors = \["Your Name [you@example.com](mailto:you@example.com)"\]

\[tool.poetry.dependencies\]
python = "^3.11"

\[tool.poetry.scripts\]
foo = "pack.do\_stuff:main"

\[build-system\]
requires = \["poetry-core"\]
build-backend = "poetry.core.masonry.api"
foo
Doing stuff
14:39:02
2 Nov 2024
@jcie74:matrix.orgpie_ joined the room.02:26:45
@jcie74:matrix.orgpie_

Hey folks, anyone know offhand how to fix this? I'm building pyqtwebengine with poetry2nix and its missing some kind of (propagated) dep or something, but idk enough about qt/sip;

...
Executing pipBuildPhase
Creating a wheel...
WARNING: The directory '/homeless-shelter/.cache/pip' or its parent directory is not owned or is not writable by the current user. The cache has been disabled. Check the permissions and owner of that directory. If executing pip with sudo, you should use sudo's -H flag.
Processing /build/PyQtWebEngine-5.15.7
  Running command Preparing metadata (pyproject.toml)
  Querying qmake about your Qt installation...
  These bindings will be built: QtWebEngineCore, QtWebEngine, QtWebEngineWidgets.
  Generating the QtWebEngineCore bindings...
  _in_process.py: /build/PyQtWebEngine-5.15.7/sip/QtWebEngineCore/QtWebEngineCoremod.sip: line 25: column 9: 'QtCore/QtCoremod.sip' could not be found
  /build/PyQtWebEngine-5.15.7/sip/QtWebEngineCore/QtWebEngineCoremod.sip: line 26: column 9: 'QtGui/QtGuimod.sip' could not be found
  /build/PyQtWebEngine-5.15.7/sip/QtWebEngineCore/QtWebEngineCoremod.sip: line 27: column 9: 'QtNetwork/QtNetworkmod.sip' could not be found
  /build/PyQtWebEngine-5.15.7/sip/QtWebEngineCore/qwebengineclientcertificatestore.sip: line 24: column 6: 'PyQt_SSL' is not a known qualifier
  error: subprocess-exited-with-error

  × Preparing metadata (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> See above for output.

  note: This error originates from a subprocess, and is likely not a problem with pip.
  full command: /nix/store/wfbjq35kxs6x83c3ncpfxdyl5gbhdx4h-python3-3.12.6/bin/python3.12 /nix/store/xdgmgzz3ng0bl0x5r6vmx0arqnfwsfj1-python3.12-pip-24.0/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py prepare_metadata_for_build_wheel /build/tmpqnqavqa5

...
02:28:05
@jcie74:matrix.orgpie_hrmblgrmbl.... https://github.com/Python-SIP/sip/blob/10cb0c23cd25756769a1a388ab0976245e7f6590/sipbuild/builder.py#L228 03:28:53
@jcie74:matrix.orgpie_ ah...yeah here we go..i guess this is the way to go, bleh... https://github.com/NixOS/nixpkgs/blob/a3a8b0fbfb8dc700982a1d4fe6078e92b8042c54/pkgs/development/python-modules/pyqtwebengine/default.nix#L35 03:42:14
4 Nov 2024
@truh:matrix.orgtruh
In reply to @9456ed88e6:matrix.org

I'm running into a problem that I cannot figure out, if someone has a clue, I would very much appreciate some feedback.

I am getting an error when I use nix to run or build my python poetry project if the entry point module is not named main.

Here is the error:

~/mypackage$ nix run
Traceback (most recent call last):
  File "/nix/store/g0fsa09mpa90apcy2i02vljgd5rxxj42-python3.12-mypackage-0.5.0/bin/.mypackage-wrapped", line 6, in <module>
    from mypackage.cli import app
ModuleNotFoundError: No module named 'mypackage.cli'

Here is the structure of my project:

mypackage/
├── README.md
├── mypackage
│   ├── __init__.py
│   ├── cli.py
│   └── mymodule.py
├── flake.lock
├── flake.nix
├── poetry.lock
├── pyproject.toml

Here is the [tool.poetry.scripts] section of my pyproject.toml

[tool.poetry.scripts]
mypackage = "mypackage.cli:app"

Here is my flake.nix

{
  description = "mypackage";
  # Flake inputs
  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
    poetry2nix.url = "github:nix-community/poetry2nix";
  };

  # Flake outputs
  outputs = { self, nixpkgs, poetry2nix }:
    let

      # Systems supported
      allSystems = [
        "x86_64-linux" # 64-bit Intel/AMD Linux
        "aarch64-linux" # 64-bit ARM Linux
        "x86_64-darwin" # 64-bit Intel macOS
        "aarch64-darwin" # 64-bit ARM macOS
      ];

      # Helper to provide system-specific attributes
      forAllSystems = f: nixpkgs.lib.genAttrs allSystems (system: f {
        pkgs = import nixpkgs { inherit system; config.allowUnfree = true; };
      });

    in
    {

      packages = forAllSystems
        ({ pkgs }:
          let
            inherit (poetry2nix.lib.mkPoetry2Nix { inherit pkgs; }) mkPoetryApplication;
          in
          rec {
            myapp = mkPoetryApplication { projectDir = self; };
            default = myapp;
            apps.default = "${myapp}/bin/mypackage";
          });

      devShells = forAllSystems
        ({ pkgs }:
          let
            inherit (poetry2nix.lib.mkPoetry2Nix { inherit pkgs; }) mkPoetryApplication;
          in
          {
            default = pkgs.mkShell
              {
                packages = with pkgs; [
                  poetry
                  (mkPoetryApplication { projectDir = self; })
                ];
              };
          });

    };

}

If I simply rename the cli.py module to main.py, and change the pyproject.toml to reflect the new name, everything works, and there is no error when running the executable produced by nix build, or running with nix run.

The structure of my project tree when it works is simply

mypackage/
├── README.md
├── mypackage
│   ├── __init__.py
│   ├── main.py <------------ This is the change.
│   └── mymodule.py
├── flake.lock
├── flake.nix
├── poetry.lock
├── pyproject.toml

Here is the [tool.poetry.scripts] section of my pyproject.toml with the associated change

[tool.poetry.scripts]
mypackage = "mypackage.main:app"

Does anyone know why I am getting the error when I try to name the module something other than main.py, how can I get everything working when I name the module cli.py?

Does the error go away with an earlier poetry2nix version?
09:32:34
@truh:matrix.orgtruhI also experience ModuleNotFoundErrors (that I still need to investigate) with one of my projects when upgrading to the lastest poetry2nix09:33:53
@9456ed88e6:matrix.org9456ed88e6
In reply to @picog:matrix.org

Seems to work fine for me fwiw

tree
.
├── flake.lock
├── flake.nix
└── test
    ├── pack
    │   ├── do_stuff.py
    │   └── __init__.py
    ├── poetry.lock
    └── pyproject.toml
cat flake.nix
{
  description = "A very basic flake";

  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
    poetry2nix.url = "github:nix-community/poetry2nix";
  };

  outputs = { self, nixpkgs, poetry2nix }:
  let
    pkgs = nixpkgs.legacyPackages.x86_64-linux;
    inherit (poetry2nix.lib.mkPoetry2Nix { inherit pkgs; }) mkPoetryApplication;
    app = mkPoetryApplication { projectDir = ./test; };
  in
  {
    devShells.x86_64-linux.default = pkgs.mkShell {
      packages = with pkgs; [ app ];
    };

  };
}
cat test/pyproject.toml
\[tool.poetry\]
name = "pack"
version = "0.1.0"
description = ""
authors = \["Your Name [you@example.com](mailto:you@example.com)"\]

\[tool.poetry.dependencies\]
python = "^3.11"

\[tool.poetry.scripts\]
foo = "pack.do\_stuff:main"

\[build-system\]
requires = \["poetry-core"\]
build-backend = "poetry.core.masonry.api"
foo
Doing stuff
Thanks for trying it, I intend on starting a new project from scratch to see what I can make work.
16:37:30
@aevoo:matrix.orgAevoo changed their display name from aevoo to Aevoo.16:52:08
@truh:matrix.orgtruh Curious my ModuleNotFoundError started with this poetry2nix change https://github.com/nix-community/poetry2nix/pull/1785. And it's caused by me passing groups=[] to p2n.mkPoetryApplication. Passing groups=["main"] (the new default) solves the problem. 18:10:15
5 Nov 2024
@spacekookie:fairydust.spacekookie joined the room.14:52:26
@spacekookie:fairydust.spacekookie

Hey! I'm trying to nixify a poetry project and having issues with one of the tool hashes (for ruff, which I think is a linter?).

The build fails with

         specified: sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
            got:    sha256-TPr6YdSb5JKltXHDi1PdGzPYjmmsbCFQKxIiJURrBMI=

and I'm trying to override the package like this (as an arg to mkPoetryApplication:

    overrides = poetry2nix.overrides.withDefaults (self: super: {
      ruff = super.ruff.overrideAttrs ({ src, ... }: {
        src = {
          inherit (src) owner repo rev;
          hash = "sha256-TPr6YdSb5JKltXHDi1PdGzPYjmmsbCFQKxIiJURrBMI=";
        };
      });
    });

but I'm still getting the hash mismatch. Any ideas what I'm doing wrong?

14:59:56
@spacekookie:fairydust.spacekookie *

Hey! I'm trying to nixify a poetry project and having issues with one of the tool hashes (for ruff, which I think is a linter?).

The build fails with

specified: sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
got:    sha256-TPr6YdSb5JKltXHDi1PdGzPYjmmsbCFQKxIiJURrBMI=

and I'm trying to override the package like this (as an arg to mkPoetryApplication:

overrides = poetry2nix.overrides.withDefaults (self: super: { ruff = super.ruff.overrideAttrs ({ src, ... }: {
        src = {
          inherit (src) owner repo rev;
          hash = "sha256-TPr6YdSb5JKltXHDi1PdGzPYjmmsbCFQKxIiJURrBMI=";
        };
      });
    });

but I'm still getting the hash mismatch. Any ideas what I'm doing wrong?

15:00:12
@spacekookie:fairydust.spacekookie *

Hey! I'm trying to nixify a poetry project and having issues with one of the tool hashes (for ruff, which I think is a linter?).

The build fails with

specified: sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
got:    sha256-TPr6YdSb5JKltXHDi1PdGzPYjmmsbCFQKxIiJURrBMI=

and I'm trying to override the package like this (as an arg to mkPoetryApplication:

overrides = poetry2nix.overrides.withDefaults (self: super: { 
  ruff = super.ruff.overrideAttrs ({ src, ... }: {
    src = {
    inherit (src) owner repo rev;
    hash = "sha256-TPr6YdSb5JKltXHDi1PdGzPYjmmsbCFQKxIiJURrBMI=";
    };
  });
});

but I'm still getting the hash mismatch. Any ideas what I'm doing wrong?

15:00:35
@spacekookie:fairydust.spacekookie *

Hey! I'm trying to nixify a poetry project and having issues with one of the tool hashes (for ruff, which I think is a linter?).

The build fails with

specified: sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
got:       sha256-TPr6YdSb5JKltXHDi1PdGzPYjmmsbCFQKxIiJURrBMI=

and I'm trying to override the package like this (as an arg to mkPoetryApplication:

overrides = poetry2nix.overrides.withDefaults (self: super: { 
  ruff = super.ruff.overrideAttrs ({ src, ... }: {
    src = {
    inherit (src) owner repo rev;
    hash = "sha256-TPr6YdSb5JKltXHDi1PdGzPYjmmsbCFQKxIiJURrBMI=";
    };
  });
});

but I'm still getting the hash mismatch. Any ideas what I'm doing wrong?

15:00:57
@spacekookie:fairydust.spacekookieThe derivation hash isn't changing so I assume the override isn't being applied15:01:22
@k900:0upti.meK900It's probably cargoHash15:01:40
@k900:0upti.meK900The way we handle overrides for those sucks15:01:45
@spacekookie:fairydust.spacekookieOoh15:01:59
@k900:0upti.meK900https://github.com/nix-community/poetry2nix/blob/master/overrides/default.nix#L341815:02:14
@spacekookie:fairydust.spacekookieI forgot how to set those in the first place lol15:02:14
@spacekookie:fairydust.spacekookieThanks! :)15:02:27
@spacekookie:fairydust.spacekookieAh okay. Yeah this project uses 0.7.1 so I guess I should do a PR to poetry2nix to update these?15:03:10
@spacekookie:fairydust.spacekookieI am getting that "unknown ruff version" warning :P Good to know where it comes from15:03:29
@k900:0upti.meK900Probably yes15:04:01
6 Nov 2024
@spacekookie:fairydust.spacekookie

I fixed the ruff problem (wip PR with not all the in-between versions added), now failing on the next hurdle: pydantic-xml fails to build because: No module named 'poetry'.

I read the edgecases.md and tried adding poetry to the build inputs of the package, but to no avail. Anything obviously wrong with this?

          pydantic-xml = super.pythonPackages.pydantic-xml.overridePythonAttrs
            (old: {
              buildInputs = (old.buildInputs or [ ]) ++ (pkgs.lib.traceVal [ super.poetry ]);
            });

(the trace is being printed as trace: [ «thunk» «thunk» ]

08:04:49
@spacekookie:fairydust.spacekookie *

I fixed the ruff problem (wip PR with not all the in-between versions added), now failing on the next hurdle: pydantic-xml fails to build because: No module named 'poetry'.

I read the edgecases.md and tried adding poetry to the build inputs of the package, but to no avail. Anything obviously wrong with this?

          pydantic-xml = super.pythonPackages.pydantic-xml.overridePythonAttrs
            (old: {
              buildInputs = (old.buildInputs or [ ]) ++ (pkgs.lib.traceVal [ super.poetry ]);
            });

(the trace is being printed as trace: [ «thunk» «thunk» ]

08:05:30
@k900:0upti.meK900 You probably want super.poetry-core 08:07:35
@k900:0upti.meK900Also, check build-systems.json08:07:41

Show newer messages


Back to Room ListRoom Version: 6