From 28086cf1361c86109c8e0e1c59c5704a5a663f30 Mon Sep 17 00:00:00 2001 From: Ralf Grubenmann Date: Thu, 1 Jun 2023 15:49:38 +0200 Subject: [PATCH] fix(cli): fix special paths in workflow files and bump toil/cwltool (#3489) --- poetry.lock | 299 +++++++++++++++++++++++--- pyproject.toml | 6 +- renku/command/view_model/graph.py | 5 +- renku/core/migration/m_0005__2_cwl.py | 10 +- renku/core/workflow/converters/cwl.py | 2 +- renku/data/pre-commit.sh | 15 +- renku/infrastructure/repository.py | 8 +- tests/cli/test_workflow.py | 14 +- 8 files changed, 299 insertions(+), 60 deletions(-) diff --git a/poetry.lock b/poetry.lock index 0515c2602a..e9346d5dc8 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,9 +1,10 @@ -# This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand. +# This file is automatically @generated by Poetry and should not be changed by hand. [[package]] name = "addict" version = "2.4.0" description = "Addict is a dictionary whose items can be set using both attribute and item syntax." +category = "main" optional = false python-versions = "*" files = [ @@ -15,6 +16,7 @@ files = [ name = "alabaster" version = "0.7.13" description = "A configurable sidebar-enabled Sphinx theme" +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -26,6 +28,7 @@ files = [ name = "ansicon" version = "1.89.0" description = "Python wrapper for loading Jason Hood's ANSICON" +category = "main" optional = false python-versions = "*" files = [ @@ -37,6 +40,7 @@ files = [ name = "apispec" version = "6.3.0" description = "A pluggable API specification generator. Currently supports the OpenAPI Specification (f.k.a. the Swagger specification)." +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -78,6 +82,7 @@ marshmallow-oneofschema = "*" name = "apispec-webframeworks" version = "0.5.2" description = "Web framework plugins for apispec." +category = "main" optional = true python-versions = ">=3.6" files = [ @@ -97,6 +102,7 @@ tests = ["Flask (==1.1.1)", "bottle (==0.12.17)", "mock", "pytest", "tornado"] name = "appdirs" version = "1.4.4" description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +category = "main" optional = false python-versions = "*" files = [ @@ -108,6 +114,7 @@ files = [ name = "argcomplete" version = "3.0.8" description = "Bash tab completion for argparse" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -122,6 +129,7 @@ test = ["coverage", "mypy", "pexpect", "ruff", "wheel"] name = "async-timeout" version = "4.0.2" description = "Timeout context manager for asyncio programs" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -133,6 +141,7 @@ files = [ name = "attrs" version = "23.1.0" description = "Classes Without Boilerplate" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -151,6 +160,7 @@ tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pyte name = "babel" version = "2.12.1" description = "Internationalization utilities" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -165,6 +175,7 @@ pytz = {version = ">=2015.7", markers = "python_version < \"3.9\""} name = "bagit" version = "1.8.1" description = "Create and validate BagIt packages" +category = "main" optional = false python-versions = "*" files = [ @@ -176,6 +187,7 @@ files = [ name = "bashlex" version = "0.16" description = "Python parser for bash" +category = "main" optional = false python-versions = ">=2.7, !=3.0, !=3.1, !=3.2, !=3.3, !=3.4" files = [ @@ -187,6 +199,7 @@ files = [ name = "black" version = "23.1.0" description = "The uncompromising code formatter." +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -236,6 +249,7 @@ uvloop = ["uvloop (>=0.15.2)"] name = "blessed" version = "1.20.0" description = "Easy, practical library for making terminal apps, by providing an elegant, well-documented interface to Colors, Keyboard input, and screen Positioning capabilities." +category = "main" optional = false python-versions = ">=2.7" files = [ @@ -252,6 +266,7 @@ wcwidth = ">=0.1.4" name = "blinker" version = "1.6.2" description = "Fast, simple object-to-object and broadcast signaling" +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -263,6 +278,7 @@ files = [ name = "btrees" version = "5.0" description = "Scalable persistent object containers" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -311,6 +327,7 @@ zodb = ["ZODB"] name = "cachecontrol" version = "0.12.11" description = "httplib2 caching for requests" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -331,6 +348,7 @@ redis = ["redis (>=2.10.5)"] name = "cachetools" version = "5.3.1" description = "Extensible memoizing collections and decorators" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -342,6 +360,7 @@ files = [ name = "calamus" version = "0.4.2" description = "calamus is a library built on top of marshmallow to allow (de-)Serialization of Python classes to JSON-LD." +category = "main" optional = false python-versions = ">=3.7.1,<4.0.0" files = [ @@ -362,6 +381,7 @@ docs = ["Jinja2 (>=3.0.0,<3.1.0)", "sphinx (>=3.0.3,<4.0.0)", "sphinx-rtd-theme name = "certifi" version = "2023.5.7" description = "Python package for providing Mozilla's CA Bundle." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -373,6 +393,7 @@ files = [ name = "cffi" version = "1.15.1" description = "Foreign Function Interface for Python calling C code." +category = "main" optional = false python-versions = "*" files = [ @@ -449,6 +470,7 @@ pycparser = "*" name = "cfgv" version = "3.3.1" description = "Validate configuration and produce human readable error messages." +category = "dev" optional = false python-versions = ">=3.6.1" files = [ @@ -460,6 +482,7 @@ files = [ name = "charset-normalizer" version = "3.1.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -544,6 +567,7 @@ files = [ name = "circus" version = "0.18.0" description = "Circus is a program that will let you run and watch multiple processes and sockets." +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -563,6 +587,7 @@ test = ["coverage", "flake8 (==2.1.0)", "gevent", "mock", "nose2", "pyyaml", "to name = "click" version = "8.1.3" description = "Composable command line interface toolkit" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -577,6 +602,7 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} name = "click-option-group" version = "0.5.5" description = "Option groups missing in Click" +category = "main" optional = false python-versions = ">=3.6,<4" files = [ @@ -596,6 +622,7 @@ tests-cov = ["coverage (<6)", "coveralls", "pytest", "pytest-cov"] name = "click-plugins" version = "1.1.1" description = "An extension module for click to enable registering CLI commands via setuptools entry-points." +category = "main" optional = false python-versions = "*" files = [ @@ -613,6 +640,7 @@ dev = ["coveralls", "pytest (>=3.6)", "pytest-cov", "wheel"] name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -624,6 +652,7 @@ files = [ name = "coloredlogs" version = "15.0.1" description = "Colored terminal output for Python's logging module" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -641,6 +670,7 @@ cron = ["capturer (>=2.4)"] name = "coverage" version = "6.4.4" description = "Code coverage measurement for Python" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -706,6 +736,7 @@ toml = ["tomli"] name = "crontab" version = "1.0.1" description = "Parse and use crontab schedules in Python" +category = "main" optional = true python-versions = "*" files = [ @@ -716,6 +747,7 @@ files = [ name = "cryptography" version = "40.0.2" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -757,6 +789,7 @@ tox = ["tox"] name = "cwl-upgrader" version = "1.2.7" description = "Common Workflow Language standalone document upgrader" +category = "main" optional = false python-versions = ">=3.6, <4" files = [ @@ -775,61 +808,67 @@ setuptools = "*" [[package]] name = "cwl-utils" -version = "0.17" +version = "0.27" description = "" +category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "cwl-utils-0.17.tar.gz", hash = "sha256:479b7d189dc16e03b607dfe17046e943fc695ebeefba51408f37ca11292fe469"}, - {file = "cwl_utils-0.17-py3-none-any.whl", hash = "sha256:0ce3fb5b91eeb89d007870ca93b717a7321f33b89195663139fb02a64f9b4072"}, + {file = "cwl-utils-0.27.tar.gz", hash = "sha256:9b7e34665c36804793cbcaeb9fe0f2d70958b60ccc4e20d0666fefe016b5ee5f"}, + {file = "cwl_utils-0.27-py3-none-any.whl", hash = "sha256:59c9d1da842257ebbeb22622e5c5e0c3f63287460dfd99a33d8478f500b46014"}, ] [package.dependencies] -CacheControl = "*" +CacheControl = "<0.13" cwl-upgrader = ">=1.2.3" packaging = "*" rdflib = "*" requests = "*" +"ruamel.yaml" = {version = ">=0.17.6,<0.17.27", markers = "python_version >= \"3.7\""} schema-salad = ">=8.3.20220825114525,<9" +urllib3 = "<2" [package.extras] pretty = ["cwlformat"] [[package]] name = "cwltool" -version = "3.1.20220628170238" +version = "3.1.20230425144158" description = "Common workflow language reference implementation" +category = "main" optional = false python-versions = ">=3.6, <4" files = [ - {file = "cwltool-3.1.20220628170238-py3-none-any.whl", hash = "sha256:37b8ce96a72a40a232a04c0f49e8053703aafbe885a239eff57512c66fcfb4c3"}, - {file = "cwltool-3.1.20220628170238.tar.gz", hash = "sha256:fbac3fa443109fcbb48e7174e02963fddb16542f1b43fa54c72dd000e102296b"}, + {file = "cwltool-3.1.20230425144158-py3-none-any.whl", hash = "sha256:a4fcf698924d8108be4c0ab459923080b3ad42b27e2c9e8d77ee602b48dd8e0b"}, + {file = "cwltool-3.1.20230425144158.tar.gz", hash = "sha256:b6307c536ec94a94cb9215a26057ea792b907144ca57b015699cb180ca309086"}, ] [package.dependencies] argcomplete = "*" bagit = ">=1.6.4" coloredlogs = "*" +cwl-utils = ">=0.22" mypy-extensions = "*" prov = "1.5.1" psutil = ">=5.6.6" pydot = ">=1.4.1" pyparsing = "!=3.0.2" -rdflib = ">=4.2.2,<6.2.0" +rdflib = ">=4.2.2,<6.4.0" requests = ">=2.6.1" "ruamel.yaml" = ">=0.15,<0.17.22" -schema-salad = ">=8.2.20211104054942,<9" +schema-salad = ">=8.4,<9" setuptools = "*" shellescape = ">=3.4.1,<3.9" typing-extensions = "*" [package.extras] -deps = ["galaxy-tool-util (>=21.1.0)"] +deps = ["galaxy-tool-util (>=22.1.2,<23)"] [[package]] name = "deal" version = "4.24.1" description = "**Deal** is a Python library for [design by contract][wiki] (DbC) programming." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -839,7 +878,7 @@ files = [ [package.extras] all = ["astroid (>=2.11.0)", "deal-solver", "hypothesis", "pygments", "typeguard (>=3.0.0)", "vaa (>=0.2.1)"] -docs = ["m2r2", "myst-parser", "sphinx (==3.5.*)", "sphinx-rtd-theme (==0.5.*)"] +docs = ["m2r2", "myst-parser", "sphinx (>=3.5.0,<3.6.0)", "sphinx-rtd-theme (>=0.5.0,<0.6.0)"] integration = ["astroid (>=2.11.0)", "deal-solver", "flake8", "hypothesis", "marshmallow", "pygments", "sphinx (>=4.5.0)", "typeguard", "vaa (>=0.2.1)"] lint = ["deal-solver", "flake8", "flake8-commas", "flake8-quotes", "hypothesis", "isort", "mypy (>=0.900)", "mypy_test (>=0.1.1)", "pygments", "typeguard", "unify"] test = ["coverage-conditional-plugin", "coverage[toml]", "docstring-parser", "pytest", "pytest-cov", "urllib3"] @@ -848,6 +887,7 @@ test = ["coverage-conditional-plugin", "coverage[toml]", "docstring-parser", "py name = "deepdiff" version = "6.3.0" description = "Deep Difference and Search of any Python object/data. Recreate objects by adding adding deltas to each other." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -866,6 +906,7 @@ optimize = ["orjson"] name = "deepmerge" version = "1.0.1" description = "a toolset to deeply merge python dictionaries." +category = "main" optional = false python-versions = "*" files = [ @@ -877,6 +918,7 @@ files = [ name = "dill" version = "0.3.6" description = "serialize all of python" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -891,6 +933,7 @@ graph = ["objgraph (>=1.7.2)"] name = "distlib" version = "0.3.6" description = "Distribution utilities" +category = "dev" optional = false python-versions = "*" files = [ @@ -902,6 +945,7 @@ files = [ name = "docker" version = "5.0.3" description = "A Python library for the Docker Engine API." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -922,6 +966,7 @@ tls = ["cryptography (>=3.4.7)", "idna (>=2.0.0)", "pyOpenSSL (>=17.5.0)"] name = "docutils" version = "0.16" description = "Docutils -- Python Documentation Utilities" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -933,6 +978,7 @@ files = [ name = "dunamai" version = "1.17.0" description = "Dynamic version generation" +category = "main" optional = false python-versions = ">=3.5,<4.0" files = [ @@ -947,6 +993,7 @@ packaging = ">=20.9" name = "enlighten" version = "1.11.2" description = "Enlighten Progress Bar" +category = "main" optional = false python-versions = "*" files = [ @@ -962,6 +1009,7 @@ prefixed = ">=0.3.2" name = "execnet" version = "1.9.0" description = "execnet: rapid multi-Python deployment" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -976,6 +1024,7 @@ testing = ["pre-commit"] name = "fakeredis" version = "2.11.1" description = "Fake implementation of redis API for testing purposes." +category = "dev" optional = false python-versions = ">=3.7,<4.0" files = [ @@ -996,6 +1045,7 @@ lua = ["lupa (>=1.14,<2.0)"] name = "filelock" version = "3.12.0" description = "A platform independent file lock." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1011,6 +1061,7 @@ testing = ["covdefaults (>=2.3)", "coverage (>=7.2.3)", "diff-cover (>=7.5)", "p name = "flake8" version = "6.0.0" description = "the modular source code checker: pep8 pyflakes and co" +category = "dev" optional = false python-versions = ">=3.8.1" files = [ @@ -1027,6 +1078,7 @@ pyflakes = ">=3.0.0,<3.1.0" name = "flake8-pyproject" version = "1.2.2" description = "Flake8 plug-in loading the configuration from pyproject.toml" +category = "dev" optional = false python-versions = ">= 3.6" files = [ @@ -1044,6 +1096,7 @@ dev = ["pyTest", "pyTest-cov"] name = "flaky" version = "3.7.0" description = "Plugin for nose or pytest that automatically reruns flaky tests." +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -1055,6 +1108,7 @@ files = [ name = "flask" version = "2.2.5" description = "A simple framework for building complex web applications." +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -1077,6 +1131,7 @@ dotenv = ["python-dotenv"] name = "freezegun" version = "1.2.2" description = "Let your Python tests travel through time" +category = "main" optional = true python-versions = ">=3.6" files = [ @@ -1091,6 +1146,7 @@ python-dateutil = ">=2.7" name = "frozendict" version = "2.3.8" description = "A simple immutable dictionary" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1137,6 +1193,7 @@ files = [ name = "future" version = "0.18.3" description = "Clean single-source support for Python 3 and 2" +category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -1147,6 +1204,7 @@ files = [ name = "gitdb" version = "4.0.10" description = "Git Object Database" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1161,6 +1219,7 @@ smmap = ">=3.0.1,<6" name = "gitpython" version = "3.1.27" description = "GitPython is a python library used to interact with Git repositories" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1175,6 +1234,7 @@ gitdb = ">=4.0.1,<5" name = "grandalf" version = "0.8" description = "Graph and drawing algorithms framework" +category = "main" optional = false python-versions = "*" files = [ @@ -1192,6 +1252,7 @@ full = ["numpy", "ply"] name = "gunicorn" version = "20.1.0" description = "WSGI HTTP Server for UNIX" +category = "main" optional = true python-versions = ">=3.5" files = [ @@ -1212,6 +1273,7 @@ tornado = ["tornado (>=0.2)"] name = "humanfriendly" version = "10.0" description = "Human friendly output for text interfaces using Python" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -1226,6 +1288,7 @@ pyreadline3 = {version = "*", markers = "sys_platform == \"win32\" and python_ve name = "humanize" version = "4.0.0" description = "Python humanize utilities" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1240,6 +1303,7 @@ tests = ["freezegun", "pytest", "pytest-cov"] name = "identify" version = "2.5.24" description = "File identification library for Python" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1254,6 +1318,7 @@ license = ["ukkonen"] name = "idna" version = "3.4" description = "Internationalized Domain Names in Applications (IDNA)" +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -1265,6 +1330,7 @@ files = [ name = "imagesize" version = "1.4.1" description = "Getting image size from png/jpeg/jpeg2000/gif file" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -1276,6 +1342,7 @@ files = [ name = "importlib-metadata" version = "6.6.0" description = "Read metadata from Python packages" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1295,6 +1362,7 @@ testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3)", "packag name = "importlib-resources" version = "5.12.0" description = "Read resources from Python packages" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1313,6 +1381,7 @@ testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-chec name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1324,6 +1393,7 @@ files = [ name = "inject" version = "4.3.1" description = "Python dependency injection framework" +category = "main" optional = false python-versions = "*" files = [ @@ -1334,6 +1404,7 @@ files = [ name = "isodate" version = "0.6.1" description = "An ISO 8601 date/time/duration parser and formatter" +category = "main" optional = false python-versions = "*" files = [ @@ -1348,6 +1419,7 @@ six = "*" name = "isort" version = "5.10.1" description = "A Python utility / library to sort Python imports." +category = "dev" optional = false python-versions = ">=3.6.1,<4.0" files = [ @@ -1365,6 +1437,7 @@ requirements-deprecated-finder = ["pip-api", "pipreqs"] name = "itsdangerous" version = "2.1.2" description = "Safely pass data to untrusted environments and back." +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -1376,6 +1449,7 @@ files = [ name = "jinja2" version = "3.1.2" description = "A very fast and expressive template engine." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1393,6 +1467,7 @@ i18n = ["Babel (>=2.7)"] name = "jinxed" version = "1.2.0" description = "Jinxed Terminal Library" +category = "main" optional = false python-versions = "*" files = [ @@ -1407,6 +1482,7 @@ ansicon = {version = "*", markers = "platform_system == \"Windows\""} name = "lazy-object-proxy" version = "1.9.0" description = "A fast and thorough lazy object proxy." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1452,6 +1528,7 @@ files = [ name = "lockfile" version = "0.12.2" description = "Platform-independent file locking module" +category = "main" optional = false python-versions = "*" files = [ @@ -1463,6 +1540,7 @@ files = [ name = "lupa" version = "1.14.1" description = "Python wrapper around Lua and LuaJIT" +category = "dev" optional = false python-versions = "*" files = [ @@ -1547,6 +1625,7 @@ files = [ name = "lxml" version = "4.9.2" description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API." +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, != 3.4.*" files = [ @@ -1639,6 +1718,7 @@ source = ["Cython (>=0.29.7)"] name = "markdown-it-py" version = "2.2.0" description = "Python port of markdown-it. Markdown parsing, done right!" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1663,6 +1743,7 @@ testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] name = "markupsafe" version = "2.1.2" description = "Safely add untrusted strings to HTML/XML markup." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1722,6 +1803,7 @@ files = [ name = "marshmallow" version = "3.19.0" description = "A lightweight library for converting complex datatypes to and from native Python datatypes." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1742,6 +1824,7 @@ tests = ["pytest", "pytz", "simplejson"] name = "marshmallow-oneofschema" version = "3.0.1" description = "marshmallow multiplexing schema" +category = "main" optional = true python-versions = ">=3.6" files = [ @@ -1761,6 +1844,7 @@ tests = ["mock", "pytest"] name = "mccabe" version = "0.7.0" description = "McCabe checker, plugin for flake8" +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -1772,6 +1856,7 @@ files = [ name = "mdurl" version = "0.1.2" description = "Markdown URL utilities" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1783,6 +1868,7 @@ files = [ name = "mistune" version = "2.0.5" description = "A sane Markdown parser with useful plugins and renderers" +category = "main" optional = false python-versions = "*" files = [ @@ -1794,6 +1880,7 @@ files = [ name = "msgpack" version = "1.0.5" description = "MessagePack serializer" +category = "main" optional = false python-versions = "*" files = [ @@ -1866,6 +1953,7 @@ files = [ name = "multidict" version = "6.0.4" description = "multidict implementation" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1949,6 +2037,7 @@ files = [ name = "mypy" version = "1.3.0" description = "Optional static typing for Python" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1995,6 +2084,7 @@ reports = ["lxml"] name = "mypy-extensions" version = "1.0.0" description = "Type system extensions for programs checked with the mypy type checker." +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -2006,6 +2096,7 @@ files = [ name = "networkx" version = "3.1" description = "Python package for creating and manipulating graphs and networks" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2024,6 +2115,7 @@ test = ["codecov (>=2.1)", "pytest (>=7.2)", "pytest-cov (>=4.0)"] name = "nodeenv" version = "1.8.0" description = "Node.js virtual environment builder" +category = "dev" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*" files = [ @@ -2038,6 +2130,7 @@ setuptools = "*" name = "numpy" version = "1.24.3" description = "Fundamental package for array computing in Python" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2075,6 +2168,7 @@ files = [ name = "ordered-set" version = "4.1.0" description = "An OrderedSet is a custom MutableSet that remembers its order, so that every" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2089,6 +2183,7 @@ dev = ["black", "mypy", "pytest"] name = "owlrl" version = "6.0.2" description = "OWL-RL and RDFS based RDF Closure inferencing for Python" +category = "main" optional = false python-versions = "*" files = [ @@ -2103,6 +2198,7 @@ rdflib = ">=6.0.2" name = "packaging" version = "23.1" description = "Core utilities for Python packages" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2114,6 +2210,7 @@ files = [ name = "pathspec" version = "0.11.1" description = "Utility library for gitignore style pattern matching of file paths." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2125,6 +2222,7 @@ files = [ name = "patool" version = "1.12" description = "portable archive file manager" +category = "main" optional = false python-versions = "*" files = [ @@ -2136,6 +2234,7 @@ files = [ name = "pep8" version = "1.7.1" description = "Python style guide checker" +category = "dev" optional = false python-versions = "*" files = [ @@ -2147,6 +2246,7 @@ files = [ name = "persistent" version = "5.0" description = "Translucent persistent objects" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2194,6 +2294,7 @@ test = ["manuel", "zope.testrunner"] name = "pexpect" version = "4.8.0" description = "Pexpect allows easy control of interactive console applications." +category = "dev" optional = false python-versions = "*" files = [ @@ -2208,6 +2309,7 @@ ptyprocess = ">=0.5" name = "pillow" version = "9.5.0" description = "Python Imaging Library (Fork)" +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -2287,6 +2389,7 @@ tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "pa name = "plantweb" version = "1.2.1" description = "Python client for the PlantUML server" +category = "dev" optional = false python-versions = "*" files = [ @@ -2303,6 +2406,7 @@ six = "*" name = "platformdirs" version = "3.5.1" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2318,6 +2422,7 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.3.1)", "pytest- name = "pluggy" version = "1.0.0" description = "plugin and hook calling mechanisms for python" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2333,6 +2438,7 @@ testing = ["pytest", "pytest-benchmark"] name = "poetry-dynamic-versioning" version = "0.21.5" description = "Plugin for Poetry to enable dynamic versioning based on VCS tags" +category = "main" optional = false python-versions = ">=3.7,<4.0" files = [ @@ -2352,6 +2458,7 @@ plugin = ["poetry (>=1.2.0,<2.0.0)"] name = "poetry-lock-package" version = "0.5.0" description = "Poetry lock package generator" +category = "dev" optional = false python-versions = ">=3.6.2,<4.0.0" files = [ @@ -2366,6 +2473,7 @@ toml = ">=0.10.1,<0.11.0" name = "portalocker" version = "2.7.0" description = "Wraps the portalocker recipe for easy usage" +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -2385,6 +2493,7 @@ tests = ["pytest (>=5.4.1)", "pytest-cov (>=2.8.1)", "pytest-mypy (>=0.8.0)", "p name = "pre-commit" version = "3.3.2" description = "A framework for managing and maintaining multi-language pre-commit hooks." +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -2403,6 +2512,7 @@ virtualenv = ">=20.10.0" name = "prefixed" version = "0.7.0" description = "Prefixed alternative numeric library" +category = "main" optional = false python-versions = "*" files = [ @@ -2414,6 +2524,7 @@ files = [ name = "prettytable" version = "2.5.0" description = "A simple Python library for easily displaying tabular data in a visually appealing ASCII table format" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2431,6 +2542,7 @@ tests = ["pytest", "pytest-cov", "pytest-lazy-fixture"] name = "prov" version = "1.5.1" description = "A library for W3C Provenance Data Model supporting PROV-JSON, PROV-XML and PROV-O (RDF)" +category = "main" optional = false python-versions = "*" files = [ @@ -2452,6 +2564,7 @@ dot = ["pydot (>=1.2.0)"] name = "psutil" version = "5.9.1" description = "Cross-platform lib for process and system monitoring in Python." +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -2496,6 +2609,7 @@ test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"] name = "ptyprocess" version = "0.7.0" description = "Run a subprocess in a pseudo terminal" +category = "dev" optional = false python-versions = "*" files = [ @@ -2507,6 +2621,7 @@ files = [ name = "py" version = "1.11.0" description = "library with cross-python path, ini-parsing, io, code, log facilities" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -2518,6 +2633,7 @@ files = [ name = "py-tes" version = "0.4.2" description = "Library for communicating with the GA4GH Task Execution API" +category = "main" optional = false python-versions = ">=2.7, <4" files = [ @@ -2534,6 +2650,7 @@ requests = ">=2.18.1" name = "pycodestyle" version = "2.10.0" description = "Python style guide checker" +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -2545,6 +2662,7 @@ files = [ name = "pycparser" version = "2.21" description = "C parser in Python" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -2556,6 +2674,7 @@ files = [ name = "pydantic" version = "1.10.7" description = "Data validation and settings management using python type hints" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2608,6 +2727,7 @@ email = ["email-validator (>=1.0.3)"] name = "pydocstyle" version = "6.1.1" description = "Python docstring style checker" +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -2625,6 +2745,7 @@ toml = ["toml"] name = "pydot" version = "1.4.2" description = "Python interface to Graphviz's Dot" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -2639,6 +2760,7 @@ pyparsing = ">=2.1.4" name = "pyenchant" version = "3.2.2" description = "Python bindings for the Enchant spellchecking system" +category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -2652,6 +2774,7 @@ files = [ name = "pyflakes" version = "3.0.1" description = "passive checker of Python programs" +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -2663,6 +2786,7 @@ files = [ name = "pygments" version = "2.15.1" description = "Pygments is a syntax highlighting package written in Python." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2677,6 +2801,7 @@ plugins = ["importlib-metadata"] name = "pyjwt" version = "2.4.0" description = "JSON Web Token implementation in Python" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2694,6 +2819,7 @@ tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] name = "pyld" version = "2.0.3" description = "Python implementation of the JSON-LD API" +category = "main" optional = false python-versions = "*" files = [ @@ -2715,6 +2841,7 @@ requests = ["requests"] name = "pyopenssl" version = "22.0.0" description = "Python wrapper module around the OpenSSL library" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2733,6 +2860,7 @@ test = ["flaky", "pretend", "pytest (>=3.0.1)"] name = "pyparsing" version = "3.0.9" description = "pyparsing module - Classes and methods to define and execute parsing grammars" +category = "main" optional = false python-versions = ">=3.6.8" files = [ @@ -2743,10 +2871,22 @@ files = [ [package.extras] diagrams = ["jinja2", "railroad-diagrams"] +[[package]] +name = "pypubsub" +version = "4.0.3" +description = "Python Publish-Subscribe Package" +category = "main" +optional = false +python-versions = ">=3.3, <4" +files = [ + {file = "Pypubsub-4.0.3-py3-none-any.whl", hash = "sha256:7f716bae9388afe01ff82b264ba8a96a8ae78b42bb1f114f2716ca8f9e404e2a"}, +] + [[package]] name = "pyreadline3" version = "3.4.1" description = "A python implementation of GNU readline." +category = "main" optional = false python-versions = "*" files = [ @@ -2758,6 +2898,7 @@ files = [ name = "pyshacl" version = "0.19.1" description = "Python SHACL Validator" +category = "main" optional = false python-versions = ">=3.7.0,<4.0.0" files = [ @@ -2781,6 +2922,7 @@ jsonld = ["rdflib-jsonld (>=0.4.0,<0.6)"] name = "pyte" version = "0.8.1" description = "Simple VTXXX-compatible terminal emulator." +category = "dev" optional = false python-versions = "*" files = [ @@ -2795,6 +2937,7 @@ wcwidth = "*" name = "pytest" version = "7.1.3" description = "pytest: simple powerful testing with Python" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2818,6 +2961,7 @@ testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2. name = "pytest-black" version = "0.3.12" description = "A pytest plugin to enable format checking with black" +category = "dev" optional = false python-versions = ">=2.7" files = [ @@ -2833,6 +2977,7 @@ toml = "*" name = "pytest-cache" version = "1.0" description = "pytest plugin with mechanisms for caching across test runs" +category = "dev" optional = false python-versions = "*" files = [ @@ -2847,6 +2992,7 @@ pytest = ">=2.2" name = "pytest-cov" version = "3.0.0" description = "Pytest plugin for measuring coverage." +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -2865,6 +3011,7 @@ testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtuale name = "pytest-flake8" version = "1.1.1" description = "pytest plugin to check FLAKE8 requirements" +category = "dev" optional = false python-versions = "*" files = [ @@ -2880,6 +3027,7 @@ pytest = ">=7.0" name = "pytest-lazy-fixture" version = "0.6.3" description = "It helps to use fixtures in pytest.mark.parametrize" +category = "dev" optional = false python-versions = "*" files = [ @@ -2894,6 +3042,7 @@ pytest = ">=3.2.5" name = "pytest-mock" version = "3.10.0" description = "Thin-wrapper around the mock package for easier use with pytest" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2911,6 +3060,7 @@ dev = ["pre-commit", "pytest-asyncio", "tox"] name = "pytest-pep8" version = "1.0.6" description = "pytest plugin to check PEP8 requirements" +category = "dev" optional = false python-versions = "*" files = [ @@ -2926,6 +3076,7 @@ pytest-cache = "*" name = "pytest-recording" version = "0.12.2" description = "A pytest plugin that allows you recording of network interactions via VCR.py" +category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -2942,6 +3093,7 @@ vcrpy = ">=2.0.1" name = "pytest-timeout" version = "2.1.0" description = "pytest plugin to abort hanging tests" +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -2956,6 +3108,7 @@ pytest = ">=5.0.0" name = "pytest-xdist" version = "3.3.1" description = "pytest xdist plugin for distributed testing, most importantly across multiple CPUs" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2976,6 +3129,7 @@ testing = ["filelock"] name = "python-dateutil" version = "2.8.2" description = "Extensions to the standard Python datetime module" +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ @@ -2990,6 +3144,7 @@ six = ">=1.5" name = "python-dotenv" version = "0.20.0" description = "Read key-value pairs from a .env file and set them as environment variables" +category = "main" optional = true python-versions = ">=3.5" files = [ @@ -3004,6 +3159,7 @@ cli = ["click (>=5.0)"] name = "python-editor" version = "1.0.4" description = "Programmatically open an editor, capture the result." +category = "main" optional = false python-versions = "*" files = [ @@ -3016,6 +3172,7 @@ files = [ name = "python-gitlab" version = "3.8.1" description = "Interact with GitLab API" +category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -3035,6 +3192,7 @@ yaml = ["PyYaml (>=5.2)"] name = "pytz" version = "2023.3" description = "World timezone definitions, modern and historical" +category = "main" optional = false python-versions = "*" files = [ @@ -3046,6 +3204,7 @@ files = [ name = "pywin32" version = "227" description = "Python for Window Extensions" +category = "main" optional = false python-versions = "*" files = [ @@ -3067,6 +3226,7 @@ files = [ name = "pyyaml" version = "6.0" description = "YAML parser and emitter for Python" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -3116,6 +3276,7 @@ files = [ name = "pyzmq" version = "25.1.0" description = "Python bindings for 0MQ" +category = "main" optional = true python-versions = ">=3.6" files = [ @@ -3203,29 +3364,31 @@ cffi = {version = "*", markers = "implementation_name == \"pypy\""} [[package]] name = "rdflib" -version = "6.1.1" +version = "6.3.2" description = "RDFLib is a Python library for working with RDF, a simple yet powerful language for representing information." +category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.7,<4.0" files = [ - {file = "rdflib-6.1.1-py3-none-any.whl", hash = "sha256:fc81cef513cd552d471f2926141396b633207109d0154c8e77926222c70367fe"}, - {file = "rdflib-6.1.1.tar.gz", hash = "sha256:8dbfa0af2990b98471dacbc936d6494c997ede92fd8ed693fb84ee700ef6f754"}, + {file = "rdflib-6.3.2-py3-none-any.whl", hash = "sha256:36b4e74a32aa1e4fa7b8719876fb192f19ecd45ff932ea5ebbd2e417a0247e63"}, + {file = "rdflib-6.3.2.tar.gz", hash = "sha256:72af591ff704f4caacea7ecc0c5a9056b8553e0489dd4f35a9bc52dbd41522e0"}, ] [package.dependencies] -isodate = "*" -pyparsing = "*" -setuptools = "*" +isodate = ">=0.6.0,<0.7.0" +pyparsing = ">=2.1.0,<4" [package.extras] -docs = ["sphinx (<5)", "sphinxcontrib-apidoc"] -html = ["html5lib"] -tests = ["berkeleydb", "html5lib", "networkx", "pytest", "pytest-cov", "pytest-subtests"] +berkeleydb = ["berkeleydb (>=18.1.0,<19.0.0)"] +html = ["html5lib (>=1.0,<2.0)"] +lxml = ["lxml (>=4.3.0,<5.0.0)"] +networkx = ["networkx (>=2.0.0,<3.0.0)"] [[package]] name = "redis" version = "4.5.5" description = "Python client for Redis database and key-value store" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3244,6 +3407,7 @@ ocsp = ["cryptography (>=36.0.1)", "pyopenssl (==20.0.1)", "requests (>=2.26.0)" name = "renku-sphinx-theme" version = "0.2.3" description = "A Sphinx theme for Renku documentation." +category = "dev" optional = false python-versions = "*" files = [ @@ -3264,6 +3428,7 @@ tests = ["check-manifest (>=0.25)", "isort (>=4.2.2)", "pkginfo (<1.9)", "pydocs name = "requests" version = "2.31.0" description = "Python HTTP for Humans." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3285,6 +3450,7 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] name = "requests-toolbelt" version = "1.0.0" description = "A utility belt for advanced users of python-requests" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -3299,6 +3465,7 @@ requests = ">=2.0.1,<3.0.0" name = "responses" version = "0.23.1" description = "A utility library for mocking out the `requests` Python library." +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -3319,6 +3486,7 @@ tests = ["coverage (>=6.0.0)", "flake8", "mypy", "pytest (>=7.0.0)", "pytest-asy name = "rich" version = "13.3.5" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" +category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -3338,6 +3506,7 @@ jupyter = ["ipywidgets (>=7.5.1,<9)"] name = "rq" version = "1.14.1" description = "RQ is a simple, lightweight, library for creating background jobs, and processing them." +category = "main" optional = true python-versions = ">=3.6" files = [ @@ -3353,6 +3522,7 @@ redis = ">=3.5.0" name = "rq-scheduler" version = "0.13.1" description = "Provides job scheduling capabilities to RQ (Redis Queue)" +category = "main" optional = true python-versions = "*" files = [ @@ -3370,6 +3540,7 @@ rq = ">=0.13" name = "ruamel-yaml" version = "0.17.21" description = "ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order" +category = "main" optional = false python-versions = ">=3" files = [ @@ -3388,6 +3559,7 @@ jinja2 = ["ruamel.yaml.jinja2 (>=0.2)"] name = "ruamel-yaml-clib" version = "0.2.7" description = "C version of reader, parser and emitter for ruamel.yaml derived from libyaml" +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -3398,8 +3570,7 @@ files = [ {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-win32.whl", hash = "sha256:763d65baa3b952479c4e972669f679fe490eee058d5aa85da483ebae2009d231"}, {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-win_amd64.whl", hash = "sha256:d000f258cf42fec2b1bbf2863c61d7b8918d31ffee905da62dede869254d3b8a"}, {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:045e0626baf1c52e5527bd5db361bc83180faaba2ff586e763d3d5982a876a9e"}, - {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:1a6391a7cabb7641c32517539ca42cf84b87b667bad38b78d4d42dd23e957c81"}, - {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:9c7617df90c1365638916b98cdd9be833d31d337dbcd722485597b43c4a215bf"}, + {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_12_6_arm64.whl", hash = "sha256:721bc4ba4525f53f6a611ec0967bdcee61b31df5a56801281027a3a6d1c2daf5"}, {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:41d0f1fa4c6830176eef5b276af04c89320ea616655d01327d5ce65e50575c94"}, {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-win32.whl", hash = "sha256:f6d3d39611ac2e4f62c3128a9eed45f19a6608670c5a2f4f07f24e8de3441d38"}, {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-win_amd64.whl", hash = "sha256:da538167284de58a52109a9b89b8f6a53ff8437dd6dc26d33b57bf6699153122"}, @@ -3434,6 +3605,7 @@ files = [ name = "schema-salad" version = "8.4.20230511084951" description = "Schema Annotations for Linked Avro Data (SALAD)" +category = "main" optional = false python-versions = ">=3.6,<3.12" files = [ @@ -3498,6 +3670,7 @@ pycodegen = ["black"] name = "sentry-sdk" version = "1.23.1" description = "Python client for Sentry (https://sentry.io)" +category = "main" optional = true python-versions = "*" files = [ @@ -3543,6 +3716,7 @@ tornado = ["tornado (>=5)"] name = "setuptools" version = "67.8.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3559,6 +3733,7 @@ testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs ( name = "shellescape" version = "3.8.1" description = "Shell escape a string to safely use it as a token in a shell command (backport of cPython shlex.quote for Python versions 2.x & < 3.3)" +category = "main" optional = false python-versions = "*" files = [ @@ -3570,6 +3745,7 @@ files = [ name = "shellingham" version = "1.5.0.post1" description = "Tool to Detect Surrounding Shell" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3581,6 +3757,7 @@ files = [ name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -3592,6 +3769,7 @@ files = [ name = "smmap" version = "5.0.0" description = "A pure Python implementation of a sliding window memory map manager" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -3603,6 +3781,7 @@ files = [ name = "snowballstemmer" version = "2.2.0" description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." +category = "dev" optional = false python-versions = "*" files = [ @@ -3614,6 +3793,7 @@ files = [ name = "sortedcontainers" version = "2.4.0" description = "Sorted Containers -- Sorted List, Sorted Dict, Sorted Set" +category = "dev" optional = false python-versions = "*" files = [ @@ -3625,6 +3805,7 @@ files = [ name = "sphinx" version = "4.5.0" description = "Python documentation generator" +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -3660,6 +3841,7 @@ test = ["cython", "html5lib", "pytest", "pytest-cov", "typed-ast"] name = "sphinx-click" version = "4.4.0" description = "Sphinx extension that automatically documents click applications" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -3676,6 +3858,7 @@ sphinx = ">=2.0" name = "sphinx-rtd-theme" version = "1.0.0" description = "Read the Docs theme for Sphinx" +category = "dev" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" files = [ @@ -3694,6 +3877,7 @@ dev = ["bump2version", "sphinxcontrib-httpdomain", "transifex-client"] name = "sphinx-tabs" version = "3.2.0" description = "Tabbed views for Sphinx" +category = "dev" optional = false python-versions = "~=3.6" files = [ @@ -3714,6 +3898,7 @@ testing = ["bs4", "coverage", "pygments", "pytest (>=3.6,<4)", "pytest-cov", "py name = "sphinxcontrib-applehelp" version = "1.0.4" description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -3729,6 +3914,7 @@ test = ["pytest"] name = "sphinxcontrib-devhelp" version = "1.0.2" description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document." +category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -3744,6 +3930,7 @@ test = ["pytest"] name = "sphinxcontrib-htmlhelp" version = "2.0.1" description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -3759,6 +3946,7 @@ test = ["html5lib", "pytest"] name = "sphinxcontrib-jsmath" version = "1.0.1" description = "A sphinx extension which renders display math in HTML via JavaScript" +category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -3773,6 +3961,7 @@ test = ["flake8", "mypy", "pytest"] name = "sphinxcontrib-qthelp" version = "1.0.3" description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp document." +category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -3788,6 +3977,7 @@ test = ["pytest"] name = "sphinxcontrib-serializinghtml" version = "1.1.5" description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)." +category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -3803,6 +3993,7 @@ test = ["pytest"] name = "sphinxcontrib-spelling" version = "8.0.0" description = "Sphinx spelling extension" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -3821,6 +4012,7 @@ test = ["coverage (>=4.0,!=4.4)", "pytest", "pytest-cov"] name = "tabulate" version = "0.9.0" description = "Pretty-print tabular data" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3835,6 +4027,7 @@ widechars = ["wcwidth"] name = "termcolor" version = "1.1.0" description = "ANSII Color formatting for output in terminal." +category = "main" optional = false python-versions = "*" files = [ @@ -3843,13 +4036,13 @@ files = [ [[package]] name = "toil" -version = "5.7.1" +version = "5.10.0" description = "Pipeline management software for clusters." +category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "toil-5.7.1-py3-none-any.whl", hash = "sha256:81041ba89867a3a37e265a5e073c60a6dfe9ed03342fb3a53bb48f7c04ef1b4b"}, - {file = "toil-5.7.1.tar.gz", hash = "sha256:99a11bb1d138068861013f78f72489ff6ed9af02ceed8a551879a73738c9ebe7"}, + {file = "toil-5.10.0-py3-none-any.whl", hash = "sha256:3a56046c456e6c9c7814c2ae677d9b47987a2ce041f09395fb8f00fa29a1cd1a"}, ] [package.dependencies] @@ -3859,26 +4052,30 @@ docker = ">=3.7.2,<6" enlighten = ">=1.5.2,<2" psutil = ">=3.0.1,<6" py-tes = ">=0.4.2,<1" +PyPubSub = ">=4.0.3,<5" python-dateutil = "*" pytz = ">=2012" requests = ">=2,<3" +typing-extensions = "*" +urllib3 = ">=1.26.0,<2.0.0" [package.extras] -all = ["apache-libcloud (>=2.2.1,<3)", "boto (>=2.48.0,<3)", "boto3 (>=1.20.46,<2)", "boto3-stubs[iam,s3,sdb] (==1.24.0)", "celery (>=5.1.0,<6)", "connexion[swagger-ui] (>=2.10.0,<3)", "cwltool (==3.1.20220628170238)", "flask (>=2.0,<3)", "flask-cors (==3.0.10)", "galaxy-tool-util", "google-cloud-storage (>=1.6.0,<2)", "gunicorn (==20.1.0)", "idna (>=2)", "kubernetes (>=12.0.1,<22)", "mypy-boto3-iam (==1.24.0)", "mypy-boto3-s3 (==1.24.0)", "mypy-boto3-sdb (==1.24.0)", "networkx (>=2,<2.8.5)", "pymesos (>=0.3.15,<0.4)", "pynacl (>=1.4.0,<2)", "ruamel.yaml (>=0.15,<0.17.22)", "ruamel.yaml (>=0.15,<=0.17.21)", "ruamel.yaml.clib (>=0.2.6)", "wdlparse (==0.1.0)", "werkzeug (>=2.0,<3)", "wes-service (>=4.0.0,<5)"] -aws = ["boto (>=2.48.0,<3)", "boto3 (>=1.20.46,<2)", "boto3-stubs[iam,s3,sdb] (==1.24.0)", "mypy-boto3-iam (==1.24.0)", "mypy-boto3-s3 (==1.24.0)", "mypy-boto3-sdb (==1.24.0)"] -cwl = ["cwltool (==3.1.20220628170238)", "galaxy-tool-util", "networkx (>=2,<2.8.5)", "ruamel.yaml (>=0.15,<=0.17.21)", "ruamel.yaml.clib (>=0.2.6)"] +all = ["CacheControl[filecache]", "apache-libcloud (>=2.2.1,<3)", "boto (>=2.48.0,<3)", "boto3-stubs[boto3,iam,s3,sdb,sts] (>=1.20.46,<2)", "celery (>=5.1.0,<6)", "connexion[swagger-ui] (>=2.10.0,<3)", "cwltool (==3.1.20230425144158)", "flask (>=2.0,<3)", "flask-cors (==3.0.10)", "galaxy-tool-util", "google-cloud-storage (>=2,<=2.8.0)", "gunicorn (==20.1.0)", "idna (>=2)", "kubernetes (>=12.0.1,<22)", "kubernetes-stubs (==v22.6.0post1)", "miniwdl (==1.9.1)", "networkx (>=2,<2.8.9)", "pymesos (>=0.3.15,<0.4)", "pynacl (>=1.4.0,<2)", "ruamel.yaml (>=0.15,<0.17.22)", "ruamel.yaml (>=0.15,<=0.17.21)", "ruamel.yaml.clib (>=0.2.6)", "schema-salad (>=8.4.20230128170514,<9)", "types-PyYAML", "types-urllib3", "wdlparse (==0.1.0)", "werkzeug (>=2.0,<3)", "wes-service (>=4.0.0,<5)"] +aws = ["boto (>=2.48.0,<3)", "boto3-stubs[boto3,iam,s3,sdb,sts] (>=1.20.46,<2)"] +cwl = ["CacheControl[filecache]", "cwltool (==3.1.20230425144158)", "galaxy-tool-util", "networkx (>=2,<2.8.9)", "ruamel.yaml (>=0.15,<=0.17.21)", "ruamel.yaml.clib (>=0.2.6)", "schema-salad (>=8.4.20230128170514,<9)"] encryption = ["pynacl (>=1.4.0,<2)"] -google = ["apache-libcloud (>=2.2.1,<3)", "google-cloud-storage (>=1.6.0,<2)"] -htcondor = ["htcondor (>=8.6.0,<9)"] -kubernetes = ["idna (>=2)", "kubernetes (>=12.0.1,<22)"] +google = ["apache-libcloud (>=2.2.1,<3)", "google-cloud-storage (>=2,<=2.8.0)"] +htcondor = ["htcondor (>=10.2.0.post1,<11)"] +kubernetes = ["idna (>=2)", "kubernetes (>=12.0.1,<22)", "kubernetes-stubs (==v22.6.0post1)", "types-PyYAML", "types-urllib3"] mesos = ["pymesos (>=0.3.15,<0.4)"] server = ["celery (>=5.1.0,<6)", "connexion[swagger-ui] (>=2.10.0,<3)", "flask (>=2.0,<3)", "flask-cors (==3.0.10)", "gunicorn (==20.1.0)", "ruamel.yaml (>=0.15,<0.17.22)", "werkzeug (>=2.0,<3)", "wes-service (>=4.0.0,<5)"] -wdl = ["wdlparse (==0.1.0)"] +wdl = ["miniwdl (==1.9.1)", "wdlparse (==0.1.0)"] [[package]] name = "toml" version = "0.10.2" description = "Python Library for Tom's Obvious, Minimal Language" +category = "dev" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -3890,6 +4087,7 @@ files = [ name = "tomli" version = "2.0.1" description = "A lil' TOML parser" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3901,6 +4099,7 @@ files = [ name = "tomlkit" version = "0.11.8" description = "Style preserving TOML library" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3912,6 +4111,7 @@ files = [ name = "tornado" version = "6.3.2" description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." +category = "main" optional = true python-versions = ">= 3.8" files = [ @@ -3932,6 +4132,7 @@ files = [ name = "tqdm" version = "4.62.3" description = "Fast, Extensible Progress Meter" +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" files = [ @@ -3951,6 +4152,7 @@ telegram = ["requests"] name = "transaction" version = "3.1.0" description = "Transaction management for Python" +category = "main" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*" files = [ @@ -3970,6 +4172,7 @@ testing = ["coverage", "mock", "nose"] name = "types-python-dateutil" version = "2.8.19.13" description = "Typing stubs for python-dateutil" +category = "dev" optional = false python-versions = "*" files = [ @@ -3981,6 +4184,7 @@ files = [ name = "types-pyyaml" version = "6.0.12.10" description = "Typing stubs for PyYAML" +category = "dev" optional = false python-versions = "*" files = [ @@ -3992,6 +4196,7 @@ files = [ name = "types-redis" version = "4.0.6" description = "Typing stubs for redis" +category = "dev" optional = false python-versions = "*" files = [ @@ -4003,6 +4208,7 @@ files = [ name = "types-requests" version = "2.28.11.17" description = "Typing stubs for requests" +category = "dev" optional = false python-versions = "*" files = [ @@ -4017,6 +4223,7 @@ types-urllib3 = "<1.27" name = "types-tabulate" version = "0.9.0.2" description = "Typing stubs for tabulate" +category = "dev" optional = false python-versions = "*" files = [ @@ -4028,6 +4235,7 @@ files = [ name = "types-urllib3" version = "1.26.25.13" description = "Typing stubs for urllib3" +category = "dev" optional = false python-versions = "*" files = [ @@ -4039,6 +4247,7 @@ files = [ name = "typing-extensions" version = "4.6.2" description = "Backported and Experimental Type Hints for Python 3.7+" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -4050,6 +4259,7 @@ files = [ name = "urllib3" version = "1.26.16" description = "HTTP library with thread-safe connection pooling, file post, and more." +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ @@ -4066,6 +4276,7 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] name = "vcrpy" version = "4.3.1" description = "Automatically mock your HTTP interactions to simplify and speed up testing" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -4084,6 +4295,7 @@ yarl = "*" name = "virtualenv" version = "20.23.0" description = "Virtual Python Environment builder" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -4104,6 +4316,7 @@ test = ["covdefaults (>=2.3)", "coverage (>=7.2.3)", "coverage-enable-subprocess name = "walrus" version = "0.9.2" description = "walrus" +category = "main" optional = true python-versions = "*" files = [ @@ -4117,6 +4330,7 @@ redis = ">=3.0.0" name = "wcwidth" version = "0.2.6" description = "Measures the displayed width of unicode strings in a terminal" +category = "main" optional = false python-versions = "*" files = [ @@ -4128,6 +4342,7 @@ files = [ name = "websocket-client" version = "1.5.2" description = "WebSocket client for Python with low level API options" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -4144,6 +4359,7 @@ test = ["websockets"] name = "werkzeug" version = "2.2.3" description = "The comprehensive WSGI web application library." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -4161,6 +4377,7 @@ watchdog = ["watchdog"] name = "wrapt" version = "1.15.0" description = "Module for decorators, wrappers and monkey patching." +category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" files = [ @@ -4245,6 +4462,7 @@ files = [ name = "yagup" version = "0.1.1" description = "Parsing and validating git urls." +category = "main" optional = false python-versions = "*" files = [ @@ -4259,6 +4477,7 @@ pyparsing = "*" name = "yarl" version = "1.9.2" description = "Yet another URL library" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -4346,6 +4565,7 @@ multidict = ">=4.0" name = "yaspin" version = "2.1.0" description = "Yet Another Terminal Spinner" +category = "main" optional = false python-versions = ">=3.6.2,<4.0.0" files = [ @@ -4360,6 +4580,7 @@ termcolor = ">=1.1.0,<2.0.0" name = "zc-lockfile" version = "3.0.post1" description = "Basic inter-process locks" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -4377,6 +4598,7 @@ test = ["zope.testing"] name = "zc-relation" version = "2.0" description = "Index intransitive and transitive n-ary relationships." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -4397,6 +4619,7 @@ test = ["ZODB", "zc.relationship (>=2)"] name = "zconfig" version = "4.0" description = "Structured Configuration Library" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -4412,6 +4635,7 @@ test = ["docutils", "manuel", "zope.exceptions", "zope.testrunner"] name = "zipp" version = "3.15.0" description = "Backport of pathlib-compatible object wrapper for zip files" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -4427,6 +4651,7 @@ testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more name = "zodb" version = "5.8.0" description = "ZODB, a Python object-oriented database" +category = "main" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*" files = [ @@ -4452,6 +4677,7 @@ test = ["manuel", "mock", "zope.testing", "zope.testrunner (>=4.4.6)"] name = "zodbpickle" version = "3.0.1" description = "Fork of Python 3 pickle module." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -4497,6 +4723,7 @@ test = ["zope.testrunner"] name = "zope-interface" version = "6.0" description = "Interfaces for Python" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -4544,6 +4771,7 @@ testing = ["coverage (>=5.0.3)", "zope.event", "zope.testing"] name = "zope-testing" version = "5.0.1" description = "Zope testing helpers" +category = "main" optional = false python-versions = "*" files = [ @@ -4562,6 +4790,7 @@ test = ["zope.testrunner"] name = "zstandard" version = "0.21.0" description = "Zstandard bindings for Python" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -4622,4 +4851,4 @@ service = ["apispec", "apispec-oneofschema", "apispec-webframeworks", "circus", [metadata] lock-version = "2.0" python-versions = ">=3.8.1,<3.12" -content-hash = "e1a29d2aa82ee21928d657ac9bdfdd9348ce34b60ce1f8d521d8a64396198910" +content-hash = "fc42b19d8f58f11cfcb0071cb79ed8d9f34999740f9b813fc50200cebbb0cbc4" diff --git a/pyproject.toml b/pyproject.toml index 927a6a0b00..5f5d084a3f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -61,8 +61,8 @@ click-option-group = "<0.6.0,>=0.5.2" click-plugins = "==1.1.1" coverage = { version = "<6.5,>=4.5.3", extras=["toml"], optional = true } cryptography = ">=38.0.0,<41.0.0" -cwl-utils = ">=0.12,<0.18" -cwltool = "==3.1.20220628170238" +cwl-utils = ">=0.27,<0.28" +cwltool = "==3.1.20230425144158" deal = ">=4.24.0,<5.0.0" deepdiff = ">=5.8,<7.0" deepmerge = "==1.0.1" @@ -97,7 +97,7 @@ requests = ">=2.23.0,<2.31.1" rich = ">=9.3.0,<13.4.0" shellingham = "1.5.0.post1" tabulate = ">=0.7.7,<0.9.1" -toil = "==5.7.1" +toil = "==5.10.0" tqdm = "<4.62.4,>=4.48.1" werkzeug = ">=1.0.0,<2.2.4" yagup = ">=0.1.1" diff --git a/renku/command/view_model/graph.py b/renku/command/view_model/graph.py index 0dd4e5a7a2..6c2ae108a7 100644 --- a/renku/command/view_model/graph.py +++ b/renku/command/view_model/graph.py @@ -20,11 +20,12 @@ import io import json from enum import Enum -from typing import Dict, List, Optional +from typing import Dict, Iterator, List, Optional, cast import pyld import rdflib from rdflib import ConjunctiveGraph, Graph +from rdflib.query import ResultRow from rdflib.tools.rdf2dot import LABEL_PROPERTIES, NODECOLOR, rdf2dot @@ -189,7 +190,7 @@ def color(p): } """ - for s, p, o in graph.query(sparql): + for s, p, o in cast(Iterator[ResultRow], graph.query(sparql)): sn = node(s) if p == rdflib.RDFS.label: continue diff --git a/renku/core/migration/m_0005__2_cwl.py b/renku/core/migration/m_0005__2_cwl.py index 1a74bfa830..77fba95f57 100644 --- a/renku/core/migration/m_0005__2_cwl.py +++ b/renku/core/migration/m_0005__2_cwl.py @@ -26,7 +26,7 @@ from urllib.parse import urlparse from cwl_utils.parser import load_document_by_uri -from cwl_utils.parser.cwl_v1_0 import CommandLineTool, InitialWorkDirRequirement +from cwl_utils.parser.cwl_v1_0 import CommandLineTool, Directory, File, InitialWorkDirRequirement from werkzeug.utils import secure_filename from renku.core.constant import RENKU_HOME @@ -167,7 +167,7 @@ def _migrate_single_step(migration_context, cmd_line_tool, path, commit=None, pa matched_input = next(i for i in inputs if i.id.endswith(name)) inputs.remove(matched_input) - path = project_context.metadata_path / OLD_WORKFLOW_PATH / Path(matched_input.default["path"]) + path = project_context.metadata_path / OLD_WORKFLOW_PATH / Path(matched_input.default.path) stdin = path.resolve().relative_to(project_context.path) id_ = CommandInput.generate_id(base_id, "stdin") @@ -237,7 +237,7 @@ def _migrate_single_step(migration_context, cmd_line_tool, path, commit=None, pa pass if isinstance(matched_input.default, dict): - path = project_context.metadata_path / OLD_WORKFLOW_PATH / Path(matched_input.default["path"]) + path = project_context.metadata_path / OLD_WORKFLOW_PATH / Path(matched_input.default.path) else: path = Path(matched_input.default) @@ -282,8 +282,8 @@ def _migrate_single_step(migration_context, cmd_line_tool, path, commit=None, pa if prefix and i.inputBinding.separate: prefix += " " - if isinstance(i.default, dict) and "class" in i.default and i.default["class"] in ["File", "Directory"]: - path = project_context.metadata_path / OLD_WORKFLOW_PATH / Path(i.default["path"]) + if isinstance(i.default, (File, Directory)): + path = project_context.metadata_path / OLD_WORKFLOW_PATH / Path(str(i.default.path)) path = Path(os.path.realpath(path)).relative_to(project_context.path) run.inputs.append( diff --git a/renku/core/workflow/converters/cwl.py b/renku/core/workflow/converters/cwl.py index 9fe71a514d..04da4b036a 100644 --- a/renku/core/workflow/converters/cwl.py +++ b/renku/core/workflow/converters/cwl.py @@ -148,7 +148,7 @@ def workflow_convert( step_filename = Path(f"{uuid4()}.cwl") step_path = (tmpdir / step_filename).resolve() write_yaml(step_path, step.run.save()) - step.run = str(step_path) + step.run = f"file://{step_path}" if filename is None: filename = Path(f"parent_{uuid4()}.cwl") else: diff --git a/renku/data/pre-commit.sh b/renku/data/pre-commit.sh index c5ffb2f772..e413376cda 100755 --- a/renku/data/pre-commit.sh +++ b/renku/data/pre-commit.sh @@ -21,10 +21,17 @@ # Find all modified or added files, and do nothing if there aren't any. export RENKU_DISABLE_VERSION_CHECK=true -IFS=$'\n' read -r -d '' -a MODIFIED_FILES \ - <<< "$(git diff --name-only --cached --diff-filter=M)" -IFS=$'\n' read -r -d '' -a ADDED_FILES \ - <<< "$(git diff --name-only --cached --diff-filter=A)" + +declare -a MODIFIED_FILES=() +while IFS= read -r -d '' file; do + MODIFIED_FILES+=( "$file" ) +done < <(git diff -z --name-only --cached --diff-filter=M) + +declare -a ADDED_FILES=() +while IFS= read -r -d '' file; do + ADDED_FILES+=( "$file" ) +done < <(git diff -z --name-only --cached --diff-filter=A) + if [ ${#MODIFIED_FILES[@]} -ne 0 ] || [ ${#ADDED_FILES[@]} -ne 0 ]; then # Verify that renku is installed; if not, warn and exit. diff --git a/renku/infrastructure/repository.py b/renku/infrastructure/repository.py index 22578d6ae5..3d0dbd5870 100644 --- a/renku/infrastructure/repository.py +++ b/renku/infrastructure/repository.py @@ -917,8 +917,10 @@ def get_existing_paths_in_revision( if files: # NOTE: check existing files for batch in split_paths(*files): - existing_paths = git.Git(working_dir=self.path).ls_tree(*batch, r=revision, name_only=True) - result.extend(existing_paths.splitlines()) + existing_paths = git.Git(working_dir=self.path).ls_tree( + *batch, r=revision, name_only=True, z=True + ) + result.extend(existing_paths.strip("\x00").split("\x00")) if dirs: # NOTE: check existing dirs @@ -930,7 +932,7 @@ def get_existing_paths_in_revision( return result else: - existing_files = git.Git().ls_tree(r=revision, name_only=True).splitlines() + existing_files = git.Git().ls_tree(r=revision, name_only=True, z=True).strip("\x00").split("\x00") existing_dirs = git.Git().ls_tree(r=revision, name_only=True, d=True).splitlines() return existing_dirs + existing_files except git.GitCommandError as e: diff --git a/tests/cli/test_workflow.py b/tests/cli/test_workflow.py index d3c312ad3b..99d17a6d8a 100644 --- a/tests/cli/test_workflow.py +++ b/tests/cli/test_workflow.py @@ -711,7 +711,7 @@ def _flatten_dict(obj, key_string=""): @pytest.mark.parametrize("provider", available_workflow_providers()) -def test_workflow_execute_command_with_api_parameter_set(runner, run_shell, project, capsys, transaction_id, provider): +def test_workflow_execute_command_with_api_parameter_set(runner, run_shell, project, transaction_id, provider): """Test executing a workflow with --set for a renku.ui.api.Parameter.""" script = project.path / "script.py" output = project.path / "output" @@ -740,7 +740,7 @@ def test_workflow_execute_command_with_api_parameter_set(runner, run_shell, proj @pytest.mark.parametrize("provider", available_workflow_providers()) -def test_workflow_execute_command_with_api_input_set(runner, run_shell, project, capsys, transaction_id, provider): +def test_workflow_execute_command_with_api_input_set(runner, run_shell, project, transaction_id, provider): """Test executing a workflow with --set for a renku.ui.api.Input.""" script = project.path / "script.py" output = project.path / "output" @@ -775,7 +775,7 @@ def test_workflow_execute_command_with_api_input_set(runner, run_shell, project, @pytest.mark.parametrize("provider", available_workflow_providers()) -def test_workflow_execute_command_with_api_output_set(runner, run_shell, project, capsys, transaction_id, provider): +def test_workflow_execute_command_with_api_output_set(runner, run_shell, project, transaction_id, provider): """Test executing a workflow with --set for a renku.ui.api.Output.""" script = project.path / "script.py" output = project.path / "output" @@ -806,7 +806,7 @@ def test_workflow_execute_command_with_api_output_set(runner, run_shell, project assert 0 == result.exit_code, format_result_exception(result) -def test_workflow_execute_command_with_api_duplicate_output(runner, run_shell, project, capsys, transaction_id): +def test_workflow_execute_command_with_api_duplicate_output(run_shell, project, transaction_id): """Test executing a workflow with duplicate output with differing path.""" script = project.path / "script.py" output = project.path / "output" @@ -824,7 +824,7 @@ def test_workflow_execute_command_with_api_duplicate_output(runner, run_shell, p assert b"Error: Invalid parameter value - Duplicate input/output name found: my-output\n" in result[0] -def test_workflow_execute_command_with_api_valid_duplicate_output(runner, run_shell, project, capsys, transaction_id): +def test_workflow_execute_command_with_api_valid_duplicate_output(run_shell, project, transaction_id): """Test executing a workflow with duplicate output with same path.""" script = project.path / "script.py" output = project.path / "output" @@ -844,7 +844,7 @@ def test_workflow_execute_command_with_api_valid_duplicate_output(runner, run_sh assert result[1] is None -def test_workflow_execute_command_with_api_duplicate_input(runner, run_shell, project, capsys, transaction_id): +def test_workflow_execute_command_with_api_duplicate_input(run_shell, project, transaction_id): """Test executing a workflow with duplicate input with differing path.""" script = project.path / "script.py" input = project.path / "input" @@ -862,7 +862,7 @@ def test_workflow_execute_command_with_api_duplicate_input(runner, run_shell, pr assert b"Error: Invalid parameter value - Duplicate input/output name found: my-input\n" in result[0] -def test_workflow_execute_command_with_api_valid_duplicate_input(runner, run_shell, project, capsys, transaction_id): +def test_workflow_execute_command_with_api_valid_duplicate_input(run_shell, project, transaction_id): """Test executing a workflow with duplicate input with same path.""" script = project.path / "script.py" input = project.path / "input"