Created
January 28, 2021 16:25
-
-
Save sbliven/aab43e1f0bce1f4ac63aaaaa718df0b3 to your computer and use it in GitHub Desktop.
Parsing conda conflict messages (https://stackoverflow.com/questions/62288835/how-to-interpret-conda-package-conflicts)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "cells": [ | |
| { | |
| "cell_type": "code", | |
| "execution_count": 1, | |
| "id": "realistic-incentive", | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "import functools\n", | |
| "import re\n", | |
| "from dataclasses import dataclass\n", | |
| "from typing import Dict, List, Optional\n", | |
| "\n", | |
| "from conda.models import version as cv" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 2, | |
| "id": "lonely-separate", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "VersionSpec('>1.0,<4.0')" | |
| ] | |
| }, | |
| "execution_count": 2, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "v = cv.VersionSpec(\">1.0,<4.0\")\n", | |
| "v" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 3, | |
| "id": "possible-cleaner", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "True" | |
| ] | |
| }, | |
| "execution_count": 3, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "v.match(\"3.0\")" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 4, | |
| "id": "distributed-secretariat", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "False" | |
| ] | |
| }, | |
| "execution_count": 4, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "v.match(\"4.0\")" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 5, | |
| "id": "fitted-directive", | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# https://stackoverflow.com/questions/62288835/how-to-interpret-conda-package-conflicts\n", | |
| "conflictstr = \"\"\"Package ncurses conflicts for:\n", | |
| "python=3.8 -> ncurses[version='>=6.1,<6.2.0a0|>=6.2,<7.0a0|>=6.1,<7.0a0']\n", | |
| "awscli -> python[version='>=3.8,<3.9.0a0'] -> ncurses[version='5.9.*|5.9|>=6.1,<6.2.0a0|>=6.2,<7.0a0|>=6.1,<7.0a0|>=6.0,<7.0a0|6.0.*']\n", | |
| "instrain -> python[version='>=3.4'] -> ncurses[version='5.9.*|5.9|>=6.1,<6.2.0a0|>=6.2,<7.0a0|>=6.1,<7.0a0|>=6.0,<7.0a0|6.0.*']\n", | |
| "python=3.8 -> readline[version='>=7.0,<8.0a0'] -> ncurses[version='5.9.*|>=6.0,<7.0a0|6.0.*']\n", | |
| "samtools -> ncurses[version='5.9|5.9.*|>=5.9,<5.10.0a0|>=6.1,<6.2.0a0']\n", | |
| "\n", | |
| "Package python conflicts for:\n", | |
| "awscli -> python[version='2.7.*|3.5.*|3.6.*|>=2.7,<2.8.0a0|>=3.6,<3.7.0a0|>=3.7,<3.8.0a0|>=3.8,<3.9.0a0|>=3.5,<3.6.0a0|3.4.*']\n", | |
| "python=3.8\n", | |
| "instrain -> biopython -> python[version='2.7.*|3.5.*|3.6.*|>=2.7,<2.8.0a0|>=3.6,<3.7.0a0|>=3.8,<3.9.0a0|>=3.7,<3.8.0a0|>=3.5,<3.6.0a0|3.4.*|>3|>=3.5|<3.0.0|>=3.6']\n", | |
| "instrain -> python[version='>=3.4']\n", | |
| "awscli -> python_abi=3.8[build=*_cp38] -> python[version='3.7.*|3.8.*']\n", | |
| "\n", | |
| "Package ca-certificates conflicts for:\n", | |
| "samtools -> openssl[version='>=1.1.1a,<1.1.2a'] -> ca-certificates\n", | |
| "python=3.8 -> openssl[version='>=1.1.1g,<1.1.2a'] -> ca-certificates\n", | |
| "awscli -> python[version='>=2.7,<2.8.0a0'] -> ca-certificates\n", | |
| "\n", | |
| "Package setuptools conflicts for:\n", | |
| "python=3.8 -> pip -> setuptools\n", | |
| "instrain -> matplotlib-base -> setuptools[version='>=40.0']\n", | |
| "\n", | |
| "Package libgcc-ng conflicts for:\n", | |
| "samtools -> ncurses[version='>=6.1,<6.2.0a0'] -> libgcc-ng[version='>=7.2.0']\n", | |
| "samtools -> libgcc-ng[version='>=4.9|>=7.3.0']\n", | |
| "\n", | |
| "Package pypy3.6 conflicts for:\n", | |
| "instrain -> numpy -> pypy3.6[version='7.3.0.*|7.3.1.*|>=7.3.1']\n", | |
| "awscli -> python[version='>=3.6,<3.7.0a0'] -> pypy3.6[version='7.3.*|7.3.0.*|7.3.1.*']\n", | |
| "\n", | |
| "Package bzip2 conflicts for:\n", | |
| "samtools -> bzip2[version='1.0.*|>=1.0.6,<2.0a0|>=1.0.8,<2.0a0']\n", | |
| "instrain -> pysam -> bzip2[version='>=1.0.6,<2.0a0|>=1.0.8,<2.0a0']\n", | |
| "awscli -> python[version='>=3.7,<3.8.0a0'] -> bzip2[version='>=1.0.6,<2.0a0|>=1.0.8,<2.0a0']\n", | |
| "\n", | |
| "Package zlib conflicts for:\n", | |
| "samtools -> zlib[version='1.2.11.*|>=1.2.11,<1.3.0a0|1.2.8.*|1.2.8']\n", | |
| "samtools -> curl[version='>=7.59.0,<8.0a0'] -> zlib[version='1.2.*|1.2.11']\n", | |
| "\n", | |
| "Package samtools conflicts for:\n", | |
| "samtools\n", | |
| "instrain -> pysam -> samtools[version='1.3|1.3.1.*|1.3.1|1.5.*|1.6.*|1.7|1.7.*|1.9.*|>=1.4.1|>=1.4.1,<1.5|>=1.4,<1.5|>=1.3,<1.4|>=1.3']\n", | |
| "\n", | |
| "Package openssl conflicts for:\n", | |
| "samtools -> curl[version='>=7.59.0,<8.0a0'] -> openssl[version='1.0.*|>=1.0.2o,<1.0.3a|>=1.0.2m,<1.0.3a']\n", | |
| "samtools -> openssl[version='>=1.0.2p,<1.0.3a|>=1.0.2r,<1.0.3a|>=1.1.1a,<1.1.2a']\n", | |
| "\n", | |
| "Package _libgcc_mutex conflicts for:\n", | |
| "samtools -> libgcc-ng[version='>=7.3.0'] -> _libgcc_mutex[version='*|0.1',build='main|conda_forge']\n", | |
| "python=3.8 -> libgcc-ng[version='>=7.5.0'] -> _libgcc_mutex[version='*|0.1',build='main|conda_forge']\n", | |
| "\"\"\"" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 6, | |
| "id": "painful-meditation", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "[ConstraintGroup(name='ncurses', constraints=[Constraint(dependency='python=3.8', versions=VersionSpec('>=6.1,<6.2.0a0|>=6.2,<7.0a0|>=6.1,<7.0a0')), Constraint(dependency='awscli', versions=VersionSpec('5.9.*|5.9|>=6.1,<6.2.0a0|>=6.2,<7.0a0|>=6.1,<7.0a0|>=6.0,<7.0a0|6.0.*')), Constraint(dependency='instrain', versions=VersionSpec('5.9.*|5.9|>=6.1,<6.2.0a0|>=6.2,<7.0a0|>=6.1,<7.0a0|>=6.0,<7.0a0|6.0.*')), Constraint(dependency='python=3.8', versions=VersionSpec('5.9.*|>=6.0,<7.0a0|6.0.*')), Constraint(dependency='samtools', versions=VersionSpec('5.9|5.9.*|>=5.9,<5.10.0a0|>=6.1,<6.2.0a0'))]),\n", | |
| " ConstraintGroup(name='python', constraints=[Constraint(dependency='awscli', versions=VersionSpec('2.7.*|3.5.*|3.6.*|>=2.7,<2.8.0a0|>=3.6,<3.7.0a0|>=3.7,<3.8.0a0|>=3.8,<3.9.0a0|>=3.5,<3.6.0a0|3.4.*')), Constraint(dependency='instrain', versions=VersionSpec('2.7.*|3.5.*|3.6.*|>=2.7,<2.8.0a0|>=3.6,<3.7.0a0|>=3.8,<3.9.0a0|>=3.7,<3.8.0a0|>=3.5,<3.6.0a0|3.4.*|>3|>=3.5|<3.0.0|>=3.6')), Constraint(dependency='instrain', versions=VersionSpec('>=3.4')), Constraint(dependency='awscli', versions=VersionSpec('3.7.*|3.8.*'))]),\n", | |
| " ConstraintGroup(name='ca-certificates', constraints=[]),\n", | |
| " ConstraintGroup(name='setuptools', constraints=[Constraint(dependency='instrain', versions=VersionSpec('>=40.0'))]),\n", | |
| " ConstraintGroup(name='libgcc-ng', constraints=[Constraint(dependency='samtools', versions=VersionSpec('>=7.2.0')), Constraint(dependency='samtools', versions=VersionSpec('>=4.9|>=7.3.0'))]),\n", | |
| " ConstraintGroup(name='pypy3.6', constraints=[Constraint(dependency='instrain', versions=VersionSpec('7.3.0.*|7.3.1.*|>=7.3.1')), Constraint(dependency='awscli', versions=VersionSpec('7.3.*|7.3.0.*|7.3.1.*'))]),\n", | |
| " ConstraintGroup(name='bzip2', constraints=[Constraint(dependency='samtools', versions=VersionSpec('1.0.*|>=1.0.6,<2.0a0|>=1.0.8,<2.0a0')), Constraint(dependency='instrain', versions=VersionSpec('>=1.0.6,<2.0a0|>=1.0.8,<2.0a0')), Constraint(dependency='awscli', versions=VersionSpec('>=1.0.6,<2.0a0|>=1.0.8,<2.0a0'))]),\n", | |
| " ConstraintGroup(name='zlib', constraints=[Constraint(dependency='samtools', versions=VersionSpec('1.2.11.*|>=1.2.11,<1.3.0a0|1.2.8.*|1.2.8')), Constraint(dependency='samtools', versions=VersionSpec('1.2.*|1.2.11'))]),\n", | |
| " ConstraintGroup(name='samtools', constraints=[Constraint(dependency='instrain', versions=VersionSpec('1.3|1.3.1.*|1.3.1|1.5.*|1.6.*|1.7|1.7.*|1.9.*|>=1.4.1|>=1.4.1,<1.5|>=1.4,<1.5|>=1.3,<1.4|>=1.3'))]),\n", | |
| " ConstraintGroup(name='openssl', constraints=[Constraint(dependency='samtools', versions=VersionSpec('1.0.*|>=1.0.2o,<1.0.3a|>=1.0.2m,<1.0.3a')), Constraint(dependency='samtools', versions=VersionSpec('>=1.0.2p,<1.0.3a|>=1.0.2r,<1.0.3a|>=1.1.1a,<1.1.2a'))]),\n", | |
| " ConstraintGroup(name='_libgcc_mutex', constraints=[Constraint(dependency='samtools', versions=VersionSpec('*|0.1')), Constraint(dependency='python=3.8', versions=VersionSpec('*|0.1'))])]" | |
| ] | |
| }, | |
| "execution_count": 6, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "@dataclass\n", | |
| "class Constraint:\n", | |
| " dependency: Optional[\n", | |
| " str\n", | |
| " ] # Name of dependency that requires the conflicting package\n", | |
| " versions: cv.VersionSpec # List of versions for the conflicting package\n", | |
| "\n", | |
| "\n", | |
| "@dataclass\n", | |
| "class ConstraintGroup:\n", | |
| " name: str # Name of conflicting package\n", | |
| " constraints: List[Constraint]\n", | |
| "\n", | |
| " def merge(self) -> cv.VersionSpec:\n", | |
| " return functools.reduce(\n", | |
| " lambda v1, v2: v1.merge(v2), (c.versions for c in self.constraints)\n", | |
| " )\n", | |
| "\n", | |
| "\n", | |
| "def parse_conflicts(conflicts: str) -> List[ConstraintGroup]:\n", | |
| " # groups separated by blank line\n", | |
| " return [_parse_group(group) for group in conflicts.split(\"\\n\\n\")]\n", | |
| "\n", | |
| "\n", | |
| "def _parse_group(group: str) -> ConstraintGroup:\n", | |
| " groupname = re.compile(r\"Package (\\S+) conflicts for:\")\n", | |
| " lines = group.split(\"\\n\")\n", | |
| " # first line gives name\n", | |
| " match = groupname.match(lines[0])\n", | |
| " name = match and match.group(1)\n", | |
| " # look for versions in subsequent lines\n", | |
| " return ConstraintGroup(\n", | |
| " name, [c for c in (_parse_line(name, line) for line in lines[1:] if line) if c]\n", | |
| " )\n", | |
| "\n", | |
| "\n", | |
| "def _parse_line(name: str, line: str) -> Constraint:\n", | |
| " versionre = re.compile(r\"(?:(\\S+) .*)?\" + name + r\"(?:\\[version='([^']+)'[],])?\")\n", | |
| " match = versionre.match(line)\n", | |
| " if match:\n", | |
| " dep = match.group(1)\n", | |
| " spec = match.group(2)\n", | |
| " if spec is None:\n", | |
| " return None\n", | |
| " versions = cv.VersionSpec(spec)\n", | |
| " return Constraint(dep, versions)\n", | |
| " else:\n", | |
| " logging.warning(f\"Unable to parse {name} version in: {line!r}\")\n", | |
| " return None\n", | |
| "\n", | |
| "\n", | |
| "conflicts = parse_conflicts(conflictstr)\n", | |
| "conflicts" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 7, | |
| "id": "dramatic-trunk", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "VersionSpec('5.9.*|5.9|>=6.1,<6.2.0a0|>=6.2,<7.0a0|>=6.1,<7.0a0|>=6.0,<7.0a0|6.0.*,5.9.*|5.9|>=6.1,<6.2.0a0|>=6.2,<7.0a0|>=6.1,<7.0a0|>=6.0,<7.0a0|6.0.*,>=6.1,<6.2.0a0|>=6.2,<7.0a0|>=6.1,<7.0a0,5.9.*|>=6.0,<7.0a0|6.0.*,5.9|5.9.*|>=5.9,<5.10.0a0|>=6.1,<6.2.0a0')" | |
| ] | |
| }, | |
| "execution_count": 7, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "conflicts[0].merge()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 8, | |
| "id": "spanish-extension", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "True" | |
| ] | |
| }, | |
| "execution_count": 8, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "conflicts[0].merge().match(\"6.1\")" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 9, | |
| "id": "informed-cooling", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "VersionSpec('2.7.*|3.5.*|3.6.*|>=2.7,<2.8.0a0|>=3.6,<3.7.0a0|>=3.7,<3.8.0a0|>=3.8,<3.9.0a0|>=3.5,<3.6.0a0|3.4.*,2.7.*|3.5.*|3.6.*|>=2.7,<2.8.0a0|>=3.6,<3.7.0a0|>=3.8,<3.9.0a0|>=3.7,<3.8.0a0|>=3.5,<3.6.0a0|3.4.*|>3|>=3.5|<3.0.0|>=3.6,>=3.4,3.7.*|3.8.*')" | |
| ] | |
| }, | |
| "execution_count": 9, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "conflicts[1].merge()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 10, | |
| "id": "illegal-owner", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "True" | |
| ] | |
| }, | |
| "execution_count": 10, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "conflicts[1].merge().match(3.8)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 11, | |
| "id": "liable-communication", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "ConstraintGroup(name='ca-certificates', constraints=[])" | |
| ] | |
| }, | |
| "execution_count": 11, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "conflicts[2]" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 12, | |
| "id": "secure-retail", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "ConstraintGroup(name='setuptools', constraints=[Constraint(dependency='instrain', versions=VersionSpec('>=40.0'))])" | |
| ] | |
| }, | |
| "execution_count": 12, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "conflicts[3]" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 13, | |
| "id": "institutional-heaven", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "True" | |
| ] | |
| }, | |
| "execution_count": 13, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "conflicts[3].merge().match(\"40.0\")" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 14, | |
| "id": "spare-gregory", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "ConstraintGroup(name='libgcc-ng', constraints=[Constraint(dependency='samtools', versions=VersionSpec('>=7.2.0')), Constraint(dependency='samtools', versions=VersionSpec('>=4.9|>=7.3.0'))])" | |
| ] | |
| }, | |
| "execution_count": 14, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "conflicts[4]" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 15, | |
| "id": "resident-stadium", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "True" | |
| ] | |
| }, | |
| "execution_count": 15, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "conflicts[4].merge().match(\"7.3.0\")" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 16, | |
| "id": "included-kruger", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "ConstraintGroup(name='pypy3.6', constraints=[Constraint(dependency='instrain', versions=VersionSpec('7.3.0.*|7.3.1.*|>=7.3.1')), Constraint(dependency='awscli', versions=VersionSpec('7.3.*|7.3.0.*|7.3.1.*'))])" | |
| ] | |
| }, | |
| "execution_count": 16, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "conflicts[5]" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 17, | |
| "id": "several-adolescent", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "True" | |
| ] | |
| }, | |
| "execution_count": 17, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "conflicts[5].merge().match(\"7.3.1\")" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 18, | |
| "id": "preceding-bullet", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "ConstraintGroup(name='bzip2', constraints=[Constraint(dependency='samtools', versions=VersionSpec('1.0.*|>=1.0.6,<2.0a0|>=1.0.8,<2.0a0')), Constraint(dependency='instrain', versions=VersionSpec('>=1.0.6,<2.0a0|>=1.0.8,<2.0a0')), Constraint(dependency='awscli', versions=VersionSpec('>=1.0.6,<2.0a0|>=1.0.8,<2.0a0'))])" | |
| ] | |
| }, | |
| "execution_count": 18, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "conflicts[6]" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 19, | |
| "id": "acknowledged-marsh", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "True" | |
| ] | |
| }, | |
| "execution_count": 19, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "conflicts[6].merge().match(\"1.0.8\")" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 20, | |
| "id": "strong-spray", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "ConstraintGroup(name='zlib', constraints=[Constraint(dependency='samtools', versions=VersionSpec('1.2.11.*|>=1.2.11,<1.3.0a0|1.2.8.*|1.2.8')), Constraint(dependency='samtools', versions=VersionSpec('1.2.*|1.2.11'))])" | |
| ] | |
| }, | |
| "execution_count": 20, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "conflicts[7]" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 21, | |
| "id": "informational-decision", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "True" | |
| ] | |
| }, | |
| "execution_count": 21, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "conflicts[7].merge().match(\"1.2.11\")" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 22, | |
| "id": "greek-grade", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "ConstraintGroup(name='samtools', constraints=[Constraint(dependency='instrain', versions=VersionSpec('1.3|1.3.1.*|1.3.1|1.5.*|1.6.*|1.7|1.7.*|1.9.*|>=1.4.1|>=1.4.1,<1.5|>=1.4,<1.5|>=1.3,<1.4|>=1.3'))])" | |
| ] | |
| }, | |
| "execution_count": 22, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "conflicts[8]" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 23, | |
| "id": "british-institution", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "True" | |
| ] | |
| }, | |
| "execution_count": 23, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "conflicts[8].merge().match(\"1.3\")" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 24, | |
| "id": "finnish-camel", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "ConstraintGroup(name='openssl', constraints=[Constraint(dependency='samtools', versions=VersionSpec('1.0.*|>=1.0.2o,<1.0.3a|>=1.0.2m,<1.0.3a')), Constraint(dependency='samtools', versions=VersionSpec('>=1.0.2p,<1.0.3a|>=1.0.2r,<1.0.3a|>=1.1.1a,<1.1.2a'))])" | |
| ] | |
| }, | |
| "execution_count": 24, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "conflicts[9]" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 25, | |
| "id": "defensive-tribe", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "True" | |
| ] | |
| }, | |
| "execution_count": 25, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "conflicts[9].merge().match(\"1.1.1a\")" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 26, | |
| "id": "innovative-characterization", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "ConstraintGroup(name='_libgcc_mutex', constraints=[Constraint(dependency='samtools', versions=VersionSpec('*|0.1')), Constraint(dependency='python=3.8', versions=VersionSpec('*|0.1'))])" | |
| ] | |
| }, | |
| "execution_count": 26, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "conflicts[10]" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 27, | |
| "id": "alien-penalty", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "True" | |
| ] | |
| }, | |
| "execution_count": 27, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "conflicts[10].merge().match(\"0.1\")" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 28, | |
| "id": "needed-rendering", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "11" | |
| ] | |
| }, | |
| "execution_count": 28, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "len(conflicts)" | |
| ] | |
| } | |
| ], | |
| "metadata": { | |
| "kernelspec": { | |
| "display_name": "Python [conda env:science]", | |
| "language": "python", | |
| "name": "conda-env-science-py" | |
| }, | |
| "language_info": { | |
| "codemirror_mode": { | |
| "name": "ipython", | |
| "version": 3 | |
| }, | |
| "file_extension": ".py", | |
| "mimetype": "text/x-python", | |
| "name": "python", | |
| "nbconvert_exporter": "python", | |
| "pygments_lexer": "ipython3", | |
| "version": "3.9.1" | |
| } | |
| }, | |
| "nbformat": 4, | |
| "nbformat_minor": 5 | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment