Merge branch 'staging-next' into staging

This commit is contained in:
Jan Tojnar
2021-05-08 20:59:05 +02:00
730 changed files with 3907 additions and 1907 deletions
@@ -6,12 +6,12 @@
buildPythonPackage rec {
pname = "adafruit-platformdetect";
version = "3.10.0";
version = "3.11.0";
src = fetchPypi {
pname = "Adafruit-PlatformDetect";
inherit version;
sha256 = "sha256-lIyDYt6OsBOPq1ytD4B4JxX7JeSGWprH2kqqFMzZcGY=";
sha256 = "sha256-FgE0/OnqUuzpC5jCM4Q1g49F3fg1Mdstr7nys7G1MOs=";
};
nativeBuildInputs = [ setuptools-scm ];
@@ -0,0 +1,498 @@
From 17b5be250cb5ecf95cf4f77c8c930450d876efa6 Mon Sep 17 00:00:00 2001
From: dzen <benoit.calvez@polyconseil.fr>
Date: Thu, 12 Mar 2020 08:32:29 +0100
Subject: [PATCH 1/3] Moves to pamqp 3.0
---
aioamqp/channel.py | 114 +++++++++++++++++++-------------------
aioamqp/frame.py | 1 -
aioamqp/protocol.py | 22 ++++----
aioamqp/tests/testcase.py | 2 +-
4 files changed, 69 insertions(+), 70 deletions(-)
diff --git a/aioamqp/channel.py b/aioamqp/channel.py
index 7f0f402..ea164c4 100644
--- a/aioamqp/channel.py
+++ b/aioamqp/channel.py
@@ -9,7 +9,7 @@
from itertools import count
import warnings
-import pamqp.specification
+import pamqp.commands
from . import frame as amqp_frame
from . import exceptions
@@ -78,35 +78,35 @@ def connection_closed(self, server_code=None, server_reason=None, exception=None
async def dispatch_frame(self, frame):
methods = {
- pamqp.specification.Channel.OpenOk.name: self.open_ok,
- pamqp.specification.Channel.FlowOk.name: self.flow_ok,
- pamqp.specification.Channel.CloseOk.name: self.close_ok,
- pamqp.specification.Channel.Close.name: self.server_channel_close,
-
- pamqp.specification.Exchange.DeclareOk.name: self.exchange_declare_ok,
- pamqp.specification.Exchange.BindOk.name: self.exchange_bind_ok,
- pamqp.specification.Exchange.UnbindOk.name: self.exchange_unbind_ok,
- pamqp.specification.Exchange.DeleteOk.name: self.exchange_delete_ok,
-
- pamqp.specification.Queue.DeclareOk.name: self.queue_declare_ok,
- pamqp.specification.Queue.DeleteOk.name: self.queue_delete_ok,
- pamqp.specification.Queue.BindOk.name: self.queue_bind_ok,
- pamqp.specification.Queue.UnbindOk.name: self.queue_unbind_ok,
- pamqp.specification.Queue.PurgeOk.name: self.queue_purge_ok,
-
- pamqp.specification.Basic.QosOk.name: self.basic_qos_ok,
- pamqp.specification.Basic.ConsumeOk.name: self.basic_consume_ok,
- pamqp.specification.Basic.CancelOk.name: self.basic_cancel_ok,
- pamqp.specification.Basic.GetOk.name: self.basic_get_ok,
- pamqp.specification.Basic.GetEmpty.name: self.basic_get_empty,
- pamqp.specification.Basic.Deliver.name: self.basic_deliver,
- pamqp.specification.Basic.Cancel.name: self.server_basic_cancel,
- pamqp.specification.Basic.Ack.name: self.basic_server_ack,
- pamqp.specification.Basic.Nack.name: self.basic_server_nack,
- pamqp.specification.Basic.RecoverOk.name: self.basic_recover_ok,
- pamqp.specification.Basic.Return.name: self.basic_return,
-
- pamqp.specification.Confirm.SelectOk.name: self.confirm_select_ok,
+ pamqp.commands.Channel.OpenOk.name: self.open_ok,
+ pamqp.commands.Channel.FlowOk.name: self.flow_ok,
+ pamqp.commands.Channel.CloseOk.name: self.close_ok,
+ pamqp.commands.Channel.Close.name: self.server_channel_close,
+
+ pamqp.commands.Exchange.DeclareOk.name: self.exchange_declare_ok,
+ pamqp.commands.Exchange.BindOk.name: self.exchange_bind_ok,
+ pamqp.commands.Exchange.UnbindOk.name: self.exchange_unbind_ok,
+ pamqp.commands.Exchange.DeleteOk.name: self.exchange_delete_ok,
+
+ pamqp.commands.Queue.DeclareOk.name: self.queue_declare_ok,
+ pamqp.commands.Queue.DeleteOk.name: self.queue_delete_ok,
+ pamqp.commands.Queue.BindOk.name: self.queue_bind_ok,
+ pamqp.commands.Queue.UnbindOk.name: self.queue_unbind_ok,
+ pamqp.commands.Queue.PurgeOk.name: self.queue_purge_ok,
+
+ pamqp.commands.Basic.QosOk.name: self.basic_qos_ok,
+ pamqp.commands.Basic.ConsumeOk.name: self.basic_consume_ok,
+ pamqp.commands.Basic.CancelOk.name: self.basic_cancel_ok,
+ pamqp.commands.Basic.GetOk.name: self.basic_get_ok,
+ pamqp.commands.Basic.GetEmpty.name: self.basic_get_empty,
+ pamqp.commands.Basic.Deliver.name: self.basic_deliver,
+ pamqp.commands.Basic.Cancel.name: self.server_basic_cancel,
+ pamqp.commands.Basic.Ack.name: self.basic_server_ack,
+ pamqp.commands.Basic.Nack.name: self.basic_server_nack,
+ pamqp.commands.Basic.RecoverOk.name: self.basic_recover_ok,
+ pamqp.commands.Basic.Return.name: self.basic_return,
+
+ pamqp.commands.Confirm.SelectOk.name: self.confirm_select_ok,
}
if frame.name not in methods:
@@ -144,7 +144,7 @@ async def _write_frame_awaiting_response(self, waiter_id, channel_id, request,
async def open(self):
"""Open the channel on the server."""
- request = pamqp.specification.Channel.Open()
+ request = pamqp.commands.Channel.Open()
return (await self._write_frame_awaiting_response(
'open', self.channel_id, request, no_wait=False, check_open=False))
@@ -159,7 +159,7 @@ async def close(self, reply_code=0, reply_text="Normal Shutdown"):
if not self.is_open:
raise exceptions.ChannelClosed("channel already closed or closing")
self.close_event.set()
- request = pamqp.specification.Channel.Close(reply_code, reply_text, class_id=0, method_id=0)
+ request = pamqp.commands.Channel.Close(reply_code, reply_text, class_id=0, method_id=0)
return (await self._write_frame_awaiting_response(
'close', self.channel_id, request, no_wait=False, check_open=False))
@@ -169,7 +169,7 @@ async def close_ok(self, frame):
self.protocol.release_channel_id(self.channel_id)
async def _send_channel_close_ok(self):
- request = pamqp.specification.Channel.CloseOk()
+ request = pamqp.commands.Channel.CloseOk()
await self._write_frame(self.channel_id, request)
async def server_channel_close(self, frame):
@@ -183,7 +183,7 @@ async def server_channel_close(self, frame):
self.connection_closed(results['reply_code'], results['reply_text'])
async def flow(self, active):
- request = pamqp.specification.Channel.Flow(active)
+ request = pamqp.commands.Channel.Flow(active)
return (await self._write_frame_awaiting_response(
'flow', self.channel_id, request, no_wait=False,
check_open=False))
@@ -201,7 +201,7 @@ async def flow_ok(self, frame):
async def exchange_declare(self, exchange_name, type_name, passive=False, durable=False,
auto_delete=False, no_wait=False, arguments=None):
- request = pamqp.specification.Exchange.Declare(
+ request = pamqp.commands.Exchange.Declare(
exchange=exchange_name,
exchange_type=type_name,
passive=passive,
@@ -222,7 +222,7 @@ async def exchange_declare_ok(self, frame):
return future
async def exchange_delete(self, exchange_name, if_unused=False, no_wait=False):
- request = pamqp.specification.Exchange.Delete(exchange=exchange_name, if_unused=if_unused, nowait=no_wait)
+ request = pamqp.commands.Exchange.Delete(exchange=exchange_name, if_unused=if_unused, nowait=no_wait)
return await self._write_frame_awaiting_response(
'exchange_delete', self.channel_id, request, no_wait)
@@ -235,7 +235,7 @@ async def exchange_bind(self, exchange_destination, exchange_source, routing_key
no_wait=False, arguments=None):
if arguments is None:
arguments = {}
- request = pamqp.specification.Exchange.Bind(
+ request = pamqp.commands.Exchange.Bind(
destination=exchange_destination,
source=exchange_source,
routing_key=routing_key,
@@ -255,7 +255,7 @@ async def exchange_unbind(self, exchange_destination, exchange_source, routing_k
if arguments is None:
arguments = {}
- request = pamqp.specification.Exchange.Unbind(
+ request = pamqp.commands.Exchange.Unbind(
destination=exchange_destination,
source=exchange_source,
routing_key=routing_key,
@@ -297,7 +297,7 @@ async def queue_declare(self, queue_name=None, passive=False, durable=False,
if not queue_name:
queue_name = 'aioamqp.gen-' + str(uuid.uuid4())
- request = pamqp.specification.Queue.Declare(
+ request = pamqp.commands.Queue.Declare(
queue=queue_name,
passive=passive,
durable=durable,
@@ -327,7 +327,7 @@ async def queue_delete(self, queue_name, if_unused=False, if_empty=False, no_wai
if_empty: bool, the queue is deleted if it has no messages. Raise if not.
no_wait: bool, if set, the server will not respond to the method
"""
- request = pamqp.specification.Queue.Delete(
+ request = pamqp.commands.Queue.Delete(
queue=queue_name,
if_unused=if_unused,
if_empty=if_empty,
@@ -346,7 +346,7 @@ async def queue_bind(self, queue_name, exchange_name, routing_key, no_wait=False
if arguments is None:
arguments = {}
- request = pamqp.specification.Queue.Bind(
+ request = pamqp.commands.Queue.Bind(
queue=queue_name,
exchange=exchange_name,
routing_key=routing_key,
@@ -367,7 +367,7 @@ async def queue_unbind(self, queue_name, exchange_name, routing_key, arguments=N
if arguments is None:
arguments = {}
- request = pamqp.specification.Queue.Unbind(
+ request = pamqp.commands.Queue.Unbind(
queue=queue_name,
exchange=exchange_name,
routing_key=routing_key,
@@ -383,7 +383,7 @@ async def queue_unbind_ok(self, frame):
logger.debug("Queue unbound")
async def queue_purge(self, queue_name, no_wait=False):
- request = pamqp.specification.Queue.Purge(
+ request = pamqp.commands.Queue.Purge(
queue=queue_name, nowait=no_wait
)
return (await self._write_frame_awaiting_response(
@@ -406,7 +406,7 @@ async def basic_publish(self, payload, exchange_name, routing_key,
if properties is None:
properties = {}
- method_request = pamqp.specification.Basic.Publish(
+ method_request = pamqp.commands.Basic.Publish(
exchange=exchange_name,
routing_key=routing_key,
mandatory=mandatory,
@@ -417,7 +417,7 @@ async def basic_publish(self, payload, exchange_name, routing_key,
header_request = pamqp.header.ContentHeader(
body_size=len(payload),
- properties=pamqp.specification.Basic.Properties(**properties)
+ properties=pamqp.commands.Basic.Properties(**properties)
)
await self._write_frame(self.channel_id, header_request, drain=False)
@@ -446,7 +446,7 @@ async def basic_qos(self, prefetch_size=0, prefetch_count=0, connection_global=F
settings should apply per-consumer channel; and global=true to mean
that the QoS settings should apply per-channel.
"""
- request = pamqp.specification.Basic.Qos(
+ request = pamqp.commands.Basic.Qos(
prefetch_size, prefetch_count, connection_global
)
return (await self._write_frame_awaiting_response(
@@ -490,7 +490,7 @@ async def basic_consume(self, callback, queue_name='', consumer_tag='', no_local
if arguments is None:
arguments = {}
- request = pamqp.specification.Basic.Consume(
+ request = pamqp.commands.Basic.Consume(
queue=queue_name,
consumer_tag=consumer_tag,
no_local=no_local,
@@ -561,7 +561,7 @@ async def server_basic_cancel(self, frame):
callback, error)
async def basic_cancel(self, consumer_tag, no_wait=False):
- request = pamqp.specification.Basic.Cancel(consumer_tag, no_wait)
+ request = pamqp.commands.Basic.Cancel(consumer_tag, no_wait)
return (await self._write_frame_awaiting_response(
'basic_cancel', self.channel_id, request, no_wait=no_wait)
)
@@ -575,7 +575,7 @@ async def basic_cancel_ok(self, frame):
logger.debug("Cancel ok")
async def basic_get(self, queue_name='', no_ack=False):
- request = pamqp.specification.Basic.Get(queue=queue_name, no_ack=no_ack)
+ request = pamqp.commands.Basic.Get(queue=queue_name, no_ack=no_ack)
return (await self._write_frame_awaiting_response(
'basic_get', self.channel_id, request, no_wait=False)
)
@@ -606,11 +606,11 @@ async def basic_get_empty(self, frame):
future.set_exception(exceptions.EmptyQueue)
async def basic_client_ack(self, delivery_tag, multiple=False):
- request = pamqp.specification.Basic.Ack(delivery_tag, multiple)
+ request = pamqp.commands.Basic.Ack(delivery_tag, multiple)
await self._write_frame(self.channel_id, request)
async def basic_client_nack(self, delivery_tag, multiple=False, requeue=True):
- request = pamqp.specification.Basic.Nack(delivery_tag, multiple, requeue)
+ request = pamqp.commands.Basic.Nack(delivery_tag, multiple, requeue)
await self._write_frame(self.channel_id, request)
async def basic_server_ack(self, frame):
@@ -620,15 +620,15 @@ async def basic_server_ack(self, frame):
fut.set_result(True)
async def basic_reject(self, delivery_tag, requeue=False):
- request = pamqp.specification.Basic.Reject(delivery_tag, requeue)
+ request = pamqp.commands.Basic.Reject(delivery_tag, requeue)
await self._write_frame(self.channel_id, request)
async def basic_recover_async(self, requeue=True):
- request = pamqp.specification.Basic.RecoverAsync(requeue)
+ request = pamqp.commands.Basic.RecoverAsync(requeue)
await self._write_frame(self.channel_id, request)
async def basic_recover(self, requeue=True):
- request = pamqp.specification.Basic.Recover(requeue)
+ request = pamqp.commands.Basic.Recover(requeue)
return (await self._write_frame_awaiting_response(
'basic_recover', self.channel_id, request, no_wait=False)
)
@@ -681,7 +681,7 @@ async def publish(self, payload, exchange_name, routing_key, properties=None, ma
delivery_tag = next(self.delivery_tag_iter) # pylint: disable=stop-iteration-return
fut = self._set_waiter('basic_server_ack_{}'.format(delivery_tag))
- method_request = pamqp.specification.Basic.Publish(
+ method_request = pamqp.commands.Basic.Publish(
exchange=exchange_name,
routing_key=routing_key,
mandatory=mandatory,
@@ -689,7 +689,7 @@ async def publish(self, payload, exchange_name, routing_key, properties=None, ma
)
await self._write_frame(self.channel_id, method_request, drain=False)
- properties = pamqp.specification.Basic.Properties(**properties)
+ properties = pamqp.commands.Basic.Properties(**properties)
header_request = pamqp.header.ContentHeader(
body_size=len(payload), properties=properties
)
@@ -710,7 +710,7 @@ async def publish(self, payload, exchange_name, routing_key, properties=None, ma
async def confirm_select(self, *, no_wait=False):
if self.publisher_confirms:
raise ValueError('publisher confirms already enabled')
- request = pamqp.specification.Confirm.Select(nowait=no_wait)
+ request = pamqp.commands.Confirm.Select(nowait=no_wait)
return (await self._write_frame_awaiting_response(
'confirm_select', self.channel_id, request, no_wait)
diff --git a/aioamqp/frame.py b/aioamqp/frame.py
index d70cfd7..af27ab5 100644
--- a/aioamqp/frame.py
+++ b/aioamqp/frame.py
@@ -42,7 +42,6 @@
import socket
import pamqp.encode
-import pamqp.specification
import pamqp.frame
from . import exceptions
diff --git a/aioamqp/protocol.py b/aioamqp/protocol.py
index e111dea..f0b928d 100644
--- a/aioamqp/protocol.py
+++ b/aioamqp/protocol.py
@@ -5,9 +5,9 @@
import asyncio
import logging
+import pamqp.commands
import pamqp.frame
import pamqp.heartbeat
-import pamqp.specification
from . import channel as amqp_channel
from . import constants as amqp_constants
@@ -159,7 +159,7 @@ async def close(self, no_wait=False, timeout=None):
"""Close connection (and all channels)"""
await self.ensure_open()
self.state = CLOSING
- request = pamqp.specification.Connection.Close(
+ request = pamqp.commands.Connection.Close(
reply_code=0,
reply_text='',
class_id=0,
@@ -254,11 +254,11 @@ async def dispatch_frame(self, frame_channel=None, frame=None):
"""Dispatch the received frame to the corresponding handler"""
method_dispatch = {
- pamqp.specification.Connection.Close.name: self.server_close,
- pamqp.specification.Connection.CloseOk.name: self.close_ok,
- pamqp.specification.Connection.Tune.name: self.tune,
- pamqp.specification.Connection.Start.name: self.start,
- pamqp.specification.Connection.OpenOk.name: self.open_ok,
+ pamqp.commands.Connection.Close.name: self.server_close,
+ pamqp.commands.Connection.CloseOk.name: self.close_ok,
+ pamqp.commands.Connection.Tune.name: self.tune,
+ pamqp.commands.Connection.Start.name: self.start,
+ pamqp.commands.Connection.OpenOk.name: self.open_ok,
}
if frame_channel is None and frame is None:
frame_channel, frame = await self.get_frame()
@@ -395,7 +395,7 @@ async def start_ok(self, client_properties, mechanism, auth, locale):
def credentials():
return '\0{LOGIN}\0{PASSWORD}'.format(**auth)
- request = pamqp.specification.Connection.StartOk(
+ request = pamqp.commands.Connection.StartOk(
client_properties=client_properties,
mechanism=mechanism,
locale=locale,
@@ -417,7 +417,7 @@ async def server_close(self, frame):
self._stream_writer.close()
async def _close_ok(self):
- request = pamqp.specification.Connection.CloseOk()
+ request = pamqp.commands.Connection.CloseOk()
await self._write_frame(0, request)
async def tune(self, frame):
@@ -426,7 +426,7 @@ async def tune(self, frame):
self.server_heartbeat = frame.heartbeat
async def tune_ok(self, channel_max, frame_max, heartbeat):
- request = pamqp.specification.Connection.TuneOk(
+ request = pamqp.commands.Connection.TuneOk(
channel_max, frame_max, heartbeat
)
await self._write_frame(0, request)
@@ -436,7 +436,7 @@ async def secure_ok(self, login_response):
async def open(self, virtual_host, capabilities='', insist=False):
"""Open connection to virtual host."""
- request = pamqp.specification.Connection.Open(
+ request = pamqp.commands.Connection.Open(
virtual_host, capabilities, insist
)
await self._write_frame(0, request)
diff --git a/aioamqp/tests/testcase.py b/aioamqp/tests/testcase.py
index 120104b..d6d702b 100644
--- a/aioamqp/tests/testcase.py
+++ b/aioamqp/tests/testcase.py
@@ -147,7 +147,7 @@ def server_version(self, amqp=None):
if amqp is None:
amqp = self.amqp
- server_version = tuple(int(x) for x in amqp.server_properties['version'].decode().split('.'))
+ server_version = tuple(int(x) for x in amqp.server_properties['version'].split('.'))
return server_version
async def check_exchange_exists(self, exchange_name):
From c900f6d5e8ef273000d221d0e46ab81ed4aed2a2 Mon Sep 17 00:00:00 2001
From: dzen <benoit.calvez@polyconseil.fr>
Date: Wed, 25 Mar 2020 11:02:04 +0100
Subject: [PATCH 2/3] fix pamqp version for tests on travis
---
setup.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/setup.py b/setup.py
index a740243..2277b28 100644
--- a/setup.py
+++ b/setup.py
@@ -25,7 +25,7 @@
'aioamqp',
],
install_requires=[
- 'pamqp>=2.2.0,<3',
+ 'pamqp>=3.0.0', # TODO(bcalvez): for tests purpose, until 3.0 is released
],
classifiers=[
"Development Status :: 4 - Beta",
From 836340e8d881a93b0111b9aed6f2bb2926f38de6 Mon Sep 17 00:00:00 2001
From: dzen <benoit.calvez@polyconseil.fr>
Date: Wed, 25 Mar 2020 11:37:45 +0100
Subject: [PATCH 3/3] pamqp 3.0 is no more compatible with 3.5
---
.travis.yml | 1 -
setup.cfg | 2 +-
setup.py | 2 +-
3 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/.travis.yml b/.travis.yml
index 1069e7c..46d6fea 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,7 +1,6 @@
language: python
dist: bionic
python:
-- 3.5
- 3.6
- 3.7-dev
- 3.8
diff --git a/setup.cfg b/setup.cfg
index 0ab7d0b..d0ba16e 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -1,2 +1,2 @@
[bdist_wheel]
-python-tag = py35.py36.py37.py38
+python-tag = py36.py37.py38
diff --git a/setup.py b/setup.py
index 2277b28..c413078 100644
--- a/setup.py
+++ b/setup.py
@@ -27,6 +27,7 @@
install_requires=[
'pamqp==3.0.0a6', # TODO(bcalvez): for tests purpose, until 3.0 is released
],
+ python_requires=">=3.6",
classifiers=[
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
@@ -34,7 +35,6 @@
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
- "Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
@@ -20,6 +20,8 @@ buildPythonPackage rec {
sha256 = "1gpfsrc2vi6w33c9zsycd2qn589pr7a222rb41r85m915283zy48";
};
patches = [ ./compat-pamqp-3.patch ];
propagatedBuildInputs = [
pamqp
];
@@ -52,6 +52,6 @@ buildPythonPackage rec {
description = "Powerful and Lightweight Python Tree Data Structure";
homepage = "https://github.com/c0fec0de/anytree";
license = licenses.asl20;
maintainers = [ maintainers.worldofpeace ];
maintainers = [ ];
};
}
@@ -50,6 +50,6 @@ buildPythonPackage rec {
description = "Provides an asynchronous client and server implementation of the SSHv2 protocol on top of the Python asyncio framework";
homepage = "https://asyncssh.readthedocs.io/en/latest";
license = licenses.epl20;
maintainers = with maintainers; [ worldofpeace ];
maintainers = with maintainers; [ ];
};
}
@@ -1,17 +1,48 @@
{ lib, buildPythonPackage, fetchPypi, setuptools-scm, isPy27, pytestCheckHook
, requests, arrow, logfury, tqdm }:
{ lib
, arrow
, buildPythonPackage
, fetchPypi
, importlib-metadata
, isPy27
, logfury
, pytestCheckHook
, pytest-lazy-fixture
, pytest-mock
, pythonOlder
, requests
, setuptools-scm
, tqdm
}:
buildPythonPackage rec {
pname = "b2sdk";
version = "1.6.0";
version = "1.7.0";
disabled = isPy27;
src = fetchPypi {
inherit pname version;
sha256 = "sha256-6fjreuMUC056ljddfAidfBbJkvEDndB/dIkx1bF7efs=";
sha256 = "sha256-8X5XLh9SxZI1P7/2ZjOy8ipcEzTcriJfGI7KlMXncv4=";
};
nativeBuildInputs = [
setuptools-scm
];
propagatedBuildInputs = [
arrow
logfury
requests
tqdm
] ++ lib.optionals (pythonOlder "3.8") [
importlib-metadata
];
checkInputs = [
pytestCheckHook
pytest-lazy-fixture
pytest-mock
];
postPatch = ''
substituteInPlace setup.py \
--replace 'setuptools_scm<6.0' 'setuptools_scm'
@@ -19,16 +50,16 @@ buildPythonPackage rec {
--replace 'arrow>=0.8.0,<1.0.0' 'arrow'
'';
disabledTests = [
# Test requires an API key
"test_raw_api"
"test_files_headers"
];
pythonImportsCheck = [ "b2sdk" ];
nativeBuildInputs = [ setuptools-scm ];
propagatedBuildInputs = [ requests arrow logfury tqdm ];
# requires unpackaged dependencies like liccheck
doCheck = false;
meta = with lib; {
description = "Client library and utilities for access to B2 Cloud Storage (backblaze).";
description = "Client library and utilities for access to B2 Cloud Storage (backblaze)";
homepage = "https://github.com/Backblaze/b2-sdk-python";
license = licenses.mit;
};
@@ -0,0 +1,37 @@
{ lib
, buildPythonPackage
, fetchFromGitHub
, numpy
, scipy
, pymatgen
, pytestCheckHook
}:
buildPythonPackage rec {
pname = "castepxbin";
version = "0.1.0";
src = fetchFromGitHub {
owner = "zhubonan";
repo = "castepxbin";
rev = "v${version}";
sha256 = "16wnd1mwhl204d1s3har2fhyhyjg86sypg00bj812dxk8zixxszf";
};
propagatedBuildInputs = [
numpy
scipy
pymatgen
];
checkInputs = [
pytestCheckHook
];
meta = with lib; {
description = "A collection of readers for CASTEP binary outputs";
homepage = "https://github.com/zhubonan/castepxbin";
license = licenses.mit;
maintainers = with maintainers; [ dotlambda ];
};
}
@@ -2,12 +2,10 @@
, buildPythonPackage
, fetchPypi
, dask
, numpy, toolz # dask[array]
, scipy
, pims
, pytest
, pytest-flake8
, scikitimage
, pytestCheckHook
}:
buildPythonPackage rec {
@@ -19,24 +17,17 @@ buildPythonPackage rec {
sha256 = "0bf7ea8dcd9d795505b498bd632394720c048f50761e23c574d9a6bacfb27cbb";
};
nativeBuildInputs = [ pytest-flake8 ];
propagatedBuildInputs = [ dask numpy toolz scipy pims ];
propagatedBuildInputs = [ dask scipy pims ];
prePatch = ''
substituteInPlace setup.cfg --replace "--flake8" ""
'';
checkInputs = [
pytest
pytestCheckHook
scikitimage
];
# ignore errors from newer versions of flake8
prePatch = ''
substituteInPlace setup.cfg \
--replace "docs/conf.py,versioneer.py" \
"docs/conf.py,versioneer.py,dask_image/ndfilters/_utils.py"
'';
# scikit.external is not exported
checkPhase = ''
pytest --ignore=tests/test_dask_image/
'';
pythonImportsCheck = [ "dask_image" ];
meta = with lib; {
@@ -1,38 +0,0 @@
{ lib
, buildPythonPackage
, fetchPypi
, chardet
, attrs
, pytestCheckHook
}:
buildPythonPackage rec {
pname = "debut";
version = "0.9.9";
src = fetchPypi {
inherit pname version;
sha256 = "a3a71e475295f4cf4292440c9c7303ebca0309d395536d2a7f86a5f4d7465dc1";
};
dontConfigure = true;
propagatedBuildInputs = [
chardet
attrs
];
checkInputs = [
pytestCheckHook
];
pythonImportsCheck = [
"debut"
];
meta = with lib; {
description = "Python library to parse Debian deb822-style control and copyright files ";
homepage = "https://github.com/nexB/debut";
license = with licenses; [ asl20 bsd3 mit ];
maintainers = teams.determinatesystems.members;
};
}
@@ -10,7 +10,7 @@
, gsettings-desktop-schemas
, fetchurl
, dbus
, xvfb_run
, xvfb-run
, wrapGAppsHook
# , fetchPypi
}:
@@ -33,7 +33,7 @@ buildPythonPackage {
./nix-support.patch
];
nativeBuildInputs = [ gobject-introspection dbus xvfb_run wrapGAppsHook ]; # for setup hooks
nativeBuildInputs = [ gobject-introspection dbus xvfb-run wrapGAppsHook ]; # for setup hooks
propagatedBuildInputs = [ at-spi2-core gtk3 pygobject3 pyatspi pycairo ];
strictDeps = false; # issue 56943
@@ -13,13 +13,13 @@
buildPythonPackage rec {
pname = "drf-nested-routers";
version = "0.92.5";
version = "0.93.3";
src = fetchFromGitHub {
owner = "alanjds";
repo = "drf-nested-routers";
rev = "v${version}";
sha256 = "1l1jza8xz6xcm3gwxh1k6pc8fs95cq3v751gxj497y1a83d26j8i";
sha256 = "1gmw6gwiqzfysx8qn7aan7xgkizxy64db94z30pm3bvn6jxv08si";
};
propagatedBuildInputs = [ django djangorestframework setuptools ];
@@ -46,11 +46,11 @@ buildPythonPackage rec {
To run gtimelog successfully on a system that does not have full GNOME 3
installed, the following NixOS options should be set:
- programs.dconf.enable = true;
- services.gnome3.gnome-keyring.enable = true;
- services.gnome.gnome-keyring.enable = true;
In addition, the following packages should be added to the environment:
- gnome3.adwaita-icon-theme
- gnome3.dconf
- gnome.adwaita-icon-theme
- gnome.dconf
'';
homepage = "https://gtimelog.org/";
license = licenses.gpl2Plus;
@@ -1,4 +1,13 @@
{ lib, stdenv, libusb1, udev, darwin, fetchPypi, buildPythonPackage, cython }:
{ lib
, stdenv
, buildPythonPackage
, fetchPypi
, xcbuild
, cython
, libusb1
, udev
, darwin
}:
buildPythonPackage rec {
pname = "hidapi";
@@ -9,18 +18,17 @@ buildPythonPackage rec {
sha256 = "a1170b18050bc57fae3840a51084e8252fd319c0fc6043d68c8501deb0e25846";
};
propagatedBuildInputs =
lib.optionals stdenv.isLinux [ libusb1 udev ] ++
lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [ AppKit CoreFoundation IOKit ]) ++
[ cython ];
nativeBuildInputs = lib.optionals stdenv.isDarwin [ xcbuild ];
propagatedBuildInputs = [ cython ]
++ lib.optionals stdenv.isLinux [ libusb1 udev ]
++ lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [ AppKit CoreFoundation IOKit ]);
# Fix the USB backend library lookup
postPatch = lib.optionalString stdenv.isLinux ''
libusb=${libusb1.dev}/include/libusb-1.0
test -d $libusb || { echo "ERROR: $libusb doesn't exist, please update/fix this build expression."; exit 1; }
sed -i -e "s|/usr/include/libusb-1.0|$libusb|" setup.py
'' + lib.optionalString stdenv.isDarwin ''
substituteInPlace setup.py --replace 'macos_sdk_path =' 'macos_sdk_path = "" #'
'';
pythonImportsCheck = [ "hid" ];
@@ -30,7 +38,7 @@ buildPythonPackage rec {
homepage = "https://github.com/trezor/cython-hidapi";
# license can actually be either bsd3 or gpl3
# see https://github.com/trezor/cython-hidapi/blob/master/LICENSE-orig.txt
license = licenses.bsd3;
license = with licenses; [ bsd3 gpl3Only ];
maintainers = with maintainers; [ np prusnak ];
};
}
@@ -1,29 +1,42 @@
{ lib
, buildPythonPackage
, fetchPypi
, fetchpatch
, isPy3k
, fetchPypi
, substituteAll
, ffmpeg
, python
}:
buildPythonPackage rec {
pname = "imageio-ffmpeg";
version = "0.4.2";
src = fetchPypi {
inherit pname version;
sha256 = "13b05b17a941a9f4a90b16910b1ffac159448cff051a153da8ba4b4343ffa195";
};
patches = [ (fetchpatch {
# Fixes compatibility with python3.9
# Should be included in the next release after 0.4.2
url = "https://github.com/imageio/imageio-ffmpeg/pull/43/commits/b90c39fe3d29418d67d953588ed9fdf4d848f811.patch";
sha256 = "0d9kf4w6ldwag3s2dr9zjin6wrj66fnl4fn8379ci4q4qfsqgx3f";
})];
version = "0.4.3";
disabled = !isPy3k;
# No test infrastructure in repository.
doCheck = false;
src = fetchPypi {
inherit pname version;
sha256 = "f826260a3207b872f1a4ba87ec0c8e02c00afba4fd03348a59049bdd8215841e";
};
patches = [
(substituteAll {
src = ./ffmpeg-path.patch;
ffmpeg = "${ffmpeg}/bin/ffmpeg";
})
];
checkPhase = ''
runHook preCheck
${python.interpreter} << EOF
from imageio_ffmpeg import get_ffmpeg_version
assert get_ffmpeg_version() == '${ffmpeg.version}'
EOF
runHook postCheck
'';
pythonImportsCheck = [ "imageio_ffmpeg" ];
meta = with lib; {
description = "FFMPEG wrapper for Python";
@@ -0,0 +1,39 @@
diff --git a/imageio_ffmpeg/_utils.py b/imageio_ffmpeg/_utils.py
index 1399cfd..c0eb9be 100644
--- a/imageio_ffmpeg/_utils.py
+++ b/imageio_ffmpeg/_utils.py
@@ -23,33 +23,7 @@ def get_ffmpeg_exe():
if exe:
return exe
- plat = get_platform()
-
- # 2. Try from here
- bin_dir = resource_filename("imageio_ffmpeg", "binaries")
- exe = os.path.join(bin_dir, FNAME_PER_PLATFORM.get(plat, ""))
- if exe and os.path.isfile(exe) and _is_valid_exe(exe):
- return exe
-
- # 3. Try binary from conda package
- # (installed e.g. via `conda install ffmpeg -c conda-forge`)
- if plat.startswith("win"):
- exe = os.path.join(sys.prefix, "Library", "bin", "ffmpeg.exe")
- else:
- exe = os.path.join(sys.prefix, "bin", "ffmpeg")
- if exe and os.path.isfile(exe) and _is_valid_exe(exe):
- return exe
-
- # 4. Try system ffmpeg command
- exe = "ffmpeg"
- if _is_valid_exe(exe):
- return exe
-
- # Nothing was found
- raise RuntimeError(
- "No ffmpeg exe could be found. Install ffmpeg on your system, "
- "or set the IMAGEIO_FFMPEG_EXE environment variable."
- )
+ return '@ffmpeg@'
def _popen_kwargs(prevent_sigint=False):
@@ -1,17 +1,12 @@
{ lib
, buildPythonPackage
, isPy27
, pathlib
, fetchPypi
, imageio-ffmpeg
, numpy
, pillow
, psutil
, imageio-ffmpeg
, pytest
, numpy
, isPy3k
, ffmpeg_3
, futures ? null
, enum34
, pytestCheckHook
}:
buildPythonPackage rec {
@@ -24,26 +19,21 @@ buildPythonPackage rec {
inherit pname version;
};
checkInputs = [ pytest psutil ] ++ lib.optionals isPy3k [
imageio-ffmpeg ffmpeg_3
];
propagatedBuildInputs = [ numpy pillow ];
propagatedBuildInputs = [
imageio-ffmpeg
numpy
pillow
];
checkPhase = ''
checkInputs = [
psutil
pytestCheckHook
];
preCheck = ''
export IMAGEIO_USERDIR="$TMP"
export IMAGEIO_NO_INTERNET="true"
export HOME="$(mktemp -d)"
py.test
'';
# For some reason, importing imageio also imports xml on Nix, see
# https://github.com/imageio/imageio/issues/395
# Also, there are tests that test the downloading of ffmpeg if it's not installed.
# "Uncomment" those by renaming.
postPatch = ''
substituteInPlace tests/test_meta.py --replace '"urllib",' "\"urllib\",\"xml\","
substituteInPlace tests/test_ffmpeg.py --replace 'test_get_exe_installed' 'get_exe_installed'
'';
meta = with lib; {
@@ -51,5 +41,4 @@ buildPythonPackage rec {
homepage = "http://imageio.github.io/";
license = licenses.bsd2;
};
}
@@ -1,36 +0,0 @@
{ lib
, buildPythonPackage
, html5lib
, six
, beautifulsoup4
, pkgs
}:
buildPythonPackage rec {
version = "0.1.0";
pname = "infoqscraper";
src = pkgs.fetchFromGitHub {
owner = "cykl";
repo = pname;
rev = "v${version}";
sha256 = "07mxp4mla7fwfc032f3mxrhjarnhkjqdxxibf9ba87c93z3dq8jj";
};
# requires network
doCheck = false;
buildInputs = [ html5lib ];
propagatedBuildInputs = [ six beautifulsoup4 pkgs.ffmpeg_3 pkgs.swftools pkgs.rtmpdump ];
meta = with lib; {
description = "Discover presentations and/or create a movie consisting of slides and audio track from an infoq url";
homepage = "https://github.com/cykl/infoqscraper/wiki";
license = licenses.mit;
maintainers = with maintainers; [ edwtjo ];
# infoq HTML has changed:
# https://github.com/cykl/infoqscraper/issues/29
broken = true;
};
}
@@ -3,7 +3,7 @@
, buildPythonPackage
, python
, pygobject3
, xvfb_run
, xvfb-run
, gobject-introspection
, gtk3
, pythonOlder
@@ -32,7 +32,7 @@ buildPythonPackage rec {
checkPhase = ''
runHook preCheck
${xvfb_run}/bin/xvfb-run -s '-screen 0 800x600x24' \
${xvfb-run}/bin/xvfb-run -s '-screen 0 800x600x24' \
${python.interpreter} nix_run_setup test
runHook postCheck
'';
@@ -3,7 +3,7 @@
, fetchFromGitHub
, pythonOlder
, msgpack
, nose
, pytestCheckHook
, numpy
, pydantic
, pymongo
@@ -31,7 +31,7 @@ buildPythonPackage rec {
];
checkInputs = [
nose
pytestCheckHook
numpy
pydantic
pymongo
@@ -42,12 +42,6 @@ buildPythonPackage rec {
--replace 'self.assertEqual("/usr/bin/find", which("/usr/bin/find"))' '#'
'';
checkPhase = ''
runHook preCheck
nosetests -v
runHook postCheck
'';
meta = with lib; {
description = "Serves as a complement to the Python standard library by providing a suite of tools to solve many common problems";
longDescription = "
@@ -1,6 +1,6 @@
{ lib
, buildPythonPackage
, fetchPypi
, fetchFromGitHub
, six
, beautifulsoup4
, lxml
@@ -8,11 +8,15 @@
buildPythonPackage rec {
pname = "ofxparse";
version = "0.20";
version = "unstable-2020-02-05";
src = fetchPypi {
inherit pname version;
sha256 = "0zn3grc6xhgzcc81qc3dxkkwk731cjjqqhb46smw12lk09cdnigb";
# The newer changes haven't been released yet and ledger-autosync
# depends on them:
src = fetchFromGitHub {
owner = "jseutter";
repo = "ofxparse";
rev = "3236cfd96434feb6bc79a8b66f3400f18e2ad3c4";
sha256 = "1rkp174102q7hwjrg3na0qnfd612xb3r360b9blkbprjhzxy7gr7";
};
propagatedBuildInputs = [ six beautifulsoup4 lxml ];
@@ -0,0 +1,44 @@
{ lib
, buildPythonPackage
, fetchPypi
, pytestCheckHook
, typer
, dataclasses
, smart_open
, pytest
, mock
, google-cloud-storage
}:
buildPythonPackage rec {
pname = "pathy";
version = "0.5.2";
src = fetchPypi {
inherit pname version;
sha256 = "sha256-nb8my/5rkc7thuHnXZHe1Hg8j+sLBlYyJcLHWrrKZ5M=";
};
propagatedBuildInputs = [ smart_open typer google-cloud-storage ];
postPatch = ''
substituteInPlace requirements.txt \
--replace "smart-open>=2.2.0,<4.0.0" "smart-open>=2.2.0"
'';
checkInputs = [ pytestCheckHook mock ];
# Exclude tests that require provider credentials
pytestFlagsArray = [
"--ignore=pathy/_tests/test_clients.py"
"--ignore=pathy/_tests/test_gcs.py"
"--ignore=pathy/_tests/test_s3.py"
];
meta = with lib; {
description = "A Path interface for local and cloud bucket storage";
homepage = "https://github.com/justindujardin/pathy";
license = licenses.asl20;
maintainers = with maintainers; [ melling ];
};
}
@@ -1,4 +1,4 @@
{ lib, fetchurl, pkg-config, buildPythonPackage, isPy3k, at-spi2-core, pygobject3, gnome3 }:
{ lib, fetchurl, pkg-config, buildPythonPackage, isPy3k, at-spi2-core, pygobject3, gnome }:
buildPythonPackage rec {
pname = "pyatspi";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
disabled = !isPy3k;
passthru = {
updateScript = gnome3.updateScript {
updateScript = gnome.updateScript {
packageName = pname;
attrPath = "python3.pkgs.${pname}";
versionPolicy = "odd-unstable";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
description = "Python library for the BrowserID Protocol";
homepage = "https://github.com/mozilla/PyBrowserID";
license = licenses.mpl20;
maintainers = with maintainers; [ worldofpeace ];
maintainers = with maintainers; [ ];
};
}
@@ -1,5 +1,5 @@
{ lib, stdenv, fetchurl, buildPythonPackage, pkg-config, glib, gobject-introspection,
pycairo, cairo, which, ncurses, meson, ninja, isPy3k, gnome3 }:
pycairo, cairo, which, ncurses, meson, ninja, isPy3k, gnome }:
buildPythonPackage rec {
pname = "pygobject";
@@ -12,7 +12,7 @@
, meson
, ninja
, isPy3k
, gnome3
, gnome
}:
buildPythonPackage rec {
@@ -50,7 +50,7 @@ buildPythonPackage rec {
];
passthru = {
updateScript = gnome3.updateScript {
updateScript = gnome.updateScript {
packageName = pname;
attrPath = "python3.pkgs.${pname}3";
versionPolicy = "odd-unstable";
@@ -1,4 +1,5 @@
{ lib
, stdenv
, fetchPypi
, buildPythonPackage
, Mako
@@ -12,14 +13,18 @@
, opencl-headers
, ocl-icd
, pybind11
, mesa_drivers
}:
buildPythonPackage rec {
let
os-specific-buildInputs =
if stdenv.isDarwin then [ mesa_drivers.dev ] else [ ocl-icd ];
in buildPythonPackage rec {
pname = "pyopencl";
version = "2021.1.4";
checkInputs = [ pytest ];
buildInputs = [ opencl-headers ocl-icd pybind11 ];
buildInputs = [ opencl-headers pybind11 ] ++ os-specific-buildInputs;
propagatedBuildInputs = [ numpy cffi pytools decorator appdirs six Mako ];
@@ -1,5 +1,5 @@
{ lib, buildPythonPackage, fetchFromGitHub
, pillow, xlib, six, xvfb_run, sphinx }:
, pillow, xlib, six, xvfb-run, sphinx }:
buildPythonPackage rec {
pname = "pystray";
@@ -14,7 +14,7 @@ buildPythonPackage rec {
nativeBuildInputs = [ sphinx ];
propagatedBuildInputs = [ pillow xlib six ];
checkInputs = [ xvfb_run ];
checkInputs = [ xvfb-run ];
checkPhase = ''
rm tests/icon_tests.py # test needs user input
@@ -6,7 +6,7 @@
, pytest
, pythonOlder
, qt5
, xvfb_run
, xvfb-run
}:
buildPythonPackage rec {
@@ -31,7 +31,7 @@ buildPythonPackage rec {
checkInputs = [
pytest
xvfb_run
xvfb-run
];
checkPhase = ''
@@ -0,0 +1,20 @@
{ lib, buildPythonPackage, fetchPypi, docutils, }:
buildPythonPackage rec {
pname = "rst2ansi";
version = "0.1.5";
src = fetchPypi {
inherit pname version;
sha256 = "sha256-Gxf7mmKNQPV5M60aOqlSNGREvgaUaVCOc+lQYNoz/m8=";
};
propagatedBuildInputs = [ docutils ];
meta = with lib; {
description = "A rst converter to ansi-decorated console output";
homepage = "https://github.com/Snaipe/python-rst-to-ansi";
license = licenses.mit;
maintainers = with maintainers; [ vojta001 ];
};
}
@@ -7,6 +7,7 @@
, blis
, catalogue
, cymem
, jinja2
, jsonschema
, murmurhash
, numpy
@@ -16,8 +17,12 @@
, requests
, setuptools
, srsly
, spacy-legacy
, thinc
, wasabi
, packaging
, pathy
, pydantic
}:
buildPythonPackage rec {
@@ -33,6 +38,7 @@ buildPythonPackage rec {
blis
catalogue
cymem
jinja2
jsonschema
murmurhash
numpy
@@ -41,8 +47,12 @@ buildPythonPackage rec {
requests
setuptools
srsly
spacy-legacy
thinc
wasabi
packaging
pathy
pydantic
] ++ lib.optional (pythonOlder "3.4") pathlib;
checkInputs = [
@@ -60,7 +70,8 @@ buildPythonPackage rec {
--replace "catalogue>=0.0.7,<1.1.0" "catalogue>=0.0.7,<3.0" \
--replace "plac>=0.9.6,<1.2.0" "plac>=0.9.6,<2.0" \
--replace "srsly>=1.0.2,<1.1.0" "srsly>=1.0.2,<3.0" \
--replace "thinc>=7.4.1,<7.5.0" "thinc>=7.4.1,<8"
--replace "thinc>=7.4.1,<7.5.0" "thinc>=7.4.1,<8" \
--replace "pydantic>=1.7.1,<1.8.0" "pydantic>=1.7.1,<1.8.3"
'';
pythonImportsCheck = [ "spacy" ];
@@ -0,0 +1,26 @@
{ lib
, fetchPypi
, buildPythonPackage
, pytestCheckHook
}:
buildPythonPackage rec {
pname = "spacy-legacy";
version = "3.0.5";
src = fetchPypi {
inherit pname version;
sha256 = "sha256-Uy94rjFllSj622RTzd6UJaQmIniCw4gpeq/X57QcIpA=";
};
# checkInputs = [ pytestCheckHook spacy ];
doCheck = false;
pythonImportsCheck = [ "spacy_legacy" ];
meta = with lib; {
description = "A Path interface for local and cloud bucket storage";
homepage = "https://github.com/justindujardin/pathy";
license = licenses.asl20;
maintainers = with maintainers; [ melling ];
};
}
@@ -1,24 +1,18 @@
{ lib
, buildPythonPackage
, fetchPypi
, pytest
, simplejson
, mock
, glibcLocales
, html5lib
, pythonOlder
, enum34
, python
, docutils
, jinja2
, pygments
, alabaster
, fetchFromGitHub
# propagatedBuildInputs
, Babel
, snowballstemmer
, six
, whoosh
, alabaster
, docutils
, imagesize
, jinja2
, packaging
, pygments
, requests
, setuptools
, snowballstemmer
, sphinxcontrib-applehelp
, sphinxcontrib-devhelp
, sphinxcontrib-htmlhelp
@@ -26,56 +20,70 @@
, sphinxcontrib-qthelp
, sphinxcontrib-serializinghtml
, sphinxcontrib-websupport
, typing ? null
, setuptools
, packaging
# check phase
, html5lib
, imagemagick
, pytestCheckHook
, typed-ast
}:
buildPythonPackage rec {
pname = "sphinx";
version = "3.5.4";
src = fetchPypi {
pname = "Sphinx";
inherit version;
sha256 = "19010b7b9fa0dc7756a6e105b2aacd3a80f798af3c25c273be64d7beeb482cb1";
disabled = pythonOlder "3.5";
src = fetchFromGitHub {
owner = "sphinx-doc";
repo = pname;
rev = "v${version}";
sha256 = "1xjii3dl01rq8x2bsxc6zywiy1s7arfgxrg5l8ml54w1748shadd";
};
LC_ALL = "en_US.UTF-8";
checkInputs = [ pytest ];
buildInputs = [ simplejson mock glibcLocales html5lib ] ++ lib.optional (pythonOlder "3.4") enum34;
# Disable two tests that require network access.
checkPhase = ''
cd tests; ${python.interpreter} run.py --ignore py35 -k 'not test_defaults and not test_anchors_ignored'
'';
propagatedBuildInputs = [
docutils
jinja2
pygments
alabaster
Babel
alabaster
docutils
imagesize
jinja2
packaging
pygments
requests
setuptools
snowballstemmer
six
whoosh
imagesize
requests
sphinxcontrib-applehelp
sphinxcontrib-devhelp
sphinxcontrib-htmlhelp
sphinxcontrib-jsmath
sphinxcontrib-qthelp
sphinxcontrib-serializinghtml
# extra[docs]
sphinxcontrib-websupport
] ++ lib.optional (pythonOlder "3.5") typing;
];
# Lots of tests. Needs network as well at some point.
doCheck = false;
checkInputs = [
imagemagick
html5lib
pytestCheckHook
] ++ lib.optionals (pythonOlder "3.8") [
typed-ast
];
meta = {
description = "A tool that makes it easy to create intelligent and beautiful documentation for Python projects";
disabledTests = [
# requires network access
"test_anchors_ignored"
"test_defaults"
"test_defaults_json"
"test_latex_images"
];
meta = with lib; {
description = "Python documentation generator";
longDescription = ''
A tool that makes it easy to create intelligent and beautiful
documentation for Python projects
'';
homepage = "https://www.sphinx-doc.org";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [ nand0p ];
license = licenses.bsd3;
maintainers = with maintainers; [ nand0p ];
};
}
@@ -8,7 +8,6 @@
, pandas
, tables
, git
, ffmpeg_3
, scikitimage
, matplotlib
, qdarkstyle
@@ -59,7 +58,6 @@ buildPythonPackage rec {
pandas
tables
git
ffmpeg_3
scikitimage
matplotlib
qdarkstyle
@@ -79,7 +77,7 @@ buildPythonPackage rec {
meta = {
homepage = "https://github.com/portugueslab/stytra";
description = "A modular package to control stimulation and track behaviour";
license = lib.licenses.gpl3;
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [ tbenst ];
};
}
@@ -1,37 +1,44 @@
{ lib, buildPythonPackage, fetchFromGitHub, isPy27
{ lib, buildPythonPackage, fetchFromGitHub
, pythonOlder
, h5py
, matplotlib
, numpy
, phonopy
, pymatgen
, pytest
, scipy
, seekpath
, spglib
, castepxbin
, pytestCheckHook
}:
buildPythonPackage rec {
pname = "sumo";
version = "2.2.1";
version = "2.2.4";
disabled = pythonOlder "3.6";
# No tests in Pypi tarball
src = fetchFromGitHub {
owner = "SMTG-UCL";
repo = "sumo";
rev = "v${version}";
sha256 = "0r88f5w33h9b0mv7shlqc4przwvas5ycgndvl91wqjnm3b2s3ix0";
sha256 = "051353gsxmh4qnabshfnc00mmzdbh1fgk1xdfnsfgcnijxgw25bb";
};
propagatedBuildInputs = [ numpy scipy spglib pymatgen h5py matplotlib seekpath phonopy ];
propagatedBuildInputs = [
spglib
numpy
scipy
h5py
pymatgen
phonopy
matplotlib
seekpath
castepxbin
];
checkInputs = [ pytest ];
checkPhase = ''
pytest .
'';
# tests have type annotations, can only run on 3.5+
doCheck = (!isPy27);
checkInputs = [ pytestCheckHook ];
meta = with lib; {
description = "Toolkit for plotting and analysis of ab initio solid-state calculation data";
@@ -0,0 +1,40 @@
From d944d8fa6cb6d1667f3e4c4e0cff4c4b2a7c0a30 Mon Sep 17 00:00:00 2001
From: Cole Helbling <cole.e.helbling@outlook.com>
Date: Fri, 7 May 2021 11:00:46 -0700
Subject: [PATCH] Replace `debut` with `debian-inspector`
---
requirements.in | 2 +-
tern/analyze/common.py | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/requirements.in b/requirements.in
index edd90ab..5135841 100644
--- a/requirements.in
+++ b/requirements.in
@@ -12,6 +12,6 @@ requests
stevedore
pbr
dockerfile-parse
-debut
+debian-inspector
regex
GitPython
diff --git a/tern/analyze/common.py b/tern/analyze/common.py
index 6962404..0f5e77d 100644
--- a/tern/analyze/common.py
+++ b/tern/analyze/common.py
@@ -19,8 +19,8 @@ from tern.utils import cache
from tern.utils import constants
from tern.utils import general
from tern.utils import rootfs
-from debut import debcon
-from debut import copyright as debut_copyright
+from debian_inspector import debcon
+from debian_inspector import copyright as debut_copyright
# global logger
logger = logging.getLogger(constants.logger_name)
--
2.31.1
@@ -7,7 +7,7 @@
, requests
, stevedore
, pbr
, debut
, debian-inspector
, regex
, GitPython
, prettytable
@@ -22,6 +22,14 @@ buildPythonPackage rec {
sha256 = "606c62944991b2cbcccf3f5353be693305d6d7d318c3865b9ecca49dbeab2727";
};
patches = [
# debut was renamed to debian-inspector
# https://github.com/tern-tools/tern/pull/962
# NOTE: Has to be in-tree because the upstream patch doesn't apply cleanly
# to the PyPi source.
./0001-Replace-debut-with-debian-inspector.patch
];
preBuild = ''
cp requirements.{in,txt}
'';
@@ -36,7 +44,7 @@ buildPythonPackage rec {
dockerfile-parse
requests
stevedore
debut
debian-inspector
regex
GitPython
prettytable
@@ -1,4 +1,4 @@
{ lib, buildPythonPackage, fetchPypi, isPy3k, python3, xvfb_run
{ lib, buildPythonPackage, fetchPypi, isPy3k, python3, xvfb-run
, wrapGAppsHook, gobject-introspection, pygobject3, graphviz, gtk3, numpy }:
buildPythonPackage rec {
@@ -13,7 +13,7 @@ buildPythonPackage rec {
disabled = !isPy3k;
nativeBuildInputs = [ wrapGAppsHook ];
propagatedBuildInputs = [ gobject-introspection pygobject3 graphviz gtk3 numpy ];
checkInputs = [ xvfb_run ];
checkInputs = [ xvfb-run ];
checkPhase = ''
xvfb-run -s '-screen 0 800x600x24' ${python3.interpreter} nix_run_setup test