Merge master into staging-next

Changed files
+541 -116
nixos
pkgs
development
libraries
grpc
libfprint-tod
mobile
androidenv
ndk-bundle
python-modules
aiohwenergy
apache-airflow
elementpath
faraday-plugins
identify
luxtronik
millheater
pyatmo
pyebus
pyupgrade
related
roombapy
tweepy
ukkonen
uonet-request-signer-hebe
vulcan-api
xmlschema
tools
analysis
checkov
tools
admin
trivy
filesystems
nilfs-utils
security
masscan
top-level
+37 -35
nixos/lib/test-driver/test-driver.py
···
from typing import Tuple, Any, Callable, Dict, Iterator, Optional, List, Iterable
from xml.sax.saxutils import XMLGenerator
from colorama import Style
+
from pathlib import Path
import queue
import io
import threading
···
import base64
import codecs
import os
-
import pathlib
import ptpython.repl
import pty
import re
···
def cmd(
self,
-
monitor_socket_path: pathlib.Path,
-
shell_socket_path: pathlib.Path,
+
monitor_socket_path: Path,
+
shell_socket_path: Path,
allow_reboot: bool = False, # TODO: unused, legacy?
) -> str:
display_opts = ""
···
@staticmethod
def build_environment(
-
state_dir: pathlib.Path,
-
shared_dir: pathlib.Path,
+
state_dir: Path,
+
shared_dir: Path,
) -> dict:
# We make a copy to not update the current environment
env = dict(os.environ)
···
def run(
self,
-
state_dir: pathlib.Path,
-
shared_dir: pathlib.Path,
-
monitor_socket_path: pathlib.Path,
-
shell_socket_path: pathlib.Path,
+
state_dir: Path,
+
shared_dir: Path,
+
monitor_socket_path: Path,
+
shell_socket_path: Path,
) -> subprocess.Popen:
return subprocess.Popen(
self.cmd(monitor_socket_path, shell_socket_path),
···
self,
netBackendArgs: Optional[str] = None,
netFrontendArgs: Optional[str] = None,
-
hda: Optional[Tuple[pathlib.Path, str]] = None,
+
hda: Optional[Tuple[Path, str]] = None,
cdrom: Optional[str] = None,
usb: Optional[str] = None,
bios: Optional[str] = None,
···
the machine lifecycle with the help of a start script / command."""
name: str
-
tmp_dir: pathlib.Path
-
shared_dir: pathlib.Path
-
state_dir: pathlib.Path
-
monitor_path: pathlib.Path
-
shell_path: pathlib.Path
+
tmp_dir: Path
+
shared_dir: Path
+
state_dir: Path
+
monitor_path: Path
+
shell_path: Path
start_command: StartCommand
keep_vm_state: bool
···
def __init__(
self,
-
tmp_dir: pathlib.Path,
+
tmp_dir: Path,
start_command: StartCommand,
name: str = "machine",
keep_vm_state: bool = False,
···
hda = None
if args.get("hda"):
hda_arg: str = args.get("hda", "")
-
hda_arg_path: pathlib.Path = pathlib.Path(hda_arg)
+
hda_arg_path: Path = Path(hda_arg)
hda = (hda_arg_path, args.get("hdaInterface", ""))
return LegacyStartCommand(
netBackendArgs=args.get("netBackendArgs"),
···
"""Copy a file from the host into the guest via the `shared_dir` shared
among all the VMs (using a temporary directory).
"""
-
host_src = pathlib.Path(source)
-
vm_target = pathlib.Path(target)
+
host_src = Path(source)
+
vm_target = Path(target)
with tempfile.TemporaryDirectory(dir=self.shared_dir) as shared_td:
-
shared_temp = pathlib.Path(shared_td)
+
shared_temp = Path(shared_td)
host_intermediate = shared_temp / host_src.name
-
vm_shared_temp = pathlib.Path("/tmp/shared") / shared_temp.name
+
vm_shared_temp = Path("/tmp/shared") / shared_temp.name
vm_intermediate = vm_shared_temp / host_src.name
self.succeed(make_command(["mkdir", "-p", vm_shared_temp]))
···
all the VMs (using a temporary directory).
"""
# Compute the source, target, and intermediate shared file names
-
out_dir = pathlib.Path(os.environ.get("out", os.getcwd()))
-
vm_src = pathlib.Path(source)
+
out_dir = Path(os.environ.get("out", os.getcwd()))
+
vm_src = Path(source)
with tempfile.TemporaryDirectory(dir=self.shared_dir) as shared_td:
-
shared_temp = pathlib.Path(shared_td)
-
vm_shared_temp = pathlib.Path("/tmp/shared") / shared_temp.name
+
shared_temp = Path(shared_td)
+
vm_shared_temp = Path("/tmp/shared") / shared_temp.name
vm_intermediate = vm_shared_temp / vm_src.name
intermediate = shared_temp / vm_src.name
# Copy the file to the shared directory inside VM
···
self.log("starting vm")
-
def clear(path: pathlib.Path) -> pathlib.Path:
+
def clear(path: Path) -> Path:
if path.exists():
path.unlink()
return path
-
def create_socket(path: pathlib.Path) -> socket.socket:
+
def create_socket(path: Path) -> socket.socket:
s = socket.socket(family=socket.AF_UNIX, type=socket.SOCK_STREAM)
s.bind(str(path))
s.listen(1)
···
"""
nr: int
-
socket_dir: pathlib.Path
+
socket_dir: Path
process: subprocess.Popen
pid: int
···
def __repr__(self) -> str:
return f"<Vlan Nr. {self.nr}>"
-
def __init__(self, nr: int, tmp_dir: pathlib.Path):
+
def __init__(self, nr: int, tmp_dir: Path):
self.nr = nr
self.socket_dir = tmp_dir / f"vde{self.nr}.ctl"
···
):
self.tests = tests
-
tmp_dir = pathlib.Path(os.environ.get("TMPDIR", tempfile.gettempdir()))
+
tmp_dir = Path(os.environ.get("TMPDIR", tempfile.gettempdir()))
tmp_dir.mkdir(mode=0o700, exist_ok=True)
with rootlog.nested("start all VLans"):
···
serial_stdout_on=self.serial_stdout_on,
Machine=Machine, # for typing
-
machine_symbols = {
-
m.name: self.machines[idx] for idx, m in enumerate(self.machines)
-
}
+
machine_symbols = {m.name: m for m in self.machines}
+
# If there's exactly one machine, make it available under the name
+
# "machine", even if it's not called that.
+
if len(self.machines) == 1:
+
(machine_symbols["machine"],) = self.machines
vlan_symbols = {
f"vlan{v.nr}": self.vlans[idx] for idx, v in enumerate(self.vlans)
···
"Using legacy create_machine(), please instantiate the"
"Machine class directly, instead"
-
tmp_dir = pathlib.Path(os.environ.get("TMPDIR", tempfile.gettempdir()))
+
tmp_dir = Path(os.environ.get("TMPDIR", tempfile.gettempdir()))
tmp_dir.mkdir(mode=0o700, exist_ok=True)
if args.get("startCommand"):
···
action=EnvDefault,
envvar="testScript",
help="the test script to run",
-
type=pathlib.Path,
+
type=Path,
args = arg_parser.parse_args()
+3 -1
nixos/lib/testing-python.nix
···
vlans = map (m: m.config.virtualisation.vlans) (lib.attrValues nodes);
vms = map (m: m.config.system.build.vm) (lib.attrValues nodes);
-
nodeHostNames = map (c: c.config.system.name) (lib.attrValues nodes);
+
nodeHostNames = let
+
nodesList = map (c: c.config.system.name) (lib.attrValues nodes);
+
in nodesList ++ lib.optional (lib.length nodesList == 1) "machine";
# TODO: This is an implementation error and needs fixing
# the testing famework cannot legitimately restrict hostnames further
+1 -1
nixos/tests/all-tests.nix
···
victoriametrics = handleTest ./victoriametrics.nix {};
vikunja = handleTest ./vikunja.nix {};
virtualbox = handleTestOn ["x86_64-linux"] ./virtualbox.nix {};
-
vscodium = handleTest ./vscodium.nix {};
+
vscodium = discoverTests (import ./vscodium.nix);
wasabibackend = handleTest ./wasabibackend.nix {};
wiki-js = handleTest ./wiki-js.nix {};
wireguard = handleTest ./wireguard {};
+14
nixos/tests/common/wayland-cage.nix
···
+
{ ... }:
+
+
{
+
imports = [ ./user-account.nix ];
+
services.cage = {
+
enable = true;
+
user = "alice";
+
};
+
+
virtualisation = {
+
memorySize = 1024;
+
qemu.options = [ "-vga virtio" ];
+
};
+
}
+57 -35
nixos/tests/vscodium.nix
···
-
import ./make-test-python.nix ({ pkgs, ...} :
+
let
+
tests = {
+
wayland = { pkgs, ... }: {
+
imports = [ ./common/wayland-cage.nix ];
+
+
services.cage.program = ''
+
${pkgs.vscodium}/bin/codium \
+
--enable-features=UseOzonePlatform \
+
--ozone-platform=wayland
+
'';
+
+
fonts.fonts = with pkgs; [ dejavu_fonts ];
+
};
+
xorg = { pkgs, ... }: {
+
imports = [ ./common/user-account.nix ./common/x11.nix ];
-
{
-
name = "vscodium";
-
meta = with pkgs.lib.maintainers; {
-
maintainers = [ turion ];
+
virtualisation.memorySize = 2047;
+
services.xserver.enable = true;
+
services.xserver.displayManager.sessionCommands = ''
+
${pkgs.vscodium}/bin/codium
+
'';
+
test-support.displayManager.auto.user = "alice";
+
};
};
-
machine = { ... }:
+
mkTest = name: machine:
+
import ./make-test-python.nix ({ pkgs, ... }: {
+
inherit name;
-
{
-
imports = [
-
./common/user-account.nix
-
./common/x11.nix
-
];
+
nodes = { "${name}" = machine; };
-
virtualisation.memorySize = 2047;
-
services.xserver.enable = true;
-
test-support.displayManager.auto.user = "alice";
-
environment.systemPackages = with pkgs; [
-
vscodium
-
];
-
};
+
meta = with pkgs.lib.maintainers; {
+
maintainers = [ synthetica turion ];
+
};
+
enableOCR = true;
+
testScript = ''
+
start_all()
-
enableOCR = true;
+
machine.wait_for_unit('graphical.target')
+
machine.wait_until_succeeds('pgrep -x codium')
-
testScript = { nodes, ... }: ''
-
# Start up X
-
start_all()
-
machine.wait_for_x()
+
# Wait until vscodium is visible. "File" is in the menu bar.
+
machine.wait_for_text('File')
+
machine.screenshot('start_screen')
-
# Start VSCodium with a file that doesn't exist yet
-
machine.fail("ls /home/alice/foo.txt")
-
machine.succeed("su - alice -c 'codium foo.txt' >&2 &")
+
test_string = 'testfile'
-
# Wait for the window to appear
-
machine.wait_for_text("VSCodium")
+
# Create a new file
+
machine.send_key('ctrl-n')
+
machine.wait_for_text('Untitled')
+
machine.screenshot('empty_editor')
-
# Save file
-
machine.send_key("ctrl-s")
+
# Type a string
+
machine.send_chars(test_string)
+
machine.wait_for_text(test_string)
+
machine.screenshot('editor')
+
+
# Save the file
+
machine.send_key('ctrl-s')
+
machine.wait_for_text('Save')
+
machine.screenshot('save_window')
+
machine.send_key('ret')
-
# Wait until the file has been saved
-
machine.wait_for_file("/home/alice/foo.txt")
+
# (the default filename is the first line of the file)
+
machine.wait_for_file(f'/home/alice/{test_string}')
+
'';
+
});
-
machine.screenshot("VSCodium")
-
'';
-
})
+
in builtins.mapAttrs (k: v: mkTest k v { }) tests
+2 -1
pkgs/development/libraries/grpc/default.nix
···
export LD_LIBRARY_PATH=$(pwd)''${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH
'';
-
NIX_CFLAGS_COMPILE = lib.optionalString stdenv.cc.isClang "-Wno-error=unknown-warning-option";
+
NIX_CFLAGS_COMPILE = lib.optionalString stdenv.cc.isClang "-Wno-error=unknown-warning-option"
+
+ lib.optionalString stdenv.isAarch64 "-Wno-error=format-security";
enableParallelBuilds = true;
+2 -2
pkgs/development/libraries/libfprint-tod/default.nix
···
# for the curious, "tod" means "Touch OEM Drivers" meaning it can load
# external .so's.
libfprint.overrideAttrs ({ postPatch ? "", mesonFlags ? [], ... }: let
-
version = "1.94.1+tod1";
+
version = "1.90.7+git20210222+tod1";
in {
pname = "libfprint-tod";
inherit version;
···
owner = "3v1n0";
repo = "libfprint";
rev = "v${version}";
-
sha256 = "sha256-IVeTQlZjea4xgbG/N7OTHAj6RT4WutfvQhV8qFEvkKo=";
+
sha256 = "0cj7iy5799pchyzqqncpkhibkq012g3bdpn18pfb19nm43svhn4j";
};
mesonFlags = mesonFlags ++ [
+1
pkgs/development/mobile/androidenv/ndk-bundle/default.nix
···
deployAndroidPackage {
inherit package os;
nativeBuildInputs = [ autoPatchelfHook makeWrapper ];
+
autoPatchelfIgnoreMissingDeps = true;
buildInputs = lib.optional (os == "linux") [ pkgs.glibc pkgs.stdenv.cc.cc pkgs.python2 pkgs.ncurses5 pkgs.zlib pkgs.libcxx.out pkgs.libxml2 ];
patchInstructions = lib.optionalString (os == "linux") (''
patchShebangs .
+40
pkgs/development/python-modules/aiohwenergy/default.nix
···
+
{ lib
+
, aiohttp
+
, buildPythonPackage
+
, fetchFromGitHub
+
, pytestCheckHook
+
, pythonOlder
+
}:
+
+
buildPythonPackage rec {
+
pname = "aiohwenergy";
+
version = "0.4.0";
+
format = "setuptools";
+
+
disabled = pythonOlder "3.7";
+
+
src = fetchFromGitHub {
+
owner = "DCSBL";
+
repo = pname;
+
rev = version;
+
sha256 = "Rs7kD+jN/z0j4KmkitquB+cm2UcYG87YHczZR0A4axI=";
+
};
+
+
propagatedBuildInputs = [
+
aiohttp
+
];
+
+
# Project has no tests
+
doCheck = false;
+
+
pythonImportsCheck = [
+
"aiohwenergy"
+
];
+
+
meta = with lib; {
+
description = "Python library to interact with the HomeWizard Energy devices API";
+
homepage = "https://github.com/DCSBL/aiohwenergy";
+
license = licenses.asl20;
+
maintainers = with maintainers; [ fab ];
+
};
+
}
+15 -5
pkgs/development/python-modules/apache-airflow/default.nix
···
, termcolor
, unicodecsv
, werkzeug
-
, pytest
+
, pytestCheckHook
, freezegun
, mkYarnPackage
}:
···
checkInputs = [
freezegun
-
pytest
+
pytestCheckHook
];
INSTALL_PROVIDERS_FROM_SOURCES = "true";
···
substituteInPlace tests/core/test_core.py \
--replace "/bin/bash" "${stdenv.shell}"
+
'' + lib.optionalString stdenv.isDarwin ''
+
# Fix failing test on Hydra
+
substituteInPlace airflow/utils/db.py \
+
--replace "/tmp/sqlite_default.db" "$TMPDIR/sqlite_default.db"
'';
# allow for gunicorn processes to have access to python packages
makeWrapperArgs = [ "--prefix PYTHONPATH : $PYTHONPATH" ];
-
checkPhase = ''
+
preCheck = ''
export HOME=$(mktemp -d)
export AIRFLOW_HOME=$HOME
export AIRFLOW__CORE__UNIT_TEST_MODE=True
···
airflow version
airflow db init
airflow db reset -y
-
-
pytest tests/core/test_core.py
'';
+
+
pytestFlagsArray = [
+
"tests/core/test_core.py"
+
];
+
+
disabledTests = lib.optionals stdenv.isDarwin [
+
"bash_operator_kill" # psutil.AccessDenied
+
];
postInstall = ''
cp -rv ${airflow-frontend}/static/dist $out/lib/${python.libPrefix}/site-packages/airflow/www/static
+6 -3
pkgs/development/python-modules/elementpath/default.nix
···
}:
buildPythonPackage rec {
-
version = "2.3.2";
pname = "elementpath";
+
version = "2.4.0";
+
format = "setuptools";
disabled = pythonOlder "3.6";
···
owner = "sissaschool";
repo = "elementpath";
rev = "v${version}";
-
sha256 = "01h68v077xbcnqn9v52i8d6s6i7ds3zycn3ddn11hc074m4gg3af";
+
sha256 = "1f3w5zyvrkl4gab81i5z9b41ybs54b37znj5r7hrcf25x8hrqgvv";
};
# avoid circular dependency with xmlschema which directly depends on this
doCheck = false;
-
pythonImportsCheck = [ "elementpath" ];
+
pythonImportsCheck = [
+
"elementpath"
+
];
meta = with lib; {
description = "XPath 1.0/2.0 parsers and selectors for ElementTree and lxml";
+2 -2
pkgs/development/python-modules/faraday-plugins/default.nix
···
buildPythonPackage rec {
pname = "faraday-plugins";
-
version = "1.5.6";
+
version = "1.5.7";
format = "setuptools";
src = fetchFromGitHub {
owner = "infobyte";
repo = "faraday_plugins";
rev = "v${version}";
-
sha256 = "sha256-RTHhCSOqtdPsgZgeziAYm+9NoR72Jfm+42fyyKqjFpA=";
+
sha256 = "sha256-EW9p5r7RwWohNGwbITtDrEd1FYLtOwWXhVWFgPCG+Po=";
};
propagatedBuildInputs = [
+5 -3
pkgs/development/python-modules/identify/default.nix
···
{ lib
, buildPythonPackage
+
, editdistance-s
, fetchFromGitHub
, pytestCheckHook
-
, editdistance-s
, pythonOlder
+
, ukkonen
}:
buildPythonPackage rec {
pname = "identify";
-
version = "2.3.7";
+
version = "2.4.0";
format = "setuptools";
disabled = pythonOlder "3.7";
···
owner = "pre-commit";
repo = pname;
rev = "v${version}";
-
sha256 = "sha256-L71Zi0SWFh7K4BRwF57prdrIdxLp8Igs0k/gc6k1+Mo=";
+
sha256 = "sha256-0J3P3RawafVAfOUhK9qSz5K8y0goMqTjMh5PL60sqME=";
};
checkInputs = [
editdistance-s
pytestCheckHook
+
ukkonen
];
pythonImportsCheck = [
+36
pkgs/development/python-modules/luxtronik/default.nix
···
+
{ lib
+
, buildPythonPackage
+
, fetchFromGitHub
+
, pytestCheckHook
+
, poetry-core
+
, pythonOlder
+
}:
+
+
buildPythonPackage rec {
+
pname = "luxtronik";
+
version = "0.3.9";
+
format = "setuptools";
+
+
disabled = pythonOlder "3.7";
+
+
src = fetchFromGitHub {
+
owner = "Bouni";
+
repo = "python-luxtronik";
+
rev = version;
+
sha256 = "mScdTQ82tV5fyy1S0YDDOz1UC4VB0OmSXD5gHp53WsE=";
+
};
+
+
# Project has no tests
+
doCheck = false;
+
+
pythonImportsCheck = [
+
"luxtronik"
+
];
+
+
meta = with lib; {
+
description = "Python library to interact with Luxtronik heatpump controllers";
+
homepage = "https://github.com/Bouni/python-luxtronik";
+
license = licenses.mit;
+
maintainers = with maintainers; [ fab ];
+
};
+
}
+4 -2
pkgs/development/python-modules/millheater/default.nix
···
buildPythonPackage rec {
pname = "millheater";
-
version = "0.8.1";
+
version = "0.9.0";
+
format = "setuptools";
+
disabled = pythonOlder "3.6";
src = fetchFromGitHub {
owner = "Danielhiversen";
repo = "pymill";
rev = version;
-
sha256 = "0269lhb6y4c13n6krsl2b66ldvzkd26jlax7bbnkvag2iv7g6hzj";
+
sha256 = "sha256-ocPp9tRghlOb0vZrpELDkwOq8ue+JBCRf2uB0Q7CPF8=";
};
propagatedBuildInputs = [
+6 -3
pkgs/development/python-modules/pyatmo/default.nix
···
buildPythonPackage rec {
pname = "pyatmo";
-
version = "6.1.0";
+
version = "6.2.0";
+
format = "setuptools";
disabled = pythonOlder "3.8";
···
owner = "jabesq";
repo = "pyatmo";
rev = "v${version}";
-
sha256 = "sha256-Iscnv3hfYa8QFiXMUN334Muo0oGqnnK11RPNxQJggG0=";
+
sha256 = "sha256-VBc2avJiIFQW1LYXQEvIZ/wZKMFJsCF9DDrxwL8dDnk=";
};
SETUPTOOLS_SCM_PRETEND_VERSION = version;
···
--replace "requests~=2.24" "requests"
'';
-
pythonImportsCheck = [ "pyatmo" ];
+
pythonImportsCheck = [
+
"pyatmo"
+
];
meta = with lib; {
description = "Simple API to access Netatmo weather station data";
+43
pkgs/development/python-modules/pyebus/default.nix
···
+
{ lib
+
, anytree
+
, buildPythonPackage
+
, fetchPypi
+
, pytestCheckHook
+
, poetry-core
+
, pythonOlder
+
}:
+
+
buildPythonPackage rec {
+
pname = "pyebus";
+
version = "1.2.4";
+
format = "pyproject";
+
+
disabled = pythonOlder "3.7";
+
+
src = fetchPypi {
+
inherit pname version;
+
sha256 = "i+p40s9SXey1lfXWW+PiXsA1kUF4o6Rk7QLmQ2ljN6g=";
+
};
+
+
nativeBuildInputs = [
+
poetry-core
+
];
+
+
propagatedBuildInputs = [
+
anytree
+
];
+
+
# https://github.com/c0fec0de/pyebus/issues/3
+
doCheck = false;
+
+
pythonImportsCheck = [
+
"pyebus"
+
];
+
+
meta = with lib; {
+
description = "Pythonic Interface to EBUS Daemon (ebusd)";
+
homepage = "https://github.com/c0fec0de/pyebus";
+
license = licenses.mit;
+
maintainers = with maintainers; [ fab ];
+
};
+
}
+13 -5
pkgs/development/python-modules/pyupgrade/default.nix
···
buildPythonPackage rec {
pname = "pyupgrade";
-
version = "2.29.0";
+
version = "2.29.1";
+
format = "setuptools";
+
disabled = pythonOlder "3.6";
src = fetchFromGitHub {
owner = "asottile";
repo = pname;
rev = "v${version}";
-
sha256 = "sha256-Hq58DJe8ZLZSJdhqSxfTaZPnWae2aQFCe7lH+6Y6ABg=";
+
sha256 = "sha256-fN0+4/EeoMD2c16OgepjDWuUhowMxzM7nB3mkL3iDjc=";
};
-
checkInputs = [ pytestCheckHook ];
+
checkInputs = [
+
pytestCheckHook
+
];
-
propagatedBuildInputs = [ tokenize-rt ];
+
propagatedBuildInputs = [
+
tokenize-rt
+
];
-
pythonImportsCheck = [ "pyupgrade" ];
+
pythonImportsCheck = [
+
"pyupgrade"
+
];
meta = with lib; {
description = "Tool to automatically upgrade syntax for newer versions of the language";
+60
pkgs/development/python-modules/related/default.nix
···
+
{ lib
+
, attrs
+
, buildPythonPackage
+
, fetchPypi
+
, future
+
, pytestCheckHook
+
, python-dateutil
+
, pythonOlder
+
, pyyaml
+
}:
+
+
buildPythonPackage rec {
+
pname = "related";
+
version = "0.7.2";
+
format = "setuptools";
+
+
disabled = pythonOlder "3.7";
+
+
src = fetchPypi {
+
inherit pname version;
+
sha256 = "w0XmNWh1xF08qitH22lQgTRNqO6qyYrYd2dc6x3Fop0=";
+
};
+
+
propagatedBuildInputs = [
+
attrs
+
future
+
python-dateutil
+
pyyaml
+
];
+
+
checkInputs = [
+
pytestCheckHook
+
];
+
+
postPatch = ''
+
# Remove outdated setup.cfg
+
rm setup.cfg
+
substituteInPlace setup.py \
+
--replace "'pytest-runner'," ""
+
'';
+
+
disabledTests = [
+
# Source tarball doesn't contains all needed files
+
"test_compose_from_yml"
+
"test_yaml_roundtrip_with_empty_values"
+
"test_compose_from_yml"
+
"test_store_data_from_json"
+
];
+
+
pythonImportsCheck = [
+
"related"
+
];
+
+
meta = with lib; {
+
description = "Nested Object Models in Python";
+
homepage = "https://github.com/genomoncology/related";
+
license = licenses.mit;
+
maintainers = with maintainers; [ fab ];
+
};
+
}
+19 -7
pkgs/development/python-modules/roombapy/default.nix
···
buildPythonPackage rec {
pname = "roombapy";
-
version = "1.6.3";
+
version = "1.6.4";
format = "pyproject";
+
disabled = pythonOlder "3.7";
src = fetchFromGitHub {
owner = "pschmitt";
repo = "roombapy";
rev = version;
-
sha256 = "sha256-GkDfIC2jx4Mpguk/Wu45pZw0czhabJwTz58WYSLCOV8=";
+
sha256 = "sha256-EN+em+lULAUplXlhcU409ZVPk9BfMmD2oNwO0ETuqoA=";
};
-
nativeBuildInputs = [ poetry-core ];
+
nativeBuildInputs = [
+
poetry-core
+
];
-
propagatedBuildInputs = [ paho-mqtt ];
+
propagatedBuildInputs = [
+
paho-mqtt
+
];
checkInputs = [
amqtt
···
"tests/test_discovery.py"
];
-
pythonImportsCheck = [ "roombapy" ];
+
disabledTests = [
+
# Test want to connect to a local MQTT broker
+
"test_roomba_connect"
+
];
+
+
pythonImportsCheck = [
+
"roombapy"
+
];
meta = with lib; {
-
homepage = "https://github.com/pschmitt/roombapy";
description = "Python program and library to control Wi-Fi enabled iRobot Roombas";
+
homepage = "https://github.com/pschmitt/roombapy";
+
license = licenses.mit;
maintainers = with maintainers; [ justinas ];
-
license = licenses.mit;
};
}
+2 -2
pkgs/development/python-modules/tweepy/default.nix
···
buildPythonPackage rec {
pname = "tweepy";
-
version = "4.3.0";
+
version = "4.4.0";
format = "setuptools";
disabled = pythonOlder "3.6";
···
owner = pname;
repo = pname;
rev = "v${version}";
-
sha256 = "sha256-lS/98DRpJH1UGGNzwqVVUJOeul+BX+I3e+ysmC0oL3I=";
+
sha256 = "sha256-GUo8uvShyIOWWcO5T1JvV7DMC1W70YILx/hvHIGQg0o=";
};
propagatedBuildInputs = [
+41
pkgs/development/python-modules/ukkonen/default.nix
···
+
{ lib
+
, buildPythonPackage
+
, fetchFromGitHub
+
, cffi
+
, pytestCheckHook
+
, pythonOlder
+
}:
+
+
buildPythonPackage rec {
+
pname = "ukkonen";
+
version = "1.0.1";
+
format = "setuptools";
+
+
disabled = pythonOlder "3.6";
+
+
src = fetchFromGitHub {
+
owner = "asottile";
+
repo = pname;
+
rev = "v${version}";
+
sha256 = "jG6VP/P5sadrdrmneH36/ExSld9blyMAAG963QS9+p0=";
+
};
+
+
nativeBuildInputs = [
+
cffi
+
];
+
+
checkInputs = [
+
pytestCheckHook
+
];
+
+
pythonImportsCheck = [
+
"ukkonen"
+
];
+
+
meta = with lib; {
+
description = "Python implementation of bounded Levenshtein distance (Ukkonen)";
+
homepage = "https://github.com/asottile/ukkonen";
+
license = licenses.mit;
+
maintainers = with maintainers; [ fab ];
+
};
+
}
+37
pkgs/development/python-modules/uonet-request-signer-hebe/default.nix
···
+
{ lib
+
, buildPythonPackage
+
, fetchPypi
+
, pythonOlder
+
, pyopenssl
+
}:
+
+
buildPythonPackage rec {
+
pname = "uonet-request-signer-hebe";
+
version = "0.1.1";
+
format = "setuptools";
+
+
disabled = pythonOlder "3.6";
+
+
src = fetchPypi {
+
inherit pname version;
+
sha256 = "fidopnpAt5CXPsLbx+V8wrJCQQ/WIO6AqxpsYLDv8qM=";
+
};
+
+
propagatedBuildInputs = [
+
pyopenssl
+
];
+
+
# Source is not tagged
+
doCheck = false;
+
+
pythonImportsCheck = [
+
"uonet_request_signer_hebe"
+
];
+
+
meta = with lib; {
+
description = "UONET+ (hebe) request signer for Python";
+
homepage = "https://github.com/wulkanowy/uonet-request-signer";
+
license = licenses.mit;
+
maintainers = with maintainers; [ fab ];
+
};
+
}
+57
pkgs/development/python-modules/vulcan-api/default.nix
···
+
{ lib
+
, aenum
+
, aiodns
+
, aiohttp
+
, buildPythonPackage
+
, cchardet
+
, fetchFromGitHub
+
, pyopenssl
+
, pythonOlder
+
, pytz
+
, related
+
, requests
+
, uonet-request-signer-hebe
+
, yarl
+
}:
+
+
buildPythonPackage rec {
+
pname = "vulcan-api";
+
version = "2.0.3";
+
format = "setuptools";
+
+
disabled = pythonOlder "3.6";
+
+
src = fetchFromGitHub {
+
owner = "kapi2289";
+
repo = pname;
+
rev = "v${version}";
+
sha256 = "YLt9yufOBlWRyo+le7HcaFD/s7V5WpvhMUrHJqyC3pY=";
+
};
+
+
propagatedBuildInputs = [
+
aenum
+
aiodns
+
aiohttp
+
cchardet
+
pyopenssl
+
pytz
+
related
+
requests
+
uonet-request-signer-hebe
+
yarl
+
];
+
+
# Project has no tests
+
doCheck = false;
+
+
pythonImportsCheck = [
+
"vulcan"
+
];
+
+
meta = with lib; {
+
description = "Python library for UONET+ e-register API";
+
homepage = "https://vulcan-api.readthedocs.io/";
+
license = licenses.mit;
+
maintainers = with maintainers; [ fab ];
+
};
+
}
+2 -2
pkgs/development/python-modules/xmlschema/default.nix
···
}:
buildPythonPackage rec {
-
version = "1.8.1";
+
version = "1.8.2";
pname = "xmlschema";
disabled = pythonOlder "3.6";
···
owner = "sissaschool";
repo = "xmlschema";
rev = "v${version}";
-
sha256 = "0vs4d9bnms4krxvplzf2p69g673pdw31z8p5alzj3pqnaw83rg1z";
+
sha256 = "sha256-d7f19T17aAwdtNDjCrsXXY39u0aRgQo4vFPnxFNs2PQ=";
};
propagatedBuildInputs = [
+2 -2
pkgs/development/tools/analysis/checkov/default.nix
···
buildPythonApplication rec {
pname = "checkov";
-
version = "2.0.587";
+
version = "2.0.591";
src = fetchFromGitHub {
owner = "bridgecrewio";
repo = pname;
rev = version;
-
sha256 = "sha256-uLH3g3UeWdIZsMsUwCYpTehgxDKGraPBlENdTz+QYLI=";
+
sha256 = "sha256-p8pEw3vH3W62MmlZsSqWoUKf7QjEQhlV5bSjYr1Wwm0=";
};
nativeBuildInputs = with py.pkgs; [
+10 -5
pkgs/tools/admin/trivy/default.nix
···
-
{ lib, buildGoModule, fetchFromGitHub }:
+
{ lib
+
, buildGoModule
+
, fetchFromGitHub
+
}:
buildGoModule rec {
pname = "trivy";
-
version = "0.20.2";
+
version = "0.21.0";
src = fetchFromGitHub {
owner = "aquasecurity";
repo = pname;
rev = "v${version}";
-
sha256 = "sha256-ittOVWsM+1IaILCLCJNOeLxRbRHiiMN4qgLTS9gxV0w=";
+
sha256 = "sha256-weLzW1pyv9q9VKvFxno+f/L29wlpvxlVUZJUwx6Gn2A=";
};
-
vendorSha256 = "sha256-HrDj09gUJtkZhQ3nYfoj0K8+T62ib0CWAhhcuvg8cyc=";
+
vendorSha256 = "sha256-1kQ2m8gFBHKznbjNPtYN0BVrRbxyCs2H1f7+XZqgVvc=";
excludedPackages = "misc";
ldflags = [
-
"-s" "-w" "-X main.version=v${version}"
+
"-s"
+
"-w"
+
"-X main.version=v${version}"
];
doInstallCheck = true;
+5
pkgs/tools/filesystems/nilfs-utils/default.nix
···
buildInputs = [ libuuid libselinux ];
+
# According to upstream, libmount should be detected automatically but the
+
# build system fails to do this. This is likely a bug with their build system
+
# hence it is explicitly enabled here.
+
configureFlags = [ "--with-libmount" ];
+
installFlags = [
"sysconfdir=${placeholder "out"}/etc"
"root_sbindir=${placeholder "out"}/sbin"
+5
pkgs/tools/security/masscan/default.nix
···
sha256 = "sha256-mnGC/moQANloR5ODwRjzJzBa55OEZ9QU+9WpAHxQE/g=";
};
+
postPatch = lib.optionalString stdenv.isDarwin ''
+
# Fix broken install command
+
substituteInPlace Makefile --replace "-pm755" "-pDm755"
+
'';
+
nativeBuildInputs = [ makeWrapper installShellFiles ];
makeFlags = [
+14
pkgs/top-level/python-packages.nix
···
aiohue = callPackage ../development/python-modules/aiohue { };
+
aiohwenergy = callPackage ../development/python-modules/aiohwenergy { };
+
aioimaplib = callPackage ../development/python-modules/aioimaplib { };
aioinflux = callPackage ../development/python-modules/aioinflux { };
···
luftdaten = callPackage ../development/python-modules/luftdaten { };
+
luxtronik = callPackage ../development/python-modules/luxtronik { };
+
lupa = callPackage ../development/python-modules/lupa { };
lupupy = callPackage ../development/python-modules/lupupy { };
···
pydyf = callPackage ../development/python-modules/pydyf { };
+
pyebus = callPackage ../development/python-modules/pyebus { };
+
pyechonest = callPackage ../development/python-modules/pyechonest { };
pyeclib = callPackage ../development/python-modules/pyeclib { };
···
reikna = callPackage ../development/python-modules/reikna { };
+
related = callPackage ../development/python-modules/related { };
+
relatorio = callPackage ../development/python-modules/relatorio { };
remarshal = callPackage ../development/python-modules/remarshal { };
···
ujson = callPackage ../development/python-modules/ujson { };
+
ukkonen = callPackage ../development/python-modules/ukkonen { };
+
ukpostcodeparser = callPackage ../development/python-modules/ukpostcodeparser { };
umalqurra = callPackage ../development/python-modules/umalqurra { };
···
untangle = callPackage ../development/python-modules/untangle { };
untokenize = callPackage ../development/python-modules/untokenize { };
+
+
uonet-request-signer-hebe = callPackage ../development/python-modules/uonet-request-signer-hebe { };
upass = callPackage ../development/python-modules/upass { };
···
pythonInterpreter = python;
enablePython = true;
});
+
+
vulcan-api = callPackage ../development/python-modules/vulcan-api { };
vultr = callPackage ../development/python-modules/vultr { };