format python, add poetry shell

Signed-off-by: ahuston-0 <aliceghuston@gmail.com>
This commit is contained in:
ahuston-0 2024-07-28 14:15:06 -04:00
parent bc5534def3
commit fe62f1c4d5
No known key found for this signature in database
GPG Key ID: 1FACF4075E3212F7
4 changed files with 45 additions and 13 deletions

View File

@ -21,7 +21,7 @@ def configure_logger(level: str = "INFO") -> None:
)
def bash_wrapper(command: str, path:str = '.') -> tuple[str, int]:
def bash_wrapper(command: str, path: str = ".") -> tuple[str, int]:
"""Execute a bash command and capture the output.
Args:

View File

@ -4,13 +4,17 @@ import json
from app.common import bash_wrapper
import shutil
def traverse_json_base(json_dict: dict, path: list[str]):
final_paths = []
for (key,value) in json_dict.items():
for key, value in json_dict.items():
if isinstance(value, dict):
keys = value.keys()
if 'type' in keys and value['type'] in ['nixos-configuration','derivation']:
final_paths += ['.'.join(path + [key])]
if "type" in keys and value["type"] in [
"nixos-configuration",
"derivation",
]:
final_paths += [".".join(path + [key])]
else:
final_paths += traverse_json_base(value, path + [key])
return final_paths
@ -19,6 +23,7 @@ def traverse_json_base(json_dict:dict ,path: list[str]):
def traverse_json(json_dict: dict):
return traverse_json_base(json_dict, [])
def get_derivations(path_to_flake: str):
nix_path = shutil.which("nix")
flake_show = bash_wrapper(f"{nix_path} flake show --json", path=path_to_flake)

View File

@ -23,7 +23,7 @@
self,
nixpkgs,
flake-utils,
poetry2nix,
pre-commit-hooks,
...
}@inputs:
flake-utils.lib.eachDefaultSystem (
@ -31,11 +31,30 @@
let
# see https://github.com/nix-community/poetry2nix/tree/master#api for more functions and examples.
pkgs = nixpkgs.legacyPackages.${system};
inherit (poetry2nix.lib.mkPoetry2Nix { inherit pkgs; }) mkPoetryApplication;
poetry2nix = inputs.poetry2nix.lib.mkPoetry2Nix { inherit pkgs; };
overrides = poetry2nix.overrides.withDefaults (
_final: prev: {
# prefer binary wheels instead of source distributions for rust based dependencies
# avoids needing to build them from source. technically a security risk
polars = prev.polars.override { preferWheel = true; };
ruff = prev.ruff.override { preferWheel = true; };
greenlet = prev.greenlet.override { preferWheel = true; };
sqlalchemy = prev.sqlalchemy.override { preferWheel = true; };
}
);
poetryConfig = {
inherit overrides;
projectDir = self;
python = pkgs.python312;
};
in
rec {
packages = {
myapp = mkPoetryApplication { projectDir = self; };
myapp = poetry2nix.mkPoetryApplication poetryConfig // {
develop = true;
};
default = self.packages.${system}.myapp;
};
@ -44,6 +63,8 @@
devShells = import ./shell.nix {
inherit
self
poetryConfig
poetry2nix
inputs
system
checks

View File

@ -1,5 +1,7 @@
{
self,
poetryConfig,
poetry2nix,
inputs,
checks,
system,
@ -24,6 +26,7 @@ let
treefmt
statix
nixfmt-rfc-style
ruff
];
};
@ -32,6 +35,8 @@ let
# pull in python/poetry dependencies
poetry = pkgs.mkShell { packages = [ pkgs.poetry ]; };
poetry2nixshell = poetry2nix.mkPoetryEnv poetryConfig;
in
{
default = pkgs.mkShell {
@ -40,6 +45,7 @@ in
rad-dev
app
poetry
poetry2nixshell
];
};
}