From 7f4884b18e5789d86e0579de2e871c764a9cfb6e Mon Sep 17 00:00:00 2001 From: "Genheden, Samuel" Date: Mon, 28 Nov 2022 10:38:32 +0100 Subject: [PATCH 1/7] Public release 3.5.0 --- CHANGELOG.md | 15 + aizynthfinder/aizynthfinder.py | 3 + aizynthfinder/chem/mol.py | 110 +- aizynthfinder/chem/reaction.py | 190 +- aizynthfinder/chem/serialization.py | 23 +- .../context/policy/expansion_strategies.py | 7 +- aizynthfinder/interfaces/aizynthcli.py | 22 +- aizynthfinder/reactiontree.py | 5 +- aizynthfinder/tools/cat_output.py | 8 +- aizynthfinder/training/keras_models.py | 4 +- aizynthfinder/utils/files.py | 52 +- aizynthfinder/utils/models.py | 3 +- docs/conf.py | 2 +- pyproject.toml | 2 +- tests/chem/test_reaction.py | 122 +- tests/chem/test_serialization.py | 2 + tests/conftest.py | 9 +- tests/context/test_policy.py | 19 + tests/data/and_or_tree.json | 3132 +++++++++++++- tests/data/combined_example_tree2.json | 103 + tests/data/full_search_tree.json.gz | Bin 81644 -> 218545 bytes tests/data/tree_for_clustering.json | 189 +- .../data/andor_tree_for_clustering.json | 3821 ++++++++++++++++- tests/retrostar/test_retrostar.py | 13 +- tests/test_analysis.py | 65 +- tests/test_cli.py | 6 +- tests/test_reactiontree.py | 10 +- tests/utils/test_file_utils.py | 33 +- 28 files changed, 7630 insertions(+), 340 deletions(-) create mode 100644 tests/data/combined_example_tree2.json diff --git a/CHANGELOG.md b/CHANGELOG.md index 74d949b..3bb00f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,20 @@ # CHANGELOG +## Version 3.5.0 2022-11-28 (2022-07-21) + +### Features + +- Atom-mapping is tracked from product to reactant +- Support loading of template library from (gzipped) CSV file +- Support of saving aizynthcli output to (gzipped) JSON file +- AiZynthExpander now tracks non-applicable templates + +### Bug-fixes +- Fixed failing test case + +### Trival changes +- Silent progress bar when utilizing local Keras model + ## Version 3.4.0 2022-04-28 ### Features diff --git a/aizynthfinder/aizynthfinder.py b/aizynthfinder/aizynthfinder.py index e542815..7df1d10 100644 --- a/aizynthfinder/aizynthfinder.py +++ b/aizynthfinder/aizynthfinder.py @@ -254,6 +254,7 @@ def __init__(self, configfile: str = None, configdict: StrDict = None) -> None: self.expansion_policy = self.config.expansion_policy self.filter_policy = self.config.filter_policy + self.stats: StrDict = {} def do_expansion( self, @@ -280,6 +281,7 @@ def do_expansion( :param filter_func: an additional filter function :return: the grouped reactions """ + self.stats = {"non-applicable": 0} mol = TreeMolecule(parent=None, smiles=smiles) actions, _ = self.expansion_policy.get_actions([mol]) @@ -287,6 +289,7 @@ def do_expansion( for action in actions: reactants = action.reactants if not reactants: + self.stats["non-applicable"] += 1 continue if filter_func and not filter_func(action): continue diff --git a/aizynthfinder/chem/mol.py b/aizynthfinder/chem/mol.py index c682485..bd1b350 100644 --- a/aizynthfinder/chem/mol.py +++ b/aizynthfinder/chem/mol.py @@ -11,7 +11,16 @@ if TYPE_CHECKING: - from aizynthfinder.utils.type_utils import Dict, Optional, Union, Tuple, RdMol + from aizynthfinder.utils.type_utils import ( + Dict, + Optional, + Union, + Tuple, + RdMol, + Sequence, + List, + Callable, + ) class Molecule: @@ -51,6 +60,11 @@ def __init__( self._fingerprints: Dict[Union[Tuple[int, int], Tuple[int]], np.ndarray] = {} self._is_sanitized: bool = False + # Atom mapping -> atom index dictionary + self._atom_mappings: Dict[int, int] = {} + # Atom index -> atom mapping dictionary + self._reverse_atom_mappings: Dict[int, int] = {} + if sanitize: self.sanitize() @@ -98,6 +112,26 @@ def inchi_key(self) -> str: raise MoleculeException("Could not make InChI key") return self._inchi_key + @property + def index_to_mapping(self) -> Dict[int, int]: + """Return a dictionary mapping to atom indices to atom mappings""" + if not self._reverse_atom_mappings: + self._reverse_atom_mappings = { + index: mapping for mapping, index in self.mapping_to_index.items() + } + return self._reverse_atom_mappings + + @property + def mapping_to_index(self) -> Dict[int, int]: + """Return a dictionary mapping to atom mappings to atom indices""" + if not self._atom_mappings: + self._atom_mappings = { + atom.GetAtomMapNum(): atom.GetIdx() + for atom in self.rd_mol.GetAtoms() + if atom.GetAtomMapNum() + } + return self._atom_mappings + @property def weight(self) -> float: """Return the exact molecular weight of the molecule""" @@ -153,13 +187,19 @@ def make_unique(self) -> "UniqueMolecule": """ return UniqueMolecule(rd_mol=self.rd_mol) - def remove_atom_mapping(self) -> None: + def remove_atom_mapping(self, exceptions: Sequence[int] = None) -> None: """ Remove all mappings of the atoms and update the smiles + + :param exceptions: keep the listed atom mappings """ + exceptions = exceptions or [] for atom in self.rd_mol.GetAtoms(): + if exceptions and atom.GetAtomMapNum() in exceptions: + continue atom.SetAtomMapNum(0) self.smiles = Chem.MolToSmiles(self.rd_mol) + self._clear_cache() def sanitize(self, raise_exception: bool = True) -> None: """ @@ -181,10 +221,15 @@ def sanitize(self, raise_exception: bool = True) -> None: return self.smiles = Chem.MolToSmiles(self.rd_mol) + self._clear_cache() + self._is_sanitized = True + + def _clear_cache(self): self._inchi = None self._inchi_key = None self._fingerprints = {} - self._is_sanitized = True + self._atom_mappings = {} + self._reverse_atom_mappings = {} class TreeMolecule(Molecule): @@ -194,17 +239,26 @@ class TreeMolecule(Molecule): If the class is instantiated without specifying the `transform` argument, it is computed by increasing the value of the `parent.transform` variable. + If no parent is provided the atoms with atom mapping number are tracked + and inherited to children. + + :ivar mapped_mol: the tracked molecule with atom mappings + :ivar mapped_smiles: the SMILES of the tracked molecule with atom mappings + :ivar original_smiles: the SMILES as passed when instantiating the class :ivar parent: parent molecule :ivar transform: a numerical number corresponding to the depth in the tree + :ivar tracked_atom_indices: tracked atom indices and what indices they correspond to in this molecule :param parent: a TreeMolecule object that is the parent :param transform: the transform value, defaults to None :param rd_mol: a RDKit mol object to encapsulate, defaults to None :param smiles: a SMILES to convert to a molecule object, defaults to None :param sanitize: if True, the molecule will be immediately sanitized, defaults to False + :param mapping_update_callback: if given will call this method before setting up the `mapped_smiles` :raises MoleculeException: if neither rd_mol or smiles is given, or if the molecule could not be sanitized """ + # pylint: disable=too-many-arguments def __init__( self, parent: Optional["TreeMolecule"], @@ -212,6 +266,7 @@ def __init__( rd_mol: RdMol = None, smiles: str = None, sanitize: bool = False, + mapping_update_callback: Callable[["TreeMolecule"], None] = None, ) -> None: super().__init__(rd_mol=rd_mol, smiles=smiles, sanitize=sanitize) self.parent = parent @@ -220,6 +275,55 @@ def __init__( else: self.transform = transform or 0 + self.original_smiles = smiles + self.tracked_atom_indices: Dict[int, Optional[int]] = {} + self.mapped_mol = Chem.Mol(self.rd_mol) + if not self.parent: + self._init_tracking() + elif mapping_update_callback is not None: + mapping_update_callback(self) + + AllChem.SanitizeMol(self.mapped_mol) + self.mapped_smiles = Chem.MolToSmiles(self.mapped_mol) + + if self.parent: + self.remove_atom_mapping() + self._update_tracked_atoms() + + @property + def mapping_to_index(self) -> Dict[int, int]: + """Return a dictionary mapping to atom mappings to atom indices""" + if not self._atom_mappings: + self._atom_mappings = { + atom.GetAtomMapNum(): atom.GetIdx() + for atom in self.mapped_mol.GetAtoms() + if atom.GetAtomMapNum() + } + return self._atom_mappings + + def _init_tracking(self): + self.tracked_atom_indices = dict(self.mapping_to_index) + for idx, atom in enumerate(self.mapped_mol.GetAtoms()): + atom.SetAtomMapNum(idx + 1) + self._atom_mappings = {} + + def _update_tracked_atoms(self) -> None: + if self.parent is None: + return + + if not self.parent.tracked_atom_indices: + return + + parent2child_map = { + atom_index: self.mapping_to_index.get(mapping_index) + for mapping_index, atom_index in self.parent.mapping_to_index.items() + } + + self.tracked_atom_indices = { + tracked_index: parent2child_map[parent_index] # type: ignore + for tracked_index, parent_index in self.parent.tracked_atom_indices.items() + } + class UniqueMolecule(Molecule): """ diff --git a/aizynthfinder/chem/reaction.py b/aizynthfinder/chem/reaction.py index 406172e..c97ed29 100644 --- a/aizynthfinder/chem/reaction.py +++ b/aizynthfinder/chem/reaction.py @@ -3,11 +3,16 @@ from __future__ import annotations import hashlib import abc +from functools import partial from typing import TYPE_CHECKING import numpy as np +from rdkit import Chem from rdkit.Chem import AllChem +from rdkit.Chem.rdchem import ChiralType, BondDir, BondStereo from rdchiral import main as rdc +from rdchiral.bonds import get_atoms_across_double_bonds +from rdchiral.initialization import BondDirOpposite from aizynthfinder.utils.logging import logger from aizynthfinder.chem.mol import MoleculeException, Molecule, TreeMolecule @@ -22,6 +27,7 @@ StrDict, Iterable, Any, + Set, ) from aizynthfinder.chem.mol import UniqueMolecule @@ -227,6 +233,23 @@ def __init__( self._smiles: Optional[str] = None self._kwargs: StrDict = kwargs + @classmethod + def from_serialization( + cls, init_args: StrDict, reactants: List[List[TreeMolecule]] + ) -> "RetroReaction": + """ + Create an object from a serialization. It does + 1) instantiate an object using the `init_args` and + 2) set the reactants to a tuple-form of `reactants + + :param init_args: the arguments passed to the `__init__` method + :param reactants: the reactants + :return: the deserialized object + """ + obj = cls(**init_args) + obj._reactants = tuple(tuple(mol for mol in lst_) for lst_ in reactants) + return obj + def __str__(self) -> str: return f"reaction on molecule {self.mol.smiles}" @@ -277,6 +300,15 @@ def copy(self, index: int = None) -> "RetroReaction": new_reaction._smiles = self._smiles return new_reaction + def mapped_reaction_smiles(self) -> str: + """ + Get the mapped reaction SMILES if it exists + :return: the SMILES + """ + reactants = self.mol.mapped_smiles + products = ".".join(mol.mapped_smiles for mol in self._products_getter()) + return reactants + ">>" + products + def to_dict(self) -> StrDict: """ Return the retro reaction as dictionary @@ -303,6 +335,18 @@ def _products_getter(self) -> Tuple[TreeMolecule, ...]: def _reactants_getter(self) -> List[TreeMolecule]: return [self.mol] + @staticmethod + def _update_unmapped_atom_num(mol: TreeMolecule, exclude_nums: Set[int]) -> None: + mapped_nums = {num for num in mol.mapping_to_index.keys() if 0 < num < 900} + offset = max(mapped_nums) + 1 if mapped_nums else 1 + for atom in mol.mapped_mol.GetAtoms(): + if 0 < atom.GetAtomMapNum() < 900: + continue + while offset in exclude_nums: + offset += 1 + atom.SetAtomMapNum(offset) + exclude_nums.add(offset) + class TemplatedRetroReaction(RetroReaction): """ @@ -363,28 +407,42 @@ def _apply_with_rdchiral(self) -> Tuple[Tuple[TreeMolecule, ...], ...]: Will try to sanitize the reactants, and if that fails it will not return that molecule """ reaction = rdc.rdchiralReaction(self.smarts) - rct = rdc.rdchiralReactants(self.mol.smiles) + rct = _RdChiralProductWrapper(self.mol) try: - reactants = rdc.rdchiralRun(reaction, rct) + reactants = rdc.rdchiralRun(reaction, rct, keep_mapnums=True) except RuntimeError as err: logger().debug( f"Runtime error in RDChiral with template {self.smarts} on {self.mol.smiles}\n{err}" ) reactants = [] + except KeyError as err: + logger().debug( + f"Index error in RDChiral with template {self.smarts} on {self.mol.mapped_smiles}\n{err}" + ) + reactants = [] # Turning rdchiral outcome into rdkit tuple of tuples to maintain compatibility outcomes = [] for reactant_str in reactants: smiles_list = reactant_str.split(".") + exclude_nums = set(self.mol.mapping_to_index.keys()) + update_func = partial( + self._update_unmapped_atom_num, exclude_nums=exclude_nums + ) try: - rct = tuple( - TreeMolecule(parent=self.mol, smiles=smi, sanitize=True) + rct_objs = tuple( + TreeMolecule( + parent=self.mol, + smiles=smi, + sanitize=True, + mapping_update_callback=update_func, + ) for smi in smiles_list ) except MoleculeException: pass else: - outcomes.append(rct) + outcomes.append(rct_objs) self._reactants = tuple(outcomes) return self._reactants @@ -392,17 +450,22 @@ def _apply_with_rdchiral(self) -> Tuple[Tuple[TreeMolecule, ...], ...]: def _apply_with_rdkit(self) -> Tuple[Tuple[TreeMolecule, ...], ...]: rxn = AllChem.ReactionFromSmarts(self.smarts) try: - self.mol.sanitize() - except MoleculeException: + reactants_list = rxn.RunReactants([self.mol.mapped_mol]) + except: # pylint: disable=bare-except reactants_list = [] - else: - reactants_list = rxn.RunReactants([self.mol.rd_mol]) outcomes = [] for reactants in reactants_list: + exclude_nums = set(self.mol.mapping_to_index.keys()) + update_func = partial(self._inherit_atom_mapping, exclude_nums=exclude_nums) try: mols = tuple( - TreeMolecule(parent=self.mol, rd_mol=mol, sanitize=True) + TreeMolecule( + parent=self.mol, + rd_mol=mol, + sanitize=True, + mapping_update_callback=update_func, + ) for mol in reactants ) except MoleculeException: @@ -416,6 +479,27 @@ def _apply_with_rdkit(self) -> Tuple[Tuple[TreeMolecule, ...], ...]: def _make_smiles(self): return AllChem.ReactionToSmiles(self.rd_reaction) + def _inherit_atom_mapping(self, mol: TreeMolecule, exclude_nums: Set[int]) -> None: + """ + Update the internal atom mapping dictionary by inspecting the `reaction_atom_idx` + property of the atoms and comparing it with the parent-molecule. + + This is used for child molecules created by RDKit reaction application. + RDChiral takes care of this automatically. + """ + if mol.parent is None: + return + + for atom in mol.mapped_mol.GetAtoms(): + if not atom.HasProp("react_atom_idx"): + continue + index = atom.GetProp("react_atom_idx") + mapping = mol.parent.index_to_mapping.get(int(index)) + if mapping: + atom.SetAtomMapNum(mapping) + + self._update_unmapped_atom_num(mol, exclude_nums) + class SmilesBasedRetroReaction(RetroReaction): """ @@ -436,6 +520,7 @@ def __init__( ): super().__init__(mol, index, metadata, **kwargs) self.reactants_str: str = kwargs["reactants_str"] + self._mapped_prod_smiles = kwargs.get("mapped_prod_smiles") def __str__(self) -> str: return ( @@ -445,14 +530,23 @@ def __str__(self) -> str: def to_dict(self) -> StrDict: dict_ = super().to_dict() dict_["reactants_str"] = self.reactants_str + dict_["mapped_prod_smiles"] = self._mapped_prod_smiles return dict_ def _apply(self) -> Tuple[Tuple[TreeMolecule, ...], ...]: outcomes = [] smiles_list = self.reactants_str.split(".") + + exclude_nums = set(self.mol.mapping_to_index.keys()) + update_func = partial(self._remap, exclude_nums=exclude_nums) try: rct = tuple( - TreeMolecule(parent=self.mol, smiles=smi, sanitize=True) + TreeMolecule( + parent=self.mol, + smiles=smi, + sanitize=True, + mapping_update_callback=update_func, + ) for smi in smiles_list ) except MoleculeException: @@ -463,6 +557,30 @@ def _apply(self) -> Tuple[Tuple[TreeMolecule, ...], ...]: return self._reactants + def _remap(self, mol: TreeMolecule, exclude_nums: Set[int]) -> None: + """Find the mapping between parent and child and then re-map the child molecule""" + if not self._mapped_prod_smiles: + self._update_unmapped_atom_num(mol, exclude_nums) + return + + parent_remapping = {} + pmol = Molecule(smiles=self._mapped_prod_smiles, sanitize=True) + for atom_idx1, atom_idx2 in enumerate( + pmol.rd_mol.GetSubstructMatch(self.mol.mapped_mol) + ): + atom1 = self.mol.mapped_mol.GetAtomWithIdx(atom_idx1) + atom2 = pmol.rd_mol.GetAtomWithIdx(atom_idx2) + if atom1.GetAtomMapNum() > 0 and atom2.GetAtomMapNum() > 0: + parent_remapping[atom2.GetAtomMapNum()] = atom1.GetAtomMapNum() + + for atom in mol.mapped_mol.GetAtoms(): + if atom.GetAtomMapNum() and atom.GetAtomMapNum() in parent_remapping: + atom.SetAtomMapNum(parent_remapping[atom.GetAtomMapNum()]) + else: + atom.SetAtomMapNum(0) + + self._update_unmapped_atom_num(mol, exclude_nums) + def _make_smiles(self): rstr = ".".join(reactant.smiles for reactant in self.reactants[0]) return f"{self.mol.smiles}>>{rstr}" @@ -530,3 +648,53 @@ def hash_reactions( hash_list.sort() hash_list_str = ".".join(hash_list) return hashlib.sha224(hash_list_str.encode("utf8")).hexdigest() + + +class _RdChiralProductWrapper: + """ + Reimplementation of `rdchiralReaction` + to preserve product molecule already created + """ + + # pylint: disable=W0106,C0103 + def __init__(self, product: TreeMolecule) -> None: + product.sanitize() + self.reactant_smiles = product.smiles + + # Initialize into RDKit mol + self.reactants = Chem.Mol(product.mapped_mol.ToBinary()) + Chem.AssignStereochemistry(self.reactants, flagPossibleStereoCenters=True) + self.reactants.UpdatePropertyCache(strict=False) + + self.atoms_r = {a.GetAtomMapNum(): a for a in self.reactants.GetAtoms()} + self.idx_to_mapnum = lambda idx: self.reactants.GetAtomWithIdx( + idx + ).GetAtomMapNum() + + # Create copy of molecule without chiral information, used with + # RDKit's naive runReactants + self.reactants_achiral = Chem.Mol(product.rd_mol.ToBinary()) + [ + a.SetChiralTag(ChiralType.CHI_UNSPECIFIED) + for a in self.reactants_achiral.GetAtoms() + ] + [ + (b.SetStereo(BondStereo.STEREONONE), b.SetBondDir(BondDir.NONE)) + for b in self.reactants_achiral.GetBonds() + ] + + # Pre-list reactant bonds (for stitching broken products) + self.bonds_by_mapnum = [ + (b.GetBeginAtom().GetAtomMapNum(), b.GetEndAtom().GetAtomMapNum(), b) + for b in self.reactants.GetBonds() + ] + + # Pre-list chiral double bonds (for copying back into outcomes/matching) + self.bond_dirs_by_mapnum = {} + for (i, j, b) in self.bonds_by_mapnum: + if b.GetBondDir() != BondDir.NONE: + self.bond_dirs_by_mapnum[(i, j)] = b.GetBondDir() + self.bond_dirs_by_mapnum[(j, i)] = BondDirOpposite[b.GetBondDir()] + + # Get atoms across double bonds defined by mapnum + self.atoms_across_double_bonds = get_atoms_across_double_bonds(self.reactants) diff --git a/aizynthfinder/chem/serialization.py b/aizynthfinder/chem/serialization.py index e281cc2..56ca17b 100644 --- a/aizynthfinder/chem/serialization.py +++ b/aizynthfinder/chem/serialization.py @@ -49,6 +49,11 @@ def _add_mol(self, mol: aizynthfinder.chem.Molecule) -> None: if isinstance(mol, aizynthfinder.chem.TreeMolecule): dict_["parent"] = self[mol.parent] dict_["transform"] = mol.transform + dict_["tracked_atom_indices"] = mol.tracked_atom_indices + if not mol.parent: + dict_["smiles"] = mol.original_smiles + else: + dict_["smiles"] = mol.mapped_smiles self._store[id_] = dict_ @@ -100,10 +105,15 @@ def _create_molecules(self, store: dict) -> None: cls = spec["class"] if "parent" in spec: spec["parent"] = self[spec["parent"]] + tracked_atom_indices = None + if "tracked_atom_indices" in spec: + tracked_atom_indices = spec.pop("tracked_atom_indices") kwargs = dict(spec) del kwargs["class"] self._objects[id_] = getattr(aizynthfinder.chem, cls)(**kwargs) + if tracked_atom_indices is not None: + self._objects[id_].tracked_atom_indices = tracked_atom_indices def serialize_action( @@ -118,6 +128,10 @@ def serialize_action( """ dict_ = action.to_dict() dict_["mol"] = molecule_store[dict_["mol"]] + if not action.unqueried: + dict_["reactants"] = [ + [molecule_store[item] for item in lst_] for lst_ in action.reactants + ] dict_["class"] = f"{action.__class__.__module__}.{action.__class__.__name__}" return dict_ @@ -133,10 +147,15 @@ def deserialize_action( :return: the created action object """ mol_spec = dict_.pop("mol") - mol = molecule_store.get_tree_molecules([mol_spec])[0] + dict_["mol"] = molecule_store.get_tree_molecules([mol_spec])[0] try: class_spec = dict_.pop("class") except KeyError: class_spec = "aizynthfinder.chem.TemplatedRetroReaction" cls = load_dynamic_class(class_spec) - return cls(mol, **dict_) + if "reactants" in dict_: + reactants = [ + molecule_store.get_tree_molecules(lst_) for lst_ in dict_.pop("reactants") + ] + return cls.from_serialization(dict_, reactants) + return cls(**dict_) diff --git a/aizynthfinder/context/policy/expansion_strategies.py b/aizynthfinder/context/policy/expansion_strategies.py index 5d54f5b..279feda 100644 --- a/aizynthfinder/context/policy/expansion_strategies.py +++ b/aizynthfinder/context/policy/expansion_strategies.py @@ -91,7 +91,12 @@ def __init__(self, key: str, config: Configuration, **kwargs: str) -> None: self.model = load_model(source, self.key, self._config.use_remote_models) self._logger.info(f"Loading templates from {templatefile} to {self.key}") - self.templates: pd.DataFrame = pd.read_hdf(templatefile, "table") + if templatefile.endswith(".csv.gz") or templatefile.endswith(".csv"): + self.templates: pd.DataFrame = pd.read_csv( + templatefile, index_col=0, sep="\t" + ) + else: + self.templates = pd.read_hdf(templatefile, "table") if hasattr(self.model, "output_size") and len(self.templates) != self.model.output_size: # type: ignore raise PolicyException( diff --git a/aizynthfinder/interfaces/aizynthcli.py b/aizynthfinder/interfaces/aizynthcli.py index e69f612..1a89494 100644 --- a/aizynthfinder/interfaces/aizynthcli.py +++ b/aizynthfinder/interfaces/aizynthcli.py @@ -4,7 +4,6 @@ import argparse import json import os -import warnings import logging import importlib import tempfile @@ -15,7 +14,12 @@ import pandas as pd from aizynthfinder.aizynthfinder import AiZynthFinder -from aizynthfinder.utils.files import cat_hdf_files, split_file, start_processes +from aizynthfinder.utils.files import ( + cat_datafiles, + save_datafile, + split_file, + start_processes, +) from aizynthfinder.utils.logging import logger, setup_logger if TYPE_CHECKING: @@ -176,7 +180,7 @@ def _process_multi_smiles( route_distance_model: Optional[str], post_processing: List[_PostProcessingJob], ) -> None: - output_name = output_name or "output.hdf5" + output_name = output_name or "output.json.gz" with open(filename, "r") as fileobj: smiles = [line.strip() for line in fileobj.readlines()] @@ -207,9 +211,7 @@ def _process_multi_smiles( results["trees"].append(finder.routes.dicts) data = pd.DataFrame.from_dict(results) - with warnings.catch_warnings(): # This wil suppress a PerformanceWarning - warnings.simplefilter("ignore") - data.to_hdf(output_name, key="table", mode="w") + save_datafile(data, output_name) logger().info(f"Output saved to {output_name}") @@ -222,7 +224,7 @@ def create_cmd(index, filename): "--config", args.config, "--output", - hdf_files[index - 1], + json_files[index - 1], ] if args.policy: cmd_args.extend(["--policy"] + args.policy) @@ -246,14 +248,14 @@ def create_cmd(index, filename): setup_logger(logging.INFO) filenames = split_file(args.smiles, args.nproc) - hdf_files = [tempfile.mktemp(suffix=".hdf") for _ in range(args.nproc)] + json_files = [tempfile.mktemp(suffix=".json.gz") for _ in range(args.nproc)] start_processes(filenames, "aizynthcli", create_cmd) - if not all(os.path.exists(filename) for filename in hdf_files): + if not all(os.path.exists(filename) for filename in json_files): raise FileNotFoundError( "Not all output files produced. Please check the individual log files: 'aizynthcli*.log'" ) - cat_hdf_files(hdf_files, args.output or "output.hdf5") + cat_datafiles(json_files, args.output or "output.json.gz") def main() -> None: diff --git a/aizynthfinder/reactiontree.py b/aizynthfinder/reactiontree.py index cf9b2ea..0480814 100644 --- a/aizynthfinder/reactiontree.py +++ b/aizynthfinder/reactiontree.py @@ -333,10 +333,13 @@ def _unique_mol(self, molecule: Molecule) -> UniqueMolecule: def _unique_reaction(self, reaction: RetroReaction) -> FixedRetroReaction: id_ = id(reaction) if id_ not in self._unique_reactions: + metadata = dict(reaction.metadata) + if ":" in reaction.mapped_reaction_smiles(): + metadata["mapped_reaction_smiles"] = reaction.mapped_reaction_smiles() self._unique_reactions[id_] = FixedRetroReaction( self._unique_mol(reaction.mol), smiles=reaction.smiles, - metadata=reaction.metadata, + metadata=metadata, ) return self._unique_reactions[id_] diff --git a/aizynthfinder/tools/cat_output.py b/aizynthfinder/tools/cat_output.py index 79eb680..f2c4493 100644 --- a/aizynthfinder/tools/cat_output.py +++ b/aizynthfinder/tools/cat_output.py @@ -1,8 +1,8 @@ -""" Module containing a CLI for concatenating output files (hdf5 files) +""" Module containing a CLI for concatenating output files (hdf5/json.gz files) """ import argparse -from aizynthfinder.utils.files import cat_hdf_files +from aizynthfinder.utils.files import cat_datafiles def main() -> None: @@ -17,7 +17,7 @@ def main() -> None: parser.add_argument( "--output", required=True, - default="output.hdf5", + default="output.json.gz", help="the name of the concatenate output file ", ) parser.add_argument( @@ -26,7 +26,7 @@ def main() -> None: ) args = parser.parse_args() - cat_hdf_files(args.files, args.output, args.trees) + cat_datafiles(args.files, args.output, args.trees) if __name__ == "__main__": diff --git a/aizynthfinder/training/keras_models.py b/aizynthfinder/training/keras_models.py index b7449ba..11effc9 100644 --- a/aizynthfinder/training/keras_models.py +++ b/aizynthfinder/training/keras_models.py @@ -6,7 +6,7 @@ import numpy as np -# pylint: disable=no-name-in-module +# pylint: disable=all from tensorflow.keras.layers import Dense, Dropout, Input, Dot from tensorflow.keras.models import Sequential, Model from tensorflow.keras.optimizers import Adam @@ -18,6 +18,8 @@ ReduceLROnPlateau, ) from tensorflow.keras import regularizers + +# pylint: enable=all from sklearn.utils import shuffle from scipy import sparse diff --git a/aizynthfinder/utils/files.py b/aizynthfinder/utils/files.py index 1eb940c..a8135fe 100644 --- a/aizynthfinder/utils/files.py +++ b/aizynthfinder/utils/files.py @@ -6,22 +6,61 @@ import warnings import json import gzip +from pathlib import Path from typing import TYPE_CHECKING +from deprecated import deprecated import more_itertools import pandas as pd from aizynthfinder.utils.logging import logger if TYPE_CHECKING: - from aizynthfinder.utils.type_utils import List, Sequence, Any, Callable + from aizynthfinder.utils.type_utils import List, Sequence, Any, Callable, Union +def read_datafile(filename: Union[str, Path]) -> pd.DataFrame: + """ + Read aizynth output from disc in either .hdf5 or .json format + + :param filename: the path to the data + :return: the loaded data + """ + filename_str = str(filename) + if filename_str.endswith(".hdf5") or filename_str.endswith(".hdf"): + return pd.read_hdf(filename, "table") + return pd.read_json(filename, orient="table") + + +def save_datafile(data: pd.DataFrame, filename: Union[str, Path]) -> None: + """ + Save the given data to disc in either .hdf5 or .json format + + :param data: the data to save + :param filename: the path to the data + """ + filename_str = str(filename) + if filename_str.endswith(".hdf5") or filename_str.endswith(".hdf"): + with warnings.catch_warnings(): # This wil suppress a PerformanceWarning + warnings.simplefilter("ignore") + data.to_hdf(filename, key="table") + else: + data.to_json(filename, orient="table") + + +@deprecated(version="4.0.0", reason="replaced by 'cat_datafiles'") def cat_hdf_files( input_files: List[str], output_name: str, trees_name: str = None +) -> None: + """Concatenate hdf5 or json datafiles""" + cat_datafiles(input_files, output_name, trees_name) + + +def cat_datafiles( + input_files: List[str], output_name: str, trees_name: str = None ) -> None: """ - Concatenate hdf5 files with the key "table" + Concatenate hdf5 or json datafiles if `tree_name` is given, will take out the `trees` column from the tables and save it to a gzipped-json file. @@ -30,7 +69,7 @@ def cat_hdf_files( :param output_name: the name of the concatenated file :param trees_name: the name of the concatenated trees """ - data = pd.read_hdf(input_files[0], key="table") + data = read_datafile(input_files[0]) if "trees" not in data.columns: trees_name = None @@ -41,16 +80,13 @@ def cat_hdf_files( data = data[columns] for filename in input_files[1:]: - new_data = pd.read_hdf(filename, key="table") + new_data = read_datafile(filename) if trees_name: trees.extend(new_data["trees"].values) new_data = new_data[columns] data = pd.concat([data, new_data]) - with warnings.catch_warnings(): # This wil suppress a PerformanceWarning - warnings.simplefilter("ignore") - data.reset_index().to_hdf(output_name, key="table") - + save_datafile(data.reset_index(), output_name) if trees_name: if not trees_name.endswith(".gz"): trees_name += ".gz" diff --git a/aizynthfinder/utils/models.py b/aizynthfinder/utils/models.py index 1e07f8d..f258821 100644 --- a/aizynthfinder/utils/models.py +++ b/aizynthfinder/utils/models.py @@ -16,10 +16,11 @@ prediction_service_pb2_grpc, ) -# pylint: disable=no-name-in-module +# pylint: disable=all from tensorflow.keras.metrics import top_k_categorical_accuracy from tensorflow.keras.models import load_model as load_keras_model +# pylint: enable=all from aizynthfinder.utils.logging import logger from aizynthfinder.utils.exceptions import ExternalModelAPIError diff --git a/docs/conf.py b/docs/conf.py index c2f721c..990521c 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -6,7 +6,7 @@ project = "aizynthfinder" copyright = "2020-2022, Molecular AI group" author = "Molecular AI group" -release = "3.4.0" +release = "3.5.0" # This make sure that the cli_help.txt file is properly formated with open("cli_help.txt", "r") as fileobj: diff --git a/pyproject.toml b/pyproject.toml index 8b4f7be..1b00c9e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "aizynthfinder" -version = "3.4.0" +version = "3.5.0" description = "Retrosynthetic route finding using neural network guided Monte-Carlo tree search" authors = ["Molecular AI group "] license = "MIT" diff --git a/tests/chem/test_reaction.py b/tests/chem/test_reaction.py index 8d3f2bc..38048a9 100644 --- a/tests/chem/test_reaction.py +++ b/tests/chem/test_reaction.py @@ -41,6 +41,16 @@ def test_retro_reaction(get_action): reaction.reaction_smiles() == "CCCCOc1ccc(CC(=O)N(C)O)cc1>>CCCCOc1ccc(CC(=O)Cl)cc1.CNO" ) + assert ( + reaction.mapped_reaction_smiles().split(">>")[0] + == "[CH3:1][CH2:2][CH2:3][CH2:4][O:5][c:6]1[cH:7][cH:8][c:9]([CH2:10]" + "[C:11](=[O:12])[N:13]([CH3:14])[OH:15])[cH:16][cH:17]1" + ) + assert ( + reaction.mapped_reaction_smiles().split(">>")[1] + == "[CH3:1][CH2:2][CH2:3][CH2:4][O:5][c:6]1[cH:7][cH:8][c:9]([CH2:10]" + "[C:11](=[O:12])[Cl:18])[cH:16][cH:17]1.[NH:13]([CH3:14])[OH:15]" + ) reaction = get_action(applicable=False) assert not reaction.reactants @@ -70,13 +80,6 @@ def test_retro_reaction_with_rdkit(get_action): assert not reaction.reactants -def test_retro_reaction_with_rdkit_exception(get_action, mocker): - reaction = get_action(applicable=True, use_rdchiral=False) - mocker.patch("aizynthfinder.chem.Molecule.sanitize", side_effect=MoleculeException) - - assert not reaction.reactants - - def test_retro_reaction_fingerprint(get_action): reaction = get_action() @@ -111,7 +114,27 @@ def test_smiles_based_retroreaction(): assert len(reaction.reactants) == 1 assert reaction.reactants[0][0].smiles == "CC(=O)O" assert reaction.reactants[0][1].smiles == "CN" - assert reaction.smiles == "CNC(C)=O>>CC(=O)O.CN" + assert reaction.reaction_smiles() == "CNC(C)=O>>CC(=O)O.CN" + assert ( + reaction.mapped_reaction_smiles() + == "[CH3:1][NH:2][C:3]([CH3:4])=[O:5]>>[CH3:6][C:7](=[O:8])[OH:9].[CH3:10][NH2:11]" + ) + + +def test_smiles_based_retroreaction_w_mapping(): + mol = TreeMolecule(smiles="CNC(C)=O", parent=None, sanitize=True) + reaction = SmilesBasedRetroReaction( + mol, reactants_str="[CH3:5]C(=O)O.CN", mapped_prod_smiles="[CH3:5]NC(C)=O" + ) + + assert len(reaction.reactants) == 1 + assert reaction.reactants[0][0].smiles == "CC(=O)O" + assert reaction.reactants[0][1].smiles == "CN" + assert reaction.reaction_smiles() == "CNC(C)=O>>CC(=O)O.CN" + assert ( + reaction.mapped_reaction_smiles() + == "[CH3:1][NH:2][C:3]([CH3:4])=[O:5]>>[CH3:1][C:6](=[O:7])[OH:8].[CH3:9][NH2:10]" + ) def test_create_fixed_reaction(): @@ -145,3 +168,86 @@ def test_reaction_hash(setup_linear_reaction_tree): hash_ = hash_reactions(reactions, sort=False) assert hash_ == "567c23da4673b8b2519aeafda9b26ae949ad3e24f570968ee5f80878" + + +def test_create_atom_tracking(): + mol = TreeMolecule(smiles="[C:1][N:2]C(C)=O", parent=None) + + assert mol.tracked_atom_indices == {1: 0, 2: 1} + + +def test_inherit_atom_tracking(): + mol = TreeMolecule(smiles="[C:1][N:2]C(C)=O", parent=None, sanitize=True) + reaction = SmilesBasedRetroReaction(mol, reactants_str="[C:1]C(=O)O.C[N:2]") + + assert reaction.reactants[0][0].tracked_atom_indices == {1: 0, 2: None} + assert reaction.reactants[0][1].tracked_atom_indices == {1: None, 2: 1} + + +def test_inherit_atom_tracking_rdchiral(): + smi = "CCCCOc1ccc(C[C:1](=O)[N:2](C)O)cc1" + mol = TreeMolecule(smiles=smi, parent=None) + smarts = ( + "([#8:4]-[N;H0;D3;+0:5](-[C;D1;H3:6])-[C;H0;D3;+0:1](-[C:2])=[O;D1;H0:3])" + ">>(Cl-[C;H0;D3;+0:1](-[C:2])=[O;D1;H0:3]).([#8:4]-[NH;D2;+0:5]-[C;D1;H3:6])" + ) + rxn = TemplatedRetroReaction(mol, smarts=smarts) + + assert rxn.reactants[0][0].tracked_atom_indices == {1: 10, 2: None} + assert rxn.reactants[0][1].tracked_atom_indices == {1: None, 2: 0} + + +def test_inherit_atom_tracking_rdkit(): + smi = "CCCCOc1ccc(C[C:1](=O)[N:2](C)O)cc1" + mol = TreeMolecule(smiles=smi, parent=None) + smarts = ( + "([#8:4]-[N;H0;D3;+0:5](-[C;D1;H3:6])-[C;H0;D3;+0:1](-[C:2])=[O;D1;H0:3])" + ">>(Cl-[C;H0;D3;+0:1](-[C:2])=[O;D1;H0:3]).([#8:4]-[NH;D2;+0:5]-[C;D1;H3:6])" + ) + rxn = TemplatedRetroReaction(mol, smarts=smarts, use_rdchiral=False) + + assert rxn.reactants[0][0].tracked_atom_indices == {1: 1, 2: None} + assert rxn.reactants[0][1].tracked_atom_indices == {1: None, 2: 1} + + +def test_inherit_atom_tracking_rdchiral_growing(): + mol = TreeMolecule(parent=None, smiles="CN1C(=O)C2CNCCN2c2ccccc21", sanitize=True) + smarts = ( + "[C:2]-[NH;D2;+0:1]-[C:3]>>C-C(-C)(-C)-O-C(=O)-[N;H0;D3;+0:1](-[C:2])-[C:3]" + ) + rxn = TemplatedRetroReaction(mol, smarts=smarts) + + assert all( + atom.GetAtomMapNum() > 0 and atom.GetAtomMapNum() < 900 + for atom in rxn.reactants[0][0].mapped_mol.GetAtoms() + ) + + +def test_inherit_atom_tracking_rdkit_growing(): + mol = TreeMolecule(parent=None, smiles="CN1C(=O)C2CNCCN2c2ccccc21", sanitize=True) + smarts = ( + "[C:2]-[NH;D2;+0:1]-[C:3]>>C-C(-C)(-C)-O-C(=O)-[N;H0;D3;+0:1](-[C:2])-[C:3]" + ) + rxn = TemplatedRetroReaction(mol, smarts=smarts, use_rdchiral=False) + + assert all( + atom.GetAtomMapNum() > 0 for atom in rxn.reactants[0][0].mapped_mol.GetAtoms() + ) + + +def test_inherit_atom_tracking_smiles_growing(): + mol = TreeMolecule(parent=None, smiles="c1ccc(-c2ccccc2)cc1", sanitize=True) + rxn = SmilesBasedRetroReaction( + mol=mol, + reactants_str="Cl[c:5]1[cH:6][cH:7][cH:8][cH:9][cH:10]1.Cl[c:1]1[cH:2][cH:3][cH:4][cH:11][cH:12]1", + mapped_prod_smiles="[cH:1]1[cH:2][cH:3][c:4](-[c:5]2[cH:6][cH:7][cH:8][cH:9][cH:10]2)[cH:11][cH:12]1", + ) + + assert ( + rxn.reactants[0][0].mapped_smiles + == "[c:5]1([Cl:13])[cH:6][cH:7][cH:8][cH:9][cH:10]1" + ) + assert ( + rxn.reactants[0][1].mapped_smiles + == "[c:1]1([Cl:14])[cH:2][cH:3][cH:4][cH:11][cH:12]1" + ) diff --git a/tests/chem/test_serialization.py b/tests/chem/test_serialization.py index cee497d..6b807fa 100644 --- a/tests/chem/test_serialization.py +++ b/tests/chem/test_serialization.py @@ -33,12 +33,14 @@ def test_add_tree_mol(): "class": "TreeMolecule", "parent": id(mol1), "transform": 2, + "tracked_atom_indices": {}, }, id(mol1): { "smiles": "CCC", "class": "TreeMolecule", "parent": None, "transform": 1, + "tracked_atom_indices": {}, }, } diff --git a/tests/conftest.py b/tests/conftest.py index 74f59b9..94982c2 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -317,12 +317,9 @@ def wrapper(scorer=None): def setup_analysis_andor_tree(default_config, shared_datadir, setup_stock): # noqa setup_stock( default_config, - "Nc1ccc(NC(=S)Nc2ccccc2)cc1", - "Cc1ccc2nc3ccccc3c(Cl)c2c1", - "Nc1ccccc1", - "Nc1ccc(N=C=S)cc1", - "Cc1ccc2nc3ccccc3c(Br)c2c1", - "Nc1ccc(Br)cc1", + "O=C(Cl)c1ccc(F)cc1", + "CN1CCC(C(=O)Cl)CC1", + "Nc1cccc(I)c1F", ) class BasicAndOrTree(AndOrSearchTreeBase): diff --git a/tests/context/test_policy.py b/tests/context/test_policy.py index 86fd404..49dce5d 100644 --- a/tests/context/test_policy.py +++ b/tests/context/test_policy.py @@ -52,6 +52,25 @@ def test_load_expansion_policy(default_config, setup_template_expansion_policy): expansion_policy.load(5) +def test_load_expansion_policy_templates_from_csv( + default_config, mock_keras_model, tmpdir +): + templates_filename = str(tmpdir / "temp.csv") + + with open(templates_filename, "w") as fileobj: + fileobj.write("template_index\ttemplate\tmetadata\n") + fileobj.write("0\tAAA\tmetadata1\n") + fileobj.write("1\tBBB\tmetadata2\n") + fileobj.write("2\tCCC\tmetadata3\n") + + strategy = TemplateBasedExpansionStrategy( + "default", default_config, source="dummy.hdf5", templatefile=templates_filename + ) + + assert len(strategy.templates) == 3 + assert list(strategy.templates.columns) == ["template", "metadata"] + + def test_load_expansion_policy_from_config_files( default_config, mock_keras_model, create_dummy_templates ): diff --git a/tests/data/and_or_tree.json b/tests/data/and_or_tree.json index ab5b377..a337d21 100644 --- a/tests/data/and_or_tree.json +++ b/tests/data/and_or_tree.json @@ -1,136 +1,3110 @@ { "tree": { - "mol": 140605332219984, + "mol": 139643154371392, "children": [ { "reaction": { - "mol": 140605332219984, - "smarts": "([c:8]-[NH;D2;+0:7]-[c;H0;D3;+0:1]1:[c:2]:[c:3]:[#7;a:4]:[c:5]:[c:6]:1)>>(Cl-[c;H0;D3;+0:1]1:[c:2]:[c:3]:[#7;a:4]:[c:5]:[c:6]:1).([NH2;D1;+0:7]-[c:8])", + "mol": 139643154371392, "index": 0, - "metadata": {} + "metadata": {}, + "smarts": "([O;D1;H0:2]=[C;H0;D3;+0:1](-[c:3])-[NH;D2;+0:4]-[c:5])>>(Cl-[C;H0;D3;+0:1](=[O;D1;H0:2])-[c:3]).([NH2;D1;+0:4]-[c:5])", + "reactants": [ + [ + 139643166203664, + 139643171528960 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" }, "children": [ { - "mol": 140605332201936, + "mol": 139643166203664, "children": [] }, { - "mol": 140605332205072, - "children": [] - } - ] - }, - { - "reaction": { - "mol": 140605332219984, - "smarts": "([S;D1;H0:3]=[C;H0;D3;+0:4](-[NH;D2;+0:1]-[c:2])-[NH;D2;+0:5]-[c:6])>>([NH2;D1;+0:1]-[c:2]).([S;D1;H0:3]=[C;H0;D2;+0:4]=[N;H0;D2;+0:5]-[c:6])", - "index": 1, - "metadata": {} - }, - "children": [ - { - "mol": 140598039857296, + "mol": 139643171528960, "children": [ { "reaction": { - "mol": 140598039857296, - "smarts": "([c:8]-[NH;D2;+0:7]-[c;H0;D3;+0:1]1:[c:2]:[c:3]:[#7;a:4]:[c:5]:[c:6]:1)>>(Cl-[c;H0;D3;+0:1]1:[c:2]:[c:3]:[#7;a:4]:[c:5]:[c:6]:1).([NH2;D1;+0:7]-[c:8])", + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:1]-[c:2])>>(O=[N+;H0;D3:1](-[O-])-[c:2])", + "reactants": [ + [ + 139643166201504 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643166201504, + "children": [ + { + "reaction": { + "mol": 139643166201504, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[N;H0;D3;+0:3](-[C:4])-[CH3;D1;+0:1])>>(I-[CH3;D1;+0:1]).([C:2]-[NH;D2;+0:3]-[C:4])", + "reactants": [ + [ + 139643162454288 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643162454288, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643166201504, + "index": 0, + "metadata": {}, + "smarts": "([C:1]-[C;H0;D3;+0:2](=[O;H0;D1;+0:3])-[c:4])>>([C:1]-[CH;D3;+0:2](-[OH;D1;+0:3])-[c:4])", + "reactants": [ + [ + 139643162454624 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643162454624, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643166201504, + "index": 0, + "metadata": {}, + "smarts": "([#7:2]-[CH3;D1;+0:1])>>(C-C(-C)(-C)-O-[C;H0;D3;+0:1](=O)-[#7:2])", + "reactants": [ + [ + 139643162455056 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643162455056, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643166201504, + "index": 0, + "metadata": {}, + "smarts": "([C:1]-[N;H0;D3;+0:2](-[C:3])-[C;H3;D1;+0])>>([C:1]-[NH;D2;+0:2]-[C:3])", + "reactants": [ + [ + 139643162454144 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643162454144, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643166201504, + "index": 0, + "metadata": {}, + "smarts": "([#7:2]-[CH3;D1;+0:1])>>(O=[C;H0;D3;+0:1](-[#7:2])-O-C-c1:c:c:c:c:c:1)", + "reactants": [ + [ + 139643162454048 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643162454048, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643166201504, + "index": 0, + "metadata": {}, + "smarts": "([c:2]:[cH;D2;+0:1]:[c:3])>>(Cl-[c;H0;D3;+0:1](:[c:2]):[c:3])", + "reactants": [ + [ + 139643162455488 + ], + [ + 139643162455728 + ], + [ + 139643162455968 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643162455488, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643166201504, + "index": 1, + "metadata": {}, + "smarts": "([c:2]:[cH;D2;+0:1]:[c:3])>>(Cl-[c;H0;D3;+0:1](:[c:2]):[c:3])", + "reactants": [ + [ + 139643162455488 + ], + [ + 139643162455728 + ], + [ + 139643162455968 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643162455728, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643166201504, + "index": 2, + "metadata": {}, + "smarts": "([c:2]:[cH;D2;+0:1]:[c:3])>>(Cl-[c;H0;D3;+0:1](:[c:2]):[c:3])", + "reactants": [ + [ + 139643162455488 + ], + [ + 139643162455728 + ], + [ + 139643162455968 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643162455968, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643166201504, + "index": 0, + "metadata": {}, + "smarts": "([C:3]-[N;H0;D3;+0:4](-[C:5])-[CH2;D2;+0:1]-[C:2])>>(Cl-[CH2;D2;+0:1]-[C:2]).([C:3]-[NH;D2;+0:4]-[C:5])", + "reactants": [ + [ + 139643166201120 + ], + [ + 139643166202416 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643166201120, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643166201504, + "index": 1, + "metadata": {}, + "smarts": "([C:3]-[N;H0;D3;+0:4](-[C:5])-[CH2;D2;+0:1]-[C:2])>>(Cl-[CH2;D2;+0:1]-[C:2]).([C:3]-[NH;D2;+0:4]-[C:5])", + "reactants": [ + [ + 139643166201120 + ], + [ + 139643166202416 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643166202416, + "children": [] + } + ] + } + ] + } + ] + }, + { + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[N;H0;D3;+0:3](-[C:4])-[CH3;D1;+0:1])>>(O=[CH2;D1;+0:1]).([C:2]-[NH;D2;+0:3]-[C:4])", + "reactants": [ + [ + 139643173163552, + 139643173165280 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643173163552, + "children": [] + }, + { + "mol": 139643173165280, + "children": [ + { + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[NH;D2;+0:1]-[C:3])>>(C-C(-C)(-C)-O-C(=O)-[N;H0;D3;+0:1](-[C:2])-[C:3])", + "reactants": [ + [ + 139643162452464 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643162452464, + "children": [ + { + "reaction": { + "mol": 139643162452464, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:1]-[c:2])>>(O=[N+;H0;D3:1](-[O-])-[c:2])", + "reactants": [ + [ + 139643166163824 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643166163824, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643162452464, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[C;H0;D3;+0:1](=[O;D1;H0:3])-[c;H0;D3;+0:5](:[c:4]):[c:6])>>(C-O-N(-C)-[C;H0;D3;+0:1](-[C:2])=[O;D1;H0:3]).([c:4]:[cH;D2;+0:5]:[c:6])", + "reactants": [ + [ + 139643164870880, + 139643164872128 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643164870880, + "children": [] + }, + { + "mol": 139643164872128, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643162452464, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:2]-[c:1])>>([c:1]-[N;H0;D2;+0:2]=C(-c1:c:c:c:c:c:1)-c1:c:c:c:c:c:1)", + "reactants": [ + [ + 139643171738528 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643171738528, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643162452464, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:1]-[c:2])>>(C-C(-C)(-C)-O-C(=O)-[NH;D2;+0:1]-[c:2])", + "reactants": [ + [ + 139643164872464 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643164872464, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643162452464, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:1]-[c:2])>>(F-C(-F)(-F)-C(=O)-[NH;D2;+0:1]-[c:2])", + "reactants": [ + [ + 139643171738432 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643171738432, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643162452464, + "index": 0, + "metadata": {}, + "smarts": "([N;H2;D1;+0]-[c;H0;D3;+0:1](:[c:2]):[c:3])>>(Br-[c;H0;D3;+0:1](:[c:2]):[c:3])", + "reactants": [ + [ + 139643171739248 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643171739248, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643162452464, + "index": 0, + "metadata": {}, + "smarts": "([c:2]:[cH;D2;+0:1]:[c:3])>>(Cl-[c;H0;D3;+0:1](:[c:2]):[c:3])", + "reactants": [ + [ + 139643171739344 + ], + [ + 139643171739536 + ], + [ + 139643171739632 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643171739344, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643162452464, + "index": 1, + "metadata": {}, + "smarts": "([c:2]:[cH;D2;+0:1]:[c:3])>>(Cl-[c;H0;D3;+0:1](:[c:2]):[c:3])", + "reactants": [ + [ + 139643171739344 + ], + [ + 139643171739536 + ], + [ + 139643171739632 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643171739536, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643162452464, + "index": 2, + "metadata": {}, + "smarts": "([c:2]:[cH;D2;+0:1]:[c:3])>>(Cl-[c;H0;D3;+0:1](:[c:2]):[c:3])", + "reactants": [ + [ + 139643171739344 + ], + [ + 139643171739536 + ], + [ + 139643171739632 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643171739632, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643162452464, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:1]-[c:2])>>(C-C(=O)-[NH;D2;+0:1]-[c:2])", + "reactants": [ + [ + 139643171738048 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643171738048, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643162452464, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:4]-[c;H0;D3;+0:1](:[c:2]):[c:3])>>(F-[c;H0;D3;+0:1](:[c:2]):[c:3]).([NH3;D0;+0:4])", + "reactants": [ + [ + 139643171740112, + 139643171740688 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643171740112, + "children": [] + }, + { + "mol": 139643171740688, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643162452464, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:1]-[c:2])>>(O=C(-O-C-c1:c:c:c:c:c:1)-[NH;D2;+0:1]-[c:2])", + "reactants": [ + [ + 139643171740400 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643171740400, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643162452464, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:1]-[c:2])>>(C-C(-C)(-C)-C(=O)-[NH;D2;+0:1]-[c:2])", + "reactants": [ + [ + 139643171741456 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643171741456, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643162452464, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:2]-[c:1])>>([c:1]-[N;H0;D3;+0:2](-C-c1:c:c:c:c:c:1)-C-c1:c:c:c:c:c:1)", + "reactants": [ + [ + 139643171741024 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643171741024, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643162452464, + "index": 0, + "metadata": {}, + "smarts": "([N;H2;D1;+0]-[c;H0;D3;+0:1](:[c:2]):[c:3])>>(O-C(=O)-[c;H0;D3;+0:1](:[c:2]):[c:3])", + "reactants": [ + [ + 139643171740928 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643171740928, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643162452464, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:2]-[c:1])>>([c:1]-[NH;D2;+0:2]-C-c1:c:c:c:c:c:1)", + "reactants": [ + [ + 139643171740640 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643171740640, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643162452464, + "index": 0, + "metadata": {}, + "smarts": "([C:1]-[C;H0;D3;+0:2](=[O;H0;D1;+0:3])-[c:4])>>([C:1]-[CH;D3;+0:2](-[OH;D1;+0:3])-[c:4])", + "reactants": [ + [ + 139643171740880 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643171740880, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643162452464, + "index": 0, + "metadata": {}, + "smarts": "([N;H2;D1;+0]-[c;H0;D3;+0:1](:[c:2]):[c:3])>>(Cl-[c;H0;D3;+0:1](:[c:2]):[c:3])", + "reactants": [ + [ + 139643171740016 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643171740016, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643162452464, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:4]-[c:5].[c:2]:[cH;D2;+0:1]:[c:3])>>(Cl-[c;H0;D3;+0:1](:[c:2]):[c:3].O=[N+;H0;D3:4](-[O-])-[c:5])", + "reactants": [ + [ + 139643164869104 + ], + [ + 139643164869056 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643164869104, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643162452464, + "index": 1, + "metadata": {}, + "smarts": "([NH2;D1;+0:4]-[c:5].[c:2]:[cH;D2;+0:1]:[c:3])>>(Cl-[c;H0;D3;+0:1](:[c:2]):[c:3].O=[N+;H0;D3:4](-[O-])-[c:5])", + "reactants": [ + [ + 139643164869104 + ], + [ + 139643164869056 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643164869056, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643162452464, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:5]-[c:4]:[cH;D2;+0:3]:[cH;D2;+0:1]:[c:2])>>(Cl-[c;H0;D3;+0:1](:[c:2]):[c;H0;D3;+0:3](-Cl):[c:4]-[N+;H0;D3:5](=O)-[O-])", + "reactants": [ + [ + 139643173070016 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643173070016, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643162452464, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:4]-[c;H0;D3;+0:1](:[c:2]):[c:3])>>(Br-[c;H0;D3;+0:1](:[c:2]):[c:3]).([NH4+;D0:4])", + "reactants": [ + [ + 139643171739392, + 139643164870496 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643171739392, + "children": [] + }, + { + "mol": 139643164870496, + "children": [] + } + ] + } + ] + } + ] + }, + { + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:1]-[c:2])>>(O=[N+;H0;D3:1](-[O-])-[c:2])", + "reactants": [ + [ + 139643162692720 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643162692720, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([C:1]-[NH;D2;+0:2]-[C:3])>>([C:1]-[N;H0;D3;+0:2](-[C:3])-C-c1:c:c:c:c:c:1)", + "reactants": [ + [ + 139643162692240 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643162692240, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[NH;D2;+0:1]-[C:3])>>(O=C(-O-C-c1:c:c:c:c:c:1)-[N;H0;D3;+0:1](-[C:2])-[C:3])", + "reactants": [ + [ + 139643162690464 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643162690464, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:1]-[c:2])>>(C-C(-C)(-C)-O-C(=O)-[NH;D2;+0:1]-[c:2])", + "reactants": [ + [ + 139643164991936 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643164991936, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[NH;D2;+0:1]-[C:3])>>(C-C(=O)-[N;H0;D3;+0:1](-[C:2])-[C:3])", + "reactants": [ + [ + 139643162692624 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643162692624, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:1]-[c:2])>>(C-C(=O)-[NH;D2;+0:1]-[c:2])", + "reactants": [ + [ + 139643164991840 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643164991840, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[NH;D2;+0:1]-[C:3])>>(F-C(-F)(-F)-C(=O)-[N;H0;D3;+0:1](-[C:2])-[C:3])", + "reactants": [ + [ + 139643164991984 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643164991984, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[NH;D2;+0:1]-[C:3])>>(C-C-O-C(=O)-[N;H0;D3;+0:1](-[C:2])-[C:3])", + "reactants": [ + [ + 139643164993136 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643164993136, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:1]-[c:2])>>(F-C(-F)(-F)-C(=O)-[NH;D2;+0:1]-[c:2])", + "reactants": [ + [ + 139643164992800 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643164992800, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:1]-[c:2])>>(O=C-[NH;D2;+0:1]-[c:2])", + "reactants": [ + [ + 139643164992944 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643164992944, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[NH;D2;+0:1]-[C:3].[NH2;D1;+0:4]-[c:5])>>(C-C(-C)(-C)-O-C(=O)-[N;H0;D3;+0:1](-[C:2])-[C:3].C-C(-C)(-C)-O-C(=O)-[NH;D2;+0:4]-[c:5])", + "reactants": [ + [ + 139643164993280 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643164993280, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:1]-[c:2])>>(C-C(-C)(-C)-C(=O)-[NH;D2;+0:1]-[c:2])", + "reactants": [ + [ + 139643164992848 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643164992848, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([c:2]:[cH;D2;+0:1]:[c:3])>>(Cl-[c;H0;D3;+0:1](:[c:2]):[c:3])", + "reactants": [ + [ + 139643164994720 + ], + [ + 139643164994864 + ], + [ + 139643164992512 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643164994720, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643173165280, + "index": 1, + "metadata": {}, + "smarts": "([c:2]:[cH;D2;+0:1]:[c:3])>>(Cl-[c;H0;D3;+0:1](:[c:2]):[c:3])", + "reactants": [ + [ + 139643164994720 + ], + [ + 139643164994864 + ], + [ + 139643164992512 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643164994864, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643173165280, + "index": 2, + "metadata": {}, + "smarts": "([c:2]:[cH;D2;+0:1]:[c:3])>>(Cl-[c;H0;D3;+0:1](:[c:2]):[c:3])", + "reactants": [ + [ + 139643164994720 + ], + [ + 139643164994864 + ], + [ + 139643164992512 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643164992512, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([N;H2;D1;+0]-[c;H0;D3;+0:1](:[c:2]):[c:3])>>(O-C(=O)-[c;H0;D3;+0:1](:[c:2]):[c:3])", + "reactants": [ + [ + 139643164992080 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643164992080, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:4]-[c;H0;D3;+0:1](:[c:2]):[c:3])>>(F-[c;H0;D3;+0:1](:[c:2]):[c:3]).([NH3;D0;+0:4])", + "reactants": [ + [ + 139643164995392, + 139643164995248 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643164995392, + "children": [] + }, + { + "mol": 139643164995248, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:1]-[c:2])>>(O=C(-O-C-c1:c:c:c:c:c:1)-[NH;D2;+0:1]-[c:2])", + "reactants": [ + [ + 139643155805712 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643155805712, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[NH;D2;+0:1]-[C:3])>>(C-C-C-C-O-C(=O)-[N;H0;D3;+0:1](-[C:2])-[C:3])", + "reactants": [ + [ + 139643164856432 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643164856432, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([N;H2;D1;+0]-[c;H0;D3;+0:2](:[c:1]):[c:3])>>([c:1]:[cH;D2;+0:2]:[c:3])", + "reactants": [ + [ + 139643164857152 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643164857152, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[NH;D2;+0:1]-[C:3])>>(O=C(-[O-])-[N;H0;D3;+0:1](-[C:2])-[C:3])", + "reactants": [ + [ + 139643164856960 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643164856960, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[NH;D2;+0:1]-[C:3])>>(O=C(-[N;H0;D3;+0:1](-[C:2])-[C:3])-c1:c:c:c:c:c:1)", + "reactants": [ + [ + 139643164857104 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643164857104, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:2]-[c:1])>>([c:1]-[NH;D2;+0:2]-C-c1:c:c:c:c:c:1)", + "reactants": [ + [ + 139643164993712 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643164993712, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:2]-[c:1])>>([c:1]-[N;H0;D2;+0:2]=C(-c1:c:c:c:c:c:1)-c1:c:c:c:c:c:1)", + "reactants": [ + [ + 139643164993664 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643164993664, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([C:1]-[CH;D3;+0:2]1-[CH2;D2;+0:3]-[CH2;D2;+0:4]-[NH;D2;+0:5]-[CH2;D2;+0:6]-[CH2;D2;+0:7]-1)>>([C:1]-[c;H0;D3;+0:2]1:[cH;D2;+0:3]:[cH;D2;+0:4]:[n;H0;D2;+0:5]:[cH;D2;+0:6]:[cH;D2;+0:7]:1)", + "reactants": [ + [ + 139643164994192 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643164994192, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([F;H0;D1;+0]-[c;H0;D3;+0:2](:[c:1]):[c:3])>>([c:1]:[cH;D2;+0:2]:[c:3])", + "reactants": [ + [ + 139643166164976 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643166164976, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[NH;D2;+0:1]-[C:3])>>(C-C-[N;H0;D3;+0:1](-[C:2])-[C:3])", + "reactants": [ + [ + 139643171531312 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643171531312, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([N;H2;D1;+0]-[c;H0;D3;+0:1](:[c:2]):[c:3])>>(Cl-[c;H0;D3;+0:1](:[c:2]):[c:3])", + "reactants": [ + [ + 139643164994768 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643164994768, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[C;H0;D3;+0:1](=[O;D1;H0:3])-[c;H0;D3;+0:5](:[c:4]):[c:6])>>(C-O-N(-C)-[C;H0;D3;+0:1](-[C:2])=[O;D1;H0:3]).([c:4]:[cH;D2;+0:5]:[c:6])", + "reactants": [ + [ + 139643166164112, + 139643166166464 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643166164112, + "children": [] + }, + { + "mol": 139643166166464, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([N;H2;D1;+0]-[c;H0;D3;+0:1](:[c:2]):[c:3])>>(Br-[c;H0;D3;+0:1](:[c:2]):[c:3])", + "reactants": [ + [ + 139643166164448 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643166164448, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[NH;D2;+0:1]-[C:3])>>(F-c1:c:c:c(-C-N-c2:n:c(-[N;H0;D3;+0:1](-[C:2])-[C:3]):n:c:c:2-c2:c:c:c(-F):c:c:2-F):c(-F):c:1)", + "reactants": [ + [ + 139643166163392 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643166163392, + "children": [] + } + ] + } + ] + } + ] + }, + { + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:1]-[c:2])>>(C-C(=O)-[NH;D2;+0:1]-[c:2])", + "reactants": [ + [ + 139643173069200 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643173069200, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:1]-[c:2])>>(C-C(-C)(-C)-O-C(=O)-[NH;D2;+0:1]-[c:2])", + "reactants": [ + [ + 139643173069008 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643173069008, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:1]-[c:2])>>(F-C(-F)(-F)-C(=O)-[NH;D2;+0:1]-[c:2])", + "reactants": [ + [ + 139643173069440 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643173069440, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:2]-[c:1])>>([c:1]-[N;H0;D2;+0:2]=C(-c1:c:c:c:c:c:1)-c1:c:c:c:c:c:1)", + "reactants": [ + [ + 139643173166960 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643173166960, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643171528960, "index": 0, - "metadata": {} + "metadata": {}, + "smarts": "([C:2]-[N;H0;D3;+0:3](-[C:4])-[CH3;D1;+0:1])>>(I-[CH3;D1;+0:1]).([C:2]-[NH;D2;+0:3]-[C:4])", + "reactants": [ + [ + 139643173069680, + 139643173069968 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" }, "children": [ { - "mol": 140598039857616, + "mol": 139643173069680, "children": [] }, { - "mol": 140605332368528, + "mol": 139643173069968, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:1]-[c:2])>>(C-C(-C)(-C)-C(=O)-[NH;D2;+0:1]-[c:2])", + "reactants": [ + [ + 139643173070400 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643173070400, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([c:2]:[cH;D2;+0:1]:[c:3])>>(Cl-[c;H0;D3;+0:1](:[c:2]):[c:3])", + "reactants": [ + [ + 139643173070880 + ], + [ + 139643173070832 + ], + [ + 139643173068960 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643173070880, "children": [] } ] }, { "reaction": { - "mol": 140598039857296, - "smarts": "([c:2]:[c;H0;D3;+0:1](:[c:3])-[NH;D2;+0:4]-[c:5])>>(Br-[c;H0;D3;+0:1](:[c:2]):[c:3]).([NH2;D1;+0:4]-[c:5])", + "mol": 139643171528960, "index": 1, - "metadata": {} + "metadata": {}, + "smarts": "([c:2]:[cH;D2;+0:1]:[c:3])>>(Cl-[c;H0;D3;+0:1](:[c:2]):[c:3])", + "reactants": [ + [ + 139643173070880 + ], + [ + 139643173070832 + ], + [ + 139643173068960 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643173070832, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643171528960, + "index": 2, + "metadata": {}, + "smarts": "([c:2]:[cH;D2;+0:1]:[c:3])>>(Cl-[c;H0;D3;+0:1](:[c:2]):[c:3])", + "reactants": [ + [ + 139643173070880 + ], + [ + 139643173070832 + ], + [ + 139643173068960 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643173068960, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[CH;D3;+0:1](-[C:3])-[C;H0;D3;+0:4](=[O;H0;D1;+0:6])-[c:5])>>(Cl-[CH;D3;+0:1](-[C:2])-[C:3]).(N#[C;H0;D2;+0:4]-[c:5]).([OH2;D0;+0:6])", + "reactants": [ + [ + 139643173070448, + 139643173070736, + 139643173069632 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" }, "children": [ { - "mol": 140605332368656, + "mol": 139643173070448, + "children": [] + }, + { + "mol": 139643173070736, "children": [] }, { - "mol": 140602867801296, + "mol": 139643173069632, "children": [] } ] - } - ] - }, - { - "mol": 140605332204496, - "children": [] - } - ] - } - ] - }, - "molecules": { - "140605332219984": { - "smiles": "Cc1ccc2nc3ccccc3c(Nc3ccc(NC(=S)Nc4ccccc4)cc3)c2c1", - "class": "TreeMolecule", - "parent": null, - "transform": 0 + }, + { + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([#7:2]-[CH3;D1;+0:1])>>(C-C(-C)(-C)-O-[C;H0;D3;+0:1](=O)-[#7:2])", + "reactants": [ + [ + 139643173071264 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643173071264, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([N;H2;D1;+0]-[c;H0;D3;+0:1](:[c:2]):[c:3])>>(Cl-[c;H0;D3;+0:1](:[c:2]):[c:3])", + "reactants": [ + [ + 139643173071600 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643173071600, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:1]-[c:2])>>(O=C(-O-C-c1:c:c:c:c:c:1)-[NH;D2;+0:1]-[c:2])", + "reactants": [ + [ + 139643173072032 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643173072032, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([N;H2;D1;+0]-[c;H0;D3;+0:1](:[c:2]):[c:3])>>(Br-[c;H0;D3;+0:1](:[c:2]):[c:3])", + "reactants": [ + [ + 139643173070592 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643173070592, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[C;H0;D3;+0:1](=[O;D1;H0:3])-[c;H0;D3;+0:5](:[c:4]):[c:6])>>(C-O-N(-C)-[C;H0;D3;+0:1](-[C:2])=[O;D1;H0:3]).([c:4]:[cH;D2;+0:5]:[c:6])", + "reactants": [ + [ + 139643173070544, + 139643173070064 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643173070544, + "children": [] + }, + { + "mol": 139643173070064, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:2]-[c:1])>>([c:1]-[NH;D2;+0:2]-C-c1:c:c:c:c:c:1)", + "reactants": [ + [ + 139643173072272 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643173072272, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([N;H2;D1;+0]-[c;H0;D3;+0:1](:[c:2]):[c:3])>>(O-C(=O)-[c;H0;D3;+0:1](:[c:2]):[c:3])", + "reactants": [ + [ + 139643173072320 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643173072320, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:4]-[c;H0;D3;+0:1](:[c:2]):[c:3])>>(F-[c;H0;D3;+0:1](:[c:2]):[c:3]).([NH3;D0;+0:4])", + "reactants": [ + [ + 139643172995808, + 139643172995136 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643172995808, + "children": [] + }, + { + "mol": 139643172995136, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([C:1]-[N;H0;D3;+0:2](-[C:3])-[C;H3;D1;+0])>>([C:1]-[NH;D2;+0:2]-[C:3])", + "reactants": [ + [ + 139643173072224 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643173072224, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:1]-[c:2])>>(O=C-[NH;D2;+0:1]-[c:2])", + "reactants": [ + [ + 139643172995568 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643172995568, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[N;H0;D3;+0:3](-[C:4])-[CH3;D1;+0:1])>>(O-[CH3;D1;+0:1]).([C:2]-[NH;D2;+0:3]-[C:4])", + "reactants": [ + [ + 139643173071648, + 139643173071360 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643173071648, + "children": [] + }, + { + "mol": 139643173071360, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([C:1]-[C;H0;D3;+0:2](=[O;H0;D1;+0:3])-[c:4])>>([C:1]-[CH;D3;+0:2](-[OH;D1;+0:3])-[c:4])", + "reactants": [ + [ + 139643172995856 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643172995856, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([N;H2;D1;+0]-[c;H0;D3;+0:2](:[c:1]):[c:3])>>([c:1]:[cH;D2;+0:2]:[c:3])", + "reactants": [ + [ + 139643172995472 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643172995472, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[C;H0;D3;+0:1](=[O;D1;H0:3])-[c;H0;D3;+0:4](:[c:5]):[c:6])>>(Cl-[C;H0;D3;+0:1](-[C:2])=[O;D1;H0:3]).(I-[c;H0;D3;+0:4](:[c:5]):[c:6])", + "reactants": [ + [ + 139643173164800, + 139643173164224 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643173164800, + "children": [] + }, + { + "mol": 139643173164224, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:5]-[c:4]:[cH;D2;+0:3]:[cH;D2;+0:1]:[c:2])>>(Cl-[c;H0;D3;+0:1](:[c:2]):[c;H0;D3;+0:3](-Cl):[c:4]-[N+;H0;D3:5](=O)-[O-])", + "reactants": [ + [ + 139643173163312 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643173163312, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:2]-[c:1])>>([c:1]-[N;H0;D3;+0:2](-C-c1:c:c:c:c:c:1)-C-c1:c:c:c:c:c:1)", + "reactants": [ + [ + 139643173164848 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643173164848, + "children": [] + } + ] + } + ] + } + ] + }, + { + "reaction": { + "mol": 139643154371392, + "index": 0, + "metadata": {}, + "smarts": "([O;D1;H0:2]=[C;H0;D3;+0:1](-[c:3])-[NH;D2;+0:4]-[c:5])>>(O-[C;H0;D3;+0:1](=[O;D1;H0:2])-[c:3]).([NH2;D1;+0:4]-[c:5])", + "reactants": [ + [ + 139643157042560, + 139643157043712 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643157042560, + "children": [] + }, + { + "mol": 139643157043712, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643154371392, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[N;H0;D3;+0:3](-[C:4])-[CH3;D1;+0:1])>>(O=[CH2;D1;+0:1]).([C:2]-[NH;D2;+0:3]-[C:4])", + "reactants": [ + [ + 139643166200256, + 139643166201936 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643166200256, + "children": [] + }, + { + "mol": 139643166201936, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643154371392, + "index": 0, + "metadata": {}, + "smarts": "([#7:2]-[CH3;D1;+0:1])>>(C-C(-C)(-C)-O-[C;H0;D3;+0:1](=O)-[#7:2])", + "reactants": [ + [ + 139643166202032 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643166202032, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643154371392, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[N;H0;D3;+0:3](-[C:4])-[CH3;D1;+0:1])>>(I-[CH3;D1;+0:1]).([C:2]-[NH;D2;+0:3]-[C:4])", + "reactants": [ + [ + 139643166200736, + 139643166203376 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643166200736, + "children": [] + }, + { + "mol": 139643166203376, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643154371392, + "index": 0, + "metadata": {}, + "smarts": "([C:1]-[C;H0;D3;+0:2](=[O;H0;D1;+0:3])-[c:4])>>([C:1]-[CH;D3;+0:2](-[OH;D1;+0:3])-[c:4])", + "reactants": [ + [ + 139643166200976 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643166200976, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643154371392, + "index": 0, + "metadata": {}, + "smarts": "([#7:2]-[CH3;D1;+0:1])>>(O=[C;H0;D3;+0:1](-[#7:2])-O-C-c1:c:c:c:c:c:1)", + "reactants": [ + [ + 139643166200112 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643166200112, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643154371392, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[CH;D3;+0:1](-[C:3])-[C;H0;D3;+0:4](=[O;H0;D1;+0:6])-[c:5])>>(Cl-[CH;D3;+0:1](-[C:2])-[C:3]).(N#[C;H0;D2;+0:4]-[c:5]).([OH2;D0;+0:6])", + "reactants": [ + [ + 139643166200352, + 139643166202848, + 139643166202608 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643166200352, + "children": [] + }, + { + "mol": 139643166202848, + "children": [] + }, + { + "mol": 139643166202608, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643154371392, + "index": 0, + "metadata": {}, + "smarts": "([O;D1;H0:2]=[C;H0;D3;+0:1](-[NH;D2;+0:9]-[c:10])-[c:3]1:[c:4]:[c:5]:[c:6]:[c:7]:[c:8]:1)>>(C-O-[C;H0;D3;+0:1](=[O;D1;H0:2])-[c:3]1:[c:4]:[c:5]:[c:6]:[c:7]:[c:8]:1).([NH2;D1;+0:9]-[c:10])", + "reactants": [ + [ + 139643166201024, + 139643166201744 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643166201024, + "children": [] + }, + { + "mol": 139643166201744, + "children": [] + } + ] + }, + { + "reaction": { + "mol": 139643154371392, + "index": 0, + "metadata": {}, + "smarts": "([C:5]-[C;H0;D3;+0:4](=[O;D1;H0:6])-[c;H0;D3;+0:1](:[c:2]):[c:3])>>(Br-[c;H0;D3;+0:1](:[c:2]):[c:3]).(C-O-N(-C)-[C;H0;D3;+0:4](-[C:5])=[O;D1;H0:6])", + "reactants": [ + [ + 139643166202176, + 139643166201600 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "mol": 139643166202176, + "children": [] + }, + { + "mol": 139643166201600, + "children": [] + } + ] + } + ] + }, + "molecules": { + "139643154371392": { + "smiles": "CN1CCC(C(=O)c2cccc(NC(=O)c3ccc(F)cc3)c2F)CC1", + "class": "TreeMolecule", + "parent": null, + "transform": 0, + "tracked_atom_indices": {} + }, + "139643166203664": { + "smiles": "[C:14](=[O:15])([c:16]1[cH:17][cH:18][c:19]([F:20])[cH:21][cH:22]1)[Cl:900]", + "class": "TreeMolecule", + "parent": 139643154371392, + "transform": 1, + "tracked_atom_indices": {} + }, + "139643171528960": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643154371392, + "transform": 1, + "tracked_atom_indices": {} + }, + "139643166201504": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([N+:13](=[O:900])[O-:901])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643162454288": { + "smiles": "[CH3:1][I:900]=[N+:13]([c:12]1[cH:11][cH:10][cH:9][c:8]([C:6]([CH:5]2[CH2:4][CH2:3][NH:2][CH2:26][CH2:25]2)=[O:7])[c:23]1[F:24])[O-:901]", + "class": "TreeMolecule", + "parent": 139643166201504, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643162454624": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([CH:6]([OH:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([N+:13](=[O:900])[O-:901])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643166201504, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643162455056": { + "smiles": "[C:1]([N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([N+:13](=[O:900])[O-:901])[c:23]2[F:24])[CH2:25][CH2:26]1)([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:905]", + "class": "TreeMolecule", + "parent": 139643166201504, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643162454144": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([N+:13](=[O:900])[O-:901])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643166201504, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643162454048": { + "smiles": "[C:1]([N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([N+:13](=[O:900])[O-:901])[c:23]2[F:24])[CH2:25][CH2:26]1)(=[O:900])[O:901][CH2:902][c:903]1[cH:904][cH:905][cH:906][cH:907][cH:908]1", + "class": "TreeMolecule", + "parent": 139643166201504, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643162455488": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][c:11]([Cl:900])[c:12]([N+:13](=[O:900])[O-:901])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643166201504, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643162455728": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][c:10]([Cl:900])[cH:11][c:12]([N+:13](=[O:900])[O-:901])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643166201504, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643162455968": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[c:9]([Cl:900])[cH:10][cH:11][c:12]([N+:13](=[O:900])[O-:901])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643166201504, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643166201120": { + "smiles": "[CH3:1][NH:2][CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]1[cH:9][cH:10][cH:11][c:12]([N+:13](=[O:900])[O-:901])[c:23]1[F:24])[CH2:25][CH2:26][Cl:900]", + "class": "TreeMolecule", + "parent": 139643166201504, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643166202416": { + "smiles": "[CH3:1][NH:2][CH2:26][CH2:25][CH:5]([CH2:4][CH2:3][Cl:900])[C:6](=[O:7])[c:8]1[cH:9][cH:10][cH:11][c:12]([N+:13](=[O:900])[O-:901])[c:23]1[F:24]", + "class": "TreeMolecule", + "parent": 139643166201504, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643173163552": { + "smiles": "[CH2:1]=[O:900]", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173165280": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643162452464": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643166163824": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([N+:13](=[O:900])[O-:901])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643164870880": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[N:902]([O:901][CH3:900])[CH3:903])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643164872128": { + "smiles": "[cH:8]1[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]1[F:24]", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643171738528": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([N:13]=[C:900]([c:901]3[cH:902][cH:903][cH:904][cH:905][cH:906]3)[c:907]3[cH:908][cH:909][cH:910][cH:911][cH:912]3)[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643164872464": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643171738432": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][C:904]([C:901]([F:900])([F:902])[F:903])=[O:905])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643171739248": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([Br:900])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643171739344": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[c:9]([Cl:900])[cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643171739536": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][c:11]([Cl:900])[c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643171739632": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][c:10]([Cl:900])[cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643171738048": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][C:901]([CH3:900])=[O:902])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643171740112": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([F:900])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643171740688": { + "smiles": "[NH3:13]", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643171740400": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][C:901](=[O:900])[O:902][CH2:903][c:904]3[cH:905][cH:906][cH:907][cH:908][cH:909]3)[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643171741456": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][C:904]([C:901]([CH3:900])([CH3:902])[CH3:903])=[O:905])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643171741024": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([N:13]([CH2:900][c:901]3[cH:902][cH:903][cH:904][cH:905][cH:906]3)[CH2:907][c:908]3[cH:909][cH:910][cH:911][cH:912][cH:913]3)[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643171740928": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([C:901]([OH:900])=[O:902])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643171740640": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][CH2:900][c:901]3[cH:902][cH:903][cH:904][cH:905][cH:906]3)[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643171740880": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([CH:6]([OH:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643171740016": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([Cl:900])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643164869104": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[c:9]([Cl:900])[cH:10][cH:11][c:12]([N+:13](=[O:901])[O-:902])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643164869056": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][c:10]([Cl:900])[cH:11][c:12]([N+:13](=[O:901])[O-:902])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643173070016": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][c:10]([Cl:900])[c:11]([Cl:901])[c:12]([N+:13](=[O:902])[O-:903])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643171739392": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([Br:900])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643164870496": { + "smiles": "[NH4+:13]", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643162692720": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([N+:13](=[O:900])[O-:901])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643162692240": { + "smiles": "[N:2]1([CH2:900][c:901]2[cH:902][cH:903][cH:904][cH:905][cH:906]2)[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643162690464": { + "smiles": "[N:2]1([C:901](=[O:900])[O:902][CH2:903][c:904]2[cH:905][cH:906][cH:907][cH:908][cH:909]2)[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164991936": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643162692624": { + "smiles": "[N:2]1([C:901]([CH3:900])=[O:902])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164991840": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][C:901]([CH3:900])=[O:902])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164991984": { + "smiles": "[N:2]1([C:904]([C:901]([F:900])([F:902])[F:903])=[O:905])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164993136": { + "smiles": "[N:2]1([C:903]([O:902][CH2:901][CH3:900])=[O:904])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164992800": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][C:904]([C:901]([F:900])([F:902])[F:903])=[O:905])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164992944": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][CH:901]=[O:900])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164993280": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][C:912]([O:911][C:908]([CH3:907])([CH3:909])[CH3:910])=[O:913])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164992848": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][C:904]([C:901]([CH3:900])([CH3:902])[CH3:903])=[O:905])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164994720": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][c:10]([Cl:900])[cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164994864": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[c:9]([Cl:900])[cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164992512": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][c:11]([Cl:900])[c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164992080": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([C:901]([OH:900])=[O:902])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164995392": { + "smiles": "[NH3:13]", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164995248": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([F:900])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643155805712": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][C:901](=[O:900])[O:902][CH2:903][c:904]3[cH:905][cH:906][cH:907][cH:908][cH:909]3)[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164856432": { + "smiles": "[N:2]1([C:905]([O:904][CH2:903][CH2:902][CH2:901][CH3:900])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164857152": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][cH:12][c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164856960": { + "smiles": "[N:2]1([C:901](=[O:900])[O-:902])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164857104": { + "smiles": "[N:2]1([C:901](=[O:900])[c:902]2[cH:903][cH:904][cH:905][cH:906][cH:907]2)[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164993712": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][CH2:900][c:901]3[cH:902][cH:903][cH:904][cH:905][cH:906]3)[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164993664": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([N:13]=[C:900]([c:901]3[cH:902][cH:903][cH:904][cH:905][cH:906]3)[c:907]3[cH:908][cH:909][cH:910][cH:911][cH:912]3)[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164994192": { + "smiles": "[n:2]1[cH:3][cH:4][c:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[cH:25][cH:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643166164976": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[cH:23]2)[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643171531312": { + "smiles": "[N:2]1([CH2:901][CH3:900])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164994768": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([Cl:900])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643166164112": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[N:902]([O:901][CH3:900])[CH3:903])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643166166464": { + "smiles": "[cH:8]1[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]1[F:24]", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643166164448": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([Br:900])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643166163392": { + "smiles": "[N:2]1([c:909]2[n:908][c:907]([NH:906][CH2:905][c:904]3[cH:903][cH:902][c:901]([F:900])[cH:923][c:921]3[F:922])[c:912](-[c:913]3[cH:914][cH:915][c:916]([F:917])[cH:918][c:919]3[F:920])[cH:911][n:910]2)[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643173069200": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][C:901]([CH3:900])=[O:902])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173069008": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173069440": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][C:904]([C:901]([F:900])([F:902])[F:903])=[O:905])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173166960": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([N:13]=[C:900]([c:901]3[cH:902][cH:903][cH:904][cH:905][cH:906]3)[c:907]3[cH:908][cH:909][cH:910][cH:911][cH:912]3)[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173069680": { + "smiles": "[CH3:1][I:900]", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173069968": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173070400": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][C:904]([C:901]([CH3:900])([CH3:902])[CH3:903])=[O:905])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173070880": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[c:9]([Cl:900])[cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173070832": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][c:11]([Cl:900])[c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173068960": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][c:10]([Cl:900])[cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173070448": { + "smiles": "[C:6]([c:8]1[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]1[F:24])#[N:901]", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173070736": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([Cl:900])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173069632": { + "smiles": "[OH2:7]", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173071264": { + "smiles": "[C:1]([N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1)([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:905]", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173071600": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([Cl:900])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173072032": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][C:901](=[O:900])[O:902][CH2:903][c:904]3[cH:905][cH:906][cH:907][cH:908][cH:909]3)[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173070592": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([Br:900])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173070544": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[N:902]([O:901][CH3:900])[CH3:903])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173070064": { + "smiles": "[cH:8]1[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]1[F:24]", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173072272": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][CH2:900][c:901]3[cH:902][cH:903][cH:904][cH:905][cH:906]3)[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173072320": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([C:901]([OH:900])=[O:902])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643172995808": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([F:900])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643172995136": { + "smiles": "[NH3:13]", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173072224": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643172995568": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][CH:901]=[O:900])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173071648": { + "smiles": "[CH3:1][OH:900]", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173071360": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643172995856": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([CH:6]([OH:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643172995472": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][cH:12][c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173164800": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[Cl:900])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173164224": { + "smiles": "[c:8]1([I:901])[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]1[F:24]", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173163312": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][c:10]([Cl:900])[c:11]([Cl:901])[c:12]([N+:13](=[O:902])[O-:903])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173164848": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([N:13]([CH2:900][c:901]3[cH:902][cH:903][cH:904][cH:905][cH:906]3)[CH2:907][c:908]3[cH:909][cH:910][cH:911][cH:912][cH:913]3)[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643157042560": { + "smiles": "[C:14](=[O:15])([c:16]1[cH:17][cH:18][c:19]([F:20])[cH:21][cH:22]1)[OH:900]", + "class": "TreeMolecule", + "parent": 139643154371392, + "transform": 1, + "tracked_atom_indices": {} + }, + "139643157043712": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643154371392, + "transform": 1, + "tracked_atom_indices": {} + }, + "139643166200256": { + "smiles": "[CH2:1]=[O:900]", + "class": "TreeMolecule", + "parent": 139643154371392, + "transform": 1, + "tracked_atom_indices": {} + }, + "139643166201936": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][C:14](=[O:15])[c:16]3[cH:17][cH:18][c:19]([F:20])[cH:21][cH:22]3)[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643154371392, + "transform": 1, + "tracked_atom_indices": {} + }, + "139643166202032": { + "smiles": "[C:1]([N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][C:14](=[O:15])[c:16]3[cH:17][cH:18][c:19]([F:20])[cH:21][cH:22]3)[c:23]2[F:24])[CH2:25][CH2:26]1)([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:905]", + "class": "TreeMolecule", + "parent": 139643154371392, + "transform": 1, + "tracked_atom_indices": {} + }, + "139643166200736": { + "smiles": "[CH3:1][I:900]", + "class": "TreeMolecule", + "parent": 139643154371392, + "transform": 1, + "tracked_atom_indices": {} + }, + "139643166203376": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][C:14](=[O:15])[c:16]3[cH:17][cH:18][c:19]([F:20])[cH:21][cH:22]3)[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643154371392, + "transform": 1, + "tracked_atom_indices": {} + }, + "139643166200976": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([CH:6]([OH:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][C:14](=[O:15])[c:16]3[cH:17][cH:18][c:19]([F:20])[cH:21][cH:22]3)[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643154371392, + "transform": 1, + "tracked_atom_indices": {} }, - "140605332201936": { - "smiles": "Cc1ccc2nc3ccccc3c(Cl)c2c1", + "139643166200112": { + "smiles": "[C:1]([N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][C:14](=[O:15])[c:16]3[cH:17][cH:18][c:19]([F:20])[cH:21][cH:22]3)[c:23]2[F:24])[CH2:25][CH2:26]1)(=[O:900])[O:901][CH2:902][c:903]1[cH:904][cH:905][cH:906][cH:907][cH:908]1", "class": "TreeMolecule", - "parent": 140605332219984, - "transform": 1 + "parent": 139643154371392, + "transform": 1, + "tracked_atom_indices": {} }, - "140605332205072": { - "smiles": "Nc1ccc(NC(=S)Nc2ccccc2)cc1", + "139643166200352": { + "smiles": "[C:6]([c:8]1[cH:9][cH:10][cH:11][c:12]([NH:13][C:14](=[O:15])[c:16]2[cH:17][cH:18][c:19]([F:20])[cH:21][cH:22]2)[c:23]1[F:24])#[N:901]", "class": "TreeMolecule", - "parent": 140605332219984, - "transform": 1 + "parent": 139643154371392, + "transform": 1, + "tracked_atom_indices": {} }, - "140598039857296": { - "smiles": "Cc1ccc2nc3ccccc3c(Nc3ccc(N=C=S)cc3)c2c1", + "139643166202848": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([Cl:900])[CH2:25][CH2:26]1", "class": "TreeMolecule", - "parent": 140605332219984, - "transform": 1 + "parent": 139643154371392, + "transform": 1, + "tracked_atom_indices": {} }, - "140598039857616": { - "smiles": "Cc1ccc2nc3ccccc3c(Cl)c2c1", + "139643166202608": { + "smiles": "[OH2:7]", "class": "TreeMolecule", - "parent": 140598039857296, - "transform": 2 + "parent": 139643154371392, + "transform": 1, + "tracked_atom_indices": {} }, - "140605332368528": { - "smiles": "Nc1ccc(N=C=S)cc1", + "139643166201024": { + "smiles": "[C:14](=[O:15])([c:16]1[cH:17][cH:18][c:19]([F:20])[cH:21][cH:22]1)[O:901][CH3:900]", "class": "TreeMolecule", - "parent": 140598039857296, - "transform": 2 + "parent": 139643154371392, + "transform": 1, + "tracked_atom_indices": {} }, - "140605332368656": { - "smiles": "Cc1ccc2nc3ccccc3c(Br)c2c1", + "139643166201744": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", "class": "TreeMolecule", - "parent": 140598039857296, - "transform": 2 + "parent": 139643154371392, + "transform": 1, + "tracked_atom_indices": {} }, - "140602867801296": { - "smiles": "Nc1ccc(N=C=S)cc1", + "139643166202176": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[N:903]([O:902][CH3:901])[CH3:904])[CH2:25][CH2:26]1", "class": "TreeMolecule", - "parent": 140598039857296, - "transform": 2 + "parent": 139643154371392, + "transform": 1, + "tracked_atom_indices": {} }, - "140605332204496": { - "smiles": "Nc1ccccc1", + "139643166201600": { + "smiles": "[c:8]1([Br:900])[cH:9][cH:10][cH:11][c:12]([NH:13][C:14](=[O:15])[c:16]2[cH:17][cH:18][c:19]([F:20])[cH:21][cH:22]2)[c:23]1[F:24]", "class": "TreeMolecule", - "parent": 140605332219984, - "transform": 1 + "parent": 139643154371392, + "transform": 1, + "tracked_atom_indices": {} } } } \ No newline at end of file diff --git a/tests/data/combined_example_tree2.json b/tests/data/combined_example_tree2.json new file mode 100644 index 0000000..ba9a337 --- /dev/null +++ b/tests/data/combined_example_tree2.json @@ -0,0 +1,103 @@ +{ + "type": "mol", + "hide": false, + "smiles": "Cc1ccc2nc3ccccc3c(Nc3ccc(NC(=S)Nc4ccccc4)cc3)c2c1", + "is_chemical": true, + "in_stock": false, + "children": [ + { + "type": "reaction", + "hide": false, + "smiles": "[c:1]1([N:7][cH3:8])[cH:2][cH:3]:[N:4]:[cH:5][cH:6]1>>Cl[c:1]1[cH:2][cH:3]:[N:4]:[cH:5][cH:6]1.[N:7][cH3:8]", + "is_reaction": true, + "metadata": {}, + "children": [ + { + "type": "mol", + "hide": false, + "smiles": "Cc1ccc2nc3ccccc3c(Cl)c2c1", + "is_chemical": true, + "in_stock": true + }, + { + "type": "mol", + "hide": false, + "smiles": "Nc1ccc(NC(=S)Nc2ccccc2)cc1", + "is_chemical": true, + "in_stock": true + } + ] + }, + { + "type": "reaction", + "hide": false, + "smiles": "[N:1]([cH3:2])[C:4](=[S:3])[N:5][cH3:6]>>[N:1][cH3:2].[S:3]=[C:4]=[N:5][cH3:6]", + "is_reaction": true, + "metadata": {}, + "children": [ + { + "type": "mol", + "hide": false, + "smiles": "Nc1ccccc1", + "is_chemical": true, + "in_stock": false + }, + { + "type": "mol", + "hide": false, + "smiles": "Cc1ccc2nc3ccccc3c(Nc3ccc(N=C=S)cc3)c2c1", + "is_chemical": true, + "in_stock": false, + "children": [ + { + "type": "reaction", + "hide": false, + "smiles": "[c:1]1([N:7][cH3:8])[cH:2][cH:3]:[N:4]:[cH:5][cH:6]1>>Cl[c:1]1[cH:2][cH:3]:[N:4]:[cH:5][cH:6]1.[N:7][cH3:8]", + "is_reaction": true, + "metadata": {}, + "children": [ + { + "type": "mol", + "hide": false, + "smiles": "Nc1ccc(N=C=S)cc1", + "is_chemical": true, + "in_stock": false + }, + { + "type": "mol", + "hide": false, + "smiles": "Cc1ccc2nc3ccccc3c(Cl)c2c1", + "is_chemical": true, + "in_stock": true + } + ] + }, + { + "type": "reaction", + "hide": false, + "smiles": "[c:1]([cH2:2])([cH2:3])[N:4][cH3:5]>>Br[c:1]([cH2:2])[cH2:3].[N:4][cH3:5]", + "is_reaction": true, + "metadata": {}, + "children": [ + { + "type": "mol", + "hide": false, + "smiles": "Cc1ccc2nc3ccccc3c(N)c2c1", + "is_chemical": true, + "in_stock": true + }, + { + "type": "mol", + "hide": false, + "smiles": "S=C=Nc1ccc(Br)cc1", + "is_chemical": true, + "in_stock": false + } + ] + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/tests/data/full_search_tree.json.gz b/tests/data/full_search_tree.json.gz index adad27234c20ae815fefe8f847ca798b0b85138f..edf449ba9203011dc2b5d6a34025c60fd7cacd4c 100644 GIT binary patch literal 218545 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ℜ7)*RX=d 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%0D6k#Dbt2LetnGKD~*R#vrAtg^_bzZnGE zT1Bw4Eb9l=w50K-TfDNsl_=KqR5pB2tqU-6kxl@;q`327r=`iU#HFWL)|i;1EAc&ckJD7R(rWXeGU zow%S(pQx9W)gynx^xD!qwv5YcDg1;Vrc5f^E&zFy%zf9Q*>aBe10!gB7 zS`dOJw<#yvlyWEw6uMDN&FaH!7?*pP4G*(nDEKfN9%jS1+{0{mm z3h;E^AGZ(>w7tiS@1ql+-$r;QX8N2U&v4eafgVFVYNrgOZxiDjORhf-+_ayOWBYEr zw~WY+j&@>PUC<@`-VN=;i0XDiD@JW5=jgTSzOj*0RM~JOF=R#c6WB~igR3e!C$F$7 z6_Q4iLEBb-L=`)pthb-dm33cFkb=4oOm!4pMr@5VSUWM*oGT1q)KQYx)?;iv{WQcoqxqqp6-9ve&zt)ozL3?>5i)|$wx}jRh$mc zK9J_X0t`-^rlf+33O#e7m>3J|Lb(>t zYCj&pTTtV1s);M?sk6k`WG}wMtjNHS#qnlyNBEN4%{( z3?a+=tp=rzrW8;Ki)uX~&5a$!^WDT2;%PrE)c}#l(^n_1u%iKA3EGS}v7=$Zf%Gbt z$e@nesYcMx>ZqAB@-kO2MTWK1^x+`Bni2OMOx*+Uj@#a{rN9ZYtHqIbp@wKfsfBVW z9KArDm~c6>DV*j1p|rN#WjqIIKbxxq-Z`e&7V%t%c#O`r#Ki@G_u@^Lo{AIm+=H=^ zLM~?)lDV*O%(J>N%Ms`mKFb3VuG>LxKbtE`I(m-~Y!*K-ni>TRNy{5m zc~rh~jl`i8D+A5rrNQ>IxiS=59&aJmeP9v{u{V#r(a@-_OIQOherEAm*96aQAbqUF zJN2`3wQsIdGQ7)HZ7vETe(ixj)cv?11D9BRQsjN{t?Ws`khRim$T$FTe_EODT0!0l zHi_rtGgN=$(;qWl{iKsWq3yltqqHLJ?GkTj`iSPj;~&xXY5cm1H#Ap!z5!=w#YcG{ z!twD)Z961;XuS?oBuH3mtgUK)Hbs}Gie9(Jha1wp!zmpRzC3G)EWC(3y85#}Vx|muUG{ANxb; zuUlPxKbvbOL!Cua+2}lMHghc)#Y(wzjz)J%e=V-^WYzV7^!9+@do4G9!I{bTIwcQ` zI_@Zs7K7m$xcY!GIF~tz@u7m(#c?n?mTa<7_w??E`1$wzL;d{azkAX1VC!XHU<9^oAC9r!vT|y?sLjMBcCd9V^0Bky z)g}hQ+x`Ao3FQ-M`{`BtY{nIaf9n0a3ddAqB!Tl~VU0&Ox zJW%48vD=E<7|THy_9iG_6J{S=71M@uVu~hO(XA9~QN<`gC;ooAF@eo52+)GwI4{n7 z=Mfg2N?eb#E3>%#h<3Mk)31kA&H=|%&F7dNB=20xsW>&V-Nvm(?z`&Q>-RW65AZq$ zuVSk;DsUuH;4*1oW}jKdoRL5khpnZ3Zlv2JCQpE3YPd0YjW=xW#HYcl$1c@sDihk5 zEt4_ux)%S|0G~MHy|}IY^QFHi>v4Wu_Z8)d-s5CFVC}f0rU8qVBV-GO4KZVDn%ST& z6z$2l0OGk-VlXkHyoHfm);H$SEQp%-g?3s}LE{qRS-iU)tX+*mZ1rr~+<_*H?CFPg zhM#X{9Ba#&bp02{wADO6eaBVM>wBA%2S^jk~=o6k*tK)?ZOx>sEcVX(puM17rV)SZ8HEl(n9mGC3Q?dP-3igZNZL+J! z4ppWjN1H?3edK6!sjJ4eZ}kih)jv}GV#qT>v7{& z(tpL+^O9g;gHkr<~m9^5_5MGLge#fGE9d zKMVtIQ}0RsQCf{i-3SaU73yoio*&rPS37!m_pukD_UG=r>!s+h)S62UhEQ;RM@RXKSCaQA`t)3@p`V`mF{|L`&`3)JH}?nLm%p{vnvDfU(`}oOgIi$(b-x^ zDQjb@Z&wD5j-_&ACa{UUoY5XlFqAVW?XA&SC$IR%m~hE~O`CWXHln)^lx)sBA0vq7|`dHZdVv;1HXe+SZ(lb-+oP#Fzjr zq2e-)Jnwq9&n5Sxb^~VG8FqLP7y0Sxw)+oVOh(Rp?j^+EfcEm`9v%5Jvy>bS^`H@4 zqt?8X6|4Yotj$!4CHmx(@;Xo=6gkI~sIV9Y27C>QeIat%$K=5lX{X$z3y4KR+w29A zZL?s)QUSTB%*dLS2yOfCKkk00__o>Cv*N`OUSw>ct)YsR5HLW{TC5$;MY+VP)qun3 z4Qj!O2&qDfK~bqRseZxVMML=Tv0RD_LuIoUM~0E5DU?`qHNJXhTy`$n;xhXLrtu3DCDKh8(N%Oh1gOzz zRc=fz0G9-RDZOz;%0CuF$S)G?r9xLNp00Cv(0JCX!Lt?wPP#79qT>CE6S0AC_Ku7skzwbPzk7U1tox|QmoEt zs}e><))^0hZcH!hC*=*#3UNz?hgv&wqkCO7wt?`(lY!LJ$lwobiD|>!uD;vLT>gqZ z$1$H)03|Ayo8#C;Q^Cam#EtgIc+p9m0vm&_TuCLTRj9?< z6cQFh2a`w#p2;;k3qmXw8A`@pkdn7_p2h`V#i(O%P*zkE1cPKj=iIny ztpQD_Ys64JWLu+;7;}PJ$u<^ythY|DyTltudUI&I?QeD( z{isx{ol4E_6u0=iY~`BtW`2pJu3$}I@Zo*j#XDLuv3dzLm91i)tBaLRvJiJ zI!u%JAm6|K@-2S(`r+%h3qnvXffcnW{Da1$zKH#Pr1d- zcTL(}>AhP@cej1}_XyIUPab=miuV4&BisoTY^cqkcN9VQ{GJSUG-vN0yuaYP@o{?- z+K&yq72(6icc&-OCb&oEMtA$_!d7A*mfJ7??f#yeJ@5eose= z#>WTs#2xAj-L2C2B>wC7PkY+UOuT*T{*LbNikU~4*_i!AaUrrM2Ngs$E8ek143QC{ zRz4cq;h>WaA&bqU@97U~JOFiA@P8wm|wG5<6y*?4_cfHG6aJg~^E;$v;g#D7Q|Kt}}majpm;o z9h;APpSAw+sY0qF)1*}vor4n=F)^0_Fpk@^Xc9PdvxFDr=6dmbAx2VF5rK&{i-N`poxn{-iU^d0m+2`4 z>r<*l2UTxfISK@5o(nsd3ikFRqyi@^-yYO-oi$NnJHS>Due7zEVYaJeA4_&-m1=O+ zX9$tB=tQpO>>OYwKxNS==Bk~AT%2Lij&kv8(ml$%^0j>aB+`2SN`(CWe>YM-O}Iz= z5(|s=QZdqK{6yJ4a7Mh|Rfc|dbn);=UIrUHLmBI3Cc8@ZF>`-$sF1PBiQHw5b2PRU z?7(bIaRIEu7Q~hzxtwz%XB3d0`qhP4nklrkVecyRw4UaWJk^D%TiG0QMRqsA^Qn##?lOO1rE<0!>DKV~dVZL{Bkh z66@#n28T83xuWKt<{G=$|4V0QZat~QpYns8y7wILm)zFkSYWcNWFH$GzLKs=n;5H! z=u?bAxujD~VsdaSVuIKpGYcxTluaGH)=^y(*dg*7CaNG86+E0pu9u321wK1zysyWz zr@&+X((6a0`v>$-W{?JN+uuRh=SFBAp5C788{vGr8UL`iYfBQn$Th7XaqOvKt;Jj+ z9kCS^iCJmn7=aLq7vyNQ2rF7PdXlGRmRpIZ3HX=7iKRk7!Gk^D3EVT} zA4-ioNPFuUE_-QfXX7qeZci3rBa8t1)iU6aT)`h?uQXl#u)j9Q-iSNO>^_%}_7Chm zf9bwP4*f9>2a*kaOvuBOu410}H{7lj-j0LUxEK~OqfCw=_^6#GZ+)W7R0PVf)w<7U zODpQ;tdFKP@O#(ZV4HE;v9nlSPcn~o(6&@)D=0k@6*oJb@u?E&KXp}upcg>c z+$umXf-SZ8Y}%OZ#71d@FPp)$@+N<`o3_H-u@>iyiOn%wviBL6Vf`*AS zQmNMYViI%FEftd06qx(<^M{hl{p(*ohx+x)tL>IfO{$*gH=YgZ77Nn#>THhY?P+~= zGR&zk*j?YZ$me-s3t1uIxSX3xIy)3`cd2M1SHNUzqcJv+&ABo_t1RClNeYq4I)V$+ zoKiCclDLVrn`Xm6-o%NGu#V4>%KT$*&x&0q z)R{)jpo34baD`MX3vhv}6g+EVD`3jW8w`b5BO9$lVlycSu6L;CBG~Y?bldi2VwlXt ztc2N+Yq8*A_WoRcnEjmok?Qk)5>LvBUQORCYzX`CiEi-cE=~B5FUsG&o{Lc7`&jCV zC`X85L!@HJaEiG&OTos#XuL{}99zpSYRoDaWdbT6eTk*$ILSbo!OJ}{9%nX4St_O$ zMDIMmfX#90&5k8={{n*-OAQ_zd3%EM+__CJae*s*922l}phDS2gv5o6$7(qXWH?d= ziv`tKQB<{s#n`F_KqX(Jxv??D&t*(4Ms957J3kjc_`*QE1}TkN)oN zc;Np?e}1^n^6tvGzn|#ja1)!1&vKmQ8%-^$oT)f*;dSt)j84Xfb*8ubRW_Ta5{iky)@4666)jWVM9C?ht2 z0Ulwll$Kh{%8j)~Iwc%!ifj!EGAcqst%l2I_HAW+Xpx5m;D>AIwzkHx*D?w4G8tzF zQLDAp&a*<#)XJFi@Xe336@^9SVH7%Jojf@B7PPk3t5zXQi9RX68#K$hrqsR#w4O9; z<;SKAGPco%NKQGc?Jyv>wm?q)m6?KLreU93i-z#tI?YzJUZdO8N82iS!NJIcS$lcg z#@ae$=RAmZZCv||PC^D})WWi)f3^ zIx5g0Kq+UOmlpzB0gv%13;N1lSPLj;2aNB9Y=e zC|l8FUk*n%Ox)2mwg@e}T>w#}N?yCs#_dQ#K$!}1TjywFfkNBL6QCR-ZuH$0n0NB( z2wup`+?tO!7O-?ipjZ$9N6KG!jpa)dff5@8WWq3x0MOnE5okff_SKB9P8ll`mD9;; zX{+4HwkK4*_Ic27{`L98r_bXWj%=W4EAp*cIn>lJUBas2tQyWk+f~C^HJqcitA?{{ zyJ|SQ#;b<2*Lc-%9@@^L;r#XC%ZIO__bCsnIfGyK;M&(8tUp+Pu>Rns{opc`4CyI^ z9J=NAG#1BpIX}4hC=hLpiuHCVFPz6y`Qg%L}DOr@ZY|#=~m2yg3>8&1Gmw zG#okC2an!?PPQ(?k?&!u*RXrymF|!oGNg7 z5MfZhd@Y}+Lx&!=!@6e%fTLa1b*1sdLJ}Q+#JxI-8-s_?{&QF0Mze3mvFQ{s$6g5D z?0)>s2=AT>I%uDBk>^=vy`sV-R6t`*&|CvoA508HnUfP8B6uvsL1QdgXRRE`S(i*I z;3-y`j0#sWi*?$xkCf~+4`ejWqGBN;oOv7$%G zQbVL!7xHEG3Fki_j5i00ytE~)5Hks4$SKDddYL~&R(oIHVMa6 z)wURF>_yE<%pyg~p)y#VwXp<3h^U)>RFclQdA(CWt0&{wlo0K%kCRy*G@OjyJv0Pj zEqq{8Ufegw_=OmD)|Jf_7}nfAlP#zr65}O!1J5I1Zl7uP)U&Q(g^X!;F7j9@SUq?^ z9~^RE0Na9B#KKZh8P8l?Y(=jalaJn7)M2>TZ8yvb$aweaoD9?M>61p(2ti`^(86GG z7E)cK@Mx!}-M8?er1=d)mpT@;M^_VaJ|hiuNx%H}|*f6IMaQE?I~MqP^wt*m!V$|Yu{s$!dKY1g-zQYPQ1 z?yJeUs|lX8%K*b^vfVHzQSrRY`|kOZN|e9satRH0sOSJul*8c=wt-%@xOf(xUV)1m z{V-eQ!4qS?q+d32x5tigx3K$aY{*p_CrP8N-icabT#P|8=~!)zl-n(DhOARa1#|G4 zz$T+oE8(p$XM1~Tbi?tp-7|yIsC#L&hBcuZ4vZY=Wh;$mxw5a(Qe=VS5`V5VK0Xm| zEScvFze?$}OH`e$g_N>3rg~G**PKjcIU%)8?6oQ$O)!)*DDAD$BD!Aj^ISd*2hewq z3<)Zb-DHZ($?4qyZ$Oa0a7g(;FIz!93ns3*Kh-=w#>+A%Rx{#7@7D^2lc3N?Wa|Rd zV!`H^< zPccCZ}g#aa1}@eXf&`rlwhE5J;1$Ql)EB020!vc}8tURt`nmV=XkJ8E*yf;FU)rk1JQ zN{keq4luI>!J9FDurWA+9!`jnltr4FgR{evrK4K`&9p$YizCV>)|r1Pf$-N%dxeH+ z*9uH36r~b*!G=nr{JZKgHdYR+Te(H6AcY8mAR=F=A?fJDWUpked(>|qyX_43um1S_ z>D#|vefTI4kv@I=t9<@{_O7e(v+SUGbyY6+3u7O~J zo8!t=4q&l%)~YBU*XblqW{gtTH1H$4S-*dKB34rw;g5^_BRAg!w@YxfwuZ8)LC(7v zGbOPejE7oFG0G%#8c3ItZP2k87j-J~(+Sq?;Wlf9My$S0=|4=mDyKBcscc8I6;iz( z#)F)$otbI$b-tC83CD-yO<9eLRExcEX69OZ*g&HTG{|F$Ho0tbj$m!ztTe|GC}wD( zRI8I!HI){1MZ|(~I8x{iA}m=_ys z+?kE3?C6|i(}Fm@TdO%p^y=xDZmHzxeP+>%CSz_v$|u*nI~B9KSRyA*ibdv zx*KgE)odaWl-7a-ZHzeu%{fEuCfs<$Z_-=UaR9d+(S}p9nO@(^0o&G25jDzD4>8Y) z^bTkL!I@~@>(~2?%cc+P-4^AvyuBEtrO8(7;c_n!5ac}AwYHB_>>%FvZzXN z$XbjEPoS|Cgn{w7kgwos%HS205DnGtDv!0&xcDXkJ%nOsVB1Q_bLLfBc zCB!-oV;twbti8x6!OIG`t^e-k0DQImAA~j?v#Thubz-ee7)z>$&Blv#V<(! zW^@xC;*1jk#-k}m(ZMzh>oJksTrY~kodJzJFQq&eMt`R{yd>*u5|LIDjuv6gPTewB2C$oEjrd@A=@AyBxAXHMG$O1htx753U#lX>hWME zR>s=om`Dn-9+VS7Qe9QF`GOZ&v#Y_8ix@6473bJoMf2St>uj^=Gt! zULWYWf|_kAsuU{*NAUrjKwj1=F&2`gkrglmInc!_kL-&PJd7{c*Wfnfxd414?kRA} z`-#rNSFUmZzO|DuHSzV{>?bouq5jSfq)bn!^Z7phezgF9|Lbu{uTB>8(GZ>i!mfNQ*x#_5~ZwwE~yy#+g6MQ#DcOIQj$-e-&!)dJDGcjM&L&@ zlD`aEoO;;PaI|^`DYNa@!=73!^NgCS8ces|eiPI#LB+yaRZmH=tfexFK~cPoC1V6v zT9^CmsCtuQa5|=_OonLtlQdp`{yl#F?Za=s-&uBcXD7ziM1Bld$^&OZGsH0yQo1^u zr#IBcW_N+jVI~yt?{kR*&&NBl#!5HY?~;9AM3@!n*yw1A2M-*hmV+3?mLOMICoRWw ztR%JrB7^6OAB z#!tVOQ#0we>F}R^_4NBCt3H-k&L+iOQfwSWQ$;wvl7m^Zfuxm3$11y0Vn79Gi`MA1 zEdU0mOOY!RExcFC+RC52eTGB!0Bu5!Kx<1nQXm>u}QvywEig=e6ZXeIWd(*CG|NNJKTPTBQ&BbkU-zE2f zLUx%+4sBt*SmK)+*mv9P_yZxlsqLvdADZ(ut&Y#!w4TkyNaDRF# z`;pb)-7@t?kKKNg*DiSl?+}Amj(yD>qk#wMi?{0kAL`-+$&W zmeB{dMaNeZ*R@mnyzU}}{p+9%!>+yJ3H9jMJ@Vy9P+uP{?$znCmZ(eoCilGoR2M*r zDuIES(1y|yhFnqvx#;Mj7(>1|>r3I91iR346p)I^s&0j1Ek`E3I9#ny8fo04tuc3$ zNZ%hv@W(`+CONuA04^W??@kGoPCb!Fv)8GHSby0YT688TaMBqehpf1=svbzAa>1d_ z5Kzf7jdx=DQ)X>T4nYi&awk#cqs5cz&fa;;VZ+*qhRibo)pKb0ZU_vXqz9ZP1-v^> z3ixix%!K=Hy@_a_mr>F0VlY?p;wH(Pt zm!NgyZ1s~7LR30{ph9e&x3#hmIs`92W+*nLz0R!B}f%$lxxs*t*k_ z0zaMPaDmZmw#eYZoHtMI|9a$Lk-INQZ~N8lY=f3AXsHxjaamwQCo0Y|RHPgYc&98B z)G87?Rk2Virdr(!wQGDKqHIlf((o^aFl%RbT9o&qFWqBZhUvo%7G=kNnPqR-(1i`k ztH9P-4UTk9CgoyVU9>7J8iqw#U$(YYVFlFSs}~GOSi4KER_pF7E4&vjM)!y|$`Ibx z2kR1AtlkUU%v5__B9l8VfI6aLJ1u?s`LBO&f4p9fAFlVdo3QpBZqRSxDnOU@}-6P zUUl7V6T>bsw7L;2I^`o5G1WO`TZ>K_Y*OG%3dUkV_NHi&!N@fiS4-_rpME?AvYRAz zFNAw$BO|)1g6?wXgA}fw0tu?i4SAW%)erWeG~W)H z`bH9$*VxepCS71cMQ)yh#TYcz>>XfX8>0N-D~FtN(4m>mfyj!2P@IQc;icSZpznng z*m0FOX2TCNN{QA!D$Vtph;Rj7em6kSX1=!!>`5Hc3TUS3qZ0fw`Qvhqq(~U%Wa;% zhmsWMsOoR&Y%NFhbM~^ncDqeDyM!}Th7?Ja5G`3b)*FqcHod{?^&6HWq$=@NIe3rs;=uLu8+B^F(7VXAZH0>N^qF(>} z_hVn#+oS8hJ)YmL|C7x9bWA5GYW16c-7DKa9s=jPJFEc(-^k84RO&+|PAVs5Jh1T; zZKxu{s$~VmOdeEHwk8|0b;blNL(fK)YWP}I2D~>7a_7yk-mPlYj z>63OSO#XUWx81g+XBP5{KYxFD5r0a*eE68<^^`UI+z$?)e;a?3lTs`Q@_FL&()4xutne|^>Xz_lVbF$kvBJ<)M++S*@9Kt z5|Q_0fQWI@ikI<58T5dzRXb=j(`gDazWGR<0?^u^)6=DlZMXx|`deFz9*yEj$Ayg7 zgj!TFPv{9~n)$p9_X@3PMU{=FW}51u4Ofk;UV&_t9O&t0Q^R;5=d=YT0%fOjg`2g+ zRw)Dn&O36(O}dHNcw(^^T`R96veOMH+Hl{xbs@@AA~I}e_p93C2X&PQjh*&4wejeU z>{A)pwRKFh*GD8~&&@$+t)A|@IgB^*${3|Jv-5Vk4!w=H^4e?d0CnRzn|+y;mDf^x zw6>88xM@nRVZ3t6BRFC*WYwgNI8g97*5P}>7@|c{w-m`L}L9>iE&S*_wroA@91lg`f zd4HThwZQcJ??8Ld?Ugo4uw6~J;29@~b&bxToO$wE-0+Y@$SkqUkbSef`zZFUQaSp-JJLEy!JnJz^hCx}9z1!fdA zgqc$g+5|c1okKaFtSo6(7UY!{1QS@*PGCmQn^BAAyG&3mxZ#X{rw0f$%+Kr|?__A#yPj}M+A!SGryR7VwJ_O<}xetR7`FX%w3WRQ@6ZkqY z=z-O55Og-@Ss+MNQEQqbJ5*2PNE0_dqlM}bV+js)1XDDNo@8FgCY?OC~xG~TPRK@D< zQjr!Q*c>i>v9?X$Y&M-CmJ!TqU#Ow+M%{&d2eQp)f~;1e+znZHF)4f$Q1^aS>d0MN z&XfBsiC|yb);2&poAW$2pG++UDr?rj!2^ZXIaAQf2&k#3EE5$k7N0Eyi6bL|34E8r z_2a+XTHrri;UaF?>6qLw@fvUejm13LAsWlmQQRw6I;6)xm%(TJbf@!^S$pxOQw4=b zsT(ScL4P1(^%intzqx6^aRZ~R${@qMEEocVRnt==3qx7Ufr?j+M4Puf=> zJpR9Yej5g#&3P`Px3o@fwi-=^biiO)ll;#qrpm>ViAb)t9_+4$qLZkh^*-nSs!HYE z;eeKQIOvq3E;~juO-gX(N_%L&Ss#7a44zH^Jejmdmf5zgr&WR@`N*qXvEhIem(;4O zCgguiUvNpx{K|H=q1oA-XF)TLKPN?=X1VpH+7CVo1%4U2B>Jqfz70vv<~$3MP(cBQpb~Rd#%C@j z8!aYU(#AwUnGE(NKOF@5Fnc+id70&JFmyKOSzsvm|I;08#j{vE5`W6#^QL3EMAIP|s* zt}&X&4tj9AOGIpQsmmd<&)jJTJ%dfZiO_>!=vubKQDVD|bnO)Yd@pt}YTwr2GrQ1r zVlTOeSDTu>38Ur*ouxXy!cEg=A+6^IfqXY#bxWSsQvrQ94bKMFa=1}@h@XXX3a1<% z4kuqs)q9?b?|anhYI@W1F@Ecx8*#Pn5bJl--4&!R+5Q5-BuRUN$tZ`AaG)KZ*w6qn;Z95tFt ztgj=7KW~VdJeC!qnl_6dR5IDSP;-x&P*gU+YLcd;oXG)ou}QG<1R;8rQ_&@BijtzZ zoDOO8RlNxHX@^k%_u6#bkp!GMA?o#3LqtFVW-$|!wCmdANFDmaB%N?kdL0(z*h8X+AKqpWI0YHgzN=5ltDmIklFOp(t1X%1U0V}8pXfp zj6pD>fl{LwNHcmmD;Uo}sl3k$^Ecu*k(CKvNQ#?%r zwu{eWknAu>DM^yd^l87C|TN zC1BPz`nv5DqYtUb#41D$!XUKs-uWbabcQdM?23z4h&awQdA`l@NqghUb=I9GArwQ^ z6mVLKq`mQ`UT|-`T0Xz(&G9J%Siz`ivrym{w#JN?SxJ?hh(;>18iFvE6a$rp46z8C zvoYCXG(tsX!{r3To3FY_M#0UUdynp5!rqhG=3S9B)Vm%gj0%V_qj#Qm6ZXdD#MY&#?UJ0i)~lw^{q1q* z8oLdny{unwf;(vPaOjD0V^_VI`?^9*(`KPq$81E#5OvPM8?Uo>CVL93%$2Bu&t7_E zobsB`>!6hvR#-JIkl#N)q%L2{3;*TC&mVZ+|DH$cZ#W@j0boZCC8ro=te&*@C6^1k zPFIIn`Qf1xOBTeR|E&|>Dv0&XE)FfR&F7<>?YnI4bNa;0(3uq`nl_8TM6fzIhc=R6 z4Mc0U0wEZq+5XeuRFF9<%fJxHuy#^p$)JrL7w>aMO+*Zc&wCyvy1*s^2oRMR;JkJL zB^Kk5qrRG;`NN@2(HaZ!#1nu2-frLThgIivrn^c1RxD}SEJOBAF`*3@Q`VJfiN&XY z7)4=>u~8Z6d||@}3L8BtQPvnd!d(I*+3`NQfZYk3BPj$K7+@h>z>lQ}-U{@9IL62L z@%{c_`{icC_TLXhRCjV`s*&*a-QKbFuYc{fdh5y5QNcrZ{Y`t@LoZnU{$XxH(p^Wf zVo}p(nX|R*7-uX+aH4wbYNaq+6>`!+n#{I=O@@la#MY4rF#skR)PNKFzNjUizlP6W zK79E)A+qFzEH41kc8J7EjgiA4r4NsmB6-&g(AURm>&cWdlcUChxm|A2;}vI`HVYk_ z1(^a!CydX&?yXohluB?)YK>^35|V%OvRE#%N)aU|%P5ZaEsxE{C%UT%ygT$!JXSDI zB_MLoukxP0CUiV)eu)$CxMX00mKZ72={RU5_IY2oYbNwwx0w9OA(-J z7Ot!JRmMgh8%oxDo^jJA^nQh(rp+==uQ^8_GE}hf=nB7}JsKTj_Kva))?g_@+l&|` zD#T!|O?eap`p-FiMPT1a+Tkm_vYKd|nCvDFxMS#`@u20{D#|*v4 z)I)u-#?Gn+Z}zu(cOdg`=Qf0H-`N#onl_7IOsteZUxP17nZi(cI38ximdT6~(5fLkkqa=h6qOmRz1r*jq}16V-?~8QX8#Ia1vy z_QzevvjSDqW|@3xsu(GQfda;`s#H?MLQz_$Y?3BOQKN!zw?S6cPAnNclxXi9d{(## zR-3@B*@ha~Xq%L8Xt-P1M67aZ+!5CGUY=J6X}yo{{4ILFqEORjneao!gdALS5gd9G zjf^B^j3$#~BoeN8Ajh_!MHiwInl&Z_J1T(3O|v!*P$w3Fr2+iCncNmes8I7{%>M7c zKXJbOE6)f%`}kIHYuYU1fn|V{N3;;xCJec5U=?ADFNKQazN+Gb4KbmUXjR7KTum%? zH-6A_!LX(H&eEz8%9Vg)x{VO0@+vxc?Zoxf!!EmY$L5obfS&W@JSFMOaoabKBiJ*Y z#mw$rzs31kF|=v3OpX*0LUu_JBnhxdBWbgX-bn4WRaW^>xU5>Q&c;F+36qch&St7{ z6BrJ&V(C)cZ+?T(wWo^%Hp-8V;I7WC_GskYhvP7R?^hgZ+AL$JV$xbf*430MPG#vB za#W#|2z4YjO0$#7E0dA{bXsA;=z#8vLpXu&Ju3<=#`q?r>r*w+F>Szg$^&ZwPldpK zN&A#)2M+4G#@5(>+6L0@KG<#M>$lZ-+Zb?9@twwe#hd-0cKGAo??yDIruVy=w-tGt zHp_U~I9BzXBdvU{9yTTd$&^K~G9!}BM%kQQi6MZtE(j1IDj0R5dQ0{@4L{xN0pl&< zOdIEnd-BO#2IIv-mK!wJo7Zhj@2y7k?G|hH3RNfXVn-ZpwXnCB^r?f^x8cq&*Zmcm znl{S>Hjox6WM3!z>nk%t%ndua0!hBisDG()xqCtfq4S@$ID7b`ViY6u0xWJfmoD|3b49{ioWGV7I z!ho%`9>$nF&aSjQ%scgf>CO#z!L!fBx82_G&`b9q;Px&=(!3hYJqNMEQPXA-ILg^d zkR*#>5GpBa3W|l5Ev}?hwq9r}opg{yv?(PQoR<;Q5vRCM09JROg$9jygJx};KzxdQSQjXRD&6Ma?vtsK~ zP6G-CMDc5apv$A6O`XYx=XQKH^l^W&F87g44A)n+pZtNUJ;V3cQA;LDQ0~@{QG){`|f=f~Jm0?r->J4su z-vmGCcTV0A1=^Cmd-AQ~b>F6gD~vR47Rr$sC1r;cVu2V?RNzn{JY zx+l-x-*)84@3z;}=0yCvL$hJ`!E8gty?yoY-Rt^yzgaxvH@w-8Wq0OI@3#Y)6VrYN zv$X4@nFB*CBP}G)z-yv_l8K~FkYh1P2Fx0bkZB|}>`+hZvh4Yf z|MRbpV-xKOn54ALh_*|S{*|Tyfe8Cp2?zMm@yicR;tpbn|JO;$n|=G8%;Njm!<^r& zhbyWyZ5BZlD9Q*e~?&{S^0m?Y%4 zfRM$w?l4ASYnegEC-F}Ph1s0af8WxJdQ*hoKFrOt8PN(+O`C<{5@S-yLQYPbjKQm{ zLxiNrWg%F_K@T~2Y01eVk`)ELKtC!M!;GBx;db4P;c6*TywO*m3HE2^jXTElQ_|Y& z<#I->d*VIJ4pjFa%!*M>n`QiVw2pyn44$%Oz|uicPDCUqSyEYq5|vEKb3sJqiUpEh zjfxvMA4cgZ35I9IsKvPAWX$#X&!1F4n%v@#^rVMPGVq7Z>A1LXJYN5kTaV*rFXtQ# z959-i{Nq=A<)X^kuYImoh;7;|W2u6Osifr5Cl$att;uI9()g%JmZI2NO(l~dlY$H& zd}Q5F-s_ywmKB`nsPten5 zg_5Oc@JiVMG>;R4>0wUIolL$xjuEpfnUS!0&9|;X-?UlAJPTT(HBuKPopm`_lRWDW zQWzbRkwLTK5R^!kl?f;zCkRD(yj$iPF`RCAV~JmiQZAew;AGQlnH{}y59Drty0kSD zdMQME`Mud`+3fvWQKV_JOpquH-YX17V~{>Xa!J>$GZ2*5QaUd6p0x$5BU+DauRw8S z+$PV|v$Emd_cz9mrD)Sqi2)gInjm}Pc*|DEZEz91Cb&o!HA!>_MduwM#GtTDWA6Lr z$+5hBh~k^L|Cx8s=XX4dD;76xmPvp?KAGf5XlpZ4DPDjsF6Ib61Xn1igeen960Z-onUO9300K-&fuWY-t|QQZgU}Oq78?}we{Ms=i1Sw6ZCizIi5m| zBg8oE!TNdqeDBZuj|VIN;;O&2;`gil@SBGG{&;NqhtFTSxPJr1=7v`~_qP+;NM{iv2JC#-T@iUvU%b6SoL$dcw7Xu()IEtgKC0i}(U zK%kF3u{RYIT4}&>_aq=0-Bb`@96BDQky^;6Tv%%exfi-ls+FRt0NgpDhzF^88tiE~ zPapBjI4guOLhGiB)q$Kee~Zx$6ksz+U{Om$QaV#zqo|oBu7D^E_t7~eK{tZ{E4k-} z`w6;l68PCTiRcJ~0SWDM;7ee+Z=fvlNZSVuhMyHb>>9vPqB=gh-c-=qSya|Yqj;um zTY+a+S>VN@G(UKRb|(2b3p5&dEm|IFI}9bA<3&(IR%vlU&)if%XNlKoeHfa0mJ6WP zwo(xce;5C??Zd#jlqAcYuGA}D-AxTif+dFMQ<9a?_dumV62fv%h#w5iy3znp|pMrRa zqvZuIiKn!ug0&ULq~x{1H|yyIOCa}=)JCHFI-zTtYoi!VEI;|42^Y$7FKx|MZu#-K zc8N2B@F<0LJQ)72o?9T*B_@%-i~sGBRKcATETdNNdI`$qzoO{^Cg0(Q1J35TeG<1 z+9*D#`=2N*H~Xq2NmXh zJ^k|G^M^0Kb00i@M;(2+SU;>Emi%ye)%w`CVvl*=$L#X{4T*DX@=NUT8>V+3%MKr$ zzWp5iyK1AGR0gPk@p?$R9oM^|Uk{^p4@{6|t95y|-RO-h>>yycB`OACH3x0Ev z>+!resK9SDc~buV==13={Y*6OqZz-Kgrg1=1069f?YbUI0s0aVC>e$YQ4oTS~@fZ`+X5Jwo-L`KN!S zPyI>P`emv0BRcOZWz8lw8CwKwnz%N5#syhA`)a*Xmg>Gy<2idGOr6`$WL)JmyeQ|(& zTEH*@Ue^KyJCJPe?!VvS+|JB&&rJ83o}-hN3|X3Ux`$m&)>jv@E(Zp_J=Aody*9#E z3_{2ja(7Gvh&s5?Oy5_Cv1HY5!D6wl<`!%9DTB8zs~a8~*eM`%)zS5?h4$VR-@c4sMbmWIWZ2k_jtM>t_|d!uvSt`yYu=6c_Mvu{Cab@Znv%>v=4 zAaBJ`3!Yu{8H=lf)Z>&C4uI|A`Bn)k`i@-A5+6}(% zhND_@Q@(mg3SJ6XY6#piBRB1NPi6X%ZRW1z%RU)ob3C&P&)e%7HwSmGkoFaWGWnWX z$UXbL2JoD#jivVuR%29Dd-TS@l$si-0FhzsDs$ohJed-0&GGoG4atV-gkzkwp zKl(=sS!ZoO#U7SWTojQq#mUM4?AHU# zcB8(^eX<)=t{8d=N&#ysic`&&C{-78t|7YwP^zSy$Q4^+uqJ?OoDoZrN!w*t>Yt9s zQp|A2Z#IFyg072?nd^^}86o*)gDL*@r|-Y}!}dP?z7G1gx7(|)DyZTrl`BSD$^jcXfs>6({Zr|8f7AQ*OV|W^&?I z_9rBF#n_A9J5sIL3|3QO#Z(ze&x;XLt%2OSnkCZ%pD=-_{@`SBQZVq69^+Yp!sfoq zXp|iq87#~@_Qj9!QN6=V->s?J&4#p;7RDu0M93(ZpF9? ztQsbPE6tbUl5OZxL{UtE2Oro_aS<>Sb`lekpeim04?ar`Gj>z%LDg~*N9JZQ-@&fh ze0bTwoxvmT3vzgEZ?Ix~+POxeIQNsDmcps|0BB0jt439ag1KN-WI_oP`srU8w%S_O zM4fRE0kVs~^)`6x;NlVa7$lbp!y(7!Rs`;~jrx=5lTDn*=d!BXg04D6yodJS;|P*j=MndS ze5s%r@-S?zH{P}Q0;A4IQr^Q7i4oO_G*CwXvgo$y$R^}vT=5Q9##!%Z#H_r6tEIwan9K{Avy-+)Ua391 zB<(8(CHT~fvxQP9n~Jqq#+njTWp82OCRhUa7z1x%#+roHjirVq&P~sqVQa2jdy`?&@Y> z#R8($APKnTW=IWUk3p&puJ%H%oT6#I3G^`Y*eY|5nQAWtDUa3Kc1GF>n6S$O_kmG` z#Vi4_RCJE*wM1{K?H9|sn4aCa+QgF=o`Mz22sP+??r6Xsmz$HrY+FmM8}-Fhs!@E7 zk`md(4SntdUmPSQdG**u09FP!05=Z7F5)j6SBE)I@2eRCX$az-CVwiG{$| zuoin|v64{6`ZN)1}FfecSU?*V~J1#+pUDaa;kI5O(uoxtW|+$(2TE`D)NM%p{i(V-J778@V3x|G;FcdwsY&|xNJ2Z+GPbMNv5);J$479N%;M*|VF?{PR7eU#YPN#X#-vDz0T zEwefS#&ho3Og+2l!9h4?M$N6egvU~GalMZ2tsTi%;Wpm`pwD@`;q}bhiiJ_JIh!Uq z=D;PI8XDIW5nIbHxyUJbaXwnkMtt_RMoOOYgOgUwl!%`tgwawFfu>jKof6eBFs)~1 zeC*ZeX0UK?rOOjV?1rP?RkicgzubypZHtXia<7=xt7W;;dL`%L3+e|(6N}myHd!mx zn9zF9#b!gD)I;Ul`2Oeru0PG__kdx}{vqy5`UIUJ$0MB=t^j(ml3D8E-3syj>%Sec zk57*4X?t9c#|g)qpY_K*AZX{>&w$u6k6SU*3kNLCPsz*%m<#UygrOo)rMf2!nQ#Ye;?|pDxtelvUk@WFT9Aa`uAoUs}Og_nU ztXO#D+BdqX^z?IS(pX(iFO&>=AET=c6M*NCV`8@GYA|Y6n@Q1WOIpg4S|}|dO%@AS zbKc%Ai~E;{wJ7=St8d=^b2L+#MCpn#Sd9}b#q0RBPKSW}EqH4u1T4c3~P&qAf4fRMD7u}$idaOO-ZZbrT~2CSEJB^N6QCOA?-aQx8H zY|iZLiHCGnRdyJl`s7P(JR6!7w7O9&M^4Xvh_ANQXtkt| z!yvcx-eISt$JhM(S)|O_Hp%~=PQfuH$P;0f7Y`y+Ic}bLv zszJ!MLg5TktBO9?ihU_9w_FoJ8L_;_cB1IHVWlT0kk{hv&Q2iB%%jI8$UOL*bWFtD zZL!aJs#Yv=BsNGS#aKa)0UQE05U(G^1mYH4ahU?88iQw#uEmnfi<{bLC)NqLTM8`| zu%#9S-;zRkn;`eJvGiohez%k{eaACa%=ZkfR+pplb!8?+K(0C11kKq*)>G_NH;Fm5 z9E~y)mY`(4cvLT54j^2Z?-#4TrIU9ngY~3A^&iKX@Z;IdbQ*28;NkpP0@yL(G=zUj=ezj|hY6&65zKz8o67)UcY$;kW0V0X_u{LpzRO?ohmKr~}#4}DU z0CzX~mkM;k9*uj;!1YJ=;?ydtdq$n!S9JH7Q?5S@GsC=n738iNd&nXvv3GiC(U5*f zEpX1M8W)`ho2zu*uEFH&G8@Vf%_PnHmmY}wVNO}3%hk>ohTLLRkucoc(Y?|DZMX69 z)zQIXXUopFV;w~4>6Sg`p7uLiq$}IvM6DP;Q5;sVp;Vh=qZS~DJ~48QWUJb+jlFM` zLJ_^KLMUV^`UlrHpcmVlSt`88faTj2mR_vX|M`=i*PGyV(EA|t9X|i?^nicKKfZfk zlnZtI?=PeC<1gDa9l%Rr`|<3n+y9P`>{$kka&m){VHMoN4bG4uf8z#5rnBomTwV43 zYybVX`2N?rd4(S?-SUqQ?|%Mp{g&U}eSG)J2KU$R+pfyhd&aK4`}p_zzyFB3>_soP z`2J(PbVp3@>;9fgqW7m?-@pIz^Ov7L=buM~;VI63`S5EUySRf`zr4G8K-ck;miqi8 zb4SJSxClOyjYj0m#XP!b$@`;gPeSuZV2laNqwm1ip$C7lBMc0Dy59|7BZ}>zz#c_h z064o0R;(2gqu10)5#;mh^ivKqQ?ZCUT|#A-yPK3Q-2RkA705kCm(cG91*FF>zp?%g8^9iK!VzGPRTf} zGSDwuX6rE+bvd2-P3Po;@mA*?LJ*{0rr`Yj!6@B*iGvkGfy018((eXzI)#8@>|lVt zY|Pm2BVae6kiMa zTX}#j5$j`QH~@3dl@{Kxp$u0+Z%{1sW>Mg1xQe^Qv82v(;E`oUqsye1tl|N!uE+3( zzGtBTRaRGb%MX?Tjglz6IAu^VF^~fNx(fmI>p>wKMy^}s1D&L93>u-qD(T$yYsRs@ zzfSdVnRKBo0>WlR#SdRnXSuhBRBp!3io-|fBJ|o`Dsq(JBn)SvXJ+&uS|`dbrdgEaE`m0Ej45`u=I?OXp~?lO@70KYaP&C4aciwMQF_M_;;j*0SFP_}9~W zmPx*ZXnn}Vg-o^<6;p*t6(U0}30m+~#f?prdqGOFNr^F1bDnh8^6r-pKkrUieyYFw zP|L4*#<`^m^eIi9`wVnT)AsgEs;ZI0siwT}z5Q{^V%e6eeQs9m8kPjuo&bLLhwYKX zE`93l_8?+bi`Qq2eKy+Wq$2+G%h++j#p46+S*C{I?E2~6{$MBlg-KyKT$j9%9nNKh1&r_owPdfY^jtZ@>TTQv%}l%X5pZ zKY)T2!y}niUC&FlO?622>Wnq;|IgmF^vH1|>AzyEFV>+AMvxI?crl0F1_qwPj)0w` zAq@ER2&1(Yehe`C>o-_g)m_z@)sxtKCMEq#CN()Y(V{lD9Z_`F3nEa1KxTU0<)aW|=Y^r%t| zF=wo%25tgb^$<+0JAR1-y)=q(9(~w#D#`pqyvHs2mvvw{@I*_M^8&tF{h0-rFW|V7 zDR}G{dct^z@BX0TnBlwp@C)8N{r5E@zs9l~1_8Usr8}(AVpHL7>{87sQ0rkYHEGp` zH4zhaHtFVlmK>s~GkZV$@>}}l*Z05v_Sk1Ie)#)8Kg@46II~P-7pikRK#)o$V>r(% zG69ISO2m5f>fKj2XmOTX^#GBz>Zm-(B?r%e(?xcI6^=8rdv}c^ zQWxH*Wgk~s4E6Qj!3nd=B_Aj}zV@`O`@VV*_B**d+T5GdZ7rwP`JKJL4Wql$X;mb> z@zl=os_{W_o~1^LHRJ}qXP_i*h`9w1xwS+#@+{}nQWk;*Iv}{gE9D8f2j-V}Y*#DN z;+MFk4kq@i*zy08Mveqk->NZL#W_=Bwb6YOOc=bUo@l{jAjbqorJhBVr)-nNS)#ov z<;_IU?5x~d+{?YbIe>|X!Fjn~tEdWncv|%~lKW>!nAW3BeaRvlmU|y^ifAx}O3gHv zjG(Bxrjn0bq30~cU|Ogyu}ztiM^)p}f|eh8w0xC5{#3qdAAkOz1u?m~#235tzkwf| zjbRriNPM4($gLI6Muc%u*qNSo(?ov{w7#b#E^ZLVJ@entj`+`CpVrCV9Zfy(x7cH0 zKj<=7^qc#1Tir0|m@9#}&fZ-e=$}3khX4gk7OHyXuo~vhqG1+?Nqp5SsLZR_eUX*q za6xMwJ=%Au)7#M+oS;~G26n5pBo8uCX#BKjcc7$K4gSc6kU{C+Q=d#358pho9S(#j zaIF>b&3+Si!>3$Mkq+VJRGoQB%qGFlQ=k12isV zRkd`sS(X@Pxyct(v@HPf;2-xPIAiHNE~h}eR?HsIT6F=M!)JgXzH_!>4 z*`C~%9&6d3OfXOr9@-<0I$QNu_AWFXEM{@_{b#i24Fj*%o@*bl0f}p+Qb>+iR8uYF z^lAn2s7kFVkbNm7v)`rR&vMNVD(uIfe~dqU?3?oOsL99XvJsFf_3+csf!62Fdr2n`HtLl?_q}{mlr-K_Z zlk^X7o>cjqdF8|Luo{)IaT6_^N1FF=1D*!UPP2xd+Lzt=xO?F;MfgPvZCJ>mN-nX0 zns(V{57APkRHPSQ1=Uy8#B3_wKG^0$NZA2Uk~S+Ow`x<@`Qq<*pO}ZePHR~P_F73D zM0Clo`R9K>*jTUJA8Nf-H;jwatS{0^Xo<+G_jf+xatI@a+or?s$j4;^Z z<}rR=mDVH+%r+Z#5HLNU00zJqMcR=T6@ZQ)ZseBXN=&y`>1!u;Ho%G$Ep^==|Ja5XXee{Q& z%(haah0kWs8%7?Rl53}9aOg0C5d|Sit71y8d9zH!)j3U4>5fpC78oZh`R?o- zBV!Ls^!x0=&NzaLP`O^K>Z#1$PvpD%mv`HJ@z||(UW8bKg&eSC<3+FPmLfHBUMRDZ zUQrkbTj?G7I>}YGG?C)5sDD2raHZ0&#vMQ^cUr?+M z$;IZ>0IS*MRDws7jceJ(;@H|qwUpk8A-DM2{*zhm@PpV7d6N=?-loPcN&Yym*Dm!U zf|=+jc)k1Np$z@?eJJym-Y`ZQnaV2q&LU7NMyjV+0(##nnjUAesU&pbF;Zv>7Q?oM zS&o$detXp|;10Y(}=Ehpf8$r!(t5JY$&!x;gIxn z&#qZL_gkyg8k>m$1Jqhvgj6jj$W_0aZrlpe0ne{_GPqZ0q_dHVDmY6-c{OSWpv#R{ z-D#CA4eB$$8~M%7w5XZWUTvtyb;tS(z1uId#3%U4_qt)!H4`v5tf9O3be-79LrXch z7;W{vBYCeobfH$gW*UgXu6NRTZ3QbVNYsIWUBy^b#nA~bLg8Ae3VN7b?8tiB7xaRj z^T$grEuGHplTR0w+~0H;8-`A7f;k0KV{*Z@;=5m3HwHL?O;p;9RkW6mO#eWl`g zmK%L(0BeD^1$#$1iwT{yc}X7I`3r3^VVs%pzg@~=7=-NEJZ^dtBl3fU@*tsMuUx4G z{libk`qg(w^MCiGx=M|U?|%6BIGVawX%{-;?lexN1gk12`rvD9P@0edeZ{MA&iExb-_vQ3P%ym-z!IFVm8M}mxl3sp z_eZ=(c5rf?lx)~T*<<&I-H-fX!^kE2AzmnC4YeT6aI?i!Ro8@aLI%KG z$!6$PMFu^mmXp_SzP7hwR{qfnz_e?nCG_@2*EWW@zfl7Dzgn(15t1H|TxwILtLkl2 zQ>H*w@0eU7P^c>N)EQM-@`a|M%P9-+z@=qCdR<>BpJrcfl__x8d}i}{m2>1H>K zIH|=Zan83CTTfl1#I};l%neg+;IcGivc+bjNG#P+N-&Fu>FTy9c0s)91(;halK{og zyj1kLJxM+}t?ZH=Y#1F>*l>yxvJ25V?}AO014UsQ(RpvB8XeTIAc>O{eDl%IBUS%G&g79Tu`F})n}-Ga>TgamoR^qCpW)s& z3{2CkDupZ|HXi~92+}*BI&7Y(=U^iwv=xMFwxyu;m?M(CZKeeAgs1lwpj<0Y0{umk zXF=}4RDID@?!lQlq*u+8xYb@ajJaw(Ln*;~RT?pS4%pjndCzLCnP|wDMu@r*pDH-J ziwf5?E7STvKID&o`}pCP9pFBc`nP|UI@1Mc`E@Y2T2_Qwv6r%~@Arh2#{rs?26q0mSK;3HTj)Msg$7wse ze;9kfrhNB95!AM58V0-g)2}Quw5@U6~&blH7 z6kOAm%q-|j_A=RDD`!CDVrfEGOTONnxhK3+Km6tWyN5{1DFgD?gDSJkV{qLP8y0ax zOg58EQA*QAS`m{?ZqBF{q^oB&K@2h{ED*C*0pc3cycp=xl(!|Z&wXAtaZh`5iwe!o zyWu>>s7wok>JtagBiu2^fQw?ZWV?tn@$UUE>=iLw5*G?6i z)WN>l57{+V8vgQP&F`v3H!S=}&9FBuBNP|NKn)0xa&FvIOXOISO{qX;$0cH}p;VRq z&za)%MYvciiGeShKf83xac02Xv5kI#4QD^a^3v=Zti557#9W*uQguxjOfA_EQK4!} zQVUAhhgzendXK1%CXh|jUr4hO)^2DpnXs?OcAfOvP2_Ao1BCTB3TT2`@(B`#2;foF z!w<*v(CsKp*N8r;r8%m*Ij)7KYvn4S2^T5GzxIQE^IYQFWmD;p05>w0o+w}^$#27&yA3=}vWTeh^V<1_5n4TF z>J*F$P++WBLG{2~o0yPH&fcKUmWw!&Rus-+1J!v1syAecFnfN+-km8pKfzo23<}rE zgm8!xRZi2S%5cglj030e9NO^HDUQp%56alf$<06MF1L)X%AA|+bVacN`$ov6RcOhV z?6{^35-Lgw1w2+KC7G5D-vV9yTJTz}kA}TWe|kS<(0^ht!(mT{sr@o@?f3D9HVoQg z2&^yEsJQ4$OHd8u$ml$|l!M-mMJRHz#d>yBTT~dAn}p656gj>KvukCN*vahObLJiG z&8MSl;iUQdfg0#iYqHbYsrwIahU@9>(deRmd%tdXU1R)xqMdFSWxl3>`rEO^P$Nrp zIkC%})e+qCEQm*Lv<;hEjuOmQN=8-e)VE{P?!J>Kc z^LNia{KKaI`j7bGw>q_fyM6fh+mX3qzNMfRU63H)1?S1NR8Z$v7-AG<4LT6ajTu(7$ghUnhzWT&2?VMGJo^&ZB(L~oqX zKlB{ew-$I;OvGd+KX*gD=cLo;15TgT*tfgu&nmj_EZE-Gk}fG=Y69z2Sz;T8w)B$lZzqtc8FewVE^dH zI?^!68Wl6WBn=Y7m^pG_5qA#tX>$)H%LD;MUu*jiW2B-(}O(dClahm3>q3U z$_;}Q)g6~k{|fpPrU!MFSJB0~UysfRiV*<}tY@4aTRi_4Fzomz{jMOTXNuU+&T` zcj=eA^vhkk{k!xZ?|*s!YaA*<#~1485si>M8u8^DU%v6>8xP-@hr*c8A@HgD>Z$wp z;EZ~@@Oc;TFvoc}@b2g1MlZ>^R!gFaIfr68lf6mY^tVO5SXF~@iK&K`LY3YtGNrDF zj{Ky<8^4P0ZuipZMAflsxEp-NL#$T9&e?{l#snCv9%o*Aa1sAMd)L+@H?o`mijjTU zeHf#P#k%bx4~c<;%|mP;=g}|@>bfyv*ayDsLxBAEkdmgmH7fN;-I})7avQKcJ(N^k zU0;zbk{=rry7ZKIJh}HlRQ40jO5VpE*RarWi2sByYcUTVzy7bWWG?5!TQQQxbG!56 z@Vo*O7jSicepZi;ZpTS@$9VXc87hfT)>Ls9KwRazT`7 zYWQ)+E^aN+-J%J@sW;Tg&c$h*>QctZ_d~Ye*TQhJ*`CT@07J6UrcKmFk{2xg|G1Qn zl3$y`aLq^_gJENmTJN2NOpNBv)eV_9llS(Dag?E$EPOJMg-$54=_>Mt3|2u7K4znw ztR`z^E4R>4#s@czpB`syX~ea=Vo`2GCpiabJ~!hRO&Pgj4NrXL>O-S|tr5*W)nY^+ zIJo4vqsv?;CDSMN=wrG2gBx_+0blf~buWK9E&9bFX_i6wiglwHZg}Y)@J)<;r?}0g z5H`6@u89?k;WH2INL!l{m992REMCMEu;i+1(Jp~YGA`H6gvx^| zym_3l3)nZiix)C*cCvHelm`3K7AZK4GtG*cx%!aaw6*WrV&oi2-Y@#6XXWJA+SVd~c`t&LzTrQ=0FZf$kKYK7!LWNHRI4&N0)^ zx~go^_-JKLRf(##cSZUN)^Id7`h?TU&f|<-?NCnB4m#0UM1ttmokCPNb4ogo$g`&F z1&9QP(;)mva^#dPq)%(rYQ4C7b@%d=CG-(e^=0*C{95QxehXvYDQ*pS5mL@sZE~;~ zb5v}W)>v!sRR;9nXfzsXNg%7$60-+0W&JtM*p^y#=8$wY8{hX@mD3X}DYUf~>)FW8 zMaR5u=A3#`o2`cf(Vs`epeLOaXKI`eKM!kOivBc3!h^mgue;WZvZ>!jWnjax?$3Aq zuznd0Xt>SmQ3sPwA4+km5M|#BQcj4B`SsYg@O@9mPIsEkcwmn+b{Q9Jcl{zh*iLeO zujzYKIGRN7arIu)J}kcC=&HpIJCeLa=iZDVmS5YN3%6s6?FPCB3@dMwu|R(n*|oM! z+&O@31Snodu$;#mRo0<&shA)fnGRujX!s&4f0}vS$)3UO&^Q3WHWJ)sF20BDS-0R4 z6G7lKA9o~q(20HUWgKZ8H)MW@4K5t*F1$<$U-iJ9LL?PqN+3LtrXy{Z5;?uzB($6X zq;p`Vhaim&^gCgybec@+DD_f^{O#l0lFPfh7av3Y{OQ^Kw5>R(nkM#kva@(`y`HmV zRy#Azo1MA%kU6n+29vVZEI9?f-_K#pVIr4vm`s($zn4G3fyRQ z^j_ISI?E@m5sZk&=wyKFd?J*B)=K)l(a}|Mh=n$`PPti*Gqz>$rqT4glbwfcU*ij$ zWp30oDSqba18%oYc~VL*3ay^RN6yg?-A7Fh5t3=}BwZD~d7^Rb6kSrHa#_{jjf*k6 zgq4dvYArd++$fTBn=$Vcw3~JBJcQq$I&8e;^r*cT)HlUTpuRN|X!!auj6JRbRdIq#xXCcupH&Z^a+W$N( z+C!e}8VBx_+i$r1NgU4YN4ZmEmO{!C98_{JvF4&(M9ujTkhv3AklKO=FS1NF=bVhC zGe-=q zf`bQCrYDtg>b?)fG0p#ARChR<_BG_!vigE+AG=ckRV|7sIU`ek)hv9mI%Egd)&jy; zuCdDzxVSWES3^efM5|kzu>4=Iet(t=t7lkIJ5rxx{hM*wTtRk(c;-z*PW8~BYpEK0O zRW+An^sHlc5Ne3UFlCo*^x>Sj`mp%7&gfC({4P1x9r;<^>Bu2$sNTrCL$x&=*Xki% zb@c8;@}68_yBtNxMZsXviL$4Xo5E>XKT1A z1&27X8gi~yL`ydCql{lyTPl0+oll+6pfJ%u_xgOd(mz2na1X+p?rub~YbC2IOM(lO0V5@W2LEax|3hTw< zf|Ub?H)kFa^i5u?To**d{}Svd*9>&00L5s4P#9G75WPnkbj}1>RU^~r0=-d%N8zih z(YjEIR?=p?Q6jCI$sM1^=fIQ#T0*PE$IR6Sd~VKOq})vMP&@iQU7eezk&m7NR~`R+ zXq=vIaoep4Qg$*gJKcT2lT|<# zeV~5>J+}mDBpK{gk%{koP2|^RS){k20vYyXMkusqv9-|W3D+<0yJ-pUp8fIh!5bT<9&P!W1Q2GfXb5`JE; zz2<^#;npMEDL{oV$pN)Vw+U!_f6daWQEMHYcfqPk+LWNP`p}~Kn(iD(zB$!Gtt9b75%(cayi12`U;X>>+HrXF?y9q~TaR+5u&g>6XPKg~ z3ecs7JIBZa>87YKrgGGw5i4U)VdZHho};0<+%85Ef%-VWQ3R()l zN;D9yK!q^}fuN)fZZYA>)e%{Lz96gt9z7%iDxsWS+#%}FOk(TwBS5i;+v`QQufH5= z1va;IAMS*Q$*RL4Y~wf24>vn4+I(?o?$IrVwNvz=l}-dC?ZmxXkQ9@W8NiWJ3O=Ls zfpnNkGH8W~^qL0lVO$pHL);+o_FA}Y-c(I33$^}j@L+K4B&k!D$K%_kd;4%aF&JYV zsjNLcQFZ)Y|AYM154q;4dF`(c9(#8(q+flAGH)Jz+@|+GS8V%(eJ{&H@G}F!;q;Qx_cFQqMSdufaq%q=pkZt<(odU~2mO5)6m8nU15Ls)PikG#LXB066ff$1& zZ!%jf1xY$2wYcTP=DdQ7wb544+B#zhlwZ_|_#BnqiL-X(QeZ71SMb@LGU=VU;kQmJ z_!pmxo$fo_5+>IeOOVbhh-4|FC>gy58%(KLL@<(*6-CrVMOmOLq`6U511?Tvy5DAo zJZWt>7Yf%OI&Yl^1=h@z2{+4*=IaCQwxQU*u9V>`405l)bVdZO*fqW+T@3_ntA_}j z9i^nxMhnSliXv7f|&6F^c`J~{8CHBx|(C0d(pg(S4qT=*8EaaNRskwiJjYF8WuU03)cXZWn23@NyI z`!|QxxsMN$~aSl&YqlO?PXXT!TI}_|NZhmZ=WSnZtvc{|6@guMTaXZYOluW=E+oA zFXEGFb>cp(`bWC)K3+-w>h9lvzI*k^oi5glUvl=YpDxZWr_Jmi&cg^iUccJgHt+Z?UgEovt*SCidJj1v{bW+l^Yi-p@MS~3S?NE zVssV0q&lys8VDPhCdg`3UMsz}HtoC~zNj9?VB33aA?#sB&JtU&QM_`J%Cj{O%vTuY zPLZjMPcmy@UQu7Ys1}^m!jKY_8G@z-Zj?0^y~|!=$srW9W$|%oe=2h!=e!i>Tavbr zIgtI*fGz6t%@JG3+&cNl`Ix*yN{vWnYG_%O15; zh(uvaLY<`s1qDMY$qG_r0VGQ6uvBBog$o#MF{IIKBGndPaTfbUDS4|k)|I%}I`c*W zEV2n7YXvBK2HW0^>AjdyaO`2%FVVX^zIS=#{pxSU-r7lQk3X>E+4ZAC&O>1C37R4P zJUhiXS$x5Xz?}Rc5xk*DqeP8lVJAd^Mr5y?waJn%EN!tl8Yk)+nzkzv5WuXZ zJ-r(4o98(>vBue*QD^gAgqOzlH)(bJH3qp;U?$~qH8EPKWVaWM+&IG&<7^R3?C*@$ z$jOPJqARrqPfFR##i_nmQ%itZ+uK+SBuSS3F!%r3gnHaMIY@CddJ#4kvpBrC?~&GQ z;PlnVC9W9OPVon%K!S2LxXR9QFebZXA&KCDP#6@%l2um1l6CA8rXszGbuqQe6J!Lh ztU$dQj$3B{8SNL52tG`F8>O9YWlGNEw+^TnJ?|3aerq4$iBUfK`OWxY|C0Xu?Ym6N zn4b0e!G-U?ynDA`hxqilUmZ?&4)Ql{O%=Gk%UVVx^nL*~t*C2;>i z|M6#d_od7YN!&%O1 zj=>u63N5z;pOaG@OY$@{E2J>(Q}6B^&pYj;bR?prZ?^^M^lLG*?X*r5BX63h3oD%{YCTvx17lnn;TW zxbKpgTVdP=%~_sE;}oGpoSAW!1dhLG%XZbQ94S_5=vKzyIB(=4Q+(_CL0A}jII!RjPVClBBgIG&@ z#QZ%acM#`o##%yQo5P_ObV@V7g|}!NP3aj)>$IUo?yQ!QzW(`-PJ5g;1R5of1<%Yo ztqN}?Z#=YZNZqa#>Lm>U+_DKlPOfdYZ0!ZLHna~Ypno*9t5^p?TIGs+t`jhHn-;Yf zB#_ZE<6XnjZZN;pB?5gA$y3Su(Yen}lVi!Y)KWOQdz-ALm!yS33y3f-40&X2ipfEe zb}F*4NW0K(Zf5t?u0qSu0(Jt?&|IDQRWQ0fM&8G)NL~=+T-6OUtg!D{zn$ zmNqupIeh!bvzMbUk^6Zgw{;ij&Pvh;@{COSPQf&-%U)6t&@|tb_g~#+EF2{1skC*` zZ4EEDGs}oRN@vLeUOHJ2q(*mYayZnO=D`A^!RC?T3$ZCWLtIewYw#!5=2X4-=v#_``(w zVM6>cAsUiDOo;E*g!uFAr?;O&pXJuJBbu|*{2G3|`QyzWZ+@R|uG>{YI=7>=PH3kg zp8lM*HJI~Zp8j6vLp_~LqYjRqog`_GloYuKl~kE5l{^mGx2vz1WT@n>M8p3tT>hPt z{(ttaZAXq9$^MFAzt|7mLk1Z^asWLT0t`KE1N*dqAuM&t=$6NS6!oZUVKqxwcne)b@KQ%>@I8JT(feYnWxH zi9OKXrFP)@!zs_eEYCUUY0vmEIgW#ti>+G;F7H~$misL1hqp%_@Du<0%~P9q-(l5v z4{PeHXSco?M^Bo~GNTyyyyjfRfBZUpVDZD??@#9xNDct>K)dc)Mf2N%5iNKMRA0Rl z{mmK$uLFk$965WJI25-KO$`q*>Ezih&NfCJ6g&BKJCn z%>_dzzp8H1)O;Wgew^u#Q3g6VScTq&;{2LxtpZVhYJ02oMLa&eVLbNKskwt`xN;~P z8oN|QG{tHRWTJ*{ z2q$#ilI`8L9q8bwAhnX+(%SY5J-1pP7H)YCD>z%Y5AU_$b4cx-P*e{iFn$0EAC+7Iyd+_Of zexw4a6!o8!4fJqiZ?5Gv^dCaD+D?k6?-$8m9ligRkro3|wv`E;D&asClqm)$T=1r3 zh(RcoO>i7013$N*iWZbzKVSMZn{#rHo2v#=6=q{h>~(4Ci9Y`kBd+i;$Swl&N{}fd z&GaR1>|wv}rrB+qWq)P3g^+DF1w3QUmJq!|aM=|bvs4@>Ln(^gOf1#|+Mq%NWdw}? zXX%A);E29ye@n%UfesFky9m>3A*a<6ko&Ff6#w>1{r_&jn>&ULejWJbO41QF>EL_~ z*wAT{oTgO0OiIeQ7)?mJs-VWCrEnz(o%)4nPP4hlYS+)%YMS4cHapP80eKf=z-!|< z>H2HZwpveEZtk(fZOEF5EG>y&5o{=#AIKmhD(!uAB9hcTnizf2K?f7q)AZ7jND869 zsPkzyTgdwL`Jee?Zt~He|LH%D9OCxx^4O_{6_~bP{*KSb^#Qih|XkQ zKchhK!LgS`ud+z?7lmk=uZrP|rsLX0QjK`a^Uh6we|mU-x0BK-AHG4Ydo~)tqVcu< zs>Bo$|BOW?qsav$Q!GjpL}#;f1q=yI6kHsTYdX#5B2c?(xukt=ItneYU$S(dha*K{ zE#?wf-JdJpYJL8=j|!%o9mL`8d`_QhWe;kd4M?c$#m-u%dAF^k-_Sj5$nVxeCj?$O zkzM2jn7lV+t=0UDvYX6*nG~%N1!C|u+o=l0q~gu1ApZ(J1S5a9?aC-~H9PDYM#SZf zqpJ@$OuzbatM%|o*F5Fw7#v>Q{XDf_cE!D692*3?n?czCKd(?EI$csm8#LC17ZU2s zt1=pJ;6#$qq?95VUO-6A;tt;;7t?gvhtGZir>6P3_*{#!q-(0wM0}1FQ=D41aFR?* zQ%&(ot(L_~OV-yEYw@R^mCbf_2@(cvQoaO^&K;X48$>WUV+z zbaAAtVW-LYEOIV6t0J@H@Wm+%#Zaspa4yXvcfaah;S$zoEsmCQP7V)f7JcOY6q1cb zvhV9E)|RuiqKXM78IL(7Kn+<69U)jFolu$rrBZ80WTlGMUU*5f*vZ$zZcb!zK;51` zV)?%+P$8~@-D<2Yvb0FbW2^efy%BijU^Xyzz-S>!Oz4855`_bi5M|6xma6j{wD&^m z;2D-N8J)A{);_9PU|eM%VHQ#A2-V#JDK+RO%laCmu0{3&<@&XPTCFcf%x6`>>_;UbF$g3E*I6P!k$3@2vShh+2UVBmn~(Xsb15nS`%0 zPdXzvoyA4{?emA6^7F&n&%S*9^21?D=WZihPs{(moba zl1DZ9DF=G{Yvr*D(|LYjs~FR39aG-x_BQj;JwEXatimyJ32YjikpPZE{!)a&kVBBJ zi0Fb0#;Rg-aZW>Z;SG)|t3UW??PLp9Z6cZ|Y@kH?~Q0%_>Xp zA6{;74e;&c3>k#e0zO8(i~AB6r$OA7oBdtf-)1>_Sokh`aw!!?SP3M8^~BKLE!?7CAP_luZXgGES*BT9ic8%nAee#yvLG#G} zWa(`vKQP2YPkZT!$Ver#{y$j1vOf3ptlANy)cKE6aH9q9qB!QHYc@m=5dW^B4K zhcYBns=}%{K{RB6lykxlXSdwtrpidS|RiP2CkWztNfhzs)(H5VyAXV(Fe2D*ix=9&B zyIFLgMZvkA=$aWhjeT)qdU%p$vmn8NNbqzL8a%#p!x`k9PuYOfWd>7;n3ReMgeqVK zfG!+mll6_OomFxquo%hibqNB6q*TCtw1_xO?4NpRK?Ju zU7of5{?0#t`bYkF4JoO=s!`K^W$UmOfl#swJUpPbdHC( zn>V}e2EDZyf!dDbAiZ3ebz8I-cWVy4Z?$`Ew)5R^l`?DX+%Oj>=9)EtCFqoT` z@;}imY<8%tIHJA8n4~6;!3iy5=1{@s>?vu>7*-fv)NGH6@rd5)Qqv6P6->I>4$Tp5 zUDOV(Mfd{_v!`bcnl=RY*>CQBhYeeQjqh6-Y|BFMX~HM2l{xq)nuW~}bq$du4`8%M zn^IM8mohqMl#jtj0wZ`_+LnkGGXeWWP9!!}uPE`Z?q-G7q7MS$WSxbJieF=CLQ9re zSaKK}4!co;W_D_17ZL>D;}?TqQqm68gQ@m^W;9 zu&vk!C>E_y%7&1NcLj6`QlW4n*9<}LMXgWk6;P~&msCm4%<=-B9=`l5eEIs}>%Xoz z6}T5IMy*A|v(`<|4mdQdk{TLJZNhtYfhl zO>-)D6YuW3yVK2-bWDjikz_@j6~P8k%K!xS0|F06K`coHYau(yfxTu^6TNgPL79~o zc&(c-Gop8odpTn^c*Yup{2;E;G*)YI>y#inRS~F_+`spyk7+HkcO^ch)3(;s8F1!9w`1v6Y2wpQ<`7fwdT$;6pBEZd=V$)9 zU1+$QMSrS%yg;?p@9>T{iAU3Ae4m?@==qoCultJlUN@8th&?4QDcK^duo$J1+GS~lPPqi7Yw3)rWAczq z8dpCV_`VMz~Q}Cs>*@>#prnH6D~+hTWw4m zK)Z)Z(vsKwEc+B4ad^poXpp`*n>_$Wrcv=5F_>bD62UjD_L63?MXz2dFGFM{Xs*Ri z1BWB`G=8k~w-*|Tr-kcp$6)TM_4|F0SNYTL)KM&9)gz@f2f3lQTP3Ct^3s_U`>zhA z%HBu8kXDrNF)&s>LHxhfs2!vZ~{V!hBo zTOkYf&ovR7G3x5%umQ@Nob|<6%khMD!hq0F3}VQhKn74*I?5bdBv1yT2YlrUnn-#k z^K~(Mv=(O#jG11K#7Oy#7}AW*g1?kW}2^`NWbFPH`I3{5#Udi%40AggJHDi z(wZ27R7W~tfjWozKcD-Z4>aCO~7b9 zL>aKwnJvO1uh=>lROp2XNFf%|MWWX_XIVtdj9>~glT_lTk6-%6Y(8ds@ShJJ{QrIU`o|Byet!6`x#{cnPF(fNp~KaMsMSc`>kJ>h1+1TU1y{}# z=6)M*@%n!IdgI;j-Hp(*tjB&Phm@jq?5_)Ji{mg{OBWC`NyrLqv9&I`P(GszBF>7? z7m#eHnPuh|L-%S`bkR=TFl;I)9x5g6p7MvTRMNg&%3d((sGUyxa!b8^yc_6YsfGRS zBi{huEeNAZk);Hyq$A6amzk>6dl48=cvXUt$N_-!I*RCdDNi+PYUcUCvi?2HDlEGs z{MX{iNvlT+gWu@je|)!)b9{Q|b^ZI5ZeX(pJr!FZXkS8xY_{WFm#1A!p?(fqL#h0(Ur(qD;Y)QThbh&%&jf_#C6b;KY9~)v7!~)O* z?cUFNAPzVE-~a2M|CPrE`XEK~dK}z>+gfZbwia89t;N=2-4?wKde-#%IxTVk^ZCQ4 z&tprRcvNI90T`)-wQhJrT08=3$8NVY0tw9Uxi^m%U5y}wA|;g2!(uDk6dYJ-IM&ca z#^NwXrnUvGkjDtMbkA_TnW{OV}zzHM?M1T)S}TA#s{pN6`H#>Ajl32XEsf(BObM~95K~Y z%h8)thCkRy=jyx}l7o96O=F=DoiU1pd@5nu+H$WvWtt~i5675IV|2t%8pB8%p7CLoho&*l z16m>LbOV9C(AY{_U3Ouye%lusOCl!)^0&w%8m>>(G-jYmMhQRDil_QQTP*GI_`+o3v| z@y2W|kWElc(PXo9q34>@sd?(ip|!&*-n+*2Tj4JnYwEBYu9DF-=5N_z6(r{;1TQ>u z!b+^)V)NXO!cPhg{A$@GSNBXt4u5uyt7&26Da+rU8EwlQlKp@7uC2#yBs>2VW9Mb^ z&`zDY9|w8Z?Z9vlWDH~;7sjHlv&J;qgSLCH$*<2TQldynlthZ9ZqKp@V_Uowi)_`$ zbNSA9=o?H!a{7*rd!OyWo;<7j&@I^qaOq&`hK~30#a&KocHw`X14( zs*^90axe{ymfn5@GUJKx_FzeKr6*#9;`FjSGje&GF-5-;f%Nt}^E8AoG^R1!mdA4D zU;;XN?J;`R!0l<6qk|QPt1P0C8ohxSvS689 z6q^7uxiiJX^cYUmm^7D}RcF$idA!T=$x}vpDv)V_#qS65A(@16vwvieZN})tW1pHd zYR))du#qb@`u!Z7(Px1irdYZvtGgp<8QJnW^(IsM@$RQhZ<0%Dwx%VK%FjsNpt+kv zM$40-PW|Tj2 z$XC1mQg6GP+kyao+TPg`i1ttU+*b6ggPw~Q{x_Gol3Un}F;xJdIcco@l|tSoX@Kq$ z#-+kW2I+cW);85n#JdM4Oe5RfS`nc9T#jcieh(|QRImr*&w7#4-%zH(5ZQBfR zygq7hMn}OLZ5TBy=xIxN!mb8raAIFnaKD(ScjomVa_b4Nh*1YIxKz>!o1M+*q<30J z8_42d4tdhn3GP!AQ7}X99R?YSVdAr%iWn`!_{-BT?(s{R>;tW^DTL!@*rQG!TolbY z1QIS9_AzHrQa7g;>k0C4WgyWf@=1dew(oXzP)E3XD_>GW{FkS5Ma0MBGrJ`_xZV=x z%4@r&6^rU%Q4&T&jMf-Tk%y9y*0e}zai&}XOUlHo%DUCYCy;_A=VkIR-Flf)blnVc zR9a=6R@0m_+87vH*970@F=+0*XV(XN041)@ROavS{J=%4=e zprziAy$a>sp-TWrm3gfwPzMFPQ65p4U_oI}N^;G-)+%VO7)sAmlEwh-*UH<>b7D%H z=@!XCC@?)fyg>ooIx>t|z{2U9i2@fHE?1y{5NcACxwo!hXw)|=DeSGbL9?ylq6>?n zK&5%DC{PClR6=0c*ibl7CZm#4BqPZgQJ(8$6d42BW+Ni`EZ~D@B66|@Ci^9KU!VQg zZ=b(C&vZY;K5gw zPJ8*876-k-OjnGkp&)Zis*!0xZ+KKP83(G+zL7-;CdL@Fkqoq$juEwD z7vmbo%_*bMA#np8rH+E*+#u*Efw_O)H4cQ3=JYjAv~t;V!%Gyf^u#W0t?5tO{E5w< zz}mmyQ`2a2b87?A8J;WYVBf$WVC zbh1tT4ra$JCasM?9}rZc1g(XBNQsY-d%>=4UEPT4itXC}|wV2$wZ zH4FST$9NaNuN9T*pwi;Xxy@y+RnKh(nW~`MoHUL?8w!jiBtko01vWBD$0V#xSUxGJ zJ2>M43dxN{b<58p)R$X}>o&7napW57Mnt6`geauUC=gD-rosKd%)v>!4M5X6G_38Sg1ij!77t=E|uesNsC3ePoOYG$Gq0tcWhSm$AEm9@b0<*&qnl z%osK<20AiI2O+iD#$1?jd8WY`!%#B+bhx%Q+3i8o&!QOKm;(=IY=EsNv=bNaPG2qn ze$!d65K;$1fH1>Gksa#N{m_!zCWPTRr$k0aP(>UCQi{@nPeOYLiMF2TrPf@g7KBL9 z7bVLMA%t(N5c*3fsb=$x$EAt-Ctec*0(BauW*0&oTWv=h7aU)euc8pD);+B7QU_iP zFtSRx)=Eal$n=N_ja8gGZ#j6u&`UJl7nv}Z(PkYi$P=yJo69V#fibH#y)j0%kYbAD z;%r2z%^&8>oD#7fb8N0uj<~=3=?|iTvA~_I@KUL2iYXPMXDVm~JTenfbXrCYR`cMa z#_S`qh{=(Iq=GFXs@_iyp|olB{QTHFPWSNUm!~h!zrFeV_$@t!FOR>cr?0c3D&u;R z%_;S4|H`ABg_E~`&?ZqwrK;n)9tn3Wl4bAd!|LbC#~ zNQ2JBk=pEMsZOYy4$kPm`Fk#fXkOYML|0AFD>C@cy*+Qc^FQ>;sTZq)sx-3|5Gp0N zjg($ThbdxXN-*gIPbzqaCUI%C7F?&S45rcoDhYuc?c@l_`=`$-riZ)xCzro{eY1Vs z)4>2I*D!3spsj>Ju8QFFCA?CG-Zc|np`=nBr=qty3LR4>KPD;g$p>Xsk{LpDplq_3 zi|D`3PQ_BEpb*?-DEayM|DJ#S{3d*P{_WxO<1aJVd3L3} zG*|&52gJeoFbSB}Gb&Ak2w-Lx5b)a6-_p=*84laW zy+G!c#Buj?k-_bxa6cR*MRt6!uK0RE^2yC-ykbTj%n+qdoFGUDWQfF=yzwS_bb(pH zw9Et`Ip`=v@G&};MH0%nFgeb8wLt=NiLanq&`_u>({#IYL8CVF)tWPxm|%|dL?_{H zTTe(Y-#eK2B0n)uWn<(fx3I!Wt@KR}R*)ML61OVIteg(QIw2ee@_1r!KB7z9$)Gi& z$U5hw&(KD0mk}Os!`YltA8cxKWTj?jICK}ADBCPa$NrMT_xj$ERgI6Sb6MAarEE=+ z@|Vbs4;h$uSr|b!gta*bNA`ba8FjK!3Sqr$l>c3FX0loFA4R9`X=X7Emow{_L2Ooe zQLDSGj_}wTugzfvK6Gh^ft(49RH*EzZV7XMvCXIqD4h=T&BqaCJqO+I+`8g>v!K2fY10VmDzJ1y1 z{5NWub7CLktyY_pYJ*O7nyWR_LLY~UlG{MSE(*|BqTQ{;-N6I>+9g$Tm!8*(0F^?Y zLaG2Ll2l}M*q|UG2KwIwkBLAaY93K|U_v<~q{zm3ou=#d|KoFPdk4R9-`;$Ee#p;H z(?MXabFnSJ6G|ZCYHAHmhXK_^a@Cm#>ktFpZ|Du%Mi{hu-tQO>y-!Uc?9V&9UJaG2 z>Db}NUZ0IQ*Vw6GE|YutPVRHXs7f)BQvT+JL~X%12_ShBbd^aujx2eDg}3Haa#9%v z;H&{{CO4w3CO$WpCchYNRj0QKGs$@Q!Tg&$8NxiPsWuYH+zk9;0(7tS##U&m15F`m zog7aH+@#<`P-syHX&C2LMdwWnj|Dun8$dAxu|OtFaeo5sVi4O=HIu(1#Z$2AMF&zN6aB4P1) ztq4$w1e3sl)h78EgGHY>v*ZQw;3S||DrxeZgtFNpf?>iXg`S1U2(VD2*fYV+`Y=#k zg;v=qI@V2Q1U|jnlH%J}>wZdPCnG`zf7{mNAM`d{xS!(bFwOUwjM=h zpuEljeKZD~F)F9h=PY=wVj{0ZE7Uwo@20m{ywVX-bNdf11{t-PxWL63>*(4lM zc&#>mHQ+!lM{=61gKU(^UXwlHG~}!~NSm9zS$k=ukI5NAjwEz8Y;pwk&kw(*Em8kh z_c$YQGdD=F6gbqT=#o!(hC;LFo`CLI=7X1WuSZSy&h2V!$)eu`7Y~Qn7hf!c{ChL< z(J>bAP+q}Jtk6=)Ndc=JA%}4>pw3)d&>o7IeR7n(1o6d1zfUdw+je31=tge;M#w)x*I zwIn^cOU}}$QJd>3*`(M8y-5!<6ZcyZ#UXRFIeu&KFA?Xw=JM;puCuVwFc!1-i3|Z0 z+yl#!r6^Hx<8;cAd9FcdN&iqucu2fa5q%k6n39vl%eqC~{*bAIMyku2=^b0twdtkY z=t+7;$FxY7WKC_y-xlsK6pgt3q*nx~lt9Jo1*i2DG|SGAIbc(=o@EBYdtneww4N*k zAj?47=v`9G;ACyqYV~>ZBbv)V%4KpYS9Mg^Q}j%lWTM=p5s%ff@jYthK5uik8qFmF zsPDE{9Ib0Rd4Yv8u;0-QuSiyj45mvz9BYlz(U~Zt7lI|1ea;Tat0@u*WtKdrz#$t| zdi`% zqZ2MlPllUP)+L*{c0pO5v-E;I$YizE(R0th1s(;zbz)lUxvF$a!C`HJEH47&lRQK5 z=^(p148Lr{t;JwDvgd6#NKd&tgbWog-_RoQ4Evdu?^^)O`xbCE=D`pk;Z+%1tM| zB1olHV3>p#j)$CdvPothJ&>i4xy>!V_8eD^UPbz=F*>1}4&EBjS3wd^K4ja%u3W zPKiZ(rj}<;IOt4?+=Ph8jmrLB=WVS3REb{eH4lPp7?0c|N^oSVhMaOJ{ z5p|>CRhCV8z3>gJ$WqBUVupnnW%fD)xgO3VfK`r+9GRFPL}5w-cfPQ9F#t$VQK-rC zlnZnMVl(}s#XzMtJGXF=ruap5yZYVV-9wYvX2;@7ja!Uwya2+4r?VP^D&M z(sH3ds;D$`F%Zr~&M-wIn6jvi^x2c^B|-@3a~7T;i8jtGVJ?Qv-`&G3%LXp%Ay^TE zYEyYpsX09i`ytNvU48Efm4G@z1(#iVUC5PkEsk??&x6i9d0M|@DkuiYXqTNL?}gkF zW)i3*A|xMyah6KA<6DyPXA3+owt{QZYUvBWrjYUP-`Sy#84i-9yY0Gfwwto^2fInh z@;>1M+J;-3PaEavtzF;t&ghOjI9Uu%mi?=on90Wq6McK;(cIq!co(|=mgrox{wkLG zRjd$SDG(K< z{q-Q2wFz4rVKvukk3iGg36j~~zE9o1djQad%>MSfdw5R!7rWa~nBNWp-|VeMX1L|Z zkaNkc9qwgJSP7h2qfn#bIHdJ82N))pv{G>+Bn~t1Wk09;U<|ARWI$u>?+2p{9VGxc z&A|+HeOm6d_<#1Utw)YqIsX+Qe$hd)3l_;@6;E&;VgUj25c?r70SqDF)fS>i##(ZK z{Q4AUc2?8VJu}@i-Me#IE6dW3mfO5Ezq*iLRgv??d1kLrMtj&mc>~%aI%Jj)y>BBc z3)Cj+*;!@!4O*odw(?th_NL#!GNV!6DRyX}zev&mS>BOBX@V_{;6Mu?Vx?JrTvlqJ z4`+;#emvWjpJkvAnP8g=y2kPL{RW1#_lS)wVv)PIAlnAA$)t&s_rS`y-m6sF$zJpF zk~ib^u0Kj`WsdS9SPf>77b<5i0!~g9T_KY+-tkN@fc`fEXm7I zWMvoWp-0Gqlk7YL*13TPpg@M?g*bA~(a>VFLT#*M#i+d=8hC~^9vrY!PUb{3FjcFS zK_&QMBmE6*4M8T!_q0)(K;gif2O|%+@?v?j*G&(n@*+rPAW)Xk`c~0$poJybAFW~( zsy2{*i?&oG5(8a(JqSZB9Lq3`48$GQS$k|DizcfreMon@OG@(h^1e`{Dhikcho;w@p86+*Bryw1p)@L>bG zXA+#7wtZx(y&=f=1>v%{wP2Z??G1tMscjXl6^XQwW#~6>*x0Hf4`qO=zYKJ59m-Y^ zfXO3J4>VAs5k#mXARAEtt-+xFeNs%nKYaN7aHyEnJ$c#NC^Eq*#GYUi^ooiwO)iOk z;J(y))ljb*YQM#+hU&I>)llDBylSY&2Co`wP(%Is;g1hrHnf^UHPv}Vom~O1A6`E! z{NePj-4bsOcWjrs)+NgA4i)~X+vW&4?i3-ePl98JvG^?dH*2M05#dk8ry$ZUAc;r{ zvC8*qPR3KJTnw8WQa@$jr4g7%G6wexz#e0|HG{M%0Wb0gMHY|vxgE8wM=Ko1X6w_G z4fPArAITH0-}m$DrV}|7Hr0W~#2cQ?{BUqPHJBLuSx0v;o>P3cxj1f}HFzn^8H}8w z%7&v@VzO;b0?d>&xT>Oa^2t`ELK5pZgDA`FvMSgop3aInu?&vl;Sh7p&1>9JarDHT z)_sot3DEVTjxGe9r+zx{nJ_mt#P>xYcg^5VA?{!)`$W!1WVjaLrmQ;n{`=17HN)47 zBN{kCcC|S2Eg~plD78>-*>=5)I?ub;#3USbe@zl~$v0|kwZ*dMK=j`X*~Q7_raDR|%D*jJ2612GujlC07$ zaBTI$6G8+rT(egxW#?@LFK)JWSvObPgQ0%t|E!pFy(s$=kfg_~MF2q9uO@LS5&m2n zRq0-=#{nXL+H5_&O%vFX=Jc|c(l)v1Q?}3+`k=OdZEH?}e*ah4&m3xI$HJVW+yMxB zK_jQo|DCVXiX~0t601*&yf0ocrecG*&YBI0H4LKflgOT0LH;RV5>vrvsJ>sMd{#+g zR3EuVMU8%}s-qFa<#1Cx=DwGEnW!;_`)S#h(f(uYk$qi?fMMFsp zuSlPILK+I&O)uOFp1jvUlXJW)P7 zrk$4Y$9tUOG_Q6IRxBf2gvR5A=&abgBnEBpDd&)^Yt`#Z5%)XU$X+X(5V*+y$>jl^ zIxB&spBnFkkibVFVaPIRoO1SlROe3>65jDSWh|SKH=B|6H{vwnR^maG8%~1F1k+sJ|_f~pu0Fz|IN|#{GB0{z5)jsBy>8qsb zjnO5OHrYj6vt}_Kiqeow_D&U(iq06*!XiSCu?1$35HJ_Z42TY+4v(LiZ@zfilaHUN zv;BFwJLprr?>0YQbfEtCF|QSadA15<^MZMx(%3?9o{PUWSUK$0s)e0A)_U=(V5@*v$d^%<6rzeqlotk;c{W_lMJzJ}0~kF~NNcRQ zxN`x=8i)HOr#dIHkB_S!w@SK zeQE_9f~sj@N+%oyer_5r1HRcPWc^CyJ(YIZHOTnu%d4(xUSf1B238P{PaEW*3ya~X zd`&j{;A(W1b7G1nB6^=ZOOM6G!%RI-&;py^3_P#`RdU@E}5BC9Y<+?8KEcv5Gxxe98>Z;QutKbTR&c*)H#tpDxUf89$gzLCs zkK#p^W5u$=p@&>eiX3dpE?X)!R)d+fF`hsduY)n-SLkG{FV2U|#x1Pe&6JC1*g6!x zrN%=-HHA0|voYG3269ClWwf2OJgtfaQ{N^2BXogP|@FW zFxt&5+lpmTU@*y0306!Vor?+-D0v-Om#oNQRVdz(Ch?bia0yNJ3Kvf^Wv5)eTqBH* zAJk4hKc#-9>qBz~++Ga!jvD4VH}VUd2At~kvLlV#p2v#eT5UAU+E&L#oDzoQL%`Y& zA=$>53%a5$>%_TQ6uZK-RE!SB!1ZJa;^6}gGb&bQ7M#w-sI%4$1k!bJ`s2et&t5(F z6rN`4Z^io_oraVMtkH(Fv0@n~g_KMz;+d!FEMo9g%WfAJJrcztMs`>_fP|lI`_Dyu z1LOg&`H7q=dm`N}nv!H+ieE~6d%@wZ7gZ!X@OmG^T#e5;qG=h*`oj&^-rRK~5(XvGM&%p`tW71NLv z*IX=W6GVHW_FC&qs$~#1%J_szLykU+;|B{Pm?mUDx(>l}QS88IJ|A7RG(GgGhl|*& zFEqXtqsu7+&PNNZVkw0KA!Jj70~M-g4#Bsh6(d$@Z~-;>$QpSR1?@k+{@>UC{_rM! z{`&jJ51)P=2P`{<5q=f0W=kwaG{P+1nsnWJhR35l+oLHRL=WwMR*!DgqhGZnF6}(2 z?fu8Ub$@32{HG?HF5f)Qq8BugIU2Osy&g zgpz8?HiPA0k_jOTq}Zp0F%I4xJye|=<#Q3zKzTYJJa$>gao@hZrGV(GMz>;YktodA z0w=7fNfm)@vaX;?Hlo8C(HAaR3;Lqi=rM>Po++uNQwhAJs{VbO=@J8pmV)zF~P?Yt#*c7U$*;ZN-Y`_wIPGc;UMJACVl5?lW)w(9 z5DQ)b(d7rj@bc{YlXtk$_(qCJM`#**6|qjt8d-QTX*u{PcNExUfhU-(-R zGw{-e*nuw;I3+gRxDv4 zg%WG7R@_&CX(ozTD6>ysTNrLpiduzMO;w8k3Q!}7S-o_Akb%6I%Sf2HXj`bwGb#O1 zSh!KGKj+w249c99t72kX?GQ}PEjk`87^h8*I#drCtJvi_<^;7mY-JSn(rW+N&XVUM zLRn=8qJ^%n*akZ`&m({S@ryk|-{tq2)Ji7-HL@0Xl~iWb8M;l z2^EGAp#TSm-WjV*Ax@@nDM2gCC34i>!Ki5ZD}<7Jt_!cZsAIYZfoXE0?1SL{TBwnhQqKO5nm3 zl%=9ltV9M?(os1i>mj(MLp$7aony{LO+&Qj(gZI~)Eu2qdmX&gXPNGbp`Ucowb=@` z#zILTq+F^PZA>kDi4)XkS4feDtg~swv2}vrZ=)#owa7ot*qLfrpgUXAiwy*WR@hE|6=`an(` z9|Z{$Y3EBz2Z#X{zXKVWQt4_LH5c1YjJbh~rURECZg0n$r$i*S?doyR*_N~B(M*E9 zE_OZdQs#9w{L^zM-i-VmOlZaUC4xe_qA!r7qv~r&#l>heu<<2bbG_9y=4D;;P7$BofNtaL;+7X^#nQ!Q8&pm%yWB!~ zC|6C)nKQ^22qt8!osHtk6k~iP^uAhOM&$**AknCQF3)8yJ|tK;n`ZQ1pGdpUl4W$B z?pD0#H7dm7Q7cs;6qBPe*~|W>VgrQ$LDdjS0FERP_68r9hIx`&-c{ofB?etYvT z4|o50TbGmrhisSaeMbYKG{fh0t{q@)69#oJcTa+`&wp?$~7F{g~5>2d2JIu!m_RK6E z<{}M>A#wh;aITtplXLstTG79GC$M68vbIneD~QHcj#*scq#1!jY=y(I=3J0~ld_3h zusS-exGd}sA6Kd~qjR=AYVADh96URf7?w?}(Cg~5Oc1v+;uQlhLMe{4PCgdVi4c%u zbtY;{wFZrx6}#Y7RmPQI0BUv!OOxu&Kwi;h5I7gd&xjxLtd(R&tC-s^Bs2RoR*cnB zNGr{{0{RUvg`-91Bk7E`Pyi&|QjKOvlygpwtO7T#K<+kd{PV-F;nU|fsE-1IH}CG= zy@{Vc7!~aY;`8j^jJ2QIc;=);D=^T2$r7h^tH|&=exDdGvc$?Md8TUbwTjtdkAbcLQ|+rdipyFxZ8F z_w@DqZyo$Y`t8HVEE`as|I1$EPhUTNJOR`{zHHxa4{3tnKMo$X{j~>b?Xc(RJvDHw z4JxY+zW@H@3*1fOzy1s#zm}l^sC#b#*ptErm;nN*x;JFS|3=qR(V+b5xxMOMQ48#I zs^zL_L25%yv9z5TvwYd1617wdGV~?ODl6SSMdv-!siy8*7mN zpS^4AmD@(rewpq(R=MVlr*g*^G`GWmU;E%HzwsH$2P>-!(!Ke~-W`ClgON-Uyhzyp>k9*OJ1~ z`3A2&ponI0(lv|^9ORA3n3ZZ%A^+Q~GvL$o;2n_$&|X6xlfdW6Z;HhrS z8lgiHc_QPIbw1umR)DhDO{gEKnYC{uE=&WjYYTZ|3PfbddqYjqaB>QuEhbq@(uCzf zM;mEFA_}x%07S-)iNLN=lRRzztKE{v7lAlh+O*fkO=0ld8~G!0L1s#BJ24R?_mU@*CGSxlbNoFMAS-AEujJ+EAsM=B zB(vyjlQA+MEK+U!3FRfTEEbW~=v(^Uvo;^kFF9)1|N8CIufL6JSS@#?RtiL3X~!FX zRk0^+URCU?ihWhFuPXLc#h$c!Rk4T9i4*(j%crkh{Af(i4%Xe^6}*1&`o-%P(_hR( zVIM#nL*Ub(*VDlDK7{qO`z~R`*jz>{#?HMt>oX+=&o0H{W!5}B%^BAdZLm@ zb0MI8$hAB>bFbZpwMV9PZe;s>iVquMZek42WkT;0f&cyIKlg#){#f&ew|)3`P$08? z{&!?aTuxE`Y#$?c?Bd1Y^Vjhp?RTT!9fP+h_LhRDvDx z%M5d)xFpEpaO7%3G~y8wa!iR(1GbZgkxLRsssfeBHKyom6-OcFVUfM#j6K2Sm*3-; zub;mDzD!5TSe76XL0qzYWrOw9j&Dcl9xC6n9*` zb-`&HV<2ZJR?&ARdlPHMOev(Ia`0r3lZMpJ3W3Ubcq;ZdW9PX0>vy@x>i$}G4)koi z*8HoFEb&JXu>&RTxIMmpP`C3{{f;+Tg4pV1(AyveOuYM;`I z+vhpx{y%#5jmnWowb+mx>YBhN=Kv}=&b1(s&n9Kl_9tD{IXi`s64@;3?Ec!8{l#eM zP=09IagN*0GY$_mOkBN}9~T|fYph%4ht-VET0W=#9-v`gwd#3B7Ncrarj@5*hT=qj zh9W(;$~3hlspyy*CdQbY;sQ>S3K)m9`{RtQ7#pP_9iwYIjfifmqV1PAeL5uIPh7o6 z#KmapH5yfkZl9x3yWqn~AcNOFp0?{@AM3a(7V{#b+$t{D%9M1RvH97Ox@%@;OzPTB z;<2%c+Q)Syx?yVgiL3W`yx9I4JdWj0I&1m;y>ckE&vO8~M=qtVlPw@d)RRuiyQGTY zR(K&rcGVaMK3AxwaRoC&W*>6&$wzXgBt0xHew?wjqn8V#DX@!Pda+Thhhf#liL3YM zxfm)mAjh@cI4qYI_i||6(%D9l!z%bn*0!@of*4m6+9F;b zXiU{Y2vxo^7R50HW~+j>&L&#GR=bWBGji&sYdeh)+bbvI!2$Ti!I7U97$&fIwYGcfqdKQ3S-oii*>G$ z11Bg2tut|Y#Gb)yw%Hz(yDb9-8R=ymGzQ7F2{E3AsSM8=?)|MpZmqpT^~9gL7~S7r zw=eT>jl;L@05*yvjs+|mbOlT{CQ(SGW>cNxK-dLm6h<)^t;?!J?F$r9ZL@b9R*2Co zBbc?bt~)!B$%C35;W;2`b;^rz!%SgkE%)lf_B+_-0a;A6o52)87PnU)`v? z4bmZdbHCqwey9CDbf4%7?X>}r-RRq+yg5spg=ai7>F?xbG8#M`+-|6PcSG!x{>X#9 z*$-|v)T`(Mud}>-mNzOKT?<+3WU|gVDy@Uh;$^n1r%{BVmv1m>sHrexV&=lyDHk3X zz#ch=-L;*Tj=T7j*Fc_Wc&>Wl@`H3-o8qLjI3-IcPPjuJbnDfPRHE7Cust>O$HmeEEt*oX!srR7_;#a2Aux@tBA){8D zC<#DFG-%A;BeW#qEx}JUgw|2j&c&n=Ir^$zDk8nm5dpW`E7q)As*<@>%azdD#3ik8y+GLoBkVzuvLz$fDymBK3TsOT7ep_K z`)5lku2AOcT&0pVIWdQ#+F-nyyaF9t<7K3#KWw6XDz3UtA0^F zlg0gHx22Ev*xg!B;@W&Z-vT|Z^E7?Scfa;!LJ#{ehuf}UF#h45X`?{rA{J=1E`i6E z>YlZxVs$K;qcX)Z+iYC5lw&X$Q!5|YYQf!mzZVyi?{CDrTAPj3Qk#$OaLr)f-%JC# z8{_^SBiktUOb`Rrkak(wtZF+ImV-u*#@NJ4R%k5AI_;{fCD@`Y`C3N`)*NSS#nUf( zBD2oj0Jt_K30nZ?u7rzW)}22jQFThl%!M4&MHWtYtkWW zLln4Vfv<;D!%Ky0hFMU%rgy{Y+T^H~OM8y8ToN%kWHETTpv}A?Y!qV|*oseyI%=0t z;Kq@lMvH4X*;ZcIC1#_WUJ@@ zaX7K1c>_Pb6(f6=lCJ;!mw$Z(J$~U}HVVAJWV7{^XDdLzoqLd`6?jG`>qki6KN zrdk^ls+3%ECeBxGx1G9vFv`}ZKoKaKv-NNms(j{z@>3tIRRx=y_3;?YJhku+x4ALK z`ho-BD0*|GN!X+N|I{*Uy-oNo9sc0c-SQ=Oy)_{F2Y7;w zg1IsjBkrRng##WqA$6%v)nJ!zeGC)jFswI=6W}n1<&8^B1&?8LK2SaduD$q#1@w1jY z%W~H_~>(kqQ zMzldC@-7fl@Y*Y|h`DBBN5N(vJv&=K6;H{C=H}Tx?8H7!$obPU6MiB& z(B0$)txYLXX#A`VoQW;UJ0}oar`wI9DAraRtY%lEVVxYONWSV=O!5VE@Fmm|K)axI zU}VzPQP#5=w>N}!m+r{i3Y)cwK&1Ty!(m?4zFE=Em8yJ2ZdD6Bjup%Xe6-)|f6q!c2XRRD*#$Z!2y0G@i zGFc+xC@8cE{Cv9a>PZP7t@zg_JSlK<^!|l3fzJ_&R?SKHY-bw zKXI_`dZPXMN^;fSHwrCgB@iN$OHHcLD`JU>9T#0O<$&yp^OeasQv+u&rlx=|%x3vs z?H`lVk2Wk<&&tC*Aqhq;%fagGPHUZ?Q|`6Io1PaikIO#ha1HKswT1ekgWf1+D=TB5 z78@;sSE+_-YiN5XO8i7DqWz#~3Ydc};z=5cB+Bv5b(bEE*0qUGT3m*CC$V>V=emQI ztw8iK3Zl=pAD{47PuH? zG+H@StTWrTu?kV;_IIOz+UBd7zp=W4->a9NiQ6Rrck+i(1jS7^&+gzIWAjdK&;uf)ap#-DeiB13D4HJKPqNvu8RP>iTQ5ewd+LmQ|# zG4-Q?LGAG?y9@`aGLa`G}-yw*qo(mTx0>OcoNEL1*4u zn^zHsk6(*{`}X}WZ+fM5Uyk!5N4!y(7Ia>>YU948ySEkzlLuR36?4~VBPsxLOWC9~ z+aUjM0mUhQR9Ys|OLOzyjM=pbSz4xWmd)L286L<{PqG^|zw%7w>}pG$T+9o0fBwTtpp1s0LFh#+VSZiAlV-1-9#z zsR$pAx3&3PY~382b%n$ZgW_)ANJ5G=#=TM42JbMLkjVs7EQa6$x?++|pwWvb8i7=a z5TimBgGNw6{L=aCjH`*uc)5n-J&?P4$|hKPSnrfZ{8OvQ@Y9?2@BPa^%Ko&}lEt$Pn#)yeIo88|I(_M#=rCjBkA+k1cNy%HB zWlZk4t8Gu>Z=X70uaD_4cR$j{Hz$A7mr@wDyL>zpJo)*;P1V^=yKU5y9#&F<-`3-8 zR19F%)uIkLCT&28WgC5R+JRPujaQiv3t{#c3R|OM5wA1b2NtU!vy{kqvp`sz;>2ba zk+C!8>~3@8ku<=*zg_pYlNtY@&#_U2>u6LW2o$}F-fI+FH`kW4Ek^cM$rly8247u` z)`e1-(B}CyX3v91g7Z8Pcp5KSDZ`e~@vFU|H$)rtEOke};(qrkGUs^GC2r7ZZ2IS0X4bhZSADI`l? ztleZ;tX>M)b7?2y%Is~FtCBY@Hg0bO&)RGynaf!_CsP$VKO9b!i(5AqpxGTXU#}+U z>>f7?li))EZVUixa$8un9|WAbP1dR~=V_rV65vjZ621$zjM={QDSl2(Zz?WN3;W(W^^M~8qNyo>zCvjjpd5d6%BAxr6ems zQH;^gL!qf0cBHo>nM6rXh6AU^Er;W?%$*VzwP98$g=kFri4EQl-XX~tsg0t$r{^T= z1GO~DN)Sdc0SxN{6^)cMF~dsPZd)6u?+gN{ktbSu+H=>E>1SR@5B`#c5p#qM>D^1lLB&J885w zAf!gCY4CxOqO@l##m|K(y(ww~;jRf;w4_ULpoOUq4dg~hQqt-7QC0~_0|m1L7h2$! zKvR7(aEAr28gwdRyPkYbf7~p?DeEIOzwfoz{TyPKv>%sNlYzN1! zSQieh)*+kWu@|D({D;khL!OBCT8F(6&6p=136m5{&aq%^WThx&f(ShE5J)C^NxUN@ z8KMH95y5+uF?nJZgQj^)km)hd&H01f`1qiT(~Pe;DheknJJrOeGz?dSteoCEDk^jy zt!xsV(yq3=229On!b3HkFFW1J#2Qb5`_#;sFWI>n66>!Rav{*8%!7X1ij3 z8s=xs8QxNJW_e%99d5=~HzuGhMM5Sz&6%vxL6f?2iB0#1g}`6UB;Ff+b4}UA<#h`D zuO+Lvnb?Z|{V`7qg$ZXfATkg#TVaymn0OXU@{o}^m+6p3uA^c~p>QNfF~CTDf4a=C z)YfdqSCKDdi+rN11vBjNt6X7IJ76i`D?VJsWN&njByj*bqXcQ&kn?u$?3u;>v&?pd z{Y0^^Mb1JCWL%NKZ$NXGNML%>=yL)3jS%}*Qrz)@ltTB>DM!% zUTGD04rJLolA6hvnxI(-o0agT192n%M}dEO0YnYE@`j33q!h^E z2>8k+dUkM>2~BnUvC1Co-sl!!+j@Jg^gA4tdZguH!PA?cn(r%x5X$Qm+%G$=72s2y z_=q|>sl4MRM-t{LS?N6ehuOMVDgZl6h;YWpWPKtw5VII1-A~R%Y0e)GW*-jIYfd;X z+^}+q9?(a1f~kPkY`A0V-soM4`EHAbO<2PJ!sTsZ~@Q+3mOay+d{?gvyn`^3N zG?@`x$^2K&FmW#+S=7dn+t$f!+5h~8=LgJ%$hmm@WUGdRN} ze<0(n2f&t)W`&APaRD6VNmI1~1XDMHPVfkxm!5hFFW?e0ToFDE;j^~Q-BNROYoO-T z5$$uE@yjCo_zzEnc%`52-q@SHA`stmd)Vo`XC>as7N_opM(J1#I+6_}ZN!)b8WTnT@Y11f^=xFz)=DcBpXpA{il$E=d9hOupG+57rsa#^i5|;{n zZ}nhO0ksskwL{!PuC>+0eRFRH0zzKzQ@%$pmD&^G@20-m6!?K( zPB0FJS#O*qfeSK8#uCZh%q&R59V>Pr%k8N` z_eY#{*R8qSqPv98HQ|*BO!XC(>V00b(rTDXpJRY*ffU5$O#f^L zV6@F-f+rxmFj<3!Ggq{O$aPkRNyb$I?Z>J1=hp!kxmz$B_7{sF6#C?>;N5D@KblQs z+|yRQru9c}oyzZWjHuH+qEx@)-!%{1?R-#X^!V;4cYHOX^zYz3y#O= zT|}Fu2Ve%_; zn8q9uZ%Q;L(ztU-h#Ytz`JH?&rMF3(3&~>1$COf`qtD2Ak{8dpgs~MCX5$V^MHCfHH8~275s>1?2hSkwjiq?s-Uz(92V{!~mdS#plR=J3%Y{~#E zWJPmwO7kq0Nd(p`Q&yH=)>|>Y6vPz3E>`=I>yv9g9?6gBQDd8h&o_w@yp@al-B&}? zbTzcSR*RqD=lfSrO@jfy;PI<%dOdedop(XGo!eq*A}@>#D|4DyzREz1GBFhs2n38M zvzH01WC0{cfaE|1otZO;MwHC%%;LBZhRc?(n!=Zs3P42|Zd<=M_-0$}Nj+=jV>ZHZ7RmTX$;uRL6r3xan2Z7t zoUu9wmV|R2#ztSBU*GZ~Y+|X1OH%yosk^RQ$KubGI`M<5{x4Nc|LOH+sa|#Ad9L`L zhHsln@8bmE1QR8gI)zaBArp{+2ggJv`y@mRq#|e~9atKrz+Jd?#YNz~RCuBw)_A%a zu#Mn-;tRx9VKxu@PPaA#p>waj=KHx5M@8@Gc!qhVxJi~c%Z>Vdl51sl6PaDMrG=H{ zq{GuJ~?)%$@$H2bMsGse*8Ez z-Szl-{MwJ7wEjPQ`8ECZha;p#fod1~magT;QVU|O4TaT^B)?+W{*xsQ> z{NoYt`1<+JR2$H-jWT3s#2&|ZJcIS`_3v-}@6De($U2CsLx|d-Y4?{d@%e8%cTk;u zZRX9ai+3W0KR>1~8<)aO=c-W11q#DWne@^LN-A`}7{=<A1zBiY=G)C!p~!}mg#7@1JT6no9p!);UMRX_0e;q7aV56zo- zC31!a6}7u2bCho39T}>; zY(J2t+Pul~R{VAw3$@s$jcF>%4cnF^tbOATt!4VE7^ID(u54Za4JAsEVcJ|$sP@u= z$a-ZYVrV5>aAExN_8J!kLnEzT7e<9dT3Z7QrL1tjX3o4MOkLZ`SX(0lqLj+#XvXI&;j+{dkImH7wCvYx8VPb4$9hX_sTe*Y60m{O@?LUg zJRka?u4&l|RA7NIS>@y{Py6S!;kBJO7gc7w;`JO!hXS<*Bd1Hcw}r+3+9_huVv;!_Z( zKLyb}1>QY{A8DBsQePdxjM8;Y@F)xU*sY^0M=`AnT@^#W(46tQ9t?s2(7MXoXRzIR z;KQ}44ei}aQFm#4_cmN1k$)p#*8uyuzvY$!d_#{7 zbqcA7Y#k+AvWhK{8;dfIN_&B@-HArziZIPC!B`xYZ0bMTlh75fW$Fl_k^ahv#*y1!;M zHb*=gUE400DApy?|5(+MzZr{WX*IQ5;w1mN zKHPO~#(rSaz&tD2(d;@ zR4Cpqs9CoZ4RJD74M6K+Lgx~yqq*T3fNo=5XXW}`>AowV)nWd4F7f(BaUQh)R{s6( M{|(8{ayPFb04K_GdH?_b literal 81644 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�V_Sln^(Uw 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 diff --git a/tests/data/tree_for_clustering.json b/tests/data/tree_for_clustering.json index da2fff1..8bb51ef 100644 --- a/tests/data/tree_for_clustering.json +++ b/tests/data/tree_for_clustering.json @@ -2,7 +2,7 @@ "tree": { "state": { "mols": [ - 140420370898512 + 140579172428000 ] }, "children_values": [ @@ -19,24 +19,42 @@ ], "children_actions": [ { - "mol": 140420370898512, - "smarts": "([c:8]-[NH;D2;+0:7]-[c;H0;D3;+0:1]1:[c:2]:[c:3]:[#7;a:4]:[c:5]:[c:6]:1)>>(Cl-[c;H0;D3;+0:1]1:[c:2]:[c:3]:[#7;a:4]:[c:5]:[c:6]:1).([NH2;D1;+0:7]-[c:8])", + "mol": 140579172428000, "index": 0, - "metadata": {} + "metadata": {}, + "smarts": "([c:8]-[NH;D2;+0:7]-[c;H0;D3;+0:1]1:[c:2]:[c:3]:[#7;a:4]:[c:5]:[c:6]:1)>>(Cl-[c;H0;D3;+0:1]1:[c:2]:[c:3]:[#7;a:4]:[c:5]:[c:6]:1).([NH2;D1;+0:7]-[c:8])", + "reactants": [ + [ + 140579263366672, + 140579263368016 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" }, { - "mol": 140420370898512, - "smarts": "([S;D1;H0:3]=[C;H0;D3;+0:4](-[NH;D2;+0:1]-[c:2])-[NH;D2;+0:5]-[c:6])>>([NH2;D1;+0:1]-[c:2]).([S;D1;H0:3]=[C;H0;D2;+0:4]=[N;H0;D2;+0:5]-[c:6])", + "mol": 140579172428000, "index": 0, - "metadata": {} + "metadata": {}, + "smarts": "([S;D1;H0:3]=[C;H0;D3;+0:4](-[NH;D2;+0:1]-[c:2])-[NH;D2;+0:5]-[c:6])>>([NH2;D1;+0:1]-[c:2]).([S;D1;H0:3]=[C;H0;D2;+0:4]=[N;H0;D2;+0:5]-[c:6])", + "reactants": [ + [ + 140577500646512, + 140577500646080 + ], + [ + 140577500644928, + 140577500646944 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" } ], "children": [ { "state": { "mols": [ - 140420370760912, - 140420371764752 + 140579263366672, + 140579263368016 ] }, "children_values": [], @@ -45,13 +63,13 @@ "children_actions": [], "children": [], "is_expanded": false, - "is_expandable": false + "is_expandable": true }, { "state": { "mols": [ - 140417724800016, - 140417963940304 + 140577500644928, + 140577500646944 ] }, "children_values": [ @@ -68,25 +86,43 @@ ], "children_actions": [ { - "mol": 140417724800016, - "smarts": "([c:8]-[NH;D2;+0:7]-[c;H0;D3;+0:1]1:[c:2]:[c:3]:[#7;a:4]:[c:5]:[c:6]:1)>>(Cl-[c;H0;D3;+0:1]1:[c:2]:[c:3]:[#7;a:4]:[c:5]:[c:6]:1).([NH2;D1;+0:7]-[c:8])", + "mol": 140577500644928, "index": 0, - "metadata": {} + "metadata": {}, + "smarts": "([c:8]-[NH;D2;+0:7]-[c;H0;D3;+0:1]1:[c:2]:[c:3]:[#7;a:4]:[c:5]:[c:6]:1)>>(Cl-[c;H0;D3;+0:1]1:[c:2]:[c:3]:[#7;a:4]:[c:5]:[c:6]:1).([NH2;D1;+0:7]-[c:8])", + "reactants": [ + [ + 140581032331392, + 140579263264128 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" }, { - "mol": 140417724800016, - "smarts": "([c:2]:[c;H0;D3;+0:1](:[c:3])-[NH;D2;+0:4]-[c:5])>>(Br-[c;H0;D3;+0:1](:[c:2]):[c:3]).([NH2;D1;+0:4]-[c:5])", + "mol": 140577500644928, "index": 0, - "metadata": {} + "metadata": {}, + "smarts": "([c:2]:[c;H0;D3;+0:1](:[c:3])-[NH;D2;+0:4]-[c:5])>>(Br-[c;H0;D3;+0:1](:[c:2]):[c:3]).([NH2;D1;+0:4]-[c:5])", + "reactants": [ + [ + 140577571413008, + 140577571410704 + ], + [ + 140579263368160, + 140579263366576 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" } ], "children": [ { "state": { "mols": [ - 140417963940304, - 140417950541584, - 140417950615376 + 140577500646944, + 140581032331392, + 140579263264128 ] }, "children_values": [], @@ -100,9 +136,9 @@ { "state": { "mols": [ - 140417963940304, - 140417950614736, - 140417950614864 + 140577500646944, + 140579263368160, + 140579263366576 ] }, "children_values": [], @@ -122,59 +158,96 @@ "is_expandable": true }, "molecules": { - "140420370898512": { + "140579172428000": { "smiles": "Cc1ccc2nc3ccccc3c(Nc3ccc(NC(=S)Nc4ccccc4)cc3)c2c1", "class": "TreeMolecule", "parent": null, - "transform": 0 + "transform": 0, + "tracked_atom_indices": {} + }, + "140579263366672": { + "smiles": "[CH3:1][c:2]1[cH:3][cH:4][c:5]2[n:6][c:7]3[cH:8][cH:9][cH:10][cH:11][c:12]3[c:13]([Cl:900])[c:31]2[cH:32]1", + "class": "TreeMolecule", + "parent": 140579172428000, + "transform": 1, + "tracked_atom_indices": {} + }, + "140579263368016": { + "smiles": "[NH2:14][c:15]1[cH:16][cH:17][c:18]([NH:19][C:20](=[S:21])[NH:22][c:23]2[cH:24][cH:25][cH:26][cH:27][cH:28]2)[cH:29][cH:30]1", + "class": "TreeMolecule", + "parent": 140579172428000, + "transform": 1, + "tracked_atom_indices": {} + }, + "140577500646512": { + "smiles": "[C:20](=[S:21])=[N:22][c:23]1[cH:24][cH:25][cH:26][cH:27][cH:28]1", + "class": "TreeMolecule", + "parent": 140579172428000, + "transform": 1, + "tracked_atom_indices": {} + }, + "140577500646080": { + "smiles": "[CH3:1][c:2]1[cH:3][cH:4][c:5]2[n:6][c:7]3[cH:8][cH:9][cH:10][cH:11][c:12]3[c:13]([NH:14][c:15]3[cH:16][cH:17][c:18]([NH2:19])[cH:29][cH:30]3)[c:31]2[cH:32]1", + "class": "TreeMolecule", + "parent": 140579172428000, + "transform": 1, + "tracked_atom_indices": {} }, - "140420370760912": { - "smiles": "Cc1ccc2nc3ccccc3c(Cl)c2c1", + "140577500644928": { + "smiles": "[CH3:1][c:2]1[cH:3][cH:4][c:5]2[n:6][c:7]3[cH:8][cH:9][cH:10][cH:11][c:12]3[c:13]([NH:14][c:15]3[cH:16][cH:17][c:18]([N:19]=[C:20]=[S:21])[cH:29][cH:30]3)[c:31]2[cH:32]1", "class": "TreeMolecule", - "parent": 140420370898512, - "transform": 1 + "parent": 140579172428000, + "transform": 1, + "tracked_atom_indices": {} }, - "140420371764752": { - "smiles": "Nc1ccc(NC(=S)Nc2ccccc2)cc1", + "140577500646944": { + "smiles": "[NH2:22][c:23]1[cH:24][cH:25][cH:26][cH:27][cH:28]1", "class": "TreeMolecule", - "parent": 140420370898512, - "transform": 1 + "parent": 140579172428000, + "transform": 1, + "tracked_atom_indices": {} }, - "140417724800016": { - "smiles": "Cc1ccc2nc3ccccc3c(Nc3ccc(N)cc3)c2c1", + "140581032331392": { + "smiles": "[CH3:1][c:2]1[cH:3][cH:4][c:5]2[n:6][c:7]3[cH:8][cH:9][cH:10][cH:11][c:12]3[c:13]([Cl:900])[c:31]2[cH:32]1", "class": "TreeMolecule", - "parent": 140420370898512, - "transform": 1 + "parent": 140577500644928, + "transform": 2, + "tracked_atom_indices": {} }, - "140417963940304": { - "smiles": "S=C=Nc1ccccc1", + "140579263264128": { + "smiles": "[NH2:14][c:15]1[cH:16][cH:17][c:18]([N:19]=[C:20]=[S:21])[cH:29][cH:30]1", "class": "TreeMolecule", - "parent": 140420370898512, - "transform": 1 + "parent": 140577500644928, + "transform": 2, + "tracked_atom_indices": {} }, - "140417950541584": { - "smiles": "Cc1ccc2nc3ccccc3c(Cl)c2c1", + "140577571413008": { + "smiles": "[CH3:1][c:2]1[cH:3][cH:4][c:5]2[n:6][c:7]3[cH:8][cH:9][cH:10][cH:11][c:12]3[c:13]([Br:900])[c:31]2[cH:32]1", "class": "TreeMolecule", - "parent": 140417724800016, - "transform": 2 + "parent": 140577500644928, + "transform": 2, + "tracked_atom_indices": {} }, - "140417950615376": { - "smiles": "Nc1ccc(N)cc1", + "140577571410704": { + "smiles": "[NH2:14][c:15]1[cH:16][cH:17][c:18]([N:19]=[C:20]=[S:21])[cH:29][cH:30]1", "class": "TreeMolecule", - "parent": 140417724800016, - "transform": 2 + "parent": 140577500644928, + "transform": 2, + "tracked_atom_indices": {} }, - "140417950614736": { - "smiles": "Cc1ccc2nc3ccccc3c(N)c2c1", + "140579263368160": { + "smiles": "[CH3:1][c:2]1[cH:3][cH:4][c:5]2[n:6][c:7]3[cH:8][cH:9][cH:10][cH:11][c:12]3[c:13]([NH2:14])[c:31]2[cH:32]1", "class": "TreeMolecule", - "parent": 140417724800016, - "transform": 2 + "parent": 140577500644928, + "transform": 2, + "tracked_atom_indices": {} }, - "140417950614864": { - "smiles": "Nc1ccc(Br)cc1", + "140579263366576": { + "smiles": "[c:15]1([Br:900])[cH:16][cH:17][c:18]([N:19]=[C:20]=[S:21])[cH:29][cH:30]1", "class": "TreeMolecule", - "parent": 140417724800016, - "transform": 2 + "parent": 140577500644928, + "transform": 2, + "tracked_atom_indices": {} } } } \ No newline at end of file diff --git a/tests/retrostar/data/andor_tree_for_clustering.json b/tests/retrostar/data/andor_tree_for_clustering.json index 87b9669..69f2162 100644 --- a/tests/retrostar/data/andor_tree_for_clustering.json +++ b/tests/retrostar/data/andor_tree_for_clustering.json @@ -1,175 +1,3788 @@ { "tree": { "cost": 0.0, - "expandable": true, - "value": 0.0, - "mol": 140605332219984, + "expandable": false, + "value": 3.170205421745777, + "mol": 139643154371392, "children": [ { - "cost": 5.0, - "value": 5.0, - "target_value": 5.0, + "cost": 0.10074622184038162, + "value": 3.170205421745777, + "target_value": 3.170205421745777, "reaction": { - "mol": 140605332219984, - "smarts": "([c:8]-[NH;D2;+0:7]-[c;H0;D3;+0:1]1:[c:2]:[c:3]:[#7;a:4]:[c:5]:[c:6]:1)>>(Cl-[c;H0;D3;+0:1]1:[c:2]:[c:3]:[#7;a:4]:[c:5]:[c:6]:1).([NH2;D1;+0:7]-[c:8])", + "mol": 139643154371392, "index": 0, - "metadata": {} + "metadata": {}, + "smarts": "([O;D1;H0:2]=[C;H0;D3;+0:1](-[c:3])-[NH;D2;+0:4]-[c:5])>>(Cl-[C;H0;D3;+0:1](=[O;D1;H0:2])-[c:3]).([NH2;D1;+0:4]-[c:5])", + "reactants": [ + [ + 139643166203664, + 139643171528960 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" }, "children": [ { "cost": 0.0, "expandable": false, - "value": 0, - "mol": 140605332201936, + "value": 0.0, + "mol": 139643166203664, "children": [] }, { "cost": 0.0, "expandable": false, - "value": 0, - "mol": 140605332205072, - "children": [] - } - ] - }, - { - "cost": 10.0, - "value": 10.0, - "target_value": 10.0, - "reaction": { - "mol": 140605332219984, - "smarts": "([S;D1;H0:3]=[C;H0;D3;+0:4](-[NH;D2;+0:1]-[c:2])-[NH;D2;+0:5]-[c:6])>>([NH2;D1;+0:1]-[c:2]).([S;D1;H0:3]=[C;H0;D2;+0:4]=[N;H0;D2;+0:5]-[c:6])", - "index": 1, - "metadata": {} - }, - "children": [ - { - "cost": 0.0, - "expandable": true, - "value": 0.0, - "mol": 140598039857296, + "value": 3.0694591999053955, + "mol": 139643171528960, "children": [ { - "cost": 2.5, - "value": 2.5, - "target_value": 12.5, + "cost": 0.7208150029182434, + "value": 3.1994336247444153, + "target_value": 3.300179846584797, + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:1]-[c:2])>>(O=[N+;H0;D3:1](-[O-])-[c:2])", + "reactants": [ + [ + 139643166201504 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": false, + "value": 2.478618621826172, + "mol": 139643166201504, + "children": [ + { + "cost": 2.478618621826172, + "value": 2.478618621826172, + "target_value": 3.300179846584797, + "reaction": { + "mol": 139643166201504, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[N;H0;D3;+0:3](-[C:4])-[CH3;D1;+0:1])>>(I-[CH3;D1;+0:1]).([C:2]-[NH;D2;+0:3]-[C:4])", + "reactants": [ + [ + 139643162454288 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643162454288, + "children": [] + } + ] + }, + { + "cost": 4.106889247894287, + "value": 4.106889247894287, + "target_value": 4.928450472652912, + "reaction": { + "mol": 139643166201504, + "index": 0, + "metadata": {}, + "smarts": "([C:1]-[C;H0;D3;+0:2](=[O;H0;D1;+0:3])-[c:4])>>([C:1]-[CH;D3;+0:2](-[OH;D1;+0:3])-[c:4])", + "reactants": [ + [ + 139643162454624 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643162454624, + "children": [] + } + ] + }, + { + "cost": 4.682793140411377, + "value": 4.682793140411377, + "target_value": 5.504354365170002, + "reaction": { + "mol": 139643166201504, + "index": 0, + "metadata": {}, + "smarts": "([#7:2]-[CH3;D1;+0:1])>>(C-C(-C)(-C)-O-[C;H0;D3;+0:1](=O)-[#7:2])", + "reactants": [ + [ + 139643162455056 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643162455056, + "children": [] + } + ] + }, + { + "cost": 5.297028541564941, + "value": 5.297028541564941, + "target_value": 6.118589766323566, + "reaction": { + "mol": 139643166201504, + "index": 0, + "metadata": {}, + "smarts": "([C:1]-[N;H0;D3;+0:2](-[C:3])-[C;H3;D1;+0])>>([C:1]-[NH;D2;+0:2]-[C:3])", + "reactants": [ + [ + 139643162454144 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643162454144, + "children": [] + } + ] + }, + { + "cost": 6.402892589569092, + "value": 6.402892589569092, + "target_value": 7.224453814327717, + "reaction": { + "mol": 139643166201504, + "index": 0, + "metadata": {}, + "smarts": "([#7:2]-[CH3;D1;+0:1])>>(O=[C;H0;D3;+0:1](-[#7:2])-O-C-c1:c:c:c:c:c:1)", + "reactants": [ + [ + 139643162454048 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643162454048, + "children": [] + } + ] + }, + { + "cost": 6.734926223754883, + "value": 6.734926223754883, + "target_value": 7.556487448513508, + "reaction": { + "mol": 139643166201504, + "index": 0, + "metadata": {}, + "smarts": "([c:2]:[cH;D2;+0:1]:[c:3])>>(Cl-[c;H0;D3;+0:1](:[c:2]):[c:3])", + "reactants": [ + [ + 139643162455488 + ], + [ + 139643162455728 + ], + [ + 139643162455968 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643162455488, + "children": [] + } + ] + }, + { + "cost": 6.734926223754883, + "value": 6.734926223754883, + "target_value": 7.556487448513508, + "reaction": { + "mol": 139643166201504, + "index": 1, + "metadata": {}, + "smarts": "([c:2]:[cH;D2;+0:1]:[c:3])>>(Cl-[c;H0;D3;+0:1](:[c:2]):[c:3])", + "reactants": [ + [ + 139643162455488 + ], + [ + 139643162455728 + ], + [ + 139643162455968 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643162455728, + "children": [] + } + ] + }, + { + "cost": 6.734926223754883, + "value": 6.734926223754883, + "target_value": 7.556487448513508, + "reaction": { + "mol": 139643166201504, + "index": 2, + "metadata": {}, + "smarts": "([c:2]:[cH;D2;+0:1]:[c:3])>>(Cl-[c;H0;D3;+0:1](:[c:2]):[c:3])", + "reactants": [ + [ + 139643162455488 + ], + [ + 139643162455728 + ], + [ + 139643162455968 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643162455968, + "children": [] + } + ] + }, + { + "cost": 6.907755374908447, + "value": 6.907755374908447, + "target_value": 7.729316599667072, + "reaction": { + "mol": 139643166201504, + "index": 0, + "metadata": {}, + "smarts": "([C:3]-[N;H0;D3;+0:4](-[C:5])-[CH2;D2;+0:1]-[C:2])>>(Cl-[CH2;D2;+0:1]-[C:2]).([C:3]-[NH;D2;+0:4]-[C:5])", + "reactants": [ + [ + 139643166201120 + ], + [ + 139643166202416 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643166201120, + "children": [] + } + ] + }, + { + "cost": 6.907755374908447, + "value": 6.907755374908447, + "target_value": 7.729316599667072, + "reaction": { + "mol": 139643166201504, + "index": 1, + "metadata": {}, + "smarts": "([C:3]-[N;H0;D3;+0:4](-[C:5])-[CH2;D2;+0:1]-[C:2])>>(Cl-[CH2;D2;+0:1]-[C:2]).([C:3]-[NH;D2;+0:4]-[C:5])", + "reactants": [ + [ + 139643166201120 + ], + [ + 139643166202416 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643166202416, + "children": [] + } + ] + } + ] + } + ] + }, + { + "cost": 2.1505701541900635, + "value": 3.151626080274582, + "target_value": 3.2523723021149635, "reaction": { - "mol": 140598039857296, - "smarts": "([c:8]-[NH;D2;+0:7]-[c;H0;D3;+0:1]1:[c:2]:[c:3]:[#7;a:4]:[c:5]:[c:6]:1)>>(Cl-[c;H0;D3;+0:1]1:[c:2]:[c:3]:[#7;a:4]:[c:5]:[c:6]:1).([NH2;D1;+0:7]-[c:8])", + "mol": 139643171528960, "index": 0, - "metadata": {} + "metadata": {}, + "smarts": "([C:2]-[N;H0;D3;+0:3](-[C:4])-[CH3;D1;+0:1])>>(O=[CH2;D1;+0:1]).([C:2]-[NH;D2;+0:3]-[C:4])", + "reactants": [ + [ + 139643173163552, + 139643173165280 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" }, "children": [ { "cost": 0.0, "expandable": false, - "value": 0, - "mol": 140598039857616, + "value": 0.0, + "mol": 139643173163552, "children": [] }, { "cost": 0.0, "expandable": false, - "value": 0, - "mol": 140605332368528, + "value": 1.0010559260845184, + "mol": 139643173165280, + "children": [ + { + "cost": 0.3793273866176605, + "value": 1.0010559260845184, + "target_value": 3.2523723021149635, + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[NH;D2;+0:1]-[C:3])>>(C-C(-C)(-C)-O-C(=O)-[N;H0;D3;+0:1](-[C:2])-[C:3])", + "reactants": [ + [ + 139643162452464 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": false, + "value": 0.6217285394668579, + "mol": 139643162452464, + "children": [ + { + "cost": 0.6217285394668579, + "value": 0.6217285394668579, + "target_value": 3.2523723021149635, + "reaction": { + "mol": 139643162452464, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:1]-[c:2])>>(O=[N+;H0;D3:1](-[O-])-[c:2])", + "reactants": [ + [ + 139643166163824 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643166163824, + "children": [] + } + ] + }, + { + "cost": 2.7375824451446533, + "value": 2.7375824451446533, + "target_value": 5.368226207792759, + "reaction": { + "mol": 139643162452464, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[C;H0;D3;+0:1](=[O;D1;H0:3])-[c;H0;D3;+0:5](:[c:4]):[c:6])>>(C-O-N(-C)-[C;H0;D3;+0:1](-[C:2])=[O;D1;H0:3]).([c:4]:[cH;D2;+0:5]:[c:6])", + "reactants": [ + [ + 139643164870880, + 139643164872128 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": false, + "value": 0.0, + "mol": 139643164870880, + "children": [] + }, + { + "cost": 0.0, + "expandable": false, + "value": 0.0, + "mol": 139643164872128, + "children": [] + } + ] + }, + { + "cost": 4.452865123748779, + "value": 4.452865123748779, + "target_value": 7.083508886396885, + "reaction": { + "mol": 139643162452464, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:2]-[c:1])>>([c:1]-[N;H0;D2;+0:2]=C(-c1:c:c:c:c:c:1)-c1:c:c:c:c:c:1)", + "reactants": [ + [ + 139643171738528 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643171738528, + "children": [] + } + ] + }, + { + "cost": 4.696177005767822, + "value": 4.696177005767822, + "target_value": 7.326820768415928, + "reaction": { + "mol": 139643162452464, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:1]-[c:2])>>(C-C(-C)(-C)-O-C(=O)-[NH;D2;+0:1]-[c:2])", + "reactants": [ + [ + 139643164872464 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643164872464, + "children": [] + } + ] + }, + { + "cost": 4.707756996154785, + "value": 4.707756996154785, + "target_value": 7.338400758802891, + "reaction": { + "mol": 139643162452464, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:1]-[c:2])>>(F-C(-F)(-F)-C(=O)-[NH;D2;+0:1]-[c:2])", + "reactants": [ + [ + 139643171738432 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643171738432, + "children": [] + } + ] + }, + { + "cost": 4.782713413238525, + "value": 4.782713413238525, + "target_value": 7.413357175886631, + "reaction": { + "mol": 139643162452464, + "index": 0, + "metadata": {}, + "smarts": "([N;H2;D1;+0]-[c;H0;D3;+0:1](:[c:2]):[c:3])>>(Br-[c;H0;D3;+0:1](:[c:2]):[c:3])", + "reactants": [ + [ + 139643171739248 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643171739248, + "children": [] + } + ] + }, + { + "cost": 5.140331745147705, + "value": 5.140331745147705, + "target_value": 7.770975507795811, + "reaction": { + "mol": 139643162452464, + "index": 0, + "metadata": {}, + "smarts": "([c:2]:[cH;D2;+0:1]:[c:3])>>(Cl-[c;H0;D3;+0:1](:[c:2]):[c:3])", + "reactants": [ + [ + 139643171739344 + ], + [ + 139643171739536 + ], + [ + 139643171739632 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643171739344, + "children": [] + } + ] + }, + { + "cost": 5.140331745147705, + "value": 5.140331745147705, + "target_value": 7.770975507795811, + "reaction": { + "mol": 139643162452464, + "index": 1, + "metadata": {}, + "smarts": "([c:2]:[cH;D2;+0:1]:[c:3])>>(Cl-[c;H0;D3;+0:1](:[c:2]):[c:3])", + "reactants": [ + [ + 139643171739344 + ], + [ + 139643171739536 + ], + [ + 139643171739632 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643171739536, + "children": [] + } + ] + }, + { + "cost": 5.140331745147705, + "value": 5.140331745147705, + "target_value": 7.770975507795811, + "reaction": { + "mol": 139643162452464, + "index": 2, + "metadata": {}, + "smarts": "([c:2]:[cH;D2;+0:1]:[c:3])>>(Cl-[c;H0;D3;+0:1](:[c:2]):[c:3])", + "reactants": [ + [ + 139643171739344 + ], + [ + 139643171739536 + ], + [ + 139643171739632 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643171739632, + "children": [] + } + ] + }, + { + "cost": 5.220434665679932, + "value": 5.220434665679932, + "target_value": 7.851078428328037, + "reaction": { + "mol": 139643162452464, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:1]-[c:2])>>(C-C(=O)-[NH;D2;+0:1]-[c:2])", + "reactants": [ + [ + 139643171738048 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643171738048, + "children": [] + } + ] + }, + { + "cost": 5.325563430786133, + "value": 5.325563430786133, + "target_value": 7.956207193434238, + "reaction": { + "mol": 139643162452464, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:4]-[c;H0;D3;+0:1](:[c:2]):[c:3])>>(F-[c;H0;D3;+0:1](:[c:2]):[c:3]).([NH3;D0;+0:4])", + "reactants": [ + [ + 139643171740112, + 139643171740688 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643171740112, + "children": [] + }, + { + "cost": 0.0, + "expandable": false, + "value": 0.0, + "mol": 139643171740688, + "children": [] + } + ] + }, + { + "cost": 5.484682083129883, + "value": 5.484682083129883, + "target_value": 8.115325845777988, + "reaction": { + "mol": 139643162452464, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:1]-[c:2])>>(O=C(-O-C-c1:c:c:c:c:c:1)-[NH;D2;+0:1]-[c:2])", + "reactants": [ + [ + 139643171740400 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643171740400, + "children": [] + } + ] + }, + { + "cost": 5.642376899719238, + "value": 5.642376899719238, + "target_value": 8.273020662367344, + "reaction": { + "mol": 139643162452464, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:1]-[c:2])>>(C-C(-C)(-C)-C(=O)-[NH;D2;+0:1]-[c:2])", + "reactants": [ + [ + 139643171741456 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643171741456, + "children": [] + } + ] + }, + { + "cost": 5.65239143371582, + "value": 5.65239143371582, + "target_value": 8.283035196363926, + "reaction": { + "mol": 139643162452464, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:2]-[c:1])>>([c:1]-[N;H0;D3;+0:2](-C-c1:c:c:c:c:c:1)-C-c1:c:c:c:c:c:1)", + "reactants": [ + [ + 139643171741024 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643171741024, + "children": [] + } + ] + }, + { + "cost": 5.692169189453125, + "value": 5.692169189453125, + "target_value": 8.32281295210123, + "reaction": { + "mol": 139643162452464, + "index": 0, + "metadata": {}, + "smarts": "([N;H2;D1;+0]-[c;H0;D3;+0:1](:[c:2]):[c:3])>>(O-C(=O)-[c;H0;D3;+0:1](:[c:2]):[c:3])", + "reactants": [ + [ + 139643171740928 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643171740928, + "children": [] + } + ] + }, + { + "cost": 5.69961404800415, + "value": 5.69961404800415, + "target_value": 8.330257810652256, + "reaction": { + "mol": 139643162452464, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:2]-[c:1])>>([c:1]-[NH;D2;+0:2]-C-c1:c:c:c:c:c:1)", + "reactants": [ + [ + 139643171740640 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643171740640, + "children": [] + } + ] + }, + { + "cost": 6.433506011962891, + "value": 6.433506011962891, + "target_value": 9.064149774610996, + "reaction": { + "mol": 139643162452464, + "index": 0, + "metadata": {}, + "smarts": "([C:1]-[C;H0;D3;+0:2](=[O;H0;D1;+0:3])-[c:4])>>([C:1]-[CH;D3;+0:2](-[OH;D1;+0:3])-[c:4])", + "reactants": [ + [ + 139643171740880 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643171740880, + "children": [] + } + ] + }, + { + "cost": 6.7731475830078125, + "value": 6.7731475830078125, + "target_value": 9.403791345655918, + "reaction": { + "mol": 139643162452464, + "index": 0, + "metadata": {}, + "smarts": "([N;H2;D1;+0]-[c;H0;D3;+0:1](:[c:2]):[c:3])>>(Cl-[c;H0;D3;+0:1](:[c:2]):[c:3])", + "reactants": [ + [ + 139643171740016 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643171740016, + "children": [] + } + ] + }, + { + "cost": 6.814378261566162, + "value": 6.814378261566162, + "target_value": 9.445022024214268, + "reaction": { + "mol": 139643162452464, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:4]-[c:5].[c:2]:[cH;D2;+0:1]:[c:3])>>(Cl-[c;H0;D3;+0:1](:[c:2]):[c:3].O=[N+;H0;D3:4](-[O-])-[c:5])", + "reactants": [ + [ + 139643164869104 + ], + [ + 139643164869056 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643164869104, + "children": [] + } + ] + }, + { + "cost": 6.814378261566162, + "value": 6.814378261566162, + "target_value": 9.445022024214268, + "reaction": { + "mol": 139643162452464, + "index": 1, + "metadata": {}, + "smarts": "([NH2;D1;+0:4]-[c:5].[c:2]:[cH;D2;+0:1]:[c:3])>>(Cl-[c;H0;D3;+0:1](:[c:2]):[c:3].O=[N+;H0;D3:4](-[O-])-[c:5])", + "reactants": [ + [ + 139643164869104 + ], + [ + 139643164869056 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643164869056, + "children": [] + } + ] + }, + { + "cost": 6.907755374908447, + "value": 6.907755374908447, + "target_value": 9.538399137556553, + "reaction": { + "mol": 139643162452464, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:5]-[c:4]:[cH;D2;+0:3]:[cH;D2;+0:1]:[c:2])>>(Cl-[c;H0;D3;+0:1](:[c:2]):[c;H0;D3;+0:3](-Cl):[c:4]-[N+;H0;D3:5](=O)-[O-])", + "reactants": [ + [ + 139643173070016 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643173070016, + "children": [] + } + ] + }, + { + "cost": 6.907755374908447, + "value": 6.907755374908447, + "target_value": 9.538399137556553, + "reaction": { + "mol": 139643162452464, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:4]-[c;H0;D3;+0:1](:[c:2]):[c:3])>>(Br-[c;H0;D3;+0:1](:[c:2]):[c:3]).([NH4+;D0:4])", + "reactants": [ + [ + 139643171739392, + 139643164870496 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643171739392, + "children": [] + }, + { + "cost": 0.0, + "expandable": false, + "value": 0.0, + "mol": 139643164870496, + "children": [] + } + ] + } + ] + } + ] + }, + { + "cost": 2.2950503826141357, + "value": 2.2950503826141357, + "target_value": 4.546366758644581, + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:1]-[c:2])>>(O=[N+;H0;D3:1](-[O-])-[c:2])", + "reactants": [ + [ + 139643162692720 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643162692720, + "children": [] + } + ] + }, + { + "cost": 2.758237600326538, + "value": 2.758237600326538, + "target_value": 5.009553976356983, + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([C:1]-[NH;D2;+0:2]-[C:3])>>([C:1]-[N;H0;D3;+0:2](-[C:3])-C-c1:c:c:c:c:c:1)", + "reactants": [ + [ + 139643162692240 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643162692240, + "children": [] + } + ] + }, + { + "cost": 2.81253981590271, + "value": 2.81253981590271, + "target_value": 5.063856191933155, + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[NH;D2;+0:1]-[C:3])>>(O=C(-O-C-c1:c:c:c:c:c:1)-[N;H0;D3;+0:1](-[C:2])-[C:3])", + "reactants": [ + [ + 139643162690464 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643162690464, + "children": [] + } + ] + }, + { + "cost": 4.225465774536133, + "value": 4.225465774536133, + "target_value": 6.476782150566578, + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:1]-[c:2])>>(C-C(-C)(-C)-O-C(=O)-[NH;D2;+0:1]-[c:2])", + "reactants": [ + [ + 139643164991936 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643164991936, + "children": [] + } + ] + }, + { + "cost": 4.908669948577881, + "value": 4.908669948577881, + "target_value": 7.159986324608326, + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[NH;D2;+0:1]-[C:3])>>(C-C(=O)-[N;H0;D3;+0:1](-[C:2])-[C:3])", + "reactants": [ + [ + 139643162692624 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643162692624, + "children": [] + } + ] + }, + { + "cost": 5.097917079925537, + "value": 5.097917079925537, + "target_value": 7.349233455955982, + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:1]-[c:2])>>(C-C(=O)-[NH;D2;+0:1]-[c:2])", + "reactants": [ + [ + 139643164991840 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643164991840, + "children": [] + } + ] + }, + { + "cost": 5.568554878234863, + "value": 5.568554878234863, + "target_value": 7.819871254265308, + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[NH;D2;+0:1]-[C:3])>>(F-C(-F)(-F)-C(=O)-[N;H0;D3;+0:1](-[C:2])-[C:3])", + "reactants": [ + [ + 139643164991984 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643164991984, + "children": [] + } + ] + }, + { + "cost": 5.573371887207031, + "value": 5.573371887207031, + "target_value": 7.824688263237476, + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[NH;D2;+0:1]-[C:3])>>(C-C-O-C(=O)-[N;H0;D3;+0:1](-[C:2])-[C:3])", + "reactants": [ + [ + 139643164993136 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643164993136, + "children": [] + } + ] + }, + { + "cost": 5.792516231536865, + "value": 5.792516231536865, + "target_value": 8.04383260756731, + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:1]-[c:2])>>(F-C(-F)(-F)-C(=O)-[NH;D2;+0:1]-[c:2])", + "reactants": [ + [ + 139643164992800 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643164992800, + "children": [] + } + ] + }, + { + "cost": 6.1294732093811035, + "value": 6.1294732093811035, + "target_value": 8.380789585411549, + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:1]-[c:2])>>(O=C-[NH;D2;+0:1]-[c:2])", + "reactants": [ + [ + 139643164992944 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643164992944, + "children": [] + } + ] + }, + { + "cost": 6.494046688079834, + "value": 6.494046688079834, + "target_value": 8.745363064110279, + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[NH;D2;+0:1]-[C:3].[NH2;D1;+0:4]-[c:5])>>(C-C(-C)(-C)-O-C(=O)-[N;H0;D3;+0:1](-[C:2])-[C:3].C-C(-C)(-C)-O-C(=O)-[NH;D2;+0:4]-[c:5])", + "reactants": [ + [ + 139643164993280 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643164993280, + "children": [] + } + ] + }, + { + "cost": 6.691080093383789, + "value": 6.691080093383789, + "target_value": 8.942396469414234, + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:1]-[c:2])>>(C-C(-C)(-C)-C(=O)-[NH;D2;+0:1]-[c:2])", + "reactants": [ + [ + 139643164992848 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643164992848, + "children": [] + } + ] + }, + { + "cost": 6.875414848327637, + "value": 6.875414848327637, + "target_value": 9.126731224358082, + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([c:2]:[cH;D2;+0:1]:[c:3])>>(Cl-[c;H0;D3;+0:1](:[c:2]):[c:3])", + "reactants": [ + [ + 139643164994720 + ], + [ + 139643164994864 + ], + [ + 139643164992512 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643164994720, + "children": [] + } + ] + }, + { + "cost": 6.875414848327637, + "value": 6.875414848327637, + "target_value": 9.126731224358082, + "reaction": { + "mol": 139643173165280, + "index": 1, + "metadata": {}, + "smarts": "([c:2]:[cH;D2;+0:1]:[c:3])>>(Cl-[c;H0;D3;+0:1](:[c:2]):[c:3])", + "reactants": [ + [ + 139643164994720 + ], + [ + 139643164994864 + ], + [ + 139643164992512 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643164994864, + "children": [] + } + ] + }, + { + "cost": 6.875414848327637, + "value": 6.875414848327637, + "target_value": 9.126731224358082, + "reaction": { + "mol": 139643173165280, + "index": 2, + "metadata": {}, + "smarts": "([c:2]:[cH;D2;+0:1]:[c:3])>>(Cl-[c;H0;D3;+0:1](:[c:2]):[c:3])", + "reactants": [ + [ + 139643164994720 + ], + [ + 139643164994864 + ], + [ + 139643164992512 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643164992512, + "children": [] + } + ] + }, + { + "cost": 6.907755374908447, + "value": 6.907755374908447, + "target_value": 9.159071750938892, + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([N;H2;D1;+0]-[c;H0;D3;+0:1](:[c:2]):[c:3])>>(O-C(=O)-[c;H0;D3;+0:1](:[c:2]):[c:3])", + "reactants": [ + [ + 139643164992080 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643164992080, + "children": [] + } + ] + }, + { + "cost": 6.907755374908447, + "value": 6.907755374908447, + "target_value": 9.159071750938892, + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:4]-[c;H0;D3;+0:1](:[c:2]):[c:3])>>(F-[c;H0;D3;+0:1](:[c:2]):[c:3]).([NH3;D0;+0:4])", + "reactants": [ + [ + 139643164995392, + 139643164995248 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": false, + "value": 0.0, + "mol": 139643164995392, + "children": [] + }, + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643164995248, + "children": [] + } + ] + }, + { + "cost": 6.907755374908447, + "value": 6.907755374908447, + "target_value": 9.159071750938892, + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:1]-[c:2])>>(O=C(-O-C-c1:c:c:c:c:c:1)-[NH;D2;+0:1]-[c:2])", + "reactants": [ + [ + 139643155805712 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643155805712, + "children": [] + } + ] + }, + { + "cost": 6.907755374908447, + "value": 6.907755374908447, + "target_value": 9.159071750938892, + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[NH;D2;+0:1]-[C:3])>>(C-C-C-C-O-C(=O)-[N;H0;D3;+0:1](-[C:2])-[C:3])", + "reactants": [ + [ + 139643164856432 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643164856432, + "children": [] + } + ] + }, + { + "cost": 6.907755374908447, + "value": 6.907755374908447, + "target_value": 9.159071750938892, + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([N;H2;D1;+0]-[c;H0;D3;+0:2](:[c:1]):[c:3])>>([c:1]:[cH;D2;+0:2]:[c:3])", + "reactants": [ + [ + 139643164857152 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": false, + "value": 0.0, + "mol": 139643164857152, + "children": [] + } + ] + }, + { + "cost": 6.907755374908447, + "value": 6.907755374908447, + "target_value": 9.159071750938892, + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[NH;D2;+0:1]-[C:3])>>(O=C(-[O-])-[N;H0;D3;+0:1](-[C:2])-[C:3])", + "reactants": [ + [ + 139643164856960 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643164856960, + "children": [] + } + ] + }, + { + "cost": 6.907755374908447, + "value": 6.907755374908447, + "target_value": 9.159071750938892, + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[NH;D2;+0:1]-[C:3])>>(O=C(-[N;H0;D3;+0:1](-[C:2])-[C:3])-c1:c:c:c:c:c:1)", + "reactants": [ + [ + 139643164857104 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643164857104, + "children": [] + } + ] + }, + { + "cost": 6.907755374908447, + "value": 6.907755374908447, + "target_value": 9.159071750938892, + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:2]-[c:1])>>([c:1]-[NH;D2;+0:2]-C-c1:c:c:c:c:c:1)", + "reactants": [ + [ + 139643164993712 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643164993712, + "children": [] + } + ] + }, + { + "cost": 6.907755374908447, + "value": 6.907755374908447, + "target_value": 9.159071750938892, + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:2]-[c:1])>>([c:1]-[N;H0;D2;+0:2]=C(-c1:c:c:c:c:c:1)-c1:c:c:c:c:c:1)", + "reactants": [ + [ + 139643164993664 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643164993664, + "children": [] + } + ] + }, + { + "cost": 6.907755374908447, + "value": 6.907755374908447, + "target_value": 9.159071750938892, + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([C:1]-[CH;D3;+0:2]1-[CH2;D2;+0:3]-[CH2;D2;+0:4]-[NH;D2;+0:5]-[CH2;D2;+0:6]-[CH2;D2;+0:7]-1)>>([C:1]-[c;H0;D3;+0:2]1:[cH;D2;+0:3]:[cH;D2;+0:4]:[n;H0;D2;+0:5]:[cH;D2;+0:6]:[cH;D2;+0:7]:1)", + "reactants": [ + [ + 139643164994192 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643164994192, + "children": [] + } + ] + }, + { + "cost": 6.907755374908447, + "value": 6.907755374908447, + "target_value": 9.159071750938892, + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([F;H0;D1;+0]-[c;H0;D3;+0:2](:[c:1]):[c:3])>>([c:1]:[cH;D2;+0:2]:[c:3])", + "reactants": [ + [ + 139643166164976 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643166164976, + "children": [] + } + ] + }, + { + "cost": 6.907755374908447, + "value": 6.907755374908447, + "target_value": 9.159071750938892, + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[NH;D2;+0:1]-[C:3])>>(C-C-[N;H0;D3;+0:1](-[C:2])-[C:3])", + "reactants": [ + [ + 139643171531312 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643171531312, + "children": [] + } + ] + }, + { + "cost": 6.907755374908447, + "value": 6.907755374908447, + "target_value": 9.159071750938892, + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([N;H2;D1;+0]-[c;H0;D3;+0:1](:[c:2]):[c:3])>>(Cl-[c;H0;D3;+0:1](:[c:2]):[c:3])", + "reactants": [ + [ + 139643164994768 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643164994768, + "children": [] + } + ] + }, + { + "cost": 6.907755374908447, + "value": 6.907755374908447, + "target_value": 9.159071750938892, + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[C;H0;D3;+0:1](=[O;D1;H0:3])-[c;H0;D3;+0:5](:[c:4]):[c:6])>>(C-O-N(-C)-[C;H0;D3;+0:1](-[C:2])=[O;D1;H0:3]).([c:4]:[cH;D2;+0:5]:[c:6])", + "reactants": [ + [ + 139643166164112, + 139643166166464 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": false, + "value": 0.0, + "mol": 139643166164112, + "children": [] + }, + { + "cost": 0.0, + "expandable": false, + "value": 0.0, + "mol": 139643166166464, + "children": [] + } + ] + }, + { + "cost": 6.907755374908447, + "value": 6.907755374908447, + "target_value": 9.159071750938892, + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([N;H2;D1;+0]-[c;H0;D3;+0:1](:[c:2]):[c:3])>>(Br-[c;H0;D3;+0:1](:[c:2]):[c:3])", + "reactants": [ + [ + 139643166164448 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643166164448, + "children": [] + } + ] + }, + { + "cost": 6.907755374908447, + "value": 6.907755374908447, + "target_value": 9.159071750938892, + "reaction": { + "mol": 139643173165280, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[NH;D2;+0:1]-[C:3])>>(F-c1:c:c:c(-C-N-c2:n:c(-[N;H0;D3;+0:1](-[C:2])-[C:3]):n:c:c:2-c2:c:c:c(-F):c:c:2-F):c(-F):c:1)", + "reactants": [ + [ + 139643166163392 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643166163392, + "children": [] + } + ] + } + ] + } + ] + }, + { + "cost": 3.0694591999053955, + "value": 3.0694591999053955, + "target_value": 3.170205421745777, + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:1]-[c:2])>>(C-C(=O)-[NH;D2;+0:1]-[c:2])", + "reactants": [ + [ + 139643173069200 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643173069200, + "children": [] + } + ] + }, + { + "cost": 3.152578115463257, + "value": 3.152578115463257, + "target_value": 3.2533243373036385, + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:1]-[c:2])>>(C-C(-C)(-C)-O-C(=O)-[NH;D2;+0:1]-[c:2])", + "reactants": [ + [ + 139643173069008 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643173069008, + "children": [] + } + ] + }, + { + "cost": 3.273343801498413, + "value": 3.273343801498413, + "target_value": 3.3740900233387947, + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:1]-[c:2])>>(F-C(-F)(-F)-C(=O)-[NH;D2;+0:1]-[c:2])", + "reactants": [ + [ + 139643173069440 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643173069440, + "children": [] + } + ] + }, + { + "cost": 3.5829217433929443, + "value": 3.5829217433929443, + "target_value": 3.683667965233326, + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:2]-[c:1])>>([c:1]-[N;H0;D2;+0:2]=C(-c1:c:c:c:c:c:1)-c1:c:c:c:c:c:1)", + "reactants": [ + [ + 139643173166960 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643173166960, + "children": [] + } + ] + }, + { + "cost": 3.6675679683685303, + "value": 3.6675679683685303, + "target_value": 3.768314190208912, + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[N;H0;D3;+0:3](-[C:4])-[CH3;D1;+0:1])>>(I-[CH3;D1;+0:1]).([C:2]-[NH;D2;+0:3]-[C:4])", + "reactants": [ + [ + 139643173069680, + 139643173069968 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": false, + "value": 0.0, + "mol": 139643173069680, + "children": [] + }, + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643173069968, "children": [] } ] }, { - "cost": 7.0, - "value": 7.0, - "target_value": 17.0, + "cost": 4.240368843078613, + "value": 4.240368843078613, + "target_value": 4.341115064918995, "reaction": { - "mol": 140598039857296, - "smarts": "([c:2]:[c;H0;D3;+0:1](:[c:3])-[NH;D2;+0:4]-[c:5])>>(Br-[c;H0;D3;+0:1](:[c:2]):[c:3]).([NH2;D1;+0:4]-[c:5])", + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:1]-[c:2])>>(C-C(-C)(-C)-C(=O)-[NH;D2;+0:1]-[c:2])", + "reactants": [ + [ + 139643173070400 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643173070400, + "children": [] + } + ] + }, + { + "cost": 4.31692361831665, + "value": 4.31692361831665, + "target_value": 4.417669840157032, + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([c:2]:[cH;D2;+0:1]:[c:3])>>(Cl-[c;H0;D3;+0:1](:[c:2]):[c:3])", + "reactants": [ + [ + 139643173070880 + ], + [ + 139643173070832 + ], + [ + 139643173068960 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643173070880, + "children": [] + } + ] + }, + { + "cost": 4.31692361831665, + "value": 4.31692361831665, + "target_value": 4.417669840157032, + "reaction": { + "mol": 139643171528960, "index": 1, - "metadata": {} + "metadata": {}, + "smarts": "([c:2]:[cH;D2;+0:1]:[c:3])>>(Cl-[c;H0;D3;+0:1](:[c:2]):[c:3])", + "reactants": [ + [ + 139643173070880 + ], + [ + 139643173070832 + ], + [ + 139643173068960 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643173070832, + "children": [] + } + ] + }, + { + "cost": 4.31692361831665, + "value": 4.31692361831665, + "target_value": 4.417669840157032, + "reaction": { + "mol": 139643171528960, + "index": 2, + "metadata": {}, + "smarts": "([c:2]:[cH;D2;+0:1]:[c:3])>>(Cl-[c;H0;D3;+0:1](:[c:2]):[c:3])", + "reactants": [ + [ + 139643173070880 + ], + [ + 139643173070832 + ], + [ + 139643173068960 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" }, "children": [ { "cost": 0.0, "expandable": true, "value": 0.0, - "mol": 140605332368656, + "mol": 139643173068960, + "children": [] + } + ] + }, + { + "cost": 4.852601051330566, + "value": 4.852601051330566, + "target_value": 4.953347273170948, + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[CH;D3;+0:1](-[C:3])-[C;H0;D3;+0:4](=[O;H0;D1;+0:6])-[c:5])>>(Cl-[CH;D3;+0:1](-[C:2])-[C:3]).(N#[C;H0;D2;+0:4]-[c:5]).([OH2;D0;+0:6])", + "reactants": [ + [ + 139643173070448, + 139643173070736, + 139643173069632 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": false, + "value": 0.0, + "mol": 139643173070448, + "children": [] + }, + { + "cost": 0.0, + "expandable": false, + "value": 0.0, + "mol": 139643173070736, "children": [] }, { "cost": 0.0, "expandable": false, - "value": 0, - "mol": 140602867801296, + "value": 0.0, + "mol": 139643173069632, "children": [] } ] - } - ] - }, - { - "cost": 0.0, - "expandable": false, - "value": 0, - "mol": 140605332204496, - "children": [] - } - ] - } - ] - }, - "molecules": { - "140605332219984": { - "smiles": "Cc1ccc2nc3ccccc3c(Nc3ccc(NC(=S)Nc4ccccc4)cc3)c2c1", - "class": "TreeMolecule", - "parent": null, - "transform": 0 + }, + { + "cost": 5.2155046463012695, + "value": 5.2155046463012695, + "target_value": 5.316250868141651, + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([#7:2]-[CH3;D1;+0:1])>>(C-C(-C)(-C)-O-[C;H0;D3;+0:1](=O)-[#7:2])", + "reactants": [ + [ + 139643173071264 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643173071264, + "children": [] + } + ] + }, + { + "cost": 5.3915696144104, + "value": 5.3915696144104, + "target_value": 5.492315836250782, + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([N;H2;D1;+0]-[c;H0;D3;+0:1](:[c:2]):[c:3])>>(Cl-[c;H0;D3;+0:1](:[c:2]):[c:3])", + "reactants": [ + [ + 139643173071600 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643173071600, + "children": [] + } + ] + }, + { + "cost": 5.560334205627441, + "value": 5.560334205627441, + "target_value": 5.661080427467823, + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:1]-[c:2])>>(O=C(-O-C-c1:c:c:c:c:c:1)-[NH;D2;+0:1]-[c:2])", + "reactants": [ + [ + 139643173072032 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643173072032, + "children": [] + } + ] + }, + { + "cost": 5.652981281280518, + "value": 5.652981281280518, + "target_value": 5.753727503120899, + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([N;H2;D1;+0]-[c;H0;D3;+0:1](:[c:2]):[c:3])>>(Br-[c;H0;D3;+0:1](:[c:2]):[c:3])", + "reactants": [ + [ + 139643173070592 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643173070592, + "children": [] + } + ] + }, + { + "cost": 5.810171127319336, + "value": 5.810171127319336, + "target_value": 5.910917349159718, + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[C;H0;D3;+0:1](=[O;D1;H0:3])-[c;H0;D3;+0:5](:[c:4]):[c:6])>>(C-O-N(-C)-[C;H0;D3;+0:1](-[C:2])=[O;D1;H0:3]).([c:4]:[cH;D2;+0:5]:[c:6])", + "reactants": [ + [ + 139643173070544, + 139643173070064 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": false, + "value": 0.0, + "mol": 139643173070544, + "children": [] + }, + { + "cost": 0.0, + "expandable": false, + "value": 0.0, + "mol": 139643173070064, + "children": [] + } + ] + }, + { + "cost": 5.950585842132568, + "value": 5.950585842132568, + "target_value": 6.05133206397295, + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:2]-[c:1])>>([c:1]-[NH;D2;+0:2]-C-c1:c:c:c:c:c:1)", + "reactants": [ + [ + 139643173072272 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643173072272, + "children": [] + } + ] + }, + { + "cost": 6.106892108917236, + "value": 6.106892108917236, + "target_value": 6.207638330757618, + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([N;H2;D1;+0]-[c;H0;D3;+0:1](:[c:2]):[c:3])>>(O-C(=O)-[c;H0;D3;+0:1](:[c:2]):[c:3])", + "reactants": [ + [ + 139643173072320 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643173072320, + "children": [] + } + ] + }, + { + "cost": 6.275547027587891, + "value": 6.275547027587891, + "target_value": 6.376293249428272, + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:4]-[c;H0;D3;+0:1](:[c:2]):[c:3])>>(F-[c;H0;D3;+0:1](:[c:2]):[c:3]).([NH3;D0;+0:4])", + "reactants": [ + [ + 139643172995808, + 139643172995136 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643172995808, + "children": [] + }, + { + "cost": 0.0, + "expandable": false, + "value": 0.0, + "mol": 139643172995136, + "children": [] + } + ] + }, + { + "cost": 6.425144195556641, + "value": 6.425144195556641, + "target_value": 6.525890417397022, + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([C:1]-[N;H0;D3;+0:2](-[C:3])-[C;H3;D1;+0])>>([C:1]-[NH;D2;+0:2]-[C:3])", + "reactants": [ + [ + 139643173072224 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643173072224, + "children": [] + } + ] + }, + { + "cost": 6.469336032867432, + "value": 6.469336032867432, + "target_value": 6.570082254707813, + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:1]-[c:2])>>(O=C-[NH;D2;+0:1]-[c:2])", + "reactants": [ + [ + 139643172995568 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643172995568, + "children": [] + } + ] + }, + { + "cost": 6.587630748748779, + "value": 6.587630748748779, + "target_value": 6.688376970589161, + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[N;H0;D3;+0:3](-[C:4])-[CH3;D1;+0:1])>>(O-[CH3;D1;+0:1]).([C:2]-[NH;D2;+0:3]-[C:4])", + "reactants": [ + [ + 139643173071648, + 139643173071360 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": false, + "value": 0.0, + "mol": 139643173071648, + "children": [] + }, + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643173071360, + "children": [] + } + ] + }, + { + "cost": 6.601748943328857, + "value": 6.601748943328857, + "target_value": 6.702495165169239, + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([C:1]-[C;H0;D3;+0:2](=[O;H0;D1;+0:3])-[c:4])>>([C:1]-[CH;D3;+0:2](-[OH;D1;+0:3])-[c:4])", + "reactants": [ + [ + 139643172995856 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643172995856, + "children": [] + } + ] + }, + { + "cost": 6.609378337860107, + "value": 6.609378337860107, + "target_value": 6.710124559700489, + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([N;H2;D1;+0]-[c;H0;D3;+0:2](:[c:1]):[c:3])>>([c:1]:[cH;D2;+0:2]:[c:3])", + "reactants": [ + [ + 139643172995472 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": false, + "value": 0.0, + "mol": 139643172995472, + "children": [] + } + ] + }, + { + "cost": 6.733030796051025, + "value": 6.733030796051025, + "target_value": 6.833777017891407, + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[C;H0;D3;+0:1](=[O;D1;H0:3])-[c;H0;D3;+0:4](:[c:5]):[c:6])>>(Cl-[C;H0;D3;+0:1](-[C:2])=[O;D1;H0:3]).(I-[c;H0;D3;+0:4](:[c:5]):[c:6])", + "reactants": [ + [ + 139643173164800, + 139643173164224 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": false, + "value": 0.0, + "mol": 139643173164800, + "children": [] + }, + { + "cost": 0.0, + "expandable": false, + "value": 0.0, + "mol": 139643173164224, + "children": [] + } + ] + }, + { + "cost": 6.907755374908447, + "value": 6.907755374908447, + "target_value": 7.008501596748829, + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:5]-[c:4]:[cH;D2;+0:3]:[cH;D2;+0:1]:[c:2])>>(Cl-[c;H0;D3;+0:1](:[c:2]):[c;H0;D3;+0:3](-Cl):[c:4]-[N+;H0;D3:5](=O)-[O-])", + "reactants": [ + [ + 139643173163312 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643173163312, + "children": [] + } + ] + }, + { + "cost": 6.907755374908447, + "value": 6.907755374908447, + "target_value": 7.008501596748829, + "reaction": { + "mol": 139643171528960, + "index": 0, + "metadata": {}, + "smarts": "([NH2;D1;+0:2]-[c:1])>>([c:1]-[N;H0;D3;+0:2](-C-c1:c:c:c:c:c:1)-C-c1:c:c:c:c:c:1)", + "reactants": [ + [ + 139643173164848 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643173164848, + "children": [] + } + ] + } + ] + } + ] + }, + { + "cost": 3.309605598449707, + "value": 3.309605598449707, + "target_value": 3.309605598449707, + "reaction": { + "mol": 139643154371392, + "index": 0, + "metadata": {}, + "smarts": "([O;D1;H0:2]=[C;H0;D3;+0:1](-[c:3])-[NH;D2;+0:4]-[c:5])>>(O-[C;H0;D3;+0:1](=[O;D1;H0:2])-[c:3]).([NH2;D1;+0:4]-[c:5])", + "reactants": [ + [ + 139643157042560, + 139643157043712 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": false, + "value": 0.0, + "mol": 139643157042560, + "children": [] + }, + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643157043712, + "children": [] + } + ] + }, + { + "cost": 4.04685640335083, + "value": 4.04685640335083, + "target_value": 4.04685640335083, + "reaction": { + "mol": 139643154371392, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[N;H0;D3;+0:3](-[C:4])-[CH3;D1;+0:1])>>(O=[CH2;D1;+0:1]).([C:2]-[NH;D2;+0:3]-[C:4])", + "reactants": [ + [ + 139643166200256, + 139643166201936 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": false, + "value": 0.0, + "mol": 139643166200256, + "children": [] + }, + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643166201936, + "children": [] + } + ] + }, + { + "cost": 6.790102005004883, + "value": 6.790102005004883, + "target_value": 6.790102005004883, + "reaction": { + "mol": 139643154371392, + "index": 0, + "metadata": {}, + "smarts": "([#7:2]-[CH3;D1;+0:1])>>(C-C(-C)(-C)-O-[C;H0;D3;+0:1](=O)-[#7:2])", + "reactants": [ + [ + 139643166202032 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643166202032, + "children": [] + } + ] + }, + { + "cost": 6.830040454864502, + "value": 6.830040454864502, + "target_value": 6.830040454864502, + "reaction": { + "mol": 139643154371392, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[N;H0;D3;+0:3](-[C:4])-[CH3;D1;+0:1])>>(I-[CH3;D1;+0:1]).([C:2]-[NH;D2;+0:3]-[C:4])", + "reactants": [ + [ + 139643166200736, + 139643166203376 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": false, + "value": 0.0, + "mol": 139643166200736, + "children": [] + }, + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643166203376, + "children": [] + } + ] + }, + { + "cost": 6.907755374908447, + "value": 6.907755374908447, + "target_value": 6.907755374908447, + "reaction": { + "mol": 139643154371392, + "index": 0, + "metadata": {}, + "smarts": "([C:1]-[C;H0;D3;+0:2](=[O;H0;D1;+0:3])-[c:4])>>([C:1]-[CH;D3;+0:2](-[OH;D1;+0:3])-[c:4])", + "reactants": [ + [ + 139643166200976 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643166200976, + "children": [] + } + ] + }, + { + "cost": 6.907755374908447, + "value": 6.907755374908447, + "target_value": 6.907755374908447, + "reaction": { + "mol": 139643154371392, + "index": 0, + "metadata": {}, + "smarts": "([#7:2]-[CH3;D1;+0:1])>>(O=[C;H0;D3;+0:1](-[#7:2])-O-C-c1:c:c:c:c:c:1)", + "reactants": [ + [ + 139643166200112 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643166200112, + "children": [] + } + ] + }, + { + "cost": 6.907755374908447, + "value": 6.907755374908447, + "target_value": 6.907755374908447, + "reaction": { + "mol": 139643154371392, + "index": 0, + "metadata": {}, + "smarts": "([C:2]-[CH;D3;+0:1](-[C:3])-[C;H0;D3;+0:4](=[O;H0;D1;+0:6])-[c:5])>>(Cl-[CH;D3;+0:1](-[C:2])-[C:3]).(N#[C;H0;D2;+0:4]-[c:5]).([OH2;D0;+0:6])", + "reactants": [ + [ + 139643166200352, + 139643166202848, + 139643166202608 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643166200352, + "children": [] + }, + { + "cost": 0.0, + "expandable": false, + "value": 0.0, + "mol": 139643166202848, + "children": [] + }, + { + "cost": 0.0, + "expandable": false, + "value": 0.0, + "mol": 139643166202608, + "children": [] + } + ] + }, + { + "cost": 6.907755374908447, + "value": 6.907755374908447, + "target_value": 6.907755374908447, + "reaction": { + "mol": 139643154371392, + "index": 0, + "metadata": {}, + "smarts": "([O;D1;H0:2]=[C;H0;D3;+0:1](-[NH;D2;+0:9]-[c:10])-[c:3]1:[c:4]:[c:5]:[c:6]:[c:7]:[c:8]:1)>>(C-O-[C;H0;D3;+0:1](=[O;D1;H0:2])-[c:3]1:[c:4]:[c:5]:[c:6]:[c:7]:[c:8]:1).([NH2;D1;+0:9]-[c:10])", + "reactants": [ + [ + 139643166201024, + 139643166201744 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": false, + "value": 0.0, + "mol": 139643166201024, + "children": [] + }, + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643166201744, + "children": [] + } + ] + }, + { + "cost": 6.907755374908447, + "value": 6.907755374908447, + "target_value": 6.907755374908447, + "reaction": { + "mol": 139643154371392, + "index": 0, + "metadata": {}, + "smarts": "([C:5]-[C;H0;D3;+0:4](=[O;D1;H0:6])-[c;H0;D3;+0:1](:[c:2]):[c:3])>>(Br-[c;H0;D3;+0:1](:[c:2]):[c:3]).(C-O-N(-C)-[C;H0;D3;+0:4](-[C:5])=[O;D1;H0:6])", + "reactants": [ + [ + 139643166202176, + 139643166201600 + ] + ], + "class": "aizynthfinder.chem.reaction.TemplatedRetroReaction" + }, + "children": [ + { + "cost": 0.0, + "expandable": false, + "value": 0.0, + "mol": 139643166202176, + "children": [] + }, + { + "cost": 0.0, + "expandable": true, + "value": 0.0, + "mol": 139643166201600, + "children": [] + } + ] + } + ] + }, + "molecules": { + "139643154371392": { + "smiles": "CN1CCC(C(=O)c2cccc(NC(=O)c3ccc(F)cc3)c2F)CC1", + "class": "TreeMolecule", + "parent": null, + "transform": 0, + "tracked_atom_indices": {} + }, + "139643166203664": { + "smiles": "[C:14](=[O:15])([c:16]1[cH:17][cH:18][c:19]([F:20])[cH:21][cH:22]1)[Cl:900]", + "class": "TreeMolecule", + "parent": 139643154371392, + "transform": 1, + "tracked_atom_indices": {} + }, + "139643171528960": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643154371392, + "transform": 1, + "tracked_atom_indices": {} + }, + "139643166201504": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([N+:13](=[O:900])[O-:901])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643162454288": { + "smiles": "[CH3:1][I:900]=[N+:13]([c:12]1[cH:11][cH:10][cH:9][c:8]([C:6]([CH:5]2[CH2:4][CH2:3][NH:2][CH2:26][CH2:25]2)=[O:7])[c:23]1[F:24])[O-:901]", + "class": "TreeMolecule", + "parent": 139643166201504, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643162454624": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([CH:6]([OH:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([N+:13](=[O:900])[O-:901])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643166201504, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643162455056": { + "smiles": "[C:1]([N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([N+:13](=[O:900])[O-:901])[c:23]2[F:24])[CH2:25][CH2:26]1)([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:905]", + "class": "TreeMolecule", + "parent": 139643166201504, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643162454144": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([N+:13](=[O:900])[O-:901])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643166201504, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643162454048": { + "smiles": "[C:1]([N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([N+:13](=[O:900])[O-:901])[c:23]2[F:24])[CH2:25][CH2:26]1)(=[O:900])[O:901][CH2:902][c:903]1[cH:904][cH:905][cH:906][cH:907][cH:908]1", + "class": "TreeMolecule", + "parent": 139643166201504, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643162455488": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][c:11]([Cl:900])[c:12]([N+:13](=[O:900])[O-:901])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643166201504, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643162455728": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][c:10]([Cl:900])[cH:11][c:12]([N+:13](=[O:900])[O-:901])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643166201504, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643162455968": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[c:9]([Cl:900])[cH:10][cH:11][c:12]([N+:13](=[O:900])[O-:901])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643166201504, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643166201120": { + "smiles": "[CH3:1][NH:2][CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]1[cH:9][cH:10][cH:11][c:12]([N+:13](=[O:900])[O-:901])[c:23]1[F:24])[CH2:25][CH2:26][Cl:900]", + "class": "TreeMolecule", + "parent": 139643166201504, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643166202416": { + "smiles": "[CH3:1][NH:2][CH2:26][CH2:25][CH:5]([CH2:4][CH2:3][Cl:900])[C:6](=[O:7])[c:8]1[cH:9][cH:10][cH:11][c:12]([N+:13](=[O:900])[O-:901])[c:23]1[F:24]", + "class": "TreeMolecule", + "parent": 139643166201504, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643173163552": { + "smiles": "[CH2:1]=[O:900]", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173165280": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643162452464": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643166163824": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([N+:13](=[O:900])[O-:901])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643164870880": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[N:902]([O:901][CH3:900])[CH3:903])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643164872128": { + "smiles": "[cH:8]1[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]1[F:24]", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643171738528": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([N:13]=[C:900]([c:901]3[cH:902][cH:903][cH:904][cH:905][cH:906]3)[c:907]3[cH:908][cH:909][cH:910][cH:911][cH:912]3)[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643164872464": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643171738432": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][C:904]([C:901]([F:900])([F:902])[F:903])=[O:905])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643171739248": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([Br:900])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643171739344": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[c:9]([Cl:900])[cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643171739536": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][c:11]([Cl:900])[c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643171739632": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][c:10]([Cl:900])[cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643171738048": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][C:901]([CH3:900])=[O:902])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643171740112": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([F:900])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643171740688": { + "smiles": "[NH3:13]", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643171740400": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][C:901](=[O:900])[O:902][CH2:903][c:904]3[cH:905][cH:906][cH:907][cH:908][cH:909]3)[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643171741456": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][C:904]([C:901]([CH3:900])([CH3:902])[CH3:903])=[O:905])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643171741024": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([N:13]([CH2:900][c:901]3[cH:902][cH:903][cH:904][cH:905][cH:906]3)[CH2:907][c:908]3[cH:909][cH:910][cH:911][cH:912][cH:913]3)[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643171740928": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([C:901]([OH:900])=[O:902])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643171740640": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][CH2:900][c:901]3[cH:902][cH:903][cH:904][cH:905][cH:906]3)[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643171740880": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([CH:6]([OH:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643171740016": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([Cl:900])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643164869104": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[c:9]([Cl:900])[cH:10][cH:11][c:12]([N+:13](=[O:901])[O-:902])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643164869056": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][c:10]([Cl:900])[cH:11][c:12]([N+:13](=[O:901])[O-:902])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643173070016": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][c:10]([Cl:900])[c:11]([Cl:901])[c:12]([N+:13](=[O:902])[O-:903])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643171739392": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([Br:900])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643164870496": { + "smiles": "[NH4+:13]", + "class": "TreeMolecule", + "parent": 139643162452464, + "transform": 4, + "tracked_atom_indices": {} + }, + "139643162692720": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([N+:13](=[O:900])[O-:901])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643162692240": { + "smiles": "[N:2]1([CH2:900][c:901]2[cH:902][cH:903][cH:904][cH:905][cH:906]2)[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643162690464": { + "smiles": "[N:2]1([C:901](=[O:900])[O:902][CH2:903][c:904]2[cH:905][cH:906][cH:907][cH:908][cH:909]2)[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164991936": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643162692624": { + "smiles": "[N:2]1([C:901]([CH3:900])=[O:902])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164991840": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][C:901]([CH3:900])=[O:902])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164991984": { + "smiles": "[N:2]1([C:904]([C:901]([F:900])([F:902])[F:903])=[O:905])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164993136": { + "smiles": "[N:2]1([C:903]([O:902][CH2:901][CH3:900])=[O:904])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164992800": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][C:904]([C:901]([F:900])([F:902])[F:903])=[O:905])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164992944": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][CH:901]=[O:900])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164993280": { + "smiles": "[N:2]1([C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][C:912]([O:911][C:908]([CH3:907])([CH3:909])[CH3:910])=[O:913])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164992848": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][C:904]([C:901]([CH3:900])([CH3:902])[CH3:903])=[O:905])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164994720": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][c:10]([Cl:900])[cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164994864": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[c:9]([Cl:900])[cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164992512": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][c:11]([Cl:900])[c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164992080": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([C:901]([OH:900])=[O:902])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164995392": { + "smiles": "[NH3:13]", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164995248": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([F:900])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643155805712": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][C:901](=[O:900])[O:902][CH2:903][c:904]3[cH:905][cH:906][cH:907][cH:908][cH:909]3)[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164856432": { + "smiles": "[N:2]1([C:905]([O:904][CH2:903][CH2:902][CH2:901][CH3:900])=[O:906])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164857152": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][cH:12][c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164856960": { + "smiles": "[N:2]1([C:901](=[O:900])[O-:902])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164857104": { + "smiles": "[N:2]1([C:901](=[O:900])[c:902]2[cH:903][cH:904][cH:905][cH:906][cH:907]2)[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164993712": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][CH2:900][c:901]3[cH:902][cH:903][cH:904][cH:905][cH:906]3)[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164993664": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([N:13]=[C:900]([c:901]3[cH:902][cH:903][cH:904][cH:905][cH:906]3)[c:907]3[cH:908][cH:909][cH:910][cH:911][cH:912]3)[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164994192": { + "smiles": "[n:2]1[cH:3][cH:4][c:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[cH:25][cH:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643166164976": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[cH:23]2)[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643171531312": { + "smiles": "[N:2]1([CH2:901][CH3:900])[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643164994768": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([Cl:900])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643166164112": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[N:902]([O:901][CH3:900])[CH3:903])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643166166464": { + "smiles": "[cH:8]1[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]1[F:24]", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643166164448": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([Br:900])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643166163392": { + "smiles": "[N:2]1([c:909]2[n:908][c:907]([NH:906][CH2:905][c:904]3[cH:903][cH:902][c:901]([F:900])[cH:923][c:921]3[F:922])[c:912](-[c:913]3[cH:914][cH:915][c:916]([F:917])[cH:918][c:919]3[F:920])[cH:911][n:910]2)[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643173165280, + "transform": 3, + "tracked_atom_indices": {} + }, + "139643173069200": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][C:901]([CH3:900])=[O:902])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173069008": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][C:905]([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:906])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173069440": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][C:904]([C:901]([F:900])([F:902])[F:903])=[O:905])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173166960": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([N:13]=[C:900]([c:901]3[cH:902][cH:903][cH:904][cH:905][cH:906]3)[c:907]3[cH:908][cH:909][cH:910][cH:911][cH:912]3)[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173069680": { + "smiles": "[CH3:1][I:900]", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173069968": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173070400": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][C:904]([C:901]([CH3:900])([CH3:902])[CH3:903])=[O:905])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173070880": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[c:9]([Cl:900])[cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173070832": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][c:11]([Cl:900])[c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173068960": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][c:10]([Cl:900])[cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173070448": { + "smiles": "[C:6]([c:8]1[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]1[F:24])#[N:901]", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173070736": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([Cl:900])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173069632": { + "smiles": "[OH2:7]", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173071264": { + "smiles": "[C:1]([N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1)([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:905]", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173071600": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([Cl:900])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173072032": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][C:901](=[O:900])[O:902][CH2:903][c:904]3[cH:905][cH:906][cH:907][cH:908][cH:909]3)[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173070592": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([Br:900])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173070544": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[N:902]([O:901][CH3:900])[CH3:903])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173070064": { + "smiles": "[cH:8]1[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]1[F:24]", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173072272": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][CH2:900][c:901]3[cH:902][cH:903][cH:904][cH:905][cH:906]3)[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173072320": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([C:901]([OH:900])=[O:902])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643172995808": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([F:900])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643172995136": { + "smiles": "[NH3:13]", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173072224": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643172995568": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][CH:901]=[O:900])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173071648": { + "smiles": "[CH3:1][OH:900]", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173071360": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643172995856": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([CH:6]([OH:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643172995472": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][cH:12][c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173164800": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[Cl:900])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173164224": { + "smiles": "[c:8]1([I:901])[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]1[F:24]", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173163312": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][c:10]([Cl:900])[c:11]([Cl:901])[c:12]([N+:13](=[O:902])[O-:903])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643173164848": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([N:13]([CH2:900][c:901]3[cH:902][cH:903][cH:904][cH:905][cH:906]3)[CH2:907][c:908]3[cH:909][cH:910][cH:911][cH:912][cH:913]3)[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643171528960, + "transform": 2, + "tracked_atom_indices": {} + }, + "139643157042560": { + "smiles": "[C:14](=[O:15])([c:16]1[cH:17][cH:18][c:19]([F:20])[cH:21][cH:22]1)[OH:900]", + "class": "TreeMolecule", + "parent": 139643154371392, + "transform": 1, + "tracked_atom_indices": {} + }, + "139643157043712": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643154371392, + "transform": 1, + "tracked_atom_indices": {} + }, + "139643166200256": { + "smiles": "[CH2:1]=[O:900]", + "class": "TreeMolecule", + "parent": 139643154371392, + "transform": 1, + "tracked_atom_indices": {} + }, + "139643166201936": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][C:14](=[O:15])[c:16]3[cH:17][cH:18][c:19]([F:20])[cH:21][cH:22]3)[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643154371392, + "transform": 1, + "tracked_atom_indices": {} + }, + "139643166202032": { + "smiles": "[C:1]([N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][C:14](=[O:15])[c:16]3[cH:17][cH:18][c:19]([F:20])[cH:21][cH:22]3)[c:23]2[F:24])[CH2:25][CH2:26]1)([O:904][C:901]([CH3:900])([CH3:902])[CH3:903])=[O:905]", + "class": "TreeMolecule", + "parent": 139643154371392, + "transform": 1, + "tracked_atom_indices": {} + }, + "139643166200736": { + "smiles": "[CH3:1][I:900]", + "class": "TreeMolecule", + "parent": 139643154371392, + "transform": 1, + "tracked_atom_indices": {} + }, + "139643166203376": { + "smiles": "[NH:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][C:14](=[O:15])[c:16]3[cH:17][cH:18][c:19]([F:20])[cH:21][cH:22]3)[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643154371392, + "transform": 1, + "tracked_atom_indices": {} + }, + "139643166200976": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([CH:6]([OH:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][C:14](=[O:15])[c:16]3[cH:17][cH:18][c:19]([F:20])[cH:21][cH:22]3)[c:23]2[F:24])[CH2:25][CH2:26]1", + "class": "TreeMolecule", + "parent": 139643154371392, + "transform": 1, + "tracked_atom_indices": {} }, - "140605332201936": { - "smiles": "Cc1ccc2nc3ccccc3c(Cl)c2c1", + "139643166200112": { + "smiles": "[C:1]([N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH:13][C:14](=[O:15])[c:16]3[cH:17][cH:18][c:19]([F:20])[cH:21][cH:22]3)[c:23]2[F:24])[CH2:25][CH2:26]1)(=[O:900])[O:901][CH2:902][c:903]1[cH:904][cH:905][cH:906][cH:907][cH:908]1", "class": "TreeMolecule", - "parent": 140605332219984, - "transform": 1 + "parent": 139643154371392, + "transform": 1, + "tracked_atom_indices": {} }, - "140605332205072": { - "smiles": "Nc1ccc(NC(=S)Nc2ccccc2)cc1", + "139643166200352": { + "smiles": "[C:6]([c:8]1[cH:9][cH:10][cH:11][c:12]([NH:13][C:14](=[O:15])[c:16]2[cH:17][cH:18][c:19]([F:20])[cH:21][cH:22]2)[c:23]1[F:24])#[N:901]", "class": "TreeMolecule", - "parent": 140605332219984, - "transform": 1 + "parent": 139643154371392, + "transform": 1, + "tracked_atom_indices": {} }, - "140598039857296": { - "smiles": "Cc1ccc2nc3ccccc3c(Nc3ccc(N=C=S)cc3)c2c1", + "139643166202848": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([Cl:900])[CH2:25][CH2:26]1", "class": "TreeMolecule", - "parent": 140605332219984, - "transform": 1 + "parent": 139643154371392, + "transform": 1, + "tracked_atom_indices": {} }, - "140598039857616": { - "smiles": "Cc1ccc2nc3ccccc3c(Cl)c2c1", + "139643166202608": { + "smiles": "[OH2:7]", "class": "TreeMolecule", - "parent": 140598039857296, - "transform": 2 + "parent": 139643154371392, + "transform": 1, + "tracked_atom_indices": {} }, - "140605332368528": { - "smiles": "Nc1ccc(N=C=S)cc1", + "139643166201024": { + "smiles": "[C:14](=[O:15])([c:16]1[cH:17][cH:18][c:19]([F:20])[cH:21][cH:22]1)[O:901][CH3:900]", "class": "TreeMolecule", - "parent": 140598039857296, - "transform": 2 + "parent": 139643154371392, + "transform": 1, + "tracked_atom_indices": {} }, - "140605332368656": { - "smiles": "Cc1ccc2nc3ccccc3c(Br)c2c1", + "139643166201744": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[c:8]2[cH:9][cH:10][cH:11][c:12]([NH2:13])[c:23]2[F:24])[CH2:25][CH2:26]1", "class": "TreeMolecule", - "parent": 140598039857296, - "transform": 2 + "parent": 139643154371392, + "transform": 1, + "tracked_atom_indices": {} }, - "140602867801296": { - "smiles": "Nc1ccc(N=C=S)cc1", + "139643166202176": { + "smiles": "[CH3:1][N:2]1[CH2:3][CH2:4][CH:5]([C:6](=[O:7])[N:903]([O:902][CH3:901])[CH3:904])[CH2:25][CH2:26]1", "class": "TreeMolecule", - "parent": 140598039857296, - "transform": 2 + "parent": 139643154371392, + "transform": 1, + "tracked_atom_indices": {} }, - "140605332204496": { - "smiles": "Nc1ccccc1", + "139643166201600": { + "smiles": "[c:8]1([Br:900])[cH:9][cH:10][cH:11][c:12]([NH:13][C:14](=[O:15])[c:16]2[cH:17][cH:18][c:19]([F:20])[cH:21][cH:22]2)[c:23]1[F:24]", "class": "TreeMolecule", - "parent": 140605332219984, - "transform": 1 + "parent": 139643154371392, + "transform": 1, + "tracked_atom_indices": {} } } } \ No newline at end of file diff --git a/tests/retrostar/test_retrostar.py b/tests/retrostar/test_retrostar.py index b0e1ff6..a986173 100644 --- a/tests/retrostar/test_retrostar.py +++ b/tests/retrostar/test_retrostar.py @@ -1,3 +1,5 @@ +import numpy as np + from aizynthfinder.search.retrostar.search_tree import SearchTree from aizynthfinder.chem.serialization import MoleculeSerializer @@ -112,10 +114,11 @@ def test_split_andor_tree(shared_datadir, default_config): routes = tree.routes() - assert len(routes) == 3 + assert len(routes) == 97 def test_update(shared_datadir, default_config, setup_stock): + # Todo: re-write setup_stock( default_config, "Nc1ccc(NC(=S)Nc2ccccc2)cc1", @@ -132,8 +135,10 @@ def test_update(shared_datadir, default_config, setup_stock): saved_root_value = tree.root.value tree.mol_nodes[-1].parent.update(35, from_mol=tree.mol_nodes[-1].mol) - assert [child.value for child in tree.root.children] == [5.0, 45.0] - assert tree.root.value != saved_root_value - assert tree.root.value == 5 + assert [np.round(child.value, 2) for child in tree.root.children][:2] == [ + 3.17, + 3.31, + ] + assert tree.root.value == saved_root_value tree.serialize("temp.json") diff --git a/tests/test_analysis.py b/tests/test_analysis.py index 0f77214..cc1ec00 100644 --- a/tests/test_analysis.py +++ b/tests/test_analysis.py @@ -12,11 +12,11 @@ def test_sort_nodes(setup_analysis): - analysis, nodes = setup_analysis() + analysis, _ = setup_analysis() best_nodes, best_scores = analysis.sort() - assert len(best_nodes) == 7 + assert len(best_nodes) == 5 assert np.round(best_scores[0], 4) == 0.9940 best_nodes, best_scores = analysis.sort(RouteSelectionArguments(nmin=0)) @@ -25,15 +25,15 @@ def test_sort_nodes(setup_analysis): def test_sort_nodes_nmax(setup_analysis): - analysis, nodes = setup_analysis() + analysis, _ = setup_analysis() - best_nodes, best_scores = analysis.sort(RouteSelectionArguments(nmax=5)) + best_nodes, _ = analysis.sort(RouteSelectionArguments(nmax=5)) assert len(best_nodes) == 5 def test_sort_nodes_return_all(setup_analysis): - analysis, nodes = setup_analysis() + analysis, _ = setup_analysis() best_nodes, best_scores = analysis.sort(RouteSelectionArguments(return_all=True)) @@ -55,14 +55,14 @@ def test_sort_routes(setup_analysis_andor_tree): best_routes, best_scores = analysis.sort() - assert len(best_routes) == 3 + assert len(best_routes) == 25 assert best_scores[0] == 1 def test_best_node(setup_analysis): analysis, nodes = setup_analysis(scorer=NumberOfReactionsScorer()) - assert analysis.best() is nodes[51] + assert analysis.best() is nodes[32] def test_best_route(setup_analysis_andor_tree): @@ -76,8 +76,8 @@ def test_tree_statistics(setup_analysis): stats = analysis.tree_statistics() - assert stats["number_of_nodes"] == 61 - assert stats["max_transforms"] == 7 + assert stats["number_of_nodes"] == 40 + assert stats["max_transforms"] == 6 assert stats["max_children"] == 10 assert stats["number_of_routes"] == 10 assert stats["number_of_solved_routes"] == 1 @@ -86,27 +86,27 @@ def test_tree_statistics(setup_analysis): assert stats["number_of_steps"] == 2 assert stats["number_of_precursors"] == 4 assert stats["number_of_precursors_in_stock"] == 4 - mol_str = "CN1CCC(Cl)CC1, O, N#Cc1cccc(N)c1F, O=C(Cl)c1ccc(F)cc1" + mol_str = "CN1CCC(Cl)CC1, O, O=C(Cl)c1ccc(F)cc1, N#Cc1cccc(N)c1F" assert stats["precursors_in_stock"] == mol_str assert stats["precursors_not_in_stock"] == "" - assert stats["policy_used_counts"] == {} + assert stats["policy_used_counts"] == {"uspto": 39} def test_tree_statistics_andor_tree(setup_analysis_andor_tree): - analysis = setup_analysis_andor_tree(scorer=NumberOfReactionsScorer()) + analysis = setup_analysis_andor_tree() stats = analysis.tree_statistics() - assert stats["number_of_nodes"] == 9 - assert stats["max_transforms"] == 2 - assert stats["max_children"] == 2 - assert stats["number_of_routes"] == 3 - assert stats["number_of_solved_routes"] == 3 - assert stats["top_score"] == 1 + assert stats["number_of_nodes"] == 124 + assert stats["max_transforms"] == 4 + assert stats["max_children"] == 32 + assert stats["number_of_routes"] == 97 + assert stats["number_of_solved_routes"] == 1 + assert np.round(stats["top_score"], 3) == 0.994 assert stats["is_solved"] - assert stats["number_of_steps"] == 1 - assert stats["number_of_precursors"] == 2 - assert stats["number_of_precursors_in_stock"] == 2 - mol_str = "Cc1ccc2nc3ccccc3c(Cl)c2c1, Nc1ccc(NC(=S)Nc2ccccc2)cc1" + assert stats["number_of_steps"] == 2 + assert stats["number_of_precursors"] == 3 + assert stats["number_of_precursors_in_stock"] == 3 + mol_str = "O=C(Cl)c1ccc(F)cc1, CN1CCC(C(=O)Cl)CC1, Nc1cccc(I)c1F" assert stats["precursors_in_stock"] == mol_str assert stats["precursors_not_in_stock"] == "" assert stats["policy_used_counts"] == {} @@ -117,7 +117,7 @@ def test_create_route_collection_full(setup_analysis, mocker): routes = RouteCollection.from_analysis(analysis) - assert len(routes) == 7 + assert len(routes) == 5 # Check a few of the routes assert np.round(routes.scores[0], 3) == 0.994 assert len(routes.reaction_trees[0].graph) == 8 @@ -133,9 +133,9 @@ def test_create_route_collection_full(setup_analysis, mocker): mocker.patch("aizynthfinder.utils.image.make_graphviz_image") # Just see that the code does not crash, does not verify content - assert len(routes.images) == 7 - assert len(routes.dicts) == 7 - assert len(routes.jsons) == 7 + assert len(routes.images) == 5 + assert len(routes.dicts) == 5 + assert len(routes.jsons) == 5 def test_create_route_collection_andor_tree(setup_analysis_andor_tree): @@ -143,8 +143,8 @@ def test_create_route_collection_andor_tree(setup_analysis_andor_tree): routes = RouteCollection.from_analysis(analysis) - assert len(routes) == 3 - assert routes.nodes == [None, None, None] + assert len(routes) == 21 + assert routes.nodes == 21 * [None] def test_compute_new_score(setup_analysis): @@ -239,6 +239,12 @@ def test_create_combine_tree_dict_from_json(load_reaction_tree): def test_create_combine_tree_dict_from_tree( setup_stock, default_config, load_reaction_tree, shared_datadir ): + def remove_metadata(tree_dict): + if "metadata" in tree_dict: + tree_dict["metadata"] = {} + for child in tree_dict.get("children", []): + remove_metadata(child) + setup_stock( default_config, "Nc1ccc(NC(=S)Nc2ccccc2)cc1", @@ -255,9 +261,10 @@ def test_create_combine_tree_dict_from_tree( collection = RouteCollection.from_analysis( analysis, RouteSelectionArguments(nmin=3) ) - expected = load_reaction_tree("combined_example_tree.json") + expected = load_reaction_tree("combined_example_tree2.json") combined_dict = collection.combined_reaction_trees().to_dict() + remove_metadata(combined_dict) # Mapped reaction SMILES not reproducible! assert len(combined_dict["children"]) == 2 assert combined_dict["children"][0]["is_reaction"] diff --git a/tests/test_cli.py b/tests/test_cli.py index 93d62cb..ed07789 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -126,7 +126,7 @@ def test_cli_multiple_smiles( "aizynthfinder.interfaces.aizynthcli.pd.DataFrame.from_dict" ) smiles_input = create_dummy_smiles_source("txt") - output_name = str(tmpdir / "data.hdf5") + output_name = str(tmpdir / "data.json.gz") add_cli_arguments( f"--smiles {smiles_input} --config config_local.yml --output {output_name}" ) @@ -150,7 +150,7 @@ def test_cli_multiple_smiles_unsanitizable( smiles_input = str(tmpdir / "smiles_source.txt") with open(smiles_input, "w") as fileobj: fileobj.write("n1(c(=O)[nH]c2c(c1=O)c(c(s2)C(=O)N(C)C)C)c1c(N(=O)O)cccc1") - output_name = str(tmpdir / "data.hdf5") + output_name = str(tmpdir / "data.json.gz") add_cli_arguments( f"--smiles {smiles_input} --config config_local.yml --output {output_name}" ) @@ -161,7 +161,7 @@ def test_cli_multiple_smiles_unsanitizable( assert "Failed to setup search" in output.out assert output.out.count("Done with") == 0 assert f"Output saved to {output_name}" in output.out - assert len(pd.read_hdf(output_name, "table")) == 0 + assert len(pd.read_json(output_name, orient="table")) == 0 def test_cli_single_smile_with_postprocessing( diff --git a/tests/test_reactiontree.py b/tests/test_reactiontree.py index 003297e..a44158e 100644 --- a/tests/test_reactiontree.py +++ b/tests/test_reactiontree.py @@ -4,6 +4,12 @@ def test_mcts_route_to_reactiontree(setup_linear_mcts, load_reaction_tree): + def remove_metadata(tree_dict): + if "metadata" in tree_dict: + tree_dict["metadata"] = {} + for child in tree_dict.get("children", []): + remove_metadata(child) + _, node = setup_linear_mcts() expected_dict = load_reaction_tree("linear_route.json") @@ -22,7 +28,9 @@ def test_mcts_route_to_reactiontree(setup_linear_mcts, load_reaction_tree): "c1ccccc1", "OOc1ccccc1", } - assert reaction_tree.to_dict() == expected_dict + actual_dict = reaction_tree.to_dict() + remove_metadata(actual_dict) + assert actual_dict == expected_dict def test_reactiontree_from_dict(load_reaction_tree): diff --git a/tests/utils/test_file_utils.py b/tests/utils/test_file_utils.py index 5f051cb..5c2e9b6 100644 --- a/tests/utils/test_file_utils.py +++ b/tests/utils/test_file_utils.py @@ -5,7 +5,13 @@ import pytest import pandas as pd -from aizynthfinder.utils.files import cat_hdf_files, split_file, start_processes +from aizynthfinder.utils.files import ( + cat_datafiles, + split_file, + start_processes, + read_datafile, + save_datafile, +) @pytest.fixture @@ -80,7 +86,7 @@ def test_cat_hdf(create_dummy_stock1, create_dummy_stock2, tmpdir): filename = str(tmpdir / "output.hdf") inputs = [create_dummy_stock1("hdf5"), create_dummy_stock2] - cat_hdf_files(inputs, filename) + cat_datafiles(inputs, filename) data = pd.read_hdf(filename, "table") assert len(data) == 4 @@ -97,7 +103,7 @@ def test_cat_hdf_no_trees(tmpdir, create_dummy_stock1, create_dummy_stock2): tree_filename = str(tmpdir / "trees.json") inputs = [create_dummy_stock1("hdf5"), create_dummy_stock2] - cat_hdf_files(inputs, hdf_filename, tree_filename) + cat_datafiles(inputs, hdf_filename, tree_filename) assert not os.path.exists(tree_filename) @@ -112,10 +118,29 @@ def test_cat_hdf_trees(tmpdir): pd.DataFrame({"mol": ["A", "B"], "trees": trees1}).to_hdf(filename1, "table") pd.DataFrame({"mol": ["A", "B"], "trees": trees2}).to_hdf(filename2, "table") - cat_hdf_files([filename1, filename2], hdf_filename, tree_filename) + cat_datafiles([filename1, filename2], hdf_filename, tree_filename) assert os.path.exists(tree_filename + ".gz") with gzip.open(tree_filename + ".gz", "rt", encoding="UTF-8") as fileobj: trees_cat = json.load(fileobj) assert trees_cat == trees1 + trees2 assert "trees" not in pd.read_hdf(hdf_filename, "table") + + +@pytest.mark.parametrize( + ("filename"), + [ + ("temp.json"), + ("temp.hdf5"), + ], +) +def test_save_load_datafile_roundtrip(filename, tmpdir): + data1 = pd.DataFrame({"a": [0, 1, 2], "b": [2, 3, 4]}) + + save_datafile(data1, tmpdir / filename) + + data2 = read_datafile(tmpdir / filename) + + assert data1.columns.to_list() == data2.columns.to_list() + assert data1.a.to_list() == data2.a.to_list() + assert data1.b.to_list() == data2.b.to_list() From 68a1903a71509c86e41656ccc3619abf6bf72171 Mon Sep 17 00:00:00 2001 From: "Genheden, Samuel" Date: Mon, 28 Nov 2022 11:04:20 +0100 Subject: [PATCH 2/7] Update action workflows --- .github/workflows/docs.yml | 2 +- .github/workflows/tests.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index db735ff..47b54a9 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -8,7 +8,7 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: build run: | wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh | diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 1f0fed8..cd1a0ef 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -10,7 +10,7 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Run run: | wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh | From 84a09c37e0a7efd82fe7564540cb689954a2362e Mon Sep 17 00:00:00 2001 From: "Genheden, Samuel" Date: Mon, 28 Nov 2022 11:30:58 +0100 Subject: [PATCH 3/7] Increasing verbosity for action output --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index cd1a0ef..3a7626c 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -15,7 +15,7 @@ jobs: run: | wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh | bash -s -- --batch - conda env create -f env-dev.yml + conda env create -vv -f env-dev.yml conda run --name aizynth-dev poetry install conda run --name aizynth-dev inv full-tests - name: Upload coverage to Codecov From 5b537fd65da5573c661247d960118c372e3eadcc Mon Sep 17 00:00:00 2001 From: "Genheden, Samuel" Date: Mon, 28 Nov 2022 11:46:33 +0100 Subject: [PATCH 4/7] Update dev yaml file --- env-dev.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/env-dev.yml b/env-dev.yml index c5cbd91..ec81ef7 100644 --- a/env-dev.yml +++ b/env-dev.yml @@ -3,8 +3,7 @@ channels: - https://conda.anaconda.org/conda-forge - defaults dependencies: - - python>=3.6,<3.10 + - python>=3.8,<3.10 - graphviz>=2.38,<3.0 - - pytables>=3.7.0,<4.0.0 - rdkit=>2019.09.1 - poetry>=1.1.4,<2.0 From c4155ab24052f9c58e8c91bbdd8c96556518369c Mon Sep 17 00:00:00 2001 From: "Genheden, Samuel" Date: Mon, 28 Nov 2022 14:28:27 +0100 Subject: [PATCH 5/7] Public release 3.6.0 --- .github/workflows/tests.yml | 2 +- .gitignore | 6 +- CHANGELOG.md | 19 + README.md | 28 +- aizynthfinder/aizynthfinder.py | 18 + aizynthfinder/analysis/routes.py | 51 +- aizynthfinder/context/stock/queries.py | 5 + aizynthfinder/context/stock/stock.py | 18 +- aizynthfinder/interfaces/aizynthcli.py | 23 +- aizynthfinder/interfaces/gui/clustering.py | 13 +- aizynthfinder/reactiontree.py | 86 +- aizynthfinder/search/mcts/node.py | 21 +- aizynthfinder/search/mcts/search.py | 12 +- aizynthfinder/search/mcts/utils.py | 1 + aizynthfinder/training/keras_models.py | 12 +- .../training/preprocess_expansion.py | 11 +- aizynthfinder/training/preprocess_filter.py | 9 +- .../training/preprocess_recommender.py | 11 +- aizynthfinder/training/utils.py | 11 +- aizynthfinder/utils/image.py | 159 +- aizynthfinder/utils/logging.py | 5 +- aizynthfinder/utils/models.py | 26 +- aizynthfinder/utils/mongo.py | 14 +- docs/cli.rst | 54 +- docs/conf.py | 2 +- docs/configuration.rst | 27 +- docs/gui.rst | 1 + docs/gui_input.png | Bin 45582 -> 37146 bytes docs/gui_results.png | Bin 107023 -> 80139 bytes docs/howto.rst | 86 + docs/index.rst | 29 +- docs/python_interface.rst | 2 +- docs/training.rst | 6 + env-dev.yml | 4 +- env-users.yml | 9 +- poetry.lock | 3573 +++++------------ pyproject.toml | 41 +- tests/data/linear_route.json | 4 + tests/mcts/test_node.py | 16 + tests/test_analysis.py | 57 +- tests/test_cli.py | 52 +- tests/test_finder.py | 28 + tests/test_reactiontree.py | 45 +- tests/test_training.py | 70 +- tests/utils/test_external_tf_models.py | 24 +- tests/utils/test_image.py | 26 + 46 files changed, 1835 insertions(+), 2882 deletions(-) create mode 100644 docs/howto.rst diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 3a7626c..2966c89 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -16,7 +16,7 @@ jobs: wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh | bash -s -- --batch conda env create -vv -f env-dev.yml - conda run --name aizynth-dev poetry install + conda run --name aizynth-dev poetry install -E all conda run --name aizynth-dev inv full-tests - name: Upload coverage to Codecov uses: codecov/codecov-action@v1 diff --git a/.gitignore b/.gitignore index 265431e..c8e96e5 100644 --- a/.gitignore +++ b/.gitignore @@ -70,9 +70,9 @@ instance/ # Sphinx documentation docs/build/ -docs/source/aizynth* -docs/source/modules.rst -docs/source/cli_help.txt +docs/aizynth* +docs/modules.rst +docs/cli_help.txt # PyBuilder target/ diff --git a/CHANGELOG.md b/CHANGELOG.md index 3bb00f1..f497bfb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,24 @@ # CHANGELOG +## Version 3.6.0 2022-11-28 (2022-11-25) + +### Features + +- aizynthfinder can now be installed as a pure-python package +- ReactionTree now store at what iteration the route was created +- ReactionTree now supports a metadata property +- MCTS nodes populate a property that stores at what iteration the route was created +- aizynthcli now outputs stock information and route metadata and scores +- aizynthcli now has better error handling of invalid SMILES input +- Graphviz dependency for route drawing is removed, pure python implementation is used instead +- Dependencies reworked so that a minimal package can be installed +- Extra dependencies are related to route distances, clustering, training, MongoDB and external models + +### Trivial changes + +- RDKit and route-distances package now installed from pypi +- Documentation updated and extended + ## Version 3.5.0 2022-11-28 (2022-07-21) ### Features diff --git a/README.md b/README.md index ba571c8..500b70c 100644 --- a/README.md +++ b/README.md @@ -47,35 +47,10 @@ Then execute the following commands in the root of the repository conda env create -f env-dev.yml conda activate aizynth-dev - poetry install + poetry install --E all the `aizynthfinder` package is now installed in editable mode. -### Troubleshooting - -If the above simple instructions does not work, here are the more detailed instructions. You might have to modify conda channels or similar if the dependencies fails to install on your OS. - -First, install these conda packages - - conda install -c conda-forge "rdkit=>2019.09.1" -y - conda install graphviz -y - -Secondly, install the ``aizynthfinder`` package - - python -m pip install https://github.com/MolecularAI/aizynthfinder/archive/v3.4.0.tar.gz - - -if you want to install the latest version - -or, if you have cloned this repository - - conda install poetry - python poetry - - -> Note on the graphviz installation: this package does not depend on any third-party python interfaces to graphviz but instead calls the `dot` executable directly. If the executable is not in the `$PATH` environmental variable, the generation of route images will not work. If unable to install it properly with the default conda channel, try using `-c anaconda`. - - ## Usage The tool will install the ``aizynthcli`` and ``aizynthapp`` tools @@ -148,6 +123,7 @@ Please use ``black`` package for formatting, and follow ``pep8`` style guide. * [@SGenheden](https://www.github.com/SGenheden) * [@EBjerrum](https://www.github.com/EBjerrum) * [@A-Thakkar](https://www.github.com/A-Thakkar) +* [@benteb](https://www.github.com/benteb) The contributors have limited time for support questions, but please do not hesitate to submit an issue (see above). diff --git a/aizynthfinder/aizynthfinder.py b/aizynthfinder/aizynthfinder.py index 7df1d10..bee3eb0 100644 --- a/aizynthfinder/aizynthfinder.py +++ b/aizynthfinder/aizynthfinder.py @@ -163,6 +163,24 @@ def prepare_tree(self) -> None: self.analysis = None self.routes = RouteCollection([]) + def stock_info(self) -> StrDict: + """ + Return the stock availability for all leaf nodes in all collected reaction trees + + The key of the return dictionary will be the SMILES string of the leaves, + and the value will be the stock availability + + :return: the collected stock information. + """ + if not self.analysis: + return {} + _stock_info = {} + for tree in self.routes.reaction_trees: + for leaf in tree.leafs(): + if leaf.smiles not in _stock_info: + _stock_info[leaf.smiles] = self.stock.availability_list(leaf) + return _stock_info + def tree_search(self, show_progress: bool = False) -> float: """ Perform the actual tree search diff --git a/aizynthfinder/analysis/routes.py b/aizynthfinder/analysis/routes.py index 6c7e5dd..c314be0 100644 --- a/aizynthfinder/analysis/routes.py +++ b/aizynthfinder/analysis/routes.py @@ -4,14 +4,18 @@ from typing import TYPE_CHECKING import numpy as np -from route_distances.clustering import ClusteringHelper -from route_distances.route_distances import route_distances_calculator + +try: + from route_distances.clustering import ClusteringHelper + from route_distances.route_distances import route_distances_calculator +except ImportError: + pass from aizynthfinder.analysis.utils import ( CombinedReactionTrees, RouteSelectionArguments, ) -from aizynthfinder.reactiontree import ReactionTree +from aizynthfinder.reactiontree import SUPPORT_DISTANCES, ReactionTree from aizynthfinder.search.mcts import MctsSearchTree, MctsNode from aizynthfinder.analysis import TreeAnalysis @@ -49,6 +53,7 @@ class RouteCollection: :ivar scores: initial scores of top-ranked nodes or routes :ivar reaction_trees: the reaction trees created from the top-ranked nodes :ivar clusters: the created clusters from the collection + :ivar route_metadata: the metadata of the reaction trees :param reaction_trees: the trees to base the collection on """ @@ -57,6 +62,8 @@ def __init__(self, reaction_trees: Sequence[ReactionTree], **kwargs) -> None: self._routes: Sequence[StrDict] = [{} for _ in range(len(reaction_trees))] self.reaction_trees = reaction_trees self._update_route_dict(reaction_trees, "reaction_tree") + self.route_metadata = [rt.metadata for rt in reaction_trees] + self._update_route_dict(self.route_metadata, "route_metadata") self.nodes = self._unpack_kwarg_with_default("nodes", None, **kwargs) self.scores = self._unpack_kwarg_with_default("scores", np.nan, **kwargs) @@ -152,6 +159,12 @@ def cluster( :param distances_model: can be ted or lstm and determines how the route distances are computed :return: the cluster labels """ + if not SUPPORT_DISTANCES: + raise ValueError( + "Clustering is not supported by this installation." + " Please install aizynthfinder with extras dependencies." + ) + if len(self.reaction_trees) < 3: return np.asarray([]) dist_kwargs = { @@ -199,19 +212,35 @@ def compute_scores(self, *scorers: Scorer) -> None: self.all_scores[idx][repr(scorer)] = score self._update_route_dict(self.all_scores, "all_score") - def dict_with_scores(self) -> Sequence[StrDict]: + def dict_with_extra( + self, include_scores=False, include_metadata=False + ) -> Sequence[StrDict]: """ - Return the routes as dictionaries with all scores added - to the root (target) node. + Return the routes as dictionaries with optionally all scores and + all metadata added to the root (target) node. :return: the routes as dictionaries """ dicts = [] - for dict_, scores in zip(self.dicts, self.all_scores): + for dict_, scores, metadata in zip( + self.dicts, self.all_scores, self.route_metadata + ): dicts.append(dict(dict_)) - dicts[-1]["scores"] = dict(scores) + if include_scores: + dicts[-1]["scores"] = dict(scores) + if include_metadata: + dicts[-1]["metadata"] = dict(metadata) return dicts + def dict_with_scores(self) -> Sequence[StrDict]: + """ + Return the routes as dictionaries with all scores added + to the root (target) node. + + :return: the routes as dictionaries + """ + return self.dict_with_extra(include_scores=True) + def distance_matrix( self, recreate: bool = False, model: str = "ted", **kwargs: Any ) -> np.ndarray: @@ -229,6 +258,12 @@ def distance_matrix( :param model: the type of model to use "ted" or "lstm" :return: the square distance matrix """ + if not SUPPORT_DISTANCES: + raise ValueError( + "Distance calculations are not supported by this installation." + " Please install aizynthfinder with extras dependencies." + ) + if model == "lstm" and not kwargs.get("model_path"): raise KeyError( "Need to provide 'model_path' argument when using LSTM model for computing distances" diff --git a/aizynthfinder/context/stock/queries.py b/aizynthfinder/context/stock/queries.py index 972d52f..b897581 100644 --- a/aizynthfinder/context/stock/queries.py +++ b/aizynthfinder/context/stock/queries.py @@ -142,6 +142,11 @@ def __init__( self.client = get_mongo_client( host or os.environ.get("MONGODB_HOST") or "localhost" ) + if self.client is None: + raise ImportError( + "Cannot use this stock query class because it seems like pymongo is not installed. " + "Please install aizynthfinder with extras dependencies." + ) self.database: MongoDatabase = self.client[database] self.molecules: MongoCollection = self.database[collection] self._len: Optional[int] = None diff --git a/aizynthfinder/context/stock/stock.py b/aizynthfinder/context/stock/stock.py index b17d0df..8f61c3e 100644 --- a/aizynthfinder/context/stock/stock.py +++ b/aizynthfinder/context/stock/stock.py @@ -84,11 +84,11 @@ def amount(self, mol: Molecule) -> float: raise StockException("Could not obtain amount of molecule") return max(amounts) - def availability_string(self, mol: Molecule) -> str: + def availability_list(self, mol: Molecule) -> List[str]: """ - Return a string of what stocks a given mol is available + Return a list of what stocks a given mol is available - If the molecule is not in stock it will return "Not in stock" + If the molecule is not in stock it will return any empty list :param mol: The molecule to query :returns: string with a list of stocks that mol was found in @@ -101,6 +101,18 @@ def availability_string(self, mol: Molecule) -> str: availability.append(self[key].availability_string(mol)) except (StockException, AttributeError): availability.append(key) + return availability + + def availability_string(self, mol: Molecule) -> str: + """ + Return a string of what stocks a given mol is available + + If the molecule is not in stock it will return "Not in stock" + + :param mol: The molecule to query + :returns: string with a list of stocks that mol was found in + """ + availability = self.availability_list(mol) if availability: return ",".join(availability) return "Not in stock" diff --git a/aizynthfinder/interfaces/aizynthcli.py b/aizynthfinder/interfaces/aizynthcli.py index 1a89494..fb79b36 100644 --- a/aizynthfinder/interfaces/aizynthcli.py +++ b/aizynthfinder/interfaces/aizynthcli.py @@ -20,6 +20,7 @@ split_file, start_processes, ) +from aizynthfinder.chem import Molecule from aizynthfinder.utils.logging import logger, setup_logger if TYPE_CHECKING: @@ -205,10 +206,13 @@ def _process_multi_smiles( _do_post_processing(finder, stats, post_processing) for key, value in stats.items(): results[key].append(value) + results["stock_info"].append(finder.stock_info()) results["top_scores"].append( ", ".join("%.4f" % score for score in finder.routes.scores) ) - results["trees"].append(finder.routes.dicts) + results["trees"].append( + finder.routes.dict_with_extra(include_metadata=True, include_scores=True) + ) data = pd.DataFrame.from_dict(results) save_datafile(data, output_name) @@ -261,15 +265,26 @@ def create_cmd(index, filename): def main() -> None: """Entry point for the aizynthcli command""" args = _get_arguments() + + file_level_logging = logging.DEBUG if args.log_to_file else None + setup_logger(logging.INFO, file_level_logging) + + if not os.path.exists(args.smiles): + mol = Molecule(smiles=args.smiles) + if mol.rd_mol is None: + logger().error( + f"The --smiles argument ({args.smiles})" + " does not point to an existing file or is a valid RDKit SMILES." + " Cannot start retrosynthesis planning." + ) + return + if args.nproc: _multiprocess_smiles(args) return multi_smiles = os.path.exists(args.smiles) - file_level_logging = logging.DEBUG if args.log_to_file else None - setup_logger(logging.INFO, file_level_logging) - finder = AiZynthFinder(configfile=args.config) _select_stocks(finder, args) post_processing = _load_postprocessing_jobs(args.post_processing) diff --git a/aizynthfinder/interfaces/gui/clustering.py b/aizynthfinder/interfaces/gui/clustering.py index b00101d..ef2f2c3 100644 --- a/aizynthfinder/interfaces/gui/clustering.py +++ b/aizynthfinder/interfaces/gui/clustering.py @@ -3,12 +3,19 @@ from __future__ import annotations from typing import TYPE_CHECKING -import matplotlib.pylab as plt import numpy as np from ipywidgets import Output, Label, BoundedIntText, Button, HBox, Tab from IPython.display import display -from scipy.cluster.hierarchy import dendrogram -from route_distances.clustering import ClusteringHelper + +try: + import matplotlib.pylab as plt + from scipy.cluster.hierarchy import dendrogram + from route_distances.clustering import ClusteringHelper +except ImportError: + raise ImportError( + "Clustering is not supported by this installation." + " Please install aizynthfinder with extras dependencies." + ) if TYPE_CHECKING: diff --git a/aizynthfinder/reactiontree.py b/aizynthfinder/reactiontree.py index 0480814..00375e8 100644 --- a/aizynthfinder/reactiontree.py +++ b/aizynthfinder/reactiontree.py @@ -8,7 +8,13 @@ import networkx as nx from networkx.algorithms.traversal.depth_first_search import dfs_tree -from route_distances.route_distances import route_distances_calculator + +try: + from route_distances.route_distances import route_distances_calculator +except ImportError: + SUPPORT_DISTANCES = False +else: + SUPPORT_DISTANCES = True from aizynthfinder.chem import ( Molecule, @@ -16,7 +22,7 @@ FixedRetroReaction, none_molecule, ) -from aizynthfinder.utils.image import make_graphviz_image +from aizynthfinder.utils.image import RouteImageFactory if TYPE_CHECKING: @@ -28,6 +34,7 @@ Iterable, Any, Dict, + Optional, ) from aizynthfinder.chem import RetroReaction @@ -43,12 +50,14 @@ class ReactionTree: :ivar graph: the bipartite graph :ivar is_solved: if all of the leaf nodes are in stock :ivar root: the root of the tree + :ivar created_at_iteration: iteration the reaction tree was created """ def __init__(self) -> None: self.graph = nx.DiGraph() self.root = none_molecule() self.is_solved: bool = False + self.created_at_iteration: Optional[int] = None @classmethod def from_dict(cls, tree_dict: StrDict) -> "ReactionTree": @@ -67,6 +76,14 @@ def from_dict(cls, tree_dict: StrDict) -> "ReactionTree": """ return ReactionTreeFromDict(tree_dict).tree + @property + def metadata(self) -> StrDict: + """Return a dicitionary with route metadata""" + return { + "created_at_iteration": self.created_at_iteration, + "is_solved": self.is_solved, + } + def depth(self, node: Union[UniqueMolecule, FixedRetroReaction]) -> int: """ Return the depth of a node in the route @@ -87,6 +104,11 @@ def distance_to(self, other: "ReactionTree", content: str = "both") -> float: :param content: determine what part of the tree to include in the calculation :return: the distance between the routes """ + if not SUPPORT_DISTANCES: + raise ValueError( + "Distance calculations are not supported by this installation." + " Please install aizynthfinder with extras dependencies." + ) calculator = route_distances_calculator("ted", content=content) distances = calculator([self.to_dict(), other.to_dict()]) return distances[0, 1] @@ -177,13 +199,13 @@ def create_subtree(root_node): if node is not self.root and self.graph[node]: yield create_subtree(node) - def to_dict(self) -> StrDict: + def to_dict(self, include_metadata=False) -> StrDict: """ Returns the reaction tree as a dictionary in a pre-defined format. - + :param include_metadata: if True include metadata :return: the reaction tree """ - return self._build_dict(self.root) + return self._build_dict(self.root, include_metadata=include_metadata) def to_image( self, @@ -193,57 +215,37 @@ def to_image( """ Return a pictorial representation of the route - :raises ValueError: if image could not be produced :param in_stock_colors: the colors around molecules, defaults to {True: "green", False: "orange"} :param show_all: if True, also show nodes that are marked as hidden :return: the image of the route """ - - def show(node_): - return not self.graph.nodes[node_].get("hide", False) - - in_stock_colors = in_stock_colors or {True: "green", False: "orange"} - molecules = [] - frame_colors = [] - mols = sorted( - self.molecules(), - key=lambda mol: ( - self.depth(mol), - mol.weight, - ), + factory = RouteImageFactory( + self.to_dict(), in_stock_colors=in_stock_colors, show_all=show_all ) - for node in mols: - if not show_all and not show(node): - continue - molecules.append(node) - frame_colors.append(in_stock_colors[self.in_stock(node)]) - - reactions = [node for node in self.reactions() if show_all or show(node)] - edges = [ - (node1, node2) - for node1, node2 in self.graph.edges() - if show_all or (show(node1) and show(node2)) - ] - - try: - return make_graphviz_image(molecules, reactions, edges, frame_colors) - except FileNotFoundError as err: - raise ValueError(str(err)) - - def to_json(self) -> str: + return factory.image + + def to_json(self, include_metadata=False) -> str: """ Returns the reaction tree as a JSON string in a pre-defined format. :return: the reaction tree """ - return json.dumps(self.to_dict(), sort_keys=False, indent=2) + return json.dumps( + self.to_dict(include_metadata=include_metadata), sort_keys=False, indent=2 + ) def _build_dict( - self, node: Union[UniqueMolecule, FixedRetroReaction], dict_: StrDict = None + self, + node: Union[UniqueMolecule, FixedRetroReaction], + dict_: StrDict = None, + include_metadata=False, ) -> StrDict: if dict_ is None: dict_ = {} + if node is self.root and include_metadata: + dict_["route_metadata"] = self.metadata + dict_["type"] = "mol" if isinstance(node, Molecule) else "reaction" dict_["hide"] = self.graph.nodes[node].get("hide", False) dict_["smiles"] = node.smiles @@ -348,6 +350,10 @@ class ReactionTreeFromDict(ReactionTreeLoader): """Creates a reaction tree object from a dictionary""" def _load(self, tree_dict: StrDict) -> None: # type: ignore + if tree_dict.get("route_metadata"): + self.tree.created_at_iteration = tree_dict["route_metadata"].get( + "created_at_iteration" + ) self._parse_tree_dict(tree_dict) def _parse_tree_dict(self, tree_dict: StrDict, ncalls: int = 0) -> UniqueMolecule: diff --git a/aizynthfinder/search/mcts/node.py b/aizynthfinder/search/mcts/node.py index 96124f8..9f77a84 100644 --- a/aizynthfinder/search/mcts/node.py +++ b/aizynthfinder/search/mcts/node.py @@ -70,6 +70,11 @@ def __init__( self.is_expandable: bool = not self.state.is_terminal self._parent = parent + if owner is None: + self.created_at_iteration: Optional[int] = None + else: + self.created_at_iteration = self.tree.profiling["iterations"] + self._children_values: List[float] = [] self._children_priors: List[float] = [] self._children_visitations: List[int] = [] @@ -274,13 +279,17 @@ def promising_child(self) -> Optional["MctsNode"]: :return: the child """ - scores = self._children_q() + self._children_u() - indices = np.where(scores == scores.max())[0] - index = np.random.choice(indices) - child = self._select_child(index) - if not child and max(self._children_values) > 0: - return self.promising_child() + def _score_and_select(): + scores = self._children_q() + self._children_u() + indices = np.where(scores == scores.max())[0] + index = np.random.choice(indices) + + return self._select_child(index) + + child = None + while child is None and max(self._children_values) > 0: + child = _score_and_select() if not child: self._logger.debug( diff --git a/aizynthfinder/search/mcts/search.py b/aizynthfinder/search/mcts/search.py index e73ae99..9355af0 100644 --- a/aizynthfinder/search/mcts/search.py +++ b/aizynthfinder/search/mcts/search.py @@ -26,6 +26,13 @@ class MctsSearchTree: """ def __init__(self, config: Configuration, root_smiles: str = None) -> None: + + self.profiling = { + "expansion_calls": 0, + "reactants_generations": 0, + "iterations": 0, + } + if root_smiles: self.root: Optional[MctsNode] = MctsNode.create_root( smiles=root_smiles, tree=self, config=config @@ -34,10 +41,6 @@ def __init__(self, config: Configuration, root_smiles: str = None) -> None: self.root = None self.config = config self._graph: Optional[nx.DiGraph] = None - self.profiling = { - "expansion_calls": 0, - "reactants_generations": 0, - } @classmethod def from_json(cls, filename: str, config: Configuration) -> "MctsSearchTree": @@ -112,6 +115,7 @@ def one_iteration(self) -> bool: :return: if a solution was found """ + self.profiling["iterations"] += 1 leaf = self.select_leaf() leaf.expand() rollout_child = None diff --git a/aizynthfinder/search/mcts/utils.py b/aizynthfinder/search/mcts/utils.py index 5def115..811fd03 100644 --- a/aizynthfinder/search/mcts/utils.py +++ b/aizynthfinder/search/mcts/utils.py @@ -17,6 +17,7 @@ class ReactionTreeFromSuperNode(ReactionTreeLoader): def _load(self, base_node: MctsNode) -> None: # type: ignore actions, nodes = route_to_node(base_node) + self.tree.created_at_iteration = base_node.created_at_iteration root_mol = nodes[0].state.mols[0] self._unique_mols[id(root_mol)] = root_mol.make_unique() self._add_node( diff --git a/aizynthfinder/training/keras_models.py b/aizynthfinder/training/keras_models.py index 11effc9..61f64ed 100644 --- a/aizynthfinder/training/keras_models.py +++ b/aizynthfinder/training/keras_models.py @@ -20,8 +20,14 @@ from tensorflow.keras import regularizers # pylint: enable=all -from sklearn.utils import shuffle -from scipy import sparse +try: + from sklearn.utils import shuffle + from scipy import sparse +except ImportError: + raise ImportError( + "Training is not supported by this installation." + " Please install aizynthfinder with extras dependencies." + ) from aizynthfinder.utils.models import top10_acc, top50_acc @@ -51,7 +57,7 @@ def _make_slice(self, idx: int) -> slice: return slice(start, end) @staticmethod - def _load_data(filename: str) -> np.ndarray: + def _load_data(filename: str) -> Any: try: return sparse.load_npz(filename) except ValueError: diff --git a/aizynthfinder/training/preprocess_expansion.py b/aizynthfinder/training/preprocess_expansion.py index 15cb7fc..eec88d5 100644 --- a/aizynthfinder/training/preprocess_expansion.py +++ b/aizynthfinder/training/preprocess_expansion.py @@ -6,8 +6,15 @@ import pandas as pd import numpy as np -from sklearn.preprocessing import LabelBinarizer, LabelEncoder -from scipy import sparse + +try: + from sklearn.preprocessing import LabelBinarizer, LabelEncoder + from scipy import sparse +except ImportError: + raise ImportError( + "Training is not supported by this installation." + " Please install aizynthfinder with extras dependencies." + ) from aizynthfinder.training.utils import ( Config, diff --git a/aizynthfinder/training/preprocess_filter.py b/aizynthfinder/training/preprocess_filter.py index f343202..d36b4fc 100644 --- a/aizynthfinder/training/preprocess_filter.py +++ b/aizynthfinder/training/preprocess_filter.py @@ -5,7 +5,14 @@ import pandas as pd import numpy as np -from scipy import sparse + +try: + from scipy import sparse +except ImportError: + raise ImportError( + "Training is not supported by this installation." + " Please install aizynthfinder with extras dependencies." + ) from aizynthfinder.training.utils import ( Config, diff --git a/aizynthfinder/training/preprocess_recommender.py b/aizynthfinder/training/preprocess_recommender.py index ccd7b35..124f5ba 100644 --- a/aizynthfinder/training/preprocess_recommender.py +++ b/aizynthfinder/training/preprocess_recommender.py @@ -5,8 +5,15 @@ import pandas as pd import numpy as np -from sklearn.preprocessing import LabelBinarizer -from scipy import sparse + +try: + from sklearn.preprocessing import LabelBinarizer + from scipy import sparse +except ImportError: + raise ImportError( + "Training is not supported by this installation." + " Please install aizynthfinder with extras dependencies." + ) from aizynthfinder.training.utils import ( Config, diff --git a/aizynthfinder/training/utils.py b/aizynthfinder/training/utils.py index 120f685..93088dc 100644 --- a/aizynthfinder/training/utils.py +++ b/aizynthfinder/training/utils.py @@ -9,8 +9,15 @@ import yaml import numpy as np import pandas as pd -from scipy import sparse -from sklearn.model_selection import train_test_split + +try: + from scipy import sparse + from sklearn.model_selection import train_test_split +except ImportError: + raise ImportError( + "Training is not supported by this installation." + " Please install aizynthfinder with extras dependencies." + ) from aizynthfinder.utils.paths import data_path diff --git a/aizynthfinder/utils/image.py b/aizynthfinder/utils/image.py index c18d25e..fc6b70b 100644 --- a/aizynthfinder/utils/image.py +++ b/aizynthfinder/utils/image.py @@ -15,6 +15,7 @@ from rdkit.Chem import Draw from rdkit import Chem +from aizynthfinder.chem import Molecule from aizynthfinder.utils.paths import data_path if TYPE_CHECKING: @@ -30,9 +31,10 @@ PilImage, PilColor, List, + FrameColors, + StrDict, ) from aizynthfinder.chem import ( - Molecule, UniqueMolecule, RetroReaction, FixedRetroReaction, @@ -316,3 +318,158 @@ def make_visjs_page( basename, _ = os.path.splitext(filename) shutil.make_archive(basename, "tar", root_dir=tmpdir) + + +class RouteImageFactory: + """ + Factory class for drawing a route + + :param route: the dictionary representation of the route + :param in_stock_colors: the colors around molecules, defaults to {True: "green", False: "orange"} + :param show_all: if True, also show nodes that are marked as hidden + :param margin: the margin between images + """ + + def __init__( + self, + route: StrDict, + in_stock_colors: FrameColors = None, + show_all: bool = True, + margin: int = 100, + ) -> None: + in_stock_colors = in_stock_colors or { + True: "green", + False: "orange", + } + self.show_all: bool = show_all + self.margin: int = margin + + self._stock_lookup: StrDict = {} + self._mol_lookup: StrDict = {} + self._extract_molecules(route) + images = molecules_to_images( + list(self._mol_lookup.values()), + [in_stock_colors[val] for val in self._stock_lookup.values()], + ) + self._image_lookup = dict(zip(self._mol_lookup.keys(), images)) + + self._mol_tree = self._extract_mol_tree(route) + self._add_effective_size(self._mol_tree) + + pos0 = ( + self._mol_tree["eff_width"] - self._mol_tree["image"].width + self.margin, + int(self._mol_tree["eff_height"] * 0.5) + - int(self._mol_tree["image"].height * 0.5), + ) + self._add_pos(self._mol_tree, pos0) + + self.image = Image.new( + self._mol_tree["image"].mode, + (self._mol_tree["eff_width"] + self.margin, self._mol_tree["eff_height"]), + color="white", + ) + self._draw = ImageDraw.Draw(self.image) + self._make_image(self._mol_tree) + self.image = crop_image(self.image) + + def _add_effective_size(self, tree_dict: StrDict) -> None: + children = tree_dict.get("children", []) + for child in children: + self._add_effective_size(child) + if children: + tree_dict["eff_height"] = sum( + child["eff_height"] for child in children + ) + self.margin * (len(children) - 1) + tree_dict["eff_width"] = ( + max(child["eff_width"] for child in children) + + tree_dict["image"].size[0] + + self.margin + ) + else: + tree_dict["eff_height"] = tree_dict["image"].size[1] + tree_dict["eff_width"] = tree_dict["image"].size[0] + self.margin + + def _add_pos(self, tree_dict: StrDict, pos: Tuple[int, int]) -> None: + tree_dict["left"] = pos[0] + tree_dict["top"] = pos[1] + children = tree_dict.get("children") + if not children: + return + + mid_y = pos[1] + int( + tree_dict["image"].height * 0.5 + ) # Mid-point of image along y + children_height = sum( + child["eff_height"] for child in children + ) + self.margin * (len(children) - 1) + childen_leftmost = min( + pos[0] - self.margin - child["image"].width for child in children + ) + child_y = mid_y - int(children_height * 0.5) # Top-most edge of children + child_ys = [] + # Now compute first guess of y-pos for children + for child in children: + y_adjust = int((child["eff_height"] - child["image"].height) * 0.5) + child_ys.append(child_y + y_adjust) + child_y += self.margin + child["eff_height"] + + for idx, (child, child_y0) in enumerate(zip(children, child_ys)): + child_x = childen_leftmost # pos[0] - self.margin - child["image"].width + child_y = child_y0 + # Overwrite first guess if child does not have any children + if not child.get("children") and idx == 0 and len(children) > 1: + child_y = child_ys[idx + 1] - self.margin - child["image"].height + elif not child.get("children") and idx > 0: + child_y = ( + child_ys[idx - 1] + self.margin + children[idx - 1]["image"].height + ) + self._add_pos(child, (child_x, child_y)) + + def _extract_mol_tree(self, tree_dict: StrDict) -> StrDict: + dict_ = { + "smiles": tree_dict["smiles"], + "image": self._image_lookup[tree_dict["smiles"]], + } + if tree_dict.get("children"): + dict_["children"] = [ + self._extract_mol_tree(grandchild) + for grandchild in tree_dict.get("children")[0]["children"] # type: ignore + if not (grandchild.get("hide", False) and not self.show_all) + ] + return dict_ + + def _extract_molecules(self, tree_dict: StrDict) -> None: + if tree_dict["type"] == "mol": + self._stock_lookup[tree_dict["smiles"]] = tree_dict.get("in_stock", False) + self._mol_lookup[tree_dict["smiles"]] = Molecule(smiles=tree_dict["smiles"]) + for child in tree_dict.get("children", []): + self._extract_molecules(child) + + def _make_image(self, tree_dict: StrDict) -> None: + self.image.paste(tree_dict["image"], (tree_dict["left"], tree_dict["top"])) + children = tree_dict.get("children") + if not children: + return + + children_right = max(child["left"] + child["image"].width for child in children) + mid_x = children_right + int(0.5 * (tree_dict["left"] - children_right)) + mid_y = tree_dict["top"] + int(tree_dict["image"].height * 0.5) + + self._draw.line((tree_dict["left"], mid_y, mid_x, mid_y), fill="black") + for child in children: + self._make_image(child) + child_mid_y = child["top"] + int(0.5 * child["image"].height) + self._draw.line( + ( + mid_x, + mid_y, + mid_x, + child_mid_y, + child["left"] + child["image"].width, + child_mid_y, + ), + fill="black", + ) + self._draw.ellipse( + (mid_x - 8, mid_y - 8, mid_x + 8, mid_y + 8), fill="black", outline="black" + ) diff --git a/aizynthfinder/utils/logging.py b/aizynthfinder/utils/logging.py index 0e7ac30..e858067 100644 --- a/aizynthfinder/utils/logging.py +++ b/aizynthfinder/utils/logging.py @@ -7,7 +7,10 @@ import yaml # See Github issue 30 why sklearn is imported here -import sklearn # noqa +try: + import sklearn # noqa +except ImportError: + pass from rdkit import RDLogger from aizynthfinder.utils.paths import data_path diff --git a/aizynthfinder/utils/models.py b/aizynthfinder/utils/models.py index f258821..3b5bac5 100644 --- a/aizynthfinder/utils/models.py +++ b/aizynthfinder/utils/models.py @@ -7,14 +7,20 @@ import numpy as np import requests -import grpc import tensorflow as tf -from google.protobuf.json_format import MessageToDict -from tensorflow_serving.apis import ( - predict_pb2, - get_model_metadata_pb2, - prediction_service_pb2_grpc, -) + +try: + import grpc + from google.protobuf.json_format import MessageToDict + from tensorflow_serving.apis import ( + predict_pb2, + get_model_metadata_pb2, + prediction_service_pb2_grpc, + ) +except ImportError: + SUPPORT_EXTERNAL_APIS = False +else: + SUPPORT_EXTERNAL_APIS = True # pylint: disable=all from tensorflow.keras.metrics import top_k_categorical_accuracy @@ -130,6 +136,9 @@ class ExternalModelViaREST: """ def __init__(self, name: str) -> None: + if not SUPPORT_EXTERNAL_APIS: + raise ExternalModelAPIError("API packages are not installed.") + self._model_url = self._get_model_url(name) self._sig_def = self._get_sig_def() @@ -205,6 +214,9 @@ class ExternalModelViaGRPC: """ def __init__(self, name: str) -> None: + if not SUPPORT_EXTERNAL_APIS: + raise ExternalModelAPIError("API packages are not installed.") + self._server = self._get_server(name) self._model_name = name self._sig_def = self._get_sig_def() diff --git a/aizynthfinder/utils/mongo.py b/aizynthfinder/utils/mongo.py index 31a52c9..4eb54a0 100644 --- a/aizynthfinder/utils/mongo.py +++ b/aizynthfinder/utils/mongo.py @@ -1,8 +1,15 @@ """ Module containing routines to obtain a MongoClient instance """ from urllib.parse import urlencode +from typing import Optional -from pymongo import MongoClient +try: + from pymongo import MongoClient +except ImportError: + MongoClient = None + HAS_PYMONGO = False +else: + HAS_PYMONGO = True from aizynthfinder.utils.logging import logger @@ -15,7 +22,7 @@ def get_mongo_client( user: str = None, password: str = None, tls_certs_path: str = "", -) -> MongoClient: +) -> Optional[MongoClient]: """ A helper function to create and reuse MongoClient @@ -30,6 +37,9 @@ def get_mongo_client( :raises ValueError: if host and port is not given first time :return: the MongoDB client """ + if not HAS_PYMONGO: + return None + global _CLIENT if _CLIENT is None: params = {} diff --git a/docs/cli.rst b/docs/cli.rst index 81b816f..3b3d0d1 100644 --- a/docs/cli.rst +++ b/docs/cli.rst @@ -24,19 +24,25 @@ That gives something like this: .. include:: cli_help.txt +By default: + + * `All` stocks are selected if no stock is specified + * `First` expansion policy is selected if not expansion policy is specified + * `No` filter policy is selected if it is not specified on the command-line + Analysing output ---------------- -The results from the ``aizynthcli`` tool when supplying multiple SMILES is an HDF5 file that can be read as a pandas dataframe. -It will be called `output.hfdf5` by default. +The results from the ``aizynthcli`` tool when supplying multiple SMILES is an JSON or HDF5 file that can be read as a pandas dataframe. +It will be called `output.json.gz` by default. .. code-block:: import pandas as pd - data = pd.read_hdf("output.hdf5", "table") + data = pd.read_json("output.json.gz", orient="table") -it will contain statistics about the tree search and the top-ranked routes (as JSONs) for each target compund. +it will contain statistics about the tree search and the top-ranked routes (as JSONs) for each target compund, see below. When a single SMILES is provided to the tool, the statistics will be written to the terminal, and the top-ranked routes to a JSON file (`trees.json` by default). @@ -50,7 +56,7 @@ This is an example of how to create images of the top-ranked routes for the firs import pandas as pd from aizynthfinder.reactiontree import ReactionTree - data = pd.read_hdf("output.hdf5", "table") + data = pd.read_json("output.json.gz", orient="table") all_trees = data.trees.values # This contains a list of all the trees for all the compounds trees_for_first_target = all_trees[0] @@ -58,4 +64,40 @@ This is an example of how to create images of the top-ranked routes for the firs imagefile = f"route{itree:03d}.png" ReactionTree.from_dict(tree).to_image().save(imagefile) -The images will be called `route000.png`, `route001.png` etc. \ No newline at end of file +The images will be called `route000.png`, `route001.png` etc. + + +Specification of output +----------------------- + +The JSON or HDF5 file created when running the tool with a list of SMILES will have the following columns + +============================= =========== +Column Description +============================= =========== +target The target SMILES +search_time The total search time in seconds +first_solution_time The time elapsed until the first solution was found +first_solution_iteration The number of iterations completed until the first solution was found +number_of_nodes The number of nodes in the search tree +max_transforms The maximum number of transformations for all routes in the search tree +max_children The maximum number of children for a search node +number_of_routes The number of routes in the search tree +number_of_solved_routes The number of solved routes in search tree +top_score The score of the top-scored route (default to MCTS reward) +is_solved If the top-scored route is solved +number_of_steps The number of reactions in the top-scored route +number_of_precursors The number of starting materials +number_of_precursors_in_stock The number of starting materials in stock +precursors_in_stock Comma-separated list of SMILES of starting material in stock +precursors_not_in_stock Comma-separated list of SMILES of starting material not in stock +precursors_availability Semi-colon separated list of stock availability of the staring material +policy_used_counts Dictionary of the total number of times an expansion policy have been used +profiling Profiling information from the search tree, including expansion models call and reactant generation +stock_info Dictionary of the stock availability for each of the starting material in all extracted routes +top_scores Comma-separated list of the score of the extracted routes (default to MCTS reward) +trees A list of the extracted routes as dictionaries +============================= =========== + +If you running the tool with a single SMILES, all of this data will be printed to the screen, except +the ``stock_info`` and ``trees``. \ No newline at end of file diff --git a/docs/conf.py b/docs/conf.py index 990521c..9966909 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -6,7 +6,7 @@ project = "aizynthfinder" copyright = "2020-2022, Molecular AI group" author = "Molecular AI group" -release = "3.5.0" +release = "3.6.0" # This make sure that the cli_help.txt file is properly formated with open("cli_help.txt", "r") as fileobj: diff --git a/docs/configuration.rst b/docs/configuration.rst index 28fcb6c..e934374 100644 --- a/docs/configuration.rst +++ b/docs/configuration.rst @@ -66,7 +66,7 @@ A more detailed configuration file is shown below The (expansion) policy models are specified using two files * a checkpoint files from Keras in hdf5 format, - * a HDF5 file containing templates. + * a HDF5 or a CSV file containing templates. The filter policy model is specified using a single checkpoint file from Keras in hdf5 format. Any additional filters can be specified using the classname, and a tag as seen above using ``reactants_count`` with the flag @@ -75,8 +75,12 @@ filters can be specified using the classname, and a tag as seen above using ``re The template file should be readable by ``pandas`` using the ``table`` key and the ``retro_template`` column. A policy can then be selected using the provided key, like ``my_policy`` in the above example. -The stock files should be HDF5 files with the ``table`` key an the ``inchi_key`` column. The column -should contain pre-computed inchi keys of the molecules. +The stock files can be + * HDF5 files with the ``table`` key an the ``inchi_key`` column. + * A CSV file with a ``inchi_key`` column + * A text file a single column + +In all cases, the column should contain pre-computed inchi keys of the molecules. The stocks can then be selected using the provided key, like ``stock1`` or ``stock2`` in the above example. The values in the ``properties`` sections are optional, and if missing, default values are provided. @@ -101,4 +105,19 @@ filter_cutoff 0.05 the cut-off for the quick-filter policy prune_cycles_in_search True prevents the MCTS from creating cycles by recreating previously seen molecules when it is expanded additive_expansion False If true, reactions from all selected expansion policies will be appended, otherwise only the first non-empty expansion will be used search_algorithm mcts The search algorithm. Can be set to `package.module.ClassName` to use a custom search method -========================= ============== =========== \ No newline at end of file +use_rdchiral True If true, will apply templates with RDChiral, otherwise RDKit will be used +use_remote_models False If true, will try to connect to remote Tensorflow servers +post_processing N/A post-processing specifications +========================= ============== =========== + + +The ``post_processing`` property is a dictionary with the following settings + +========================= ============== =========== +Setting Default value Description +========================= ============== =========== +min_routes 5 the minumum number of routes to extract if ``all_routes`` is not set +max_routes 25 the maximum number of routes to extract if ``all_routes`` is not set +all_routes False if True, will extract all solved routes +route_distance_model N/A if set will load the quick route distance model from this checkpoint file +========================= ============== =========== diff --git a/docs/gui.rst b/docs/gui.rst index 72e04be..ddabec5 100644 --- a/docs/gui.rst +++ b/docs/gui.rst @@ -68,6 +68,7 @@ There is a GUI extension to perform clustering of the routes. Enter the followin .. code-block:: + %matplotlib inline from aizynthfinder.interfaces.gui import ClusteringGui ClusteringGui.from_app(app) diff --git a/docs/gui_input.png b/docs/gui_input.png index aa04a188f239c6a2e55bc39f9d949727b3fe5317..928a46cdd409296fb5868f9a0a30137cca051204 100644 GIT binary patch literal 37146 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ᶢ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 diff --git a/docs/gui_results.png b/docs/gui_results.png index 919999f3d603ac8544b190efc7b9538203045317..d7796e9402226899f3b372b54db6e3ad9c97b4e7 100644 GIT binary patch literal 80139 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 II=ImP2bH%#tN;K2 literal 107023 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 JuBzpo{{w{@zrp|j diff --git a/docs/howto.rst b/docs/howto.rst new file mode 100644 index 0000000..e424f44 --- /dev/null +++ b/docs/howto.rst @@ -0,0 +1,86 @@ +How-to +======= + +This page outlines a few guidelines on some more advanced use-cases of AiZynthFinder or +frequently raised issues. + + +Using Retro* +------------ + +AiZynthFinder implements other search algorithms than MCTS. This is an example of how Retro* can be used. + +The search algorithm is specified in the configuration file. + +.. code-block:: yaml + + properties: + search_algorithm: aizynthfinder.search.retrostar.search_tree.SearchTree + + +This will use Retro* without a constant-valued oracle function. To specify the oracle function, you can +do + +.. code-block:: yaml + + properties: + search_algorithm: aizynthfinder.search.retrostar.search_tree.SearchTree + molecule_cost: + aizynthfinder.search.retrostar.cost.RetroStarCost: + model_path: retrostar_value_model.pickle + +The pickle file can be downloaded from `here `_ + + +Using multiple expansion policies +--------------------------------- + +AiZynthFinder can use multiple expansion policies. This gives an example how a general USPTO and a RingBreaker model +can be used together + +.. code-block:: yaml + + properties: + additive_expansion: True + policy: + files: + uspto: + - uspto_keras_model.hdf5 + - uspto_unique_templates.csv.gz + ringbreaker: + - uspto_ringbreaker_keras_model.hdf5 + - uspto_ringbreaker_unique_templates.csv.gz + + +and then to use this with ``aizynthcli`` do something like this + +.. code-block:: + + aizynthcli --smiles smiles.txt --config config.yml --policy uspto ringbreaker + + +Output more routes +------------------ + +The number of routes in the output of ``aizynthcli`` can be controlled from the configuration file. + +This is how you can extract at least 25 routes but not more than 50 per target + +.. code-block:: yaml + + properties: + post_processing: + min_routes: 25 + max_routes: 50 + +Alternatively, you can extract all solved routes. If a target is unsolved, it will return the number +of routes specified by ``min_routes`` and ``max_routes``. + +.. code-block:: yaml + + properties: + post_processing: + min_routes: 5 + max_routes: 10 + all_routes: True + diff --git a/docs/index.rst b/docs/index.rst index 00bdcd9..be2a965 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -1,14 +1,24 @@ aizynthfinder documentation =========================== -aizynthfinder is a tool for retrosynthetic planning. The algorithm is based on a Monte Carlo tree search that recursively breaks down a molecule to purchasable precursors. The tree search is guided by a policy that suggests possible precursors by utilizing a neural network trained on a library of known reaction templates. +aizynthfinder is a tool for retrosynthetic planning. The default algorithm is based on a Monte Carlo tree search that recursively breaks down a molecule to purchasable precursors. The tree search is guided by a policy that suggests possible precursors by utilizing a neural network trained on a library of known reaction templates. Introduction ------------ +You run retrosynthesis experiments you need a trained model and a stock collection. You can download a public available model based on USPTO and a stock collection from ZINC database. + +.. code-block:: + + download_public_data . + +This will download the data to your current directory. The ``config.yml`` file can be used directly with the interfaces. + + There are two main interfaces provided by the package: -a script that performs tree search in batch mode and -an interface that is providing a GUI within a Jupyter notebook. + + * a script that performs tree search in batch mode and + * an interface that is providing a GUI within a Jupyter notebook. The GUI interface should be run in a Jupyter notebook. This is a simple example of the code in a Jupyter notebook cell. @@ -33,24 +43,22 @@ The batch-mode script is called ``aizynthcli`` and can be executed like: .. code-block:: bash - aizynthcli --config config_local.yml --policy full_uspto --stock ACD eMolecules --smiles smiles.txt + aizynthcli --config config.yml --smiles smiles.txt -where `config_local.yml` contains configurations such as paths to policy models and stocks (see :doc:`here `), -`full_uspto` is the chosen policy model, `ACD` and `eMolecules` are the chosen stocks and `smiles.txt` is a simple text -file with SMILES (one on each row). If the ``--policy`` or ``--stock`` arguments are omitted, the first policy and all stocks -in the configuration file are auto-selected. +where `config.yml` contains configurations such as paths to policy models and stocks (see :doc:`here `), and `smiles.txt` is a simple text +file with SMILES (one on each row). If you just want to perform the tree search on a single molecule. You can directly specify it on the command-line within quotes: .. code-block:: bash - aizynthcli --config config_local.yml --policy full_uspto --stock ACD Addendum --smiles "COc1cccc(OC(=O)/C=C/c2cc(OC)c(OC)c(OC)c2)c1" + aizynthcli --config config.yml --smiles "COc1cccc(OC(=O)/C=C/c2cc(OC)c(OC)c(OC)c2)c1" The output is some statistics about the tree search, the scores of the top-ranked routes, and the reaction tree -of the top-ranked routes. When smiles are provided in a text file the results are stored in an HDF5 file, +of the top-ranked routes. When smiles are provided in a text file the results are stored in a JSON file, whereas if the SMILEs is provided on the command-line it is printed directly to the prompt (except the reaction trees, which are written to a JSON file). @@ -64,6 +72,7 @@ whereas if the SMILEs is provided on the command-line it is printed directly to configuration stocks scoring + howto training aizynthfinder sequences diff --git a/docs/python_interface.rst b/docs/python_interface.rst index c06a4eb..df283b9 100644 --- a/docs/python_interface.rst +++ b/docs/python_interface.rst @@ -76,7 +76,7 @@ out all the reactants SMILES strings reactants_smiles = [] for reaction_tuple in reactions: - reactants_smiles.append([mol.smiles for mol in reaction_tuple[0].reactants]) + reactants_smiles.append([mol.smiles for mol in reaction_tuple[0].reactants[0]) or you can put all the metadata of all the reactions in a pandas dataframe diff --git a/docs/training.rst b/docs/training.rst index 195c4fe..9be7a05 100644 --- a/docs/training.rst +++ b/docs/training.rst @@ -1,6 +1,12 @@ Training ======== +**------------------------------------------------------------------------------------------------------------------------------------------** + +**The use of this functionality is now discouraged and the users should have a look at the AiZynthTrain package for training their models** + +**------------------------------------------------------------------------------------------------------------------------------------------** + This page explains the training tools available in the `aizynthfinder` package. Prerequisites diff --git a/env-dev.yml b/env-dev.yml index ec81ef7..a5aa37f 100644 --- a/env-dev.yml +++ b/env-dev.yml @@ -4,6 +4,4 @@ channels: - defaults dependencies: - python>=3.8,<3.10 - - graphviz>=2.38,<3.0 - - rdkit=>2019.09.1 - - poetry>=1.1.4,<2.0 + - poetry>=1.1.4,<2.0 \ No newline at end of file diff --git a/env-users.yml b/env-users.yml index fb22379..26315c1 100644 --- a/env-users.yml +++ b/env-users.yml @@ -3,10 +3,9 @@ channels: - conda-forge - defaults dependencies: - - python>=3.6,<3.10 - - graphviz>=2.38,<3.0 - - rdkit=>2019.09.1 - - pytables>=3.7.0,<4.0.0 - - pip>=20.0 + - python>=3.8,<3.10 + - git + - pip>=20.0 - pip: - https://github.com/MolecularAI/aizynthfinder/archive/v3.4.0.tar.gz + \ No newline at end of file diff --git a/poetry.lock b/poetry.lock index 8161f66..1b450bc 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,31 +1,26 @@ [[package]] name = "absl-py" -version = "1.0.0" +version = "1.3.0" description = "Abseil Python Common Libraries, see https://github.com/abseil/abseil-py." category = "main" optional = false python-versions = ">=3.6" -[package.dependencies] -six = "*" - [[package]] name = "aiohttp" -version = "3.8.1" +version = "3.8.3" description = "Async http client/server framework (asyncio)" category = "main" -optional = false +optional = true python-versions = ">=3.6" [package.dependencies] aiosignal = ">=1.1.2" async-timeout = ">=4.0.0a3,<5.0" -asynctest = {version = "0.13.0", markers = "python_version < \"3.8\""} attrs = ">=17.3.0" charset-normalizer = ">=2.0,<3.0" frozenlist = ">=1.1.1" multidict = ">=4.5,<7.0" -typing-extensions = {version = ">=3.7.4", markers = "python_version < \"3.8\""} yarl = ">=1.0,<2.0" [package.extras] @@ -33,11 +28,11 @@ speedups = ["aiodns", "brotli", "cchardet"] [[package]] name = "aiosignal" -version = "1.2.0" +version = "1.3.1" description = "aiosignal: a list of registered asynchronous callbacks" category = "main" -optional = false -python-versions = ">=3.6" +optional = true +python-versions = ">=3.7" [package.dependencies] frozenlist = ">=1.1.0" @@ -52,11 +47,11 @@ python-versions = "*" [[package]] name = "alembic" -version = "1.7.7" +version = "1.8.1" description = "A database migration tool for SQLAlchemy." category = "main" -optional = false -python-versions = ">=3.6" +optional = true +python-versions = ">=3.7" [package.dependencies] importlib-metadata = {version = "*", markers = "python_version < \"3.9\""} @@ -67,6 +62,23 @@ SQLAlchemy = ">=1.3.0" [package.extras] tz = ["python-dateutil"] +[[package]] +name = "anyio" +version = "3.6.2" +description = "High level compatibility layer for multiple asynchronous event loop implementations" +category = "main" +optional = false +python-versions = ">=3.6.2" + +[package.dependencies] +idna = ">=2.8" +sniffio = ">=1.1" + +[package.extras] +doc = ["packaging", "sphinx-rtd-theme", "sphinx-autodoc-typehints (>=1.2.0)"] +test = ["coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "contextlib2", "uvloop (<0.15)", "mock (>=4)", "uvloop (>=0.15)"] +trio = ["trio (>=0.16,<0.22)"] + [[package]] name = "appnope" version = "0.1.3" @@ -80,7 +92,7 @@ name = "apted" version = "1.0.3" description = "APTED algorithm for the Tree Edit Distance" category = "main" -optional = false +optional = true python-versions = "*" [[package]] @@ -93,7 +105,6 @@ python-versions = ">=3.6" [package.dependencies] argon2-cffi-bindings = "*" -typing-extensions = {version = "*", markers = "python_version < \"3.8\""} [package.extras] dev = ["pre-commit", "cogapp", "tomli", "coverage[toml] (>=5.0.2)", "hypothesis", "pytest", "sphinx", "sphinx-notfound-page", "furo"] @@ -117,17 +128,30 @@ tests = ["pytest"] [[package]] name = "astroid" -version = "2.11.3" +version = "2.12.13" description = "An abstract syntax tree for Python with inference support." category = "dev" optional = false -python-versions = ">=3.6.2" +python-versions = ">=3.7.2" [package.dependencies] lazy-object-proxy = ">=1.4.0" -typed-ast = {version = ">=1.4.0,<2.0", markers = "implementation_name == \"cpython\" and python_version < \"3.8\""} typing-extensions = {version = ">=3.10", markers = "python_version < \"3.10\""} -wrapt = ">=1.11,<2" +wrapt = {version = ">=1.11,<2", markers = "python_version < \"3.11\""} + +[[package]] +name = "asttokens" +version = "2.1.0" +description = "Annotate AST trees with source code positions" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +six = "*" + +[package.extras] +test = ["astroid (<=2.5.3)", "pytest"] [[package]] name = "astunparse" @@ -145,23 +169,12 @@ name = "async-timeout" version = "4.0.2" description = "Timeout context manager for asyncio programs" category = "main" -optional = false +optional = true python-versions = ">=3.6" -[package.dependencies] -typing-extensions = {version = ">=3.6.5", markers = "python_version < \"3.8\""} - -[[package]] -name = "asynctest" -version = "0.13.0" -description = "Enhance the standard unittest package with features for testing asyncio libraries" -category = "main" -optional = false -python-versions = ">=3.5" - [[package]] name = "atomicwrites" -version = "1.4.0" +version = "1.4.1" description = "Atomic file writes." category = "dev" optional = false @@ -169,29 +182,29 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [[package]] name = "attrs" -version = "21.4.0" +version = "22.1.0" description = "Classes Without Boilerplate" category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = ">=3.5" [package.extras] -dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"] +dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"] docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"] -tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "cloudpickle"] -tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "cloudpickle"] +tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "zope.interface", "cloudpickle"] +tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "cloudpickle"] [[package]] name = "autopage" -version = "0.5.0" +version = "0.5.1" description = "A library to provide automatic paging for console output" category = "main" -optional = false +optional = true python-versions = ">=3.6" [[package]] name = "babel" -version = "2.10.1" +version = "2.11.0" description = "Internationalization utilities" category = "dev" optional = false @@ -225,19 +238,18 @@ lxml = ["lxml"] [[package]] name = "black" -version = "22.3.0" +version = "22.10.0" description = "The uncompromising code formatter." category = "dev" optional = false -python-versions = ">=3.6.2" +python-versions = ">=3.7" [package.dependencies] click = ">=8.0.0" mypy-extensions = ">=0.4.3" pathspec = ">=0.9.0" platformdirs = ">=2" -tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} -typed-ast = {version = ">=1.4.2", markers = "python_version < \"3.8\" and implementation_name == \"cpython\""} +tomli = {version = ">=1.1.0", markers = "python_full_version < \"3.11.0a7\""} typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""} [package.extras] @@ -248,7 +260,7 @@ uvloop = ["uvloop (>=0.15.2)"] [[package]] name = "bleach" -version = "5.0.0" +version = "5.0.1" description = "An easy safelist-based HTML-sanitizing tool." category = "main" optional = false @@ -259,20 +271,12 @@ six = ">=1.9.0" webencodings = "*" [package.extras] -css = ["tinycss2 (>=1.1.0)"] -dev = ["pip-tools (==6.5.1)", "pytest (==7.1.1)", "flake8 (==4.0.1)", "tox (==3.24.5)", "sphinx (==4.3.2)", "twine (==4.0.0)", "wheel (==0.37.1)", "hashin (==0.17.0)", "black (==22.3.0)", "mypy (==0.942)"] - -[[package]] -name = "cached-property" -version = "1.5.2" -description = "A decorator for caching properties in classes." -category = "main" -optional = false -python-versions = "*" +css = ["tinycss2 (>=1.1.0,<1.2)"] +dev = ["build (==0.8.0)", "flake8 (==4.0.1)", "hashin (==0.17.0)", "pip-tools (==6.6.2)", "pytest (==7.1.2)", "Sphinx (==4.3.2)", "tox (==3.25.0)", "twine (==4.0.1)", "wheel (==0.37.1)", "black (==22.3.0)", "mypy (==0.961)"] [[package]] name = "cachetools" -version = "5.0.0" +version = "5.2.0" description = "Extensible memoizing collections and decorators" category = "main" optional = false @@ -280,15 +284,15 @@ python-versions = "~=3.7" [[package]] name = "certifi" -version = "2021.10.8" +version = "2022.9.24" description = "Python package for providing Mozilla's CA Bundle." category = "main" optional = false -python-versions = "*" +python-versions = ">=3.6" [[package]] name = "cffi" -version = "1.15.0" +version = "1.15.1" description = "Foreign Function Interface for Python calling C code." category = "main" optional = false @@ -299,18 +303,18 @@ pycparser = "*" [[package]] name = "charset-normalizer" -version = "2.0.12" +version = "2.1.1" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." category = "main" optional = false -python-versions = ">=3.5.0" +python-versions = ">=3.6.0" [package.extras] unicode_backport = ["unicodedata2"] [[package]] name = "click" -version = "8.1.2" +version = "8.1.3" description = "Composable command line interface toolkit" category = "dev" optional = false @@ -318,50 +322,49 @@ python-versions = ">=3.7" [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} -importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} [[package]] name = "cliff" -version = "3.10.1" +version = "4.1.0" description = "Command Line Interface Formulation Framework" category = "main" -optional = false -python-versions = ">=3.6" +optional = true +python-versions = ">=3.8" [package.dependencies] autopage = ">=0.4.0" cmd2 = ">=1.0.0" -pbr = ">=2.0.0,<2.1.0 || >2.1.0" +importlib-metadata = ">=4.4" PrettyTable = ">=0.7.2" -pyparsing = ">=2.1.0" PyYAML = ">=3.12" stevedore = ">=2.0.1" [[package]] name = "cmaes" -version = "0.8.2" +version = "0.9.0" description = "Lightweight Covariance Matrix Adaptation Evolution Strategy (CMA-ES) implementation for Python 3." category = "main" -optional = false +optional = true python-versions = ">=3.6" [package.dependencies] numpy = "*" +[package.extras] +cmawm = ["scipy"] + [[package]] name = "cmd2" -version = "2.4.1" +version = "2.4.2" description = "cmd2 - quickly build feature-rich and user-friendly interactive command line applications in Python" category = "main" -optional = false +optional = true python-versions = ">=3.6" [package.dependencies] attrs = ">=16.3.0" -importlib-metadata = {version = ">=1.6.0", markers = "python_version < \"3.8\""} pyperclip = ">=1.6" pyreadline3 = {version = "*", markers = "sys_platform == \"win32\""} -typing-extensions = {version = "*", markers = "python_version < \"3.8\""} wcwidth = ">=0.1.7" [package.extras] @@ -371,18 +374,18 @@ validate = ["flake8", "mypy (==0.902)", "types-pkg-resources"] [[package]] name = "colorama" -version = "0.4.4" +version = "0.4.6" description = "Cross-platform colored terminal text." category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" [[package]] name = "colorlog" -version = "6.6.0" +version = "6.7.0" description = "Add colours to the output of Python's logging module." category = "main" -optional = false +optional = true python-versions = ">=3.6" [package.dependencies] @@ -391,9 +394,41 @@ colorama = {version = "*", markers = "sys_platform == \"win32\""} [package.extras] development = ["black", "flake8", "mypy", "pytest", "types-colorama"] +[[package]] +name = "comm" +version = "0.1.1" +description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +traitlets = ">5.3" + +[package.extras] +test = ["pytest"] + +[[package]] +name = "contourpy" +version = "1.0.6" +description = "Python library for calculating contours of 2D quadrilateral grids" +category = "main" +optional = true +python-versions = ">=3.7" + +[package.dependencies] +numpy = ">=1.16" + +[package.extras] +bokeh = ["bokeh", "selenium"] +docs = ["docutils (<0.18)", "sphinx (<=5.2.0)", "sphinx-rtd-theme"] +test = ["pytest", "matplotlib", "pillow", "flake8", "isort"] +test-minimal = ["pytest"] +test-no-codebase = ["pytest", "matplotlib", "pillow"] + [[package]] name = "coverage" -version = "6.3.2" +version = "6.5.0" description = "Code coverage measurement for Python" category = "dev" optional = false @@ -407,12 +442,12 @@ name = "cycler" version = "0.11.0" description = "Composable style cycles" category = "main" -optional = false +optional = true python-versions = ">=3.6" [[package]] name = "debugpy" -version = "1.6.0" +version = "1.6.3" description = "An implementation of the Debug Adapter Protocol for Python" category = "main" optional = false @@ -450,11 +485,11 @@ dev = ["tox", "bump2version (<1)", "sphinx (<2)", "importlib-metadata (<3)", "im [[package]] name = "dill" -version = "0.3.4" +version = "0.3.6" description = "serialize all of python" category = "dev" optional = false -python-versions = ">=2.7, !=3.0.*" +python-versions = ">=3.7" [package.extras] graph = ["objgraph (>=1.7.2)"] @@ -475,9 +510,20 @@ category = "main" optional = false python-versions = ">=3.6" +[[package]] +name = "executing" +version = "1.2.0" +description = "Get the currently executing AST node of a frame, and other information" +category = "main" +optional = false +python-versions = "*" + +[package.extras] +tests = ["asttokens", "pytest", "littleutils", "rich"] + [[package]] name = "fastjsonschema" -version = "2.15.3" +version = "2.16.2" description = "Fastest Python implementation of JSON schema" category = "main" optional = false @@ -486,9 +532,21 @@ python-versions = "*" [package.extras] devel = ["colorama", "jsonschema", "json-spec", "pylint", "pytest", "pytest-benchmark", "pytest-cache", "validictory"] +[[package]] +name = "fire" +version = "0.4.0" +description = "A library for automatically generating command line interfaces." +category = "main" +optional = true +python-versions = "*" + +[package.dependencies] +six = "*" +termcolor = "*" + [[package]] name = "flatbuffers" -version = "2.0" +version = "22.11.23" description = "The FlatBuffers serialization format for Python" category = "main" optional = false @@ -496,10 +554,10 @@ python-versions = "*" [[package]] name = "fonttools" -version = "4.33.3" +version = "4.38.0" description = "Tools to manipulate font files" category = "main" -optional = false +optional = true python-versions = ">=3.7" [package.extras] @@ -518,22 +576,22 @@ woff = ["zopfli (>=0.1.4)", "brotlicffi (>=0.8.0)", "brotli (>=1.0.1)"] [[package]] name = "frozenlist" -version = "1.3.0" +version = "1.3.3" description = "A list-like structure which implements collections.abc.MutableSequence" category = "main" -optional = false +optional = true python-versions = ">=3.7" [[package]] name = "fsspec" -version = "2022.5.0" +version = "2022.11.0" description = "File-system specification" category = "main" -optional = false +optional = true python-versions = ">=3.7" [package.dependencies] -aiohttp = {version = "*", optional = true, markers = "extra == \"http\""} +aiohttp = {version = "<4.0.0a0 || >4.0.0a0,<4.0.0a1 || >4.0.0a1", optional = true, markers = "extra == \"http\""} requests = {version = "*", optional = true, markers = "extra == \"http\""} [package.extras] @@ -550,7 +608,7 @@ github = ["requests"] gs = ["gcsfs"] gui = ["panel"] hdfs = ["pyarrow (>=1)"] -http = ["requests", "aiohttp"] +http = ["requests", "aiohttp (!=4.0.0a0,!=4.0.0a1)"] libarchive = ["libarchive-c"] oci = ["ocifs"] s3 = ["s3fs"] @@ -561,7 +619,7 @@ tqdm = ["tqdm"] [[package]] name = "gast" -version = "0.5.3" +version = "0.4.0" description = "Python AST that abstracts the underlying Python version" category = "main" optional = false @@ -569,7 +627,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [[package]] name = "google-auth" -version = "2.6.6" +version = "2.14.1" description = "Google Authentication Library" category = "main" optional = false @@ -583,7 +641,8 @@ six = ">=1.9.0" [package.extras] aiohttp = ["requests (>=2.20.0,<3.0.0dev)", "aiohttp (>=3.6.2,<4.0.0dev)"] -pyopenssl = ["pyopenssl (>=20.0.0)"] +enterprise_cert = ["cryptography (==36.0.2)", "pyopenssl (==22.0.0)"] +pyopenssl = ["pyopenssl (>=20.0.0)", "cryptography (>=38.0.3)"] reauth = ["pyu2f (>=0.1.5)"] [[package]] @@ -614,44 +673,41 @@ six = "*" [[package]] name = "greenlet" -version = "1.1.2" +version = "2.0.1" description = "Lightweight in-process concurrent programming" category = "main" -optional = false +optional = true python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*" [package.extras] -docs = ["sphinx"] +docs = ["sphinx", "docutils (<0.18)"] +test = ["objgraph", "psutil", "faulthandler"] [[package]] name = "grpcio" -version = "1.45.0" +version = "1.51.0" description = "HTTP/2-based RPC framework" category = "main" optional = false -python-versions = ">=3.6" - -[package.dependencies] -six = ">=1.5.2" +python-versions = ">=3.7" [package.extras] -protobuf = ["grpcio-tools (>=1.45.0)"] +protobuf = ["grpcio-tools (>=1.51.0)"] [[package]] name = "h5py" -version = "3.6.0" +version = "3.7.0" description = "Read and write HDF5 files from Python" category = "main" optional = false python-versions = ">=3.7" [package.dependencies] -cached-property = {version = "*", markers = "python_version < \"3.8\""} numpy = ">=1.14.5" [[package]] name = "idna" -version = "3.3" +version = "3.4" description = "Internationalized Domain Names in Applications (IDNA)" category = "main" optional = false @@ -659,7 +715,7 @@ python-versions = ">=3.5" [[package]] name = "imagesize" -version = "1.3.0" +version = "1.4.1" description = "Getting image size from png/jpeg/jpeg2000/gif file" category = "dev" optional = false @@ -667,24 +723,23 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [[package]] name = "importlib-metadata" -version = "4.11.3" +version = "5.1.0" description = "Read metadata from Python packages" category = "main" optional = false python-versions = ">=3.7" [package.dependencies] -typing-extensions = {version = ">=3.6.4", markers = "python_version < \"3.8\""} zipp = ">=0.5" [package.extras] -docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] +docs = ["sphinx (>=3.5)", "jaraco.packaging (>=9)", "rst.linker (>=1.9)", "furo", "jaraco.tidelift (>=1.4)"] perf = ["ipython"] -testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "importlib-resources (>=1.3)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "flake8 (<5)", "pytest-cov", "pytest-enabler (>=1.3)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "pytest-flake8", "importlib-resources (>=1.3)"] [[package]] name = "importlib-resources" -version = "5.7.1" +version = "5.10.0" description = "Read resources from Python packages" category = "main" optional = false @@ -694,8 +749,8 @@ python-versions = ">=3.7" zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} [package.extras] -docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] -testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] +docs = ["sphinx (>=3.5)", "jaraco.packaging (>=9)", "rst.linker (>=1.9)", "furo", "jaraco.tidelift (>=1.4)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "flake8 (<5)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] [[package]] name = "iniconfig" @@ -707,7 +762,7 @@ python-versions = "*" [[package]] name = "invoke" -version = "1.7.0" +version = "1.7.3" description = "Pythonic task execution" category = "dev" optional = false @@ -715,14 +770,15 @@ python-versions = "*" [[package]] name = "ipykernel" -version = "6.13.0" +version = "6.18.0" description = "IPython Kernel for Jupyter" category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" [package.dependencies] appnope = {version = "*", markers = "platform_system == \"Darwin\""} +comm = ">=0.1" debugpy = ">=1.0" ipython = ">=7.23.1" jupyter-client = ">=6.1.12" @@ -730,19 +786,21 @@ matplotlib-inline = ">=0.1" nest-asyncio = "*" packaging = "*" psutil = "*" +pyzmq = ">=17" tornado = ">=6.1" traitlets = ">=5.1.0" [package.extras] -test = ["pytest (>=6.0)", "pytest-cov", "flaky", "ipyparallel", "pre-commit", "pytest-timeout"] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinxcontrib-github-alt"] +test = ["flaky", "ipyparallel", "pre-commit", "pytest-asyncio", "pytest-cov", "pytest-timeout", "pytest (>=7.0)"] [[package]] name = "ipython" -version = "7.32.0" +version = "8.6.0" description = "IPython: Productive Interactive Computing" category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" [package.dependencies] appnope = {version = "*", markers = "sys_platform == \"darwin\""} @@ -753,20 +811,23 @@ jedi = ">=0.16" matplotlib-inline = "*" pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""} pickleshare = "*" -prompt-toolkit = ">=2.0.0,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.1.0" -pygments = "*" -traitlets = ">=4.2" +prompt-toolkit = ">3.0.1,<3.1.0" +pygments = ">=2.4.0" +stack-data = "*" +traitlets = ">=5" [package.extras] -all = ["Sphinx (>=1.3)", "ipykernel", "ipyparallel", "ipywidgets", "nbconvert", "nbformat", "nose (>=0.10.1)", "notebook", "numpy (>=1.17)", "pygments", "qtconsole", "requests", "testpath"] -doc = ["Sphinx (>=1.3)"] +all = ["black", "ipykernel", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "docrepr", "matplotlib", "stack-data", "pytest (<7)", "typing-extensions", "pytest (<7.1)", "pytest-asyncio", "testpath", "nbconvert", "nbformat", "ipywidgets", "notebook", "ipyparallel", "qtconsole", "curio", "matplotlib (!=3.2.0)", "numpy (>=1.20)", "pandas", "trio"] +black = ["black"] +doc = ["ipykernel", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "docrepr", "matplotlib", "stack-data", "pytest (<7)", "typing-extensions", "pytest (<7.1)", "pytest-asyncio", "testpath"] kernel = ["ipykernel"] nbconvert = ["nbconvert"] nbformat = ["nbformat"] -notebook = ["notebook", "ipywidgets"] +notebook = ["ipywidgets", "notebook"] parallel = ["ipyparallel"] qtconsole = ["qtconsole"] -test = ["nose (>=0.10.1)", "requests", "testpath", "pygments", "nbformat", "ipykernel", "numpy (>=1.17)"] +test = ["pytest (<7.1)", "pytest-asyncio", "testpath"] +test_extra = ["pytest (<7.1)", "pytest-asyncio", "testpath", "curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.20)", "pandas", "trio"] [[package]] name = "ipython-genutils" @@ -778,7 +839,7 @@ python-versions = "*" [[package]] name = "ipywidgets" -version = "7.7.0" +version = "7.7.2" description = "IPython HTML widgets for Jupyter" category = "main" optional = false @@ -788,8 +849,7 @@ python-versions = "*" ipykernel = ">=4.5.1" ipython = {version = ">=4.0.0", markers = "python_version >= \"3.3\""} ipython-genutils = ">=0.2.0,<0.3.0" -jupyterlab-widgets = {version = ">=1.0.0", markers = "python_version >= \"3.6\""} -nbformat = ">=4.2.0" +jupyterlab-widgets = {version = ">=1.0.0,<3", markers = "python_version >= \"3.6\""} traitlets = ">=4.3.1" widgetsnbextension = ">=3.6.0,<3.7.0" @@ -812,7 +872,7 @@ plugins = ["setuptools"] [[package]] name = "jedi" -version = "0.18.1" +version = "0.18.2" description = "An autocompletion tool for Python that can be used for text editors." category = "main" optional = false @@ -822,12 +882,13 @@ python-versions = ">=3.6" parso = ">=0.8.0,<0.9.0" [package.extras] +docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alabaster (==0.7.12)", "babel (==2.9.1)", "chardet (==4.0.0)", "commonmark (==0.8.1)", "docutils (==0.17.1)", "future (==0.18.2)", "idna (==2.10)", "imagesize (==1.2.0)", "mock (==1.0.1)", "packaging (==20.9)", "pyparsing (==2.4.7)", "pytz (==2021.1)", "readthedocs-sphinx-ext (==2.1.4)", "recommonmark (==0.5.0)", "requests (==2.25.1)", "six (==1.15.0)", "snowballstemmer (==2.1.0)", "sphinx-rtd-theme (==0.4.3)", "sphinx (==1.8.5)", "sphinxcontrib-serializinghtml (==1.1.4)", "sphinxcontrib-websupport (==1.2.4)", "urllib3 (==1.26.4)"] qa = ["flake8 (==3.8.3)", "mypy (==0.782)"] -testing = ["Django (<3.1)", "colorama", "docopt", "pytest (<7.0.0)"] +testing = ["Django (<3.1)", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] [[package]] name = "jinja2" -version = "3.1.1" +version = "3.1.2" description = "A very fast and expressive template engine." category = "main" optional = false @@ -841,15 +902,15 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "joblib" -version = "1.1.0" +version = "1.2.0" description = "Lightweight pipelining with Python functions" category = "main" -optional = false -python-versions = ">=3.6" +optional = true +python-versions = ">=3.7" [[package]] name = "jsonschema" -version = "4.4.0" +version = "4.17.1" description = "An implementation of JSON Schema validation for Python" category = "main" optional = false @@ -857,14 +918,13 @@ python-versions = ">=3.7" [package.dependencies] attrs = ">=17.4.0" -importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""} +pkgutil-resolve-name = {version = ">=1.3.10", markers = "python_version < \"3.9\""} pyrsistent = ">=0.14.0,<0.17.0 || >0.17.0,<0.17.1 || >0.17.1,<0.17.2 || >0.17.2" -typing-extensions = {version = "*", markers = "python_version < \"3.8\""} [package.extras] format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] -format_nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"] +format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"] [[package]] name = "jupyter" @@ -884,7 +944,7 @@ qtconsole = "*" [[package]] name = "jupyter-client" -version = "7.3.0" +version = "7.4.7" description = "Jupyter protocol implementation and client libraries" category = "main" optional = false @@ -895,21 +955,21 @@ entrypoints = "*" jupyter-core = ">=4.9.2" nest-asyncio = ">=1.5.4" python-dateutil = ">=2.8.2" -pyzmq = ">=22.3" -tornado = ">=6.0" +pyzmq = ">=23.0" +tornado = ">=6.2" traitlets = "*" [package.extras] -doc = ["ipykernel", "myst-parser", "sphinx (>=1.3.6)", "sphinx-rtd-theme", "sphinxcontrib-github-alt"] -test = ["codecov", "coverage", "ipykernel (>=6.5)", "ipython", "mypy", "pre-commit", "pytest", "pytest-asyncio (>=0.18)", "pytest-cov", "pytest-timeout"] +doc = ["ipykernel", "myst-parser", "sphinx-rtd-theme", "sphinx (>=1.3.6)", "sphinxcontrib-github-alt"] +test = ["codecov", "coverage", "ipykernel (>=6.12)", "ipython", "mypy", "pre-commit", "pytest", "pytest-asyncio (>=0.18)", "pytest-cov", "pytest-timeout"] [[package]] name = "jupyter-console" -version = "6.4.3" +version = "6.4.4" description = "Jupyter terminal console" category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [package.dependencies] ipykernel = "*" @@ -923,19 +983,49 @@ test = ["pexpect"] [[package]] name = "jupyter-core" -version = "4.10.0" +version = "5.0.0" description = "Jupyter core package. A base package on which Jupyter projects rely." category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" [package.dependencies] +platformdirs = "*" pywin32 = {version = ">=1.0", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\""} traitlets = "*" [package.extras] test = ["ipykernel", "pre-commit", "pytest", "pytest-cov", "pytest-timeout"] +[[package]] +name = "jupyter-server" +version = "1.23.3" +description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications." +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +anyio = ">=3.1.0,<4" +argon2-cffi = "*" +jinja2 = "*" +jupyter-client = ">=6.1.12" +jupyter-core = ">=4.7.0" +nbconvert = ">=6.4.4" +nbformat = ">=5.2.0" +packaging = "*" +prometheus-client = "*" +pywinpty = {version = "*", markers = "os_name == \"nt\""} +pyzmq = ">=17" +Send2Trash = "*" +terminado = ">=0.8.3" +tornado = ">=6.1.0" +traitlets = ">=5.1" +websocket-client = "*" + +[package.extras] +test = ["coverage", "ipykernel", "pre-commit", "pytest-console-scripts", "pytest-cov", "pytest-mock", "pytest-timeout", "pytest-tornasync", "pytest (>=7.0)", "requests"] + [[package]] name = "jupyterlab-pygments" version = "0.2.2" @@ -946,7 +1036,7 @@ python-versions = ">=3.7" [[package]] name = "jupyterlab-widgets" -version = "1.1.0" +version = "1.1.1" description = "A JupyterLab extension." category = "main" optional = false @@ -954,7 +1044,7 @@ python-versions = ">=3.6" [[package]] name = "jupytext" -version = "1.13.8" +version = "1.14.1" description = "Jupyter notebooks as Markdown documents, Julia, Python or R scripts" category = "main" optional = false @@ -973,66 +1063,56 @@ toml = ["toml"] [[package]] name = "keras" -version = "2.8.0" +version = "2.11.0" description = "Deep learning for humans." category = "main" optional = false -python-versions = "*" - -[[package]] -name = "keras-preprocessing" -version = "1.1.2" -description = "Easy data preprocessing and data augmentation for deep learning models" -category = "main" -optional = false -python-versions = "*" - -[package.dependencies] -numpy = ">=1.9.1" -six = ">=1.9.0" - -[package.extras] -image = ["scipy (>=0.14)", "Pillow (>=5.2.0)"] -pep8 = ["flake8"] -tests = ["pandas", "pillow", "tensorflow", "keras", "pytest", "pytest-xdist", "pytest-cov"] +python-versions = ">=3.7" [[package]] name = "kiwisolver" -version = "1.4.2" +version = "1.4.4" description = "A fast implementation of the Cassowary constraint solver" category = "main" -optional = false +optional = true python-versions = ">=3.7" -[package.dependencies] -typing-extensions = {version = "*", markers = "python_version < \"3.8\""} - [[package]] name = "lazy-object-proxy" -version = "1.7.1" +version = "1.8.0" description = "A fast and thorough lazy object proxy." category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [[package]] name = "libclang" -version = "14.0.1" +version = "14.0.6" description = "Clang Python Bindings, mirrored from the official LLVM repo: https://github.com/llvm/llvm-project/tree/main/clang/bindings/python, to make the installation process easier." category = "main" optional = false python-versions = "*" +[[package]] +name = "lightning-utilities" +version = "0.3.0" +description = "PyTorch Lightning Sample project." +category = "main" +optional = true +python-versions = ">=3.7" + +[package.dependencies] +fire = "*" + [[package]] name = "mako" -version = "1.2.0" +version = "1.2.4" description = "A super-fast templating language that borrows the best ideas from the existing templating languages." category = "main" -optional = false +optional = true python-versions = ">=3.7" [package.dependencies] -importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} MarkupSafe = ">=0.9.2" [package.extras] @@ -1042,11 +1122,11 @@ testing = ["pytest"] [[package]] name = "markdown" -version = "3.3.6" +version = "3.4.1" description = "Python implementation of Markdown." category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [package.dependencies] importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} @@ -1064,7 +1144,6 @@ python-versions = ">=3.7" [package.dependencies] mdurl = ">=0.1,<1.0" -typing_extensions = {version = ">=3.7.4", markers = "python_version < \"3.8\""} [package.extras] benchmarking = ["psutil", "pytest", "pytest-benchmark (>=3.2,<4.0)"] @@ -1086,26 +1165,27 @@ python-versions = ">=3.7" [[package]] name = "matplotlib" -version = "3.5.1" +version = "3.6.2" description = "Python plotting package" category = "main" -optional = false -python-versions = ">=3.7" +optional = true +python-versions = ">=3.8" [package.dependencies] +contourpy = ">=1.0.1" cycler = ">=0.10" fonttools = ">=4.22.0" kiwisolver = ">=1.0.1" -numpy = ">=1.17" +numpy = ">=1.19" packaging = ">=20.0" pillow = ">=6.2.0" pyparsing = ">=2.2.1" python-dateutil = ">=2.7" -setuptools_scm = ">=4" +setuptools_scm = ">=7" [[package]] name = "matplotlib-inline" -version = "0.1.3" +version = "0.1.6" description = "Inline Matplotlib backend for Jupyter" category = "main" optional = false @@ -1124,23 +1204,23 @@ python-versions = ">=3.6" [[package]] name = "mdit-py-plugins" -version = "0.3.0" +version = "0.3.1" description = "Collection of plugins for markdown-it-py" category = "main" optional = false -python-versions = "~=3.6" +python-versions = ">=3.7" [package.dependencies] markdown-it-py = ">=1.0.0,<3.0.0" [package.extras] -code_style = ["pre-commit (==2.6)"] -rtd = ["myst-parser (>=0.14.0,<0.15.0)", "sphinx-book-theme (>=0.1.0,<0.2.0)"] -testing = ["coverage", "pytest (>=3.6,<4)", "pytest-cov", "pytest-regressions"] +code_style = ["pre-commit"] +rtd = ["attrs", "myst-parser (>=0.16.1,<0.17.0)", "sphinx-book-theme (>=0.1.0,<0.2.0)"] +testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] [[package]] name = "mdurl" -version = "0.1.1" +version = "0.1.2" description = "Markdown URL utilities" category = "main" optional = false @@ -1148,15 +1228,15 @@ python-versions = ">=3.7" [[package]] name = "mistune" -version = "0.8.4" -description = "The fastest markdown parser in pure Python" +version = "2.0.4" +description = "A sane Markdown parser with useful plugins and renderers" category = "main" optional = false python-versions = "*" [[package]] name = "more-itertools" -version = "8.12.0" +version = "8.14.0" description = "More routines for operating on iterables, beyond itertools" category = "main" optional = false @@ -1167,7 +1247,7 @@ name = "multidict" version = "6.0.2" description = "multidict implementation" category = "main" -optional = false +optional = true python-versions = ">=3.7" [[package]] @@ -1194,9 +1274,41 @@ category = "dev" optional = false python-versions = "*" +[[package]] +name = "nbclassic" +version = "0.4.8" +description = "A web-based notebook environment for interactive computing" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +argon2-cffi = "*" +ipykernel = "*" +ipython-genutils = "*" +jinja2 = "*" +jupyter-client = ">=6.1.1" +jupyter-core = ">=4.6.1" +jupyter-server = ">=1.8" +nbconvert = ">=5" +nbformat = "*" +nest-asyncio = ">=1.5" +notebook-shim = ">=0.1.0" +prometheus-client = "*" +pyzmq = ">=17" +Send2Trash = ">=1.8.0" +terminado = ">=0.8.3" +tornado = ">=6.1" +traitlets = ">=4.2.1" + +[package.extras] +docs = ["sphinx", "nbsphinx", "sphinxcontrib-github-alt", "sphinx-rtd-theme", "myst-parser"] +json-logging = ["json-logging"] +test = ["pytest", "coverage", "requests", "testpath", "nbval", "pytest-playwright", "pytest-cov", "pytest-tornasync", "requests-unixsocket"] + [[package]] name = "nbclient" -version = "0.6.0" +version = "0.7.0" description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." category = "main" optional = false @@ -1206,15 +1318,15 @@ python-versions = ">=3.7.0" jupyter-client = ">=6.1.5" nbformat = ">=5.0" nest-asyncio = "*" -traitlets = ">=5.0.0" +traitlets = ">=5.2.2" [package.extras] -sphinx = ["mock", "moto", "myst-parser", "Sphinx (>=1.7)", "sphinx-book-theme"] -test = ["black", "check-manifest", "flake8", "ipykernel", "ipython (<8.0.0)", "ipywidgets (<8.0.0)", "mypy", "pip (>=18.1)", "pre-commit", "pytest (>=4.1)", "pytest-asyncio", "pytest-cov (>=2.6.1)", "setuptools (>=60.0)", "testpath", "twine (>=1.11.0)", "xmltodict"] +sphinx = ["autodoc-traits", "mock", "moto", "myst-parser", "Sphinx (>=1.7)", "sphinx-book-theme"] +test = ["black", "check-manifest", "flake8", "ipykernel", "ipython", "ipywidgets", "mypy", "nbconvert", "pip (>=18.1)", "pre-commit", "pytest (>=4.1)", "pytest-asyncio", "pytest-cov (>=2.6.1)", "setuptools (>=60.0)", "testpath", "twine (>=1.11.0)", "xmltodict"] [[package]] name = "nbconvert" -version = "6.5.0" +version = "7.2.5" description = "Converting Jupyter Notebooks" category = "main" optional = false @@ -1224,12 +1336,12 @@ python-versions = ">=3.7" beautifulsoup4 = "*" bleach = "*" defusedxml = "*" -entrypoints = ">=0.2.2" +importlib-metadata = {version = ">=3.6", markers = "python_version < \"3.10\""} jinja2 = ">=3.0" jupyter-core = ">=4.7" jupyterlab-pygments = "*" -MarkupSafe = ">=2.0" -mistune = ">=0.8.1,<2" +markupsafe = ">=2.0" +mistune = ">=2.0.3,<3" nbclient = ">=0.5.0" nbformat = ">=5.1" packaging = "*" @@ -1239,15 +1351,17 @@ tinycss2 = "*" traitlets = ">=5.0" [package.extras] -all = ["pytest", "pytest-cov", "pytest-dependency", "ipykernel", "ipywidgets (>=7)", "pre-commit", "pyppeteer (>=1,<1.1)", "tornado (>=6.1)", "sphinx (>=1.5.1)", "sphinx-rtd-theme", "nbsphinx (>=0.2.12)", "ipython"] -docs = ["sphinx (>=1.5.1)", "sphinx-rtd-theme", "nbsphinx (>=0.2.12)", "ipython"] +all = ["ipykernel", "ipython", "ipywidgets (>=7)", "myst-parser", "nbsphinx (>=0.2.12)", "pre-commit", "pyppeteer (>=1,<1.1)", "pyqtwebengine (>=5.15)", "pytest", "pytest-cov", "pytest-dependency", "sphinx-rtd-theme", "sphinx (==5.0.2)", "tornado (>=6.1)"] +docs = ["ipython", "myst-parser", "nbsphinx (>=0.2.12)", "sphinx-rtd-theme", "sphinx (==5.0.2)"] +qtpdf = ["pyqtwebengine (>=5.15)"] +qtpng = ["pyqtwebengine (>=5.15)"] serve = ["tornado (>=6.1)"] -test = ["pytest", "pytest-cov", "pytest-dependency", "ipykernel", "ipywidgets (>=7)", "pre-commit", "pyppeteer (>=1,<1.1)"] +test = ["ipykernel", "ipywidgets (>=7)", "pre-commit", "pyppeteer (>=1,<1.1)", "pytest", "pytest-cov", "pytest-dependency"] webpdf = ["pyppeteer (>=1,<1.1)"] [[package]] name = "nbformat" -version = "5.3.0" +version = "5.7.0" description = "The Jupyter Notebook format" category = "main" optional = false @@ -1257,14 +1371,14 @@ python-versions = ">=3.7" fastjsonschema = "*" jsonschema = ">=2.6" jupyter-core = "*" -traitlets = ">=4.1" +traitlets = ">=5.1" [package.extras] -test = ["check-manifest", "testpath", "pytest", "pre-commit"] +test = ["check-manifest", "pep440", "pre-commit", "pytest", "testpath"] [[package]] name = "nest-asyncio" -version = "1.5.5" +version = "1.5.6" description = "Patch asyncio to allow nested event loops" category = "main" optional = false @@ -1272,22 +1386,22 @@ python-versions = ">=3.5" [[package]] name = "networkx" -version = "2.6.3" +version = "2.8.8" description = "Python package for creating and manipulating graphs and networks" category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" [package.extras] -default = ["numpy (>=1.19)", "scipy (>=1.5,!=1.6.1)", "matplotlib (>=3.3)", "pandas (>=1.1)"] -developer = ["black (==21.5b1)", "pre-commit (>=2.12)"] -doc = ["sphinx (>=4.0,<5.0)", "pydata-sphinx-theme (>=0.6,<1.0)", "sphinx-gallery (>=0.9,<1.0)", "numpydoc (>=1.1)", "pillow (>=8.2)", "nb2plots (>=0.6)", "texext (>=0.6.6)"] -extra = ["lxml (>=4.5)", "pygraphviz (>=1.7)", "pydot (>=1.4.1)"] -test = ["pytest (>=6.2)", "pytest-cov (>=2.12)", "codecov (>=2.1)"] +default = ["numpy (>=1.19)", "scipy (>=1.8)", "matplotlib (>=3.4)", "pandas (>=1.3)"] +developer = ["pre-commit (>=2.20)", "mypy (>=0.982)"] +doc = ["sphinx (>=5.2)", "pydata-sphinx-theme (>=0.11)", "sphinx-gallery (>=0.11)", "numpydoc (>=1.5)", "pillow (>=9.2)", "nb2plots (>=0.6)", "texext (>=0.6.6)"] +extra = ["lxml (>=4.6)", "pygraphviz (>=1.9)", "pydot (>=1.4.2)", "sympy (>=1.10)"] +test = ["pytest (>=7.2)", "pytest-cov (>=4.0)", "codecov (>=2.1)"] [[package]] name = "notebook" -version = "6.4.12" +version = "6.5.2" description = "A web-based notebook environment for interactive computing" category = "main" optional = false @@ -1300,6 +1414,7 @@ ipython-genutils = "*" jinja2 = "*" jupyter-client = ">=5.3.4" jupyter-core = ">=4.6.1" +nbclassic = ">=0.4.7" nbconvert = ">=5" nbformat = "*" nest-asyncio = ">=1.5" @@ -1313,31 +1428,76 @@ traitlets = ">=4.2.1" [package.extras] docs = ["sphinx", "nbsphinx", "sphinxcontrib-github-alt", "sphinx-rtd-theme", "myst-parser"] json-logging = ["json-logging"] -test = ["pytest", "coverage", "requests", "testpath", "nbval", "selenium", "pytest-cov", "requests-unixsocket"] +test = ["pytest", "coverage", "requests", "testpath", "nbval", "selenium (==4.1.5)", "pytest-cov", "requests-unixsocket"] + +[[package]] +name = "notebook-shim" +version = "0.2.2" +description = "A shim layer for notebook traits and config" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +jupyter-server = ">=1.8,<3" + +[package.extras] +test = ["pytest", "pytest-console-scripts", "pytest-tornasync"] [[package]] name = "numexpr" -version = "2.8.1" +version = "2.8.4" description = "Fast numerical expression evaluator for NumPy" category = "main" optional = false -python-versions = "*" +python-versions = ">=3.7" [package.dependencies] numpy = ">=1.13.3" -packaging = "*" [[package]] name = "numpy" -version = "1.21.6" +version = "1.23.5" description = "NumPy is the fundamental package for array computing with Python." category = "main" optional = false -python-versions = ">=3.7,<3.11" +python-versions = ">=3.8" + +[[package]] +name = "nvidia-cublas-cu11" +version = "11.10.3.66" +description = "CUBLAS native runtime libraries" +category = "main" +optional = true +python-versions = ">=3" + +[[package]] +name = "nvidia-cuda-nvrtc-cu11" +version = "11.7.99" +description = "NVRTC native runtime libraries" +category = "main" +optional = true +python-versions = ">=3" + +[[package]] +name = "nvidia-cuda-runtime-cu11" +version = "11.7.99" +description = "CUDA Runtime native Libraries" +category = "main" +optional = true +python-versions = ">=3" + +[[package]] +name = "nvidia-cudnn-cu11" +version = "8.5.0.96" +description = "cuDNN runtime libraries" +category = "main" +optional = true +python-versions = ">=3" [[package]] name = "oauthlib" -version = "3.2.0" +version = "3.2.2" description = "A generic, spec-compliant, thorough implementation of the OAuth request-signing logic" category = "main" optional = false @@ -1365,10 +1525,10 @@ tests = ["pytest", "pytest-cov", "pytest-pep8"] [[package]] name = "optuna" -version = "2.10.0" +version = "2.10.1" description = "A hyperparameter optimization framework" category = "main" -optional = false +optional = true python-versions = ">=3.6" [package.dependencies] @@ -1388,7 +1548,7 @@ benchmark = ["asv", "virtualenv"] checking = ["black", "hacking", "isort", "mypy (==0.790)", "blackdoc"] codecov = ["codecov", "pytest-cov"] doctest = ["cma", "matplotlib (>=3.0.0)", "pandas", "plotly (>=4.0.0)", "scikit-learn (>=0.24.2,<1.0.0)", "scikit-optimize", "mlflow"] -document = ["sphinx (<4.0.0)", "sphinx-rtd-theme", "sphinx-copybutton", "sphinx-gallery", "sphinx-plotly-directive", "pillow", "matplotlib", "scikit-learn (<1.0.0)", "plotly (>=4.0.0)", "pandas", "lightgbm", "torch (==1.8.0)", "torchvision (==0.9.0)", "torchaudio (==0.8.0)", "thop"] +document = ["Jinja2 (<3.0.0)", "MarkupSafe (<=2.0.1)", "sphinx (<=3.5.4)", "sphinx-rtd-theme (<=1.0.0)", "sphinx-copybutton (<=0.4.0)", "sphinx-gallery (<=0.10.0)", "sphinx-plotly-directive (<=0.1.3)", "pillow", "matplotlib", "scikit-learn (<1.0.0)", "plotly (>=4.0.0)", "pandas", "lightgbm", "torch (==1.8.0)", "torchvision (==0.9.0)", "torchaudio (==0.8.0)", "thop"] experimental = ["redis"] integration = ["chainer (>=5.0.0)", "cma", "lightgbm", "mlflow", "wandb", "mpi4py", "mxnet", "pandas", "scikit-learn (>=0.24.2,<1.0.0)", "scikit-optimize", "xgboost", "tensorflow", "tensorflow-datasets", "pytorch-ignite", "pytorch-lightning (>=1.0.2)", "skorch", "catalyst (>=21.3)", "torchaudio (==0.8.0)", "allennlp (>=2.2.0,<2.7.0)", "fastai", "botorch (>=0.4.0)", "torch (==1.8.0+cpu)", "torchvision (==0.9.0+cpu)", "torch (==1.8.0)", "torchvision (==0.9.0)"] optional = ["bokeh (<2.0.0)", "matplotlib (>=3.0.0)", "pandas", "plotly (>=4.0.0)", "redis", "scikit-learn (>=0.24.2,<1.0.0)"] @@ -1408,19 +1568,19 @@ pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" [[package]] name = "pandas" -version = "1.1.5" +version = "1.5.2" description = "Powerful data structures for data analysis, time series, and statistics" category = "main" optional = false -python-versions = ">=3.6.1" +python-versions = ">=3.8" [package.dependencies] -numpy = ">=1.15.4" -python-dateutil = ">=2.7.3" -pytz = ">=2017.2" +numpy = {version = ">=1.20.3", markers = "python_version < \"3.10\""} +python-dateutil = ">=2.8.1" +pytz = ">=2020.1" [package.extras] -test = ["pytest (>=4.0.2)", "pytest-xdist", "hypothesis (>=3.58)"] +test = ["hypothesis (>=5.5.3)", "pytest (>=6.0)", "pytest-xdist (>=1.31)"] [[package]] name = "pandocfilters" @@ -1444,18 +1604,18 @@ testing = ["docopt", "pytest (<6.0.0)"] [[package]] name = "pathspec" -version = "0.9.0" +version = "0.10.2" description = "Utility library for gitignore style pattern matching of file paths." category = "dev" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +python-versions = ">=3.7" [[package]] name = "pbr" -version = "5.8.1" +version = "5.11.0" description = "Python Build Reasonableness" category = "main" -optional = false +optional = true python-versions = ">=2.6" [[package]] @@ -1479,27 +1639,35 @@ python-versions = "*" [[package]] name = "pillow" -version = "9.1.0" +version = "9.3.0" description = "Python Imaging Library (Fork)" category = "main" optional = false python-versions = ">=3.7" [package.extras] -docs = ["olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-issues (>=3.0.1)", "sphinx-removed-in", "sphinx-rtd-theme (>=1.0)", "sphinxext-opengraph"] +docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-issues (>=3.0.1)", "sphinx-removed-in", "sphinxext-opengraph"] tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] +[[package]] +name = "pkgutil-resolve-name" +version = "1.3.10" +description = "Resolve a name to an object." +category = "main" +optional = false +python-versions = ">=3.6" + [[package]] name = "platformdirs" -version = "2.5.2" -description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -category = "dev" +version = "2.5.4" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +category = "main" optional = false python-versions = ">=3.7" [package.extras] -docs = ["furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx-autodoc-typehints (>=1.12)", "sphinx (>=4)"] -test = ["appdirs (==1.4.4)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)", "pytest (>=6)"] +docs = ["furo (>=2022.9.29)", "proselint (>=0.13)", "sphinx-autodoc-typehints (>=1.19.4)", "sphinx (>=5.3)"] +test = ["appdirs (==1.4.4)", "pytest-cov (>=4)", "pytest-mock (>=3.10)", "pytest (>=7.2)"] [[package]] name = "pluggy" @@ -1509,23 +1677,19 @@ category = "dev" optional = false python-versions = ">=3.6" -[package.dependencies] -importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} - [package.extras] dev = ["pre-commit", "tox"] testing = ["pytest", "pytest-benchmark"] [[package]] name = "prettytable" -version = "3.2.0" +version = "3.5.0" description = "A simple Python library for easily displaying tabular data in a visually appealing ASCII table format" category = "main" -optional = false +optional = true python-versions = ">=3.7" [package.dependencies] -importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} wcwidth = "*" [package.extras] @@ -1533,7 +1697,7 @@ tests = ["pytest", "pytest-cov", "pytest-lazy-fixture"] [[package]] name = "prometheus-client" -version = "0.14.1" +version = "0.15.0" description = "Python client for the Prometheus monitoring system." category = "main" optional = false @@ -1544,7 +1708,7 @@ twisted = ["twisted"] [[package]] name = "prompt-toolkit" -version = "3.0.29" +version = "3.0.33" description = "Library for building powerful interactive command lines in Python" category = "main" optional = false @@ -1555,22 +1719,22 @@ wcwidth = "*" [[package]] name = "protobuf" -version = "3.20.1" +version = "3.19.6" description = "Protocol Buffers" category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.5" [[package]] name = "psutil" -version = "5.9.0" +version = "5.9.4" description = "Cross-platform lib for process and system monitoring in Python." category = "main" optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [package.extras] -test = ["ipaddress", "mock", "unittest2", "enum34", "pywin32", "wmi"] +test = ["ipaddress", "mock", "enum34", "pywin32", "wmi"] [[package]] name = "ptyprocess" @@ -1580,6 +1744,17 @@ category = "main" optional = false python-versions = "*" +[[package]] +name = "pure-eval" +version = "0.2.2" +description = "Safely evaluate AST nodes without side effects" +category = "main" +optional = false +python-versions = "*" + +[package.extras] +tests = ["pytest"] + [[package]] name = "py" version = "1.11.0" @@ -1617,62 +1792,59 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [[package]] name = "pydantic" -version = "1.9.0" -description = "Data validation and settings management using python 3.6 type hinting" +version = "1.10.2" +description = "Data validation and settings management using python type hints" category = "main" -optional = false -python-versions = ">=3.6.1" +optional = true +python-versions = ">=3.7" [package.dependencies] -typing-extensions = ">=3.7.4.3" +typing-extensions = ">=4.1.0" [package.extras] dotenv = ["python-dotenv (>=0.10.4)"] email = ["email-validator (>=1.0.3)"] -[[package]] -name = "pydeprecate" -version = "0.3.2" -description = "Deprecation tooling" -category = "main" -optional = false -python-versions = ">=3.6" - [[package]] name = "pygments" -version = "2.12.0" +version = "2.13.0" description = "Pygments is a syntax highlighting package written in Python." category = "main" optional = false python-versions = ">=3.6" +[package.extras] +plugins = ["importlib-metadata"] + [[package]] name = "pylint" -version = "2.13.7" +version = "2.15.6" description = "python code static checker" category = "dev" optional = false -python-versions = ">=3.6.2" +python-versions = ">=3.7.2" [package.dependencies] -astroid = ">=2.11.3,<=2.12.0-dev0" -colorama = {version = "*", markers = "sys_platform == \"win32\""} +astroid = ">=2.12.12,<=2.14.0-dev0" +colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} dill = ">=0.2" isort = ">=4.2.5,<6" mccabe = ">=0.6,<0.8" platformdirs = ">=2.2.0" tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +tomlkit = ">=0.10.1" typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""} [package.extras] -testutil = ["gitpython (>3)"] +spelling = ["pyenchant (>=3.2,<4.0)"] +testutils = ["gitpython (>3)"] [[package]] name = "pymongo" -version = "3.12.3" +version = "3.13.0" description = "Python driver for MongoDB " category = "main" -optional = false +optional = true python-versions = "*" [package.extras] @@ -1687,7 +1859,7 @@ zstd = ["zstandard"] [[package]] name = "pyparsing" -version = "3.0.8" +version = "3.0.9" description = "pyparsing module - Classes and methods to define and execute parsing grammars" category = "main" optional = false @@ -1701,7 +1873,7 @@ name = "pyperclip" version = "1.8.2" description = "A cross-platform clipboard module for Python. (Only handles plain text for now.)" category = "main" -optional = false +optional = true python-versions = "*" [[package]] @@ -1709,12 +1881,12 @@ name = "pyreadline3" version = "3.4.1" description = "A python implementation of GNU readline." category = "main" -optional = false +optional = true python-versions = "*" [[package]] name = "pyrsistent" -version = "0.18.1" +version = "0.19.2" description = "Persistent/Functional/Immutable data structures" category = "main" optional = false @@ -1732,7 +1904,6 @@ python-versions = ">=3.6" atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} attrs = ">=19.2.0" colorama = {version = "*", markers = "sys_platform == \"win32\""} -importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} iniconfig = "*" packaging = "*" pluggy = ">=0.12,<2.0" @@ -1773,14 +1944,14 @@ testing = ["fields", "hunter", "process-tests", "six", "pytest-xdist", "virtuale [[package]] name = "pytest-datadir" -version = "1.3.1" +version = "1.4.1" description = "pytest plugin for test data directories and files" category = "dev" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.6" [package.dependencies] -pytest = ">=2.7.0" +pytest = ">=5.0" [[package]] name = "pytest-mccabe" @@ -1796,7 +1967,7 @@ pytest = ">=5.4.0" [[package]] name = "pytest-mock" -version = "3.7.0" +version = "3.10.0" description = "Thin-wrapper around the mock package for easier use with pytest" category = "dev" optional = false @@ -1821,40 +1992,43 @@ six = ">=1.5" [[package]] name = "pytorch-lightning" -version = "1.6.2" +version = "1.8.3.post0" description = "PyTorch Lightning is the lightweight PyTorch wrapper for ML researchers. Scale your models. Write less boilerplate." category = "main" -optional = false +optional = true python-versions = ">=3.7" [package.dependencies] -fsspec = {version = ">=2021.05.0,<2021.06.0 || >2021.06.0", extras = ["http"]} +fsspec = {version = ">2021.06.0", extras = ["http"]} +lightning-utilities = ">=0.3.0,<0.4.0" numpy = ">=1.17.2" packaging = ">=17.0" -pyDeprecate = ">=0.3.1,<0.4.0" PyYAML = ">=5.4" -tensorboard = ">=2.2.0" -torch = ">=1.8" -torchmetrics = ">=0.4.1" -tqdm = ">=4.41.0" +tensorboardX = ">=2.2" +torch = ">=1.9" +torchmetrics = ">=0.7.0" +tqdm = ">=4.57.0" typing-extensions = ">=4.0.0" [package.extras] -all = ["matplotlib (>3.1)", "horovod (>=0.21.2,!=0.24.0)", "torchtext (>=0.9)", "omegaconf (>=2.0.5)", "hydra-core (>=1.0.5)", "jsonargparse[signatures] (>=4.7.1)", "gcsfs (>=2021.5.0)", "rich (>=10.2.2,<10.15.0 || >=10.16.0)", "neptune-client (>=0.10.0)", "comet-ml (>=3.1.12)", "mlflow (>=1.0.0)", "test-tube (>=0.7.5)", "wandb (>=0.8.21)", "coverage (>5.2.0,<6.3)", "codecov (>=2.1)", "pytest (>=6.0)", "pytest-rerunfailures (>=10.2)", "twine (==3.2)", "mypy (>=0.920)", "flake8 (>=3.9.2)", "pre-commit (>=1.0)", "pytest-forked", "sklearn", "jsonargparse", "cloudpickle (>=1.3)", "scikit-learn (>0.22.1)", "onnxruntime", "pandas", "torchvision (>=0.9)", "gym[classic_control] (>=0.17.0)", "ipython"] -cpu = ["matplotlib (>3.1)", "torchtext (>=0.9)", "omegaconf (>=2.0.5)", "hydra-core (>=1.0.5)", "jsonargparse[signatures] (>=4.7.1)", "gcsfs (>=2021.5.0)", "rich (>=10.2.2,<10.15.0 || >=10.16.0)", "neptune-client (>=0.10.0)", "comet-ml (>=3.1.12)", "mlflow (>=1.0.0)", "test-tube (>=0.7.5)", "wandb (>=0.8.21)", "coverage (>5.2.0,<6.3)", "codecov (>=2.1)", "pytest (>=6.0)", "pytest-rerunfailures (>=10.2)", "twine (==3.2)", "mypy (>=0.920)", "flake8 (>=3.9.2)", "pre-commit (>=1.0)", "pytest-forked", "sklearn", "jsonargparse", "cloudpickle (>=1.3)", "scikit-learn (>0.22.1)", "onnxruntime", "pandas", "torchvision (>=0.9)", "gym[classic_control] (>=0.17.0)", "ipython"] -cpu-extra = ["matplotlib (>3.1)", "torchtext (>=0.9)", "omegaconf (>=2.0.5)", "hydra-core (>=1.0.5)", "jsonargparse[signatures] (>=4.7.1)", "gcsfs (>=2021.5.0)", "rich (>=10.2.2,<10.15.0 || >=10.16.0)"] -dev = ["matplotlib (>3.1)", "horovod (>=0.21.2,!=0.24.0)", "torchtext (>=0.9)", "omegaconf (>=2.0.5)", "hydra-core (>=1.0.5)", "jsonargparse[signatures] (>=4.7.1)", "gcsfs (>=2021.5.0)", "rich (>=10.2.2,<10.15.0 || >=10.16.0)", "neptune-client (>=0.10.0)", "comet-ml (>=3.1.12)", "mlflow (>=1.0.0)", "test-tube (>=0.7.5)", "wandb (>=0.8.21)", "coverage (>5.2.0,<6.3)", "codecov (>=2.1)", "pytest (>=6.0)", "pytest-rerunfailures (>=10.2)", "twine (==3.2)", "mypy (>=0.920)", "flake8 (>=3.9.2)", "pre-commit (>=1.0)", "pytest-forked", "sklearn", "jsonargparse", "cloudpickle (>=1.3)", "scikit-learn (>0.22.1)", "onnxruntime", "pandas"] -examples = ["torchvision (>=0.9)", "gym[classic_control] (>=0.17.0)", "ipython"] -extra = ["matplotlib (>3.1)", "horovod (>=0.21.2,!=0.24.0)", "torchtext (>=0.9)", "omegaconf (>=2.0.5)", "hydra-core (>=1.0.5)", "jsonargparse[signatures] (>=4.7.1)", "gcsfs (>=2021.5.0)", "rich (>=10.2.2,<10.15.0 || >=10.16.0)"] -loggers = ["neptune-client (>=0.10.0)", "comet-ml (>=3.1.12)", "mlflow (>=1.0.0)", "test-tube (>=0.7.5)", "wandb (>=0.8.21)"] -test = ["coverage (>5.2.0,<6.3)", "codecov (>=2.1)", "pytest (>=6.0)", "pytest-rerunfailures (>=10.2)", "twine (==3.2)", "mypy (>=0.920)", "flake8 (>=3.9.2)", "pre-commit (>=1.0)", "pytest-forked", "sklearn", "jsonargparse", "cloudpickle (>=1.3)", "scikit-learn (>0.22.1)", "onnxruntime", "pandas"] +all = ["matplotlib (>3.1)", "omegaconf (>=2.0.5)", "hydra-core (>=1.0.5)", "jsonargparse[signatures] (>=4.15.2)", "rich (>=10.14.0,!=10.15.0.a)", "coverage (==6.5.0)", "codecov (==2.1.12)", "pytest (==7.2.0)", "pytest-cov (==4.0.0)", "pytest-forked (==1.4.0)", "pytest-rerunfailures (==10.2)", "pre-commit (==2.20.0)", "cloudpickle (>=1.3)", "scikit-learn (>0.22.1)", "onnxruntime", "psutil", "pandas (>1.0)", "fastapi", "uvicorn", "tensorboard (>=2.9.1)", "protobuf (<=3.20.1)", "torchvision (>=0.10)", "gym[classic_control] (>=0.17.0)", "ipython", "colossalai (>=0.1.10)", "fairscale (>=0.4.5)", "deepspeed (>=0.6.0)", "horovod (>=0.21.2,!=0.24.0)", "hivemind (>=1.0.1)"] +colossalai = ["colossalai (>=0.1.10)"] +deepspeed = ["deepspeed (>=0.6.0)"] +dev = ["matplotlib (>3.1)", "omegaconf (>=2.0.5)", "hydra-core (>=1.0.5)", "jsonargparse[signatures] (>=4.15.2)", "rich (>=10.14.0,!=10.15.0.a)", "coverage (==6.5.0)", "codecov (==2.1.12)", "pytest (==7.2.0)", "pytest-cov (==4.0.0)", "pytest-forked (==1.4.0)", "pytest-rerunfailures (==10.2)", "pre-commit (==2.20.0)", "cloudpickle (>=1.3)", "scikit-learn (>0.22.1)", "onnxruntime", "psutil", "pandas (>1.0)", "fastapi", "uvicorn", "tensorboard (>=2.9.1)", "protobuf (<=3.20.1)"] +examples = ["torchvision (>=0.10)", "gym[classic_control] (>=0.17.0)", "ipython"] +extra = ["matplotlib (>3.1)", "omegaconf (>=2.0.5)", "hydra-core (>=1.0.5)", "jsonargparse[signatures] (>=4.15.2)", "rich (>=10.14.0,!=10.15.0.a)"] +fairscale = ["fairscale (>=0.4.5)"] +hivemind = ["hivemind (>=1.0.1)"] +horovod = ["horovod (>=0.21.2,!=0.24.0)"] +strategies = ["colossalai (>=0.1.10)", "fairscale (>=0.4.5)", "deepspeed (>=0.6.0)", "horovod (>=0.21.2,!=0.24.0)", "hivemind (>=1.0.1)"] +test = ["coverage (==6.5.0)", "codecov (==2.1.12)", "pytest (==7.2.0)", "pytest-cov (==4.0.0)", "pytest-forked (==1.4.0)", "pytest-rerunfailures (==10.2)", "pre-commit (==2.20.0)", "cloudpickle (>=1.3)", "scikit-learn (>0.22.1)", "onnxruntime", "psutil", "pandas (>1.0)", "fastapi", "uvicorn", "tensorboard (>=2.9.1)", "protobuf (<=3.20.1)"] [[package]] name = "pytorch-tree-lstm" version = "0.1.3" description = "A Tree-LSTM model package for PyTorch" category = "main" -optional = false +optional = true python-versions = ">=3" [package.dependencies] @@ -1863,7 +2037,7 @@ torch = "*" [[package]] name = "pytz" -version = "2022.1" +version = "2022.6" description = "World timezone definitions, modern and historical" category = "main" optional = false @@ -1871,7 +2045,7 @@ python-versions = "*" [[package]] name = "pywin32" -version = "303" +version = "305" description = "Python for Window Extensions" category = "main" optional = false @@ -1879,7 +2053,7 @@ python-versions = "*" [[package]] name = "pywinpty" -version = "2.0.5" +version = "2.0.9" description = "Pseudo terminal support for Windows from Python." category = "main" optional = false @@ -1895,7 +2069,7 @@ python-versions = ">=3.6" [[package]] name = "pyzmq" -version = "22.3.0" +version = "24.0.1" description = "Python bindings for 0MQ" category = "main" optional = false @@ -1907,7 +2081,7 @@ py = {version = "*", markers = "implementation_name == \"pypy\""} [[package]] name = "qtconsole" -version = "5.3.0" +version = "5.4.0" description = "Jupyter Qt console" category = "main" optional = false @@ -1921,7 +2095,7 @@ jupyter-core = "*" pygments = "*" pyzmq = ">=17.1" qtpy = ">=2.0.1" -traitlets = "*" +traitlets = "<5.2.1 || >5.2.1,<5.2.2 || >5.2.2" [package.extras] doc = ["Sphinx (>=1.3)"] @@ -1929,17 +2103,17 @@ test = ["flaky", "pytest", "pytest-qt"] [[package]] name = "qtpy" -version = "2.0.1" +version = "2.3.0" description = "Provides an abstraction layer on top of the various Qt bindings (PyQt5/6 and PySide2/6)." category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [package.dependencies] packaging = "*" [package.extras] -test = ["pytest (>=6.0.0)", "pytest-cov (>=3.0.0)", "pytest-qt"] +test = ["pytest (>=6,!=7.0.0,!=7.0.1)", "pytest-cov (>=3.0.0)", "pytest-qt"] [[package]] name = "rdchiral" @@ -1949,23 +2123,35 @@ category = "main" optional = false python-versions = ">=3.5" +[[package]] +name = "rdkit" +version = "2022.9.1" +description = "A collection of chemoinformatics and machine-learning software written in C++ and Python" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +numpy = "*" +Pillow = "*" + [[package]] name = "requests" -version = "2.27.1" +version = "2.28.1" description = "Python HTTP for Humans." category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +python-versions = ">=3.7, <4" [package.dependencies] certifi = ">=2017.4.17" -charset-normalizer = {version = ">=2.0.0,<2.1.0", markers = "python_version >= \"3\""} -idna = {version = ">=2.5,<4", markers = "python_version >= \"3\""} +charset-normalizer = ">=2,<3" +idna = ">=2.5,<4" urllib3 = ">=1.21.1,<1.27" [package.extras] -socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"] -use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use_chardet_on_py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "requests-oauthlib" @@ -1984,30 +2170,28 @@ rsa = ["oauthlib[signedtoken] (>=3.0.0)"] [[package]] name = "route-distances" -version = "1.0.1" +version = "1.1.0" description = "Models for calculating distances between synthesis routes" category = "main" -optional = false -python-versions = ">=3.7,<3.10" +optional = true +python-versions = ">=3.8,<3.10" [package.dependencies] apted = ">=1.0.3,<2.0.0" optuna = ">=2.5.0,<3.0.0" +pandas = ">=1.5.0,<2.0.0" pydantic = ">=1.8.0,<2.0.0" python-dateutil = ">=2.8.2,<3.0.0" pytorch-lightning = ">=1.6.0,<2.0.0" pytorch-tree-lstm = ">=0.1.3,<0.2.0" +rdkit = ">=2022.3.3,<2023.0.0" scikit-learn = ">0.21.0" tables = ">=3.6.0,<4.0.0" torch = ">=1.7.1,<2.0.0" -[package.source] -type = "url" -url = "https://github.com/MolecularAI/route-distances/archive/refs/tags/v1.0.1.tar.gz" - [[package]] name = "rsa" -version = "4.8" +version = "4.9" description = "Pure-Python RSA implementation" category = "main" optional = false @@ -2018,34 +2202,39 @@ pyasn1 = ">=0.1.3" [[package]] name = "scikit-learn" -version = "1.0.2" +version = "1.1.3" description = "A set of python modules for machine learning and data mining" category = "main" -optional = false -python-versions = ">=3.7" +optional = true +python-versions = ">=3.8" [package.dependencies] -joblib = ">=0.11" -numpy = ">=1.14.6" -scipy = ">=1.1.0" +joblib = ">=1.0.0" +numpy = ">=1.17.3" +scipy = ">=1.3.2" threadpoolctl = ">=2.0.0" [package.extras] -benchmark = ["matplotlib (>=2.2.3)", "pandas (>=0.25.0)", "memory-profiler (>=0.57.0)"] -docs = ["matplotlib (>=2.2.3)", "scikit-image (>=0.14.5)", "pandas (>=0.25.0)", "seaborn (>=0.9.0)", "memory-profiler (>=0.57.0)", "sphinx (>=4.0.1)", "sphinx-gallery (>=0.7.0)", "numpydoc (>=1.0.0)", "Pillow (>=7.1.2)", "sphinx-prompt (>=1.3.0)", "sphinxext-opengraph (>=0.4.2)"] -examples = ["matplotlib (>=2.2.3)", "scikit-image (>=0.14.5)", "pandas (>=0.25.0)", "seaborn (>=0.9.0)"] -tests = ["matplotlib (>=2.2.3)", "scikit-image (>=0.14.5)", "pandas (>=0.25.0)", "pytest (>=5.0.1)", "pytest-cov (>=2.9.0)", "flake8 (>=3.8.2)", "black (>=21.6b0)", "mypy (>=0.770)", "pyamg (>=4.0.0)"] +benchmark = ["matplotlib (>=3.1.2)", "pandas (>=1.0.5)", "memory-profiler (>=0.57.0)"] +docs = ["matplotlib (>=3.1.2)", "scikit-image (>=0.16.2)", "pandas (>=1.0.5)", "seaborn (>=0.9.0)", "memory-profiler (>=0.57.0)", "sphinx (>=4.0.1)", "sphinx-gallery (>=0.7.0)", "numpydoc (>=1.2.0)", "Pillow (>=7.1.2)", "sphinx-prompt (>=1.3.0)", "sphinxext-opengraph (>=0.4.2)"] +examples = ["matplotlib (>=3.1.2)", "scikit-image (>=0.16.2)", "pandas (>=1.0.5)", "seaborn (>=0.9.0)"] +tests = ["matplotlib (>=3.1.2)", "scikit-image (>=0.16.2)", "pandas (>=1.0.5)", "pytest (>=5.0.1)", "pytest-cov (>=2.9.0)", "flake8 (>=3.8.2)", "black (>=22.3.0)", "mypy (>=0.961)", "pyamg (>=4.0.0)", "numpydoc (>=1.2.0)"] [[package]] name = "scipy" -version = "1.7.3" -description = "SciPy: Scientific Library for Python" +version = "1.9.3" +description = "Fundamental algorithms for scientific computing in Python" category = "main" -optional = false -python-versions = ">=3.7,<3.11" +optional = true +python-versions = ">=3.8" [package.dependencies] -numpy = ">=1.16.5,<1.23.0" +numpy = ">=1.18.5,<1.26.0" + +[package.extras] +test = ["pytest", "pytest-cov", "pytest-xdist", "asv", "mpmath", "gmpy2", "threadpoolctl", "scikit-umfpack"] +doc = ["sphinx (!=4.1.0)", "pydata-sphinx-theme (==0.9.0)", "sphinx-panels (>=0.5.2)", "matplotlib (>2)", "numpydoc", "sphinx-tabs"] +dev = ["mypy", "typing-extensions", "pycodestyle", "flake8"] [[package]] name = "send2trash" @@ -2062,15 +2251,16 @@ win32 = ["pywin32"] [[package]] name = "setuptools-scm" -version = "6.4.2" +version = "7.0.5" description = "the blessed package to manage your versions by scm tags" category = "main" -optional = false -python-versions = ">=3.6" +optional = true +python-versions = ">=3.7" [package.dependencies] packaging = ">=20.0" tomli = ">=1.0.0" +typing-extensions = "*" [package.extras] test = ["pytest (>=6.2)", "virtualenv (>20)"] @@ -2084,6 +2274,14 @@ category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +[[package]] +name = "sniffio" +version = "1.3.0" +description = "Sniff out which async library your code is running under" +category = "main" +optional = false +python-versions = ">=3.7" + [[package]] name = "snowballstemmer" version = "2.2.0" @@ -2205,22 +2403,21 @@ test = ["pytest"] [[package]] name = "sqlalchemy" -version = "1.4.36" +version = "1.4.44" description = "Database Abstraction Library" category = "main" -optional = false +optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" [package.dependencies] greenlet = {version = "!=0.4.17", markers = "python_version >= \"3\" and (platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\")"} -importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} [package.extras] aiomysql = ["greenlet (!=0.4.17)", "aiomysql"] aiosqlite = ["typing_extensions (!=3.10.0.1)", "greenlet (!=0.4.17)", "aiosqlite"] asyncio = ["greenlet (!=0.4.17)"] asyncmy = ["greenlet (!=0.4.17)", "asyncmy (>=0.2.3,!=0.2.4)"] -mariadb_connector = ["mariadb (>=1.0.1)"] +mariadb_connector = ["mariadb (>=1.0.1,!=1.1.2)"] mssql = ["pyodbc"] mssql_pymssql = ["pymssql"] mssql_pyodbc = ["pyodbc"] @@ -2230,22 +2427,37 @@ mysql_connector = ["mysql-connector-python"] oracle = ["cx_oracle (>=7,<8)", "cx_oracle (>=7)"] postgresql = ["psycopg2 (>=2.7)"] postgresql_asyncpg = ["greenlet (!=0.4.17)", "asyncpg"] -postgresql_pg8000 = ["pg8000 (>=1.16.6)"] +postgresql_pg8000 = ["pg8000 (>=1.16.6,!=1.29.0)"] postgresql_psycopg2binary = ["psycopg2-binary"] postgresql_psycopg2cffi = ["psycopg2cffi"] pymysql = ["pymysql (<1)", "pymysql"] sqlcipher = ["sqlcipher3-binary"] +[[package]] +name = "stack-data" +version = "0.6.1" +description = "Extract data from python stack frames and tracebacks for informative displays" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +asttokens = ">=2.1.0" +executing = ">=1.2.0" +pure-eval = "*" + +[package.extras] +tests = ["pytest", "typeguard", "pygments", "littleutils", "cython"] + [[package]] name = "stevedore" -version = "3.5.0" +version = "4.1.1" description = "Manage dynamic plugins for Python applications" category = "main" -optional = false -python-versions = ">=3.6" +optional = true +python-versions = ">=3.8" [package.dependencies] -importlib-metadata = {version = ">=1.7.0", markers = "python_version < \"3.8\""} pbr = ">=2.0.0,<2.1.0 || >2.1.0" [[package]] @@ -2266,11 +2478,11 @@ doc = ["sphinx (>=1.1)", "sphinx-rtd-theme", "numpydoc", "ipython"] [[package]] name = "tensorboard" -version = "2.8.0" +version = "2.11.0" description = "TensorBoard lets you watch Tensors Flow" category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [package.dependencies] absl-py = ">=0.4" @@ -2279,11 +2491,11 @@ google-auth-oauthlib = ">=0.4.1,<0.5" grpcio = ">=1.24.3" markdown = ">=2.6.8" numpy = ">=1.12.0" -protobuf = ">=3.6.0" +protobuf = ">=3.9.2,<4" requests = ">=2.21.0,<3" tensorboard-data-server = ">=0.6.0,<0.7.0" tensorboard-plugin-wit = ">=1.6.0" -werkzeug = ">=0.11.15" +werkzeug = ">=1.0.1" [[package]] name = "tensorboard-data-server" @@ -2301,75 +2513,98 @@ category = "main" optional = false python-versions = "*" +[[package]] +name = "tensorboardx" +version = "2.5.1" +description = "TensorBoardX lets you watch Tensors Flow without Tensorflow" +category = "main" +optional = true +python-versions = "*" + +[package.dependencies] +numpy = "*" +protobuf = ">=3.8.0,<=3.20.1" + [[package]] name = "tensorflow" -version = "2.8.0" +version = "2.11.0" description = "TensorFlow is an open source machine learning framework for everyone." category = "main" optional = false -python-versions = "*" +python-versions = ">=3.7" [package.dependencies] -absl-py = ">=0.4.0" +absl-py = ">=1.0.0" astunparse = ">=1.6.0" -flatbuffers = ">=1.12" -gast = ">=0.2.1" +flatbuffers = ">=2.0" +gast = ">=0.2.1,<=0.4.0" google-pasta = ">=0.1.1" grpcio = ">=1.24.3,<2.0" h5py = ">=2.9.0" -keras = ">=2.8.0rc0,<2.9" -keras-preprocessing = ">=1.1.1" -libclang = ">=9.0.1" +keras = ">=2.11.0,<2.12" +libclang = ">=13.0.0" numpy = ">=1.20" opt-einsum = ">=2.3.2" -protobuf = ">=3.9.2" +packaging = "*" +protobuf = ">=3.9.2,<3.20" six = ">=1.12.0" -tensorboard = ">=2.8,<2.9" -tensorflow-io-gcs-filesystem = ">=0.23.1" +tensorboard = ">=2.11,<2.12" +tensorflow-estimator = ">=2.11.0,<2.12" +tensorflow-io-gcs-filesystem = {version = ">=0.23.1", markers = "platform_machine != \"arm64\" or platform_system != \"Darwin\""} termcolor = ">=1.1.0" -tf-estimator-nightly = "2.8.0.dev2021122109" typing-extensions = ">=3.6.6" wrapt = ">=1.11.0" +[[package]] +name = "tensorflow-estimator" +version = "2.11.0" +description = "TensorFlow Estimator." +category = "main" +optional = false +python-versions = ">=3.7" + [[package]] name = "tensorflow-io-gcs-filesystem" -version = "0.25.0" +version = "0.28.0" description = "TensorFlow IO" category = "main" optional = false python-versions = ">=3.7, <3.11" [package.extras] -tensorflow = ["tensorflow (>=2.8.0,<2.9.0)"] -tensorflow-aarch64 = ["tensorflow-aarch64 (>=2.8.0,<2.9.0)"] -tensorflow-cpu = ["tensorflow-cpu (>=2.8.0,<2.9.0)"] -tensorflow-gpu = ["tensorflow-gpu (>=2.8.0,<2.9.0)"] -tensorflow-rocm = ["tensorflow-rocm (>=2.8.0,<2.9.0)"] +tensorflow = ["tensorflow (>=2.11.0,<2.12.0)"] +tensorflow-aarch64 = ["tensorflow-aarch64 (>=2.11.0,<2.12.0)"] +tensorflow-cpu = ["tensorflow-cpu (>=2.11.0,<2.12.0)"] +tensorflow-gpu = ["tensorflow-gpu (>=2.11.0,<2.12.0)"] +tensorflow-rocm = ["tensorflow-rocm (>=2.11.0,<2.12.0)"] [[package]] name = "tensorflow-serving-api" -version = "2.8.0" +version = "2.11.0" description = "TensorFlow Serving Python API." category = "main" -optional = false -python-versions = "*" +optional = true +python-versions = ">=3.7" [package.dependencies] -grpcio = ">=1.0,<2" -protobuf = ">=3.6.0" -tensorflow = ">=2.8.0,<3" +grpcio = ">=1.24.3,<2.0" +protobuf = ">=3.9.2,<3.20" +tensorflow = ">=2.11.0,<3" [[package]] name = "termcolor" -version = "1.1.0" -description = "ANSII Color formatting for output in terminal." +version = "2.1.1" +description = "ANSI color formatting for output in terminal" category = "main" optional = false -python-versions = "*" +python-versions = ">=3.7" + +[package.extras] +tests = ["pytest", "pytest-cov"] [[package]] name = "terminado" -version = "0.13.3" +version = "0.17.0" description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library." category = "main" optional = false @@ -2378,25 +2613,18 @@ python-versions = ">=3.7" [package.dependencies] ptyprocess = {version = "*", markers = "os_name != \"nt\""} pywinpty = {version = ">=1.1.0", markers = "os_name == \"nt\""} -tornado = ">=4" +tornado = ">=6.1.0" [package.extras] -test = ["pytest"] - -[[package]] -name = "tf-estimator-nightly" -version = "2.8.0.dev2021122109" -description = "TensorFlow Estimator." -category = "main" -optional = false -python-versions = "*" +docs = ["pydata-sphinx-theme", "sphinx"] +test = ["pre-commit", "pytest-timeout", "pytest (>=7.0)"] [[package]] name = "threadpoolctl" version = "3.1.0" description = "threadpoolctl" category = "main" -optional = false +optional = true python-versions = ">=3.6" [[package]] @@ -2404,23 +2632,23 @@ name = "timeout-decorator" version = "0.5.0" description = "Timeout decorator" category = "main" -optional = false +optional = true python-versions = "*" [[package]] name = "tinycss2" -version = "1.1.1" +version = "1.2.1" description = "A tiny CSS parser" category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [package.dependencies] webencodings = ">=0.4" [package.extras] doc = ["sphinx", "sphinx-rtd-theme"] -test = ["pytest", "pytest-cov", "pytest-flake8", "pytest-isort", "coverage"] +test = ["pytest", "isort", "flake8"] [[package]] name = "toml" @@ -2438,52 +2666,67 @@ category = "main" optional = false python-versions = ">=3.7" +[[package]] +name = "tomlkit" +version = "0.11.6" +description = "Style preserving TOML library" +category = "dev" +optional = false +python-versions = ">=3.6" + [[package]] name = "torch" -version = "1.11.0" +version = "1.13.0" description = "Tensors and Dynamic neural networks in Python with strong GPU acceleration" category = "main" -optional = false +optional = true python-versions = ">=3.7.0" [package.dependencies] +nvidia-cublas-cu11 = "11.10.3.66" +nvidia-cuda-nvrtc-cu11 = "11.7.99" +nvidia-cuda-runtime-cu11 = "11.7.99" +nvidia-cudnn-cu11 = "8.5.0.96" typing-extensions = "*" +[package.extras] +opt-einsum = ["opt-einsum (>=3.3)"] + [[package]] name = "torchmetrics" -version = "0.8.1" +version = "0.10.3" description = "PyTorch native Metrics" category = "main" -optional = false -python-versions = ">=3.6" +optional = true +python-versions = ">=3.7" [package.dependencies] numpy = ">=1.17.2" packaging = "*" -pyDeprecate = ">=0.3.0,<0.4.0" torch = ">=1.3.1" +typing-extensions = {version = "*", markers = "python_version < \"3.9\""} [package.extras] -all = ["pystoi", "pesq (>=0.0.3)", "torchvision (>=0.8)", "myst-parser", "docutils (>=0.16)", "sphinx-copybutton (>=0.3)", "nbsphinx (>=0.8)", "sphinxcontrib-fulltoc (>=1.0)", "sphinx-autodoc-typehints (>=1.0)", "sphinx-paramlinks (>=0.5.1)", "sphinx (>=4.0)", "sphinxcontrib-mockautodoc", "sphinx-togglebutton (>=0.2)", "pandoc (>=1.0)", "scipy", "lpips", "torchvision", "torch-fidelity", "pytorch-lightning (>=1.5)", "coverage (>5.2)", "torch-complex", "rouge-score (>=0.0.4)", "cloudpickle (>=1.3)", "sacrebleu (>=2.0.0)", "pytest-cov (>2.10)", "requests", "check-manifest", "mypy (>=0.790)", "twine (>=3.2)", "psutil", "pypesq", "jiwer (>=2.3.0)", "scikit-image (>0.17.1)", "fire", "pytest-doctestplus (>=0.9.0)", "bert-score (==0.3.10)", "transformers (>=4.0)", "pytest (>=6.0.0,<7.0.0)", "pre-commit (>=1.0)", "scikit-learn (>=0.24)", "mir-eval (>=0.6)", "pytorch-msssim", "codecov (>=2.1)", "fast-bss-eval (>=0.1.0)", "phmdoctest (>=1.1.1)", "nltk (>=3.6)", "regex (>=2021.9.24)", "tqdm (>=4.41.0)"] -audio = ["pystoi", "pesq (>=0.0.3)"] -detection = ["torchvision (>=0.8)"] -docs = ["myst-parser", "docutils (>=0.16)", "sphinx-copybutton (>=0.3)", "nbsphinx (>=0.8)", "sphinxcontrib-fulltoc (>=1.0)", "sphinx-autodoc-typehints (>=1.0)", "sphinx-paramlinks (>=0.5.1)", "sphinx (>=4.0)", "sphinxcontrib-mockautodoc", "sphinx-togglebutton (>=0.2)", "pandoc (>=1.0)"] -image = ["scipy", "lpips", "torchvision", "torch-fidelity"] +all = ["pystoi", "pycocotools", "torchvision (>=0.8)", "torchvision", "lpips", "scipy", "torch-fidelity", "pytorch-lightning (>=1.5)", "nltk (>=3.6)", "tqdm (>=4.41.0)", "regex (>=2021.9.24)"] +audio = ["pystoi"] +detection = ["pycocotools", "torchvision (>=0.8)"] +docs = ["myst-parser", "pandoc (>=1.0)", "sphinxcontrib-fulltoc (>=1.0)", "docutils (>=0.16)", "sphinx-autodoc-typehints (>=1.0)", "sphinx-copybutton (>=0.3)", "sphinx-paramlinks (>=0.5.1)", "nbsphinx (>=0.8)", "sphinx-togglebutton (>=0.2)", "sphinx (>=4.0,<5.0)", "sphinxcontrib-mockautodoc"] +image = ["torchvision", "lpips", "scipy", "torch-fidelity"] integrate = ["pytorch-lightning (>=1.5)"] -test = ["coverage (>5.2)", "torch-complex", "rouge-score (>=0.0.4)", "cloudpickle (>=1.3)", "sacrebleu (>=2.0.0)", "pytest-cov (>2.10)", "requests", "check-manifest", "mypy (>=0.790)", "twine (>=3.2)", "psutil", "pypesq", "jiwer (>=2.3.0)", "scikit-image (>0.17.1)", "fire", "pytest-doctestplus (>=0.9.0)", "bert-score (==0.3.10)", "transformers (>=4.0)", "pytest (>=6.0.0,<7.0.0)", "pre-commit (>=1.0)", "scikit-learn (>=0.24)", "mir-eval (>=0.6)", "pytorch-msssim", "codecov (>=2.1)", "fast-bss-eval (>=0.1.0)", "phmdoctest (>=1.1.1)"] -text = ["nltk (>=3.6)", "regex (>=2021.9.24)", "tqdm (>=4.41.0)"] +test = ["rouge-score (>=0.0.4)", "netcal", "requests", "transformers (>=4.0)", "fire", "scikit-image (>0.17.1)", "pypesq (>1.2)", "scikit-learn (>1.0,<1.1.1)", "pytest (>=6.0.0,<7.0.0)", "fast-bss-eval (>=0.1.0)", "pytest-doctestplus (>=0.9.0)", "cloudpickle (>=1.3)", "pytorch-msssim (==0.2.1)", "huggingface-hub (<0.7)", "check-manifest", "pytest-timeout", "bert-score (==0.3.10)", "jiwer (>=2.3.0)", "coverage (>5.2)", "sacrebleu (>=2.0.0)", "torch-complex", "psutil", "pycocotools", "phmdoctest (>=1.1.1)", "pytest-cov (>2.10)", "pre-commit (>=1.0)", "mir-eval (>=0.6)"] +text = ["nltk (>=3.6)", "tqdm (>=4.41.0)", "regex (>=2021.9.24)"] [[package]] name = "tornado" -version = "6.1" +version = "6.2" description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." category = "main" optional = false -python-versions = ">= 3.5" +python-versions = ">= 3.7" [[package]] name = "tqdm" -version = "4.64.0" +version = "4.64.1" description = "Fast, Extensible Progress Meter" category = "main" optional = false @@ -2500,14 +2743,15 @@ telegram = ["requests"] [[package]] name = "traitlets" -version = "5.1.1" -description = "Traitlets Python configuration system" +version = "5.5.0" +description = "" category = "main" optional = false python-versions = ">=3.7" [package.extras] -test = ["pytest"] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] +test = ["pre-commit", "pytest"] [[package]] name = "typed-ast" @@ -2519,7 +2763,7 @@ python-versions = "*" [[package]] name = "typing-extensions" -version = "4.2.0" +version = "4.4.0" description = "Backported and Experimental Type Hints for Python 3.7+" category = "main" optional = false @@ -2527,15 +2771,15 @@ python-versions = ">=3.7" [[package]] name = "urllib3" -version = "1.26.9" +version = "1.26.13" 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.*, <4" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" [package.extras] brotli = ["brotlicffi (>=0.8.0)", "brotli (>=1.0.9)", "brotlipy (>=0.6.0)"] -secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] +secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "urllib3-secure-extra", "ipaddress"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] @@ -2554,20 +2798,36 @@ category = "main" optional = false python-versions = "*" +[[package]] +name = "websocket-client" +version = "1.4.2" +description = "WebSocket client for Python with low level API options" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["Sphinx (>=3.4)", "sphinx-rtd-theme (>=0.5)"] +optional = ["python-socks", "wsaccel"] +test = ["websockets"] + [[package]] name = "werkzeug" -version = "2.1.1" +version = "2.2.2" description = "The comprehensive WSGI web application library." category = "main" optional = false python-versions = ">=3.7" +[package.dependencies] +MarkupSafe = ">=2.1.1" + [package.extras] watchdog = ["watchdog"] [[package]] name = "widgetsnbextension" -version = "3.6.0" +version = "3.6.1" description = "IPython HTML widgets for Jupyter" category = "main" optional = false @@ -2578,7 +2838,7 @@ notebook = ">=4.4.1" [[package]] name = "wrapt" -version = "1.14.0" +version = "1.14.1" description = "Module for decorators, wrappers and monkey patching." category = "main" optional = false @@ -2586,2235 +2846,254 @@ python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" [[package]] name = "yarl" -version = "1.7.2" +version = "1.8.1" description = "Yet another URL library" category = "main" -optional = false -python-versions = ">=3.6" +optional = true +python-versions = ">=3.7" [package.dependencies] idna = ">=2.0" multidict = ">=4.0" -typing-extensions = {version = ">=3.7.4", markers = "python_version < \"3.8\""} [[package]] name = "zipp" -version = "3.8.0" +version = "3.10.0" description = "Backport of pathlib-compatible object wrapper for zip files" category = "main" optional = false python-versions = ">=3.7" [package.extras] -docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] -testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] +docs = ["sphinx (>=3.5)", "jaraco.packaging (>=9)", "rst.linker (>=1.9)", "furo", "jaraco.tidelift (>=1.4)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "flake8 (<5)", "pytest-cov", "pytest-enabler (>=1.3)", "jaraco.itertools", "func-timeout", "jaraco.functools", "more-itertools", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] + +[extras] +all = ["grpcio", "tensorflow-serving-api", "pymongo", "route-distances", "scipy", "matplotlib", "timeout-decorator"] [metadata] lock-version = "1.1" -python-versions = ">=3.7,<3.10" -content-hash = "277e1166793c9badac7bebefb027b89652df3744b3aca1e9962fc3135731b2f4" +python-versions = ">=3.8,<3.10" +content-hash = "49af842e15db0730537b57a34b88b01a638116aa34b3de3e35a8fceb4f9f8ba7" [metadata.files] -absl-py = [ - {file = "absl-py-1.0.0.tar.gz", hash = "sha256:ac511215c01ee9ae47b19716599e8ccfa746f2e18de72bdf641b79b22afa27ea"}, - {file = "absl_py-1.0.0-py3-none-any.whl", hash = "sha256:84e6dcdc69c947d0c13e5457d056bd43cade4c2393dce00d684aedea77ddc2a3"}, -] -aiohttp = [ - {file = "aiohttp-3.8.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1ed0b6477896559f17b9eaeb6d38e07f7f9ffe40b9f0f9627ae8b9926ae260a8"}, - {file = "aiohttp-3.8.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7dadf3c307b31e0e61689cbf9e06be7a867c563d5a63ce9dca578f956609abf8"}, - {file = "aiohttp-3.8.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a79004bb58748f31ae1cbe9fa891054baaa46fb106c2dc7af9f8e3304dc30316"}, - {file = "aiohttp-3.8.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:12de6add4038df8f72fac606dff775791a60f113a725c960f2bab01d8b8e6b15"}, - {file = "aiohttp-3.8.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6f0d5f33feb5f69ddd57a4a4bd3d56c719a141080b445cbf18f238973c5c9923"}, - {file = "aiohttp-3.8.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eaba923151d9deea315be1f3e2b31cc39a6d1d2f682f942905951f4e40200922"}, - {file = "aiohttp-3.8.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:099ebd2c37ac74cce10a3527d2b49af80243e2a4fa39e7bce41617fbc35fa3c1"}, - {file = "aiohttp-3.8.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2e5d962cf7e1d426aa0e528a7e198658cdc8aa4fe87f781d039ad75dcd52c516"}, - {file = "aiohttp-3.8.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:fa0ffcace9b3aa34d205d8130f7873fcfefcb6a4dd3dd705b0dab69af6712642"}, - {file = "aiohttp-3.8.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:61bfc23df345d8c9716d03717c2ed5e27374e0fe6f659ea64edcd27b4b044cf7"}, - {file = "aiohttp-3.8.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:31560d268ff62143e92423ef183680b9829b1b482c011713ae941997921eebc8"}, - {file = "aiohttp-3.8.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:01d7bdb774a9acc838e6b8f1d114f45303841b89b95984cbb7d80ea41172a9e3"}, - {file = "aiohttp-3.8.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:97ef77eb6b044134c0b3a96e16abcb05ecce892965a2124c566af0fd60f717e2"}, - {file = "aiohttp-3.8.1-cp310-cp310-win32.whl", hash = "sha256:c2aef4703f1f2ddc6df17519885dbfa3514929149d3ff900b73f45998f2532fa"}, - {file = "aiohttp-3.8.1-cp310-cp310-win_amd64.whl", hash = "sha256:713ac174a629d39b7c6a3aa757b337599798da4c1157114a314e4e391cd28e32"}, - {file = "aiohttp-3.8.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:473d93d4450880fe278696549f2e7aed8cd23708c3c1997981464475f32137db"}, - {file = "aiohttp-3.8.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99b5eeae8e019e7aad8af8bb314fb908dd2e028b3cdaad87ec05095394cce632"}, - {file = "aiohttp-3.8.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3af642b43ce56c24d063325dd2cf20ee012d2b9ba4c3c008755a301aaea720ad"}, - {file = "aiohttp-3.8.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c3630c3ef435c0a7c549ba170a0633a56e92629aeed0e707fec832dee313fb7a"}, - {file = "aiohttp-3.8.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:4a4a4e30bf1edcad13fb0804300557aedd07a92cabc74382fdd0ba6ca2661091"}, - {file = "aiohttp-3.8.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6f8b01295e26c68b3a1b90efb7a89029110d3a4139270b24fda961893216c440"}, - {file = "aiohttp-3.8.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:a25fa703a527158aaf10dafd956f7d42ac6d30ec80e9a70846253dd13e2f067b"}, - {file = "aiohttp-3.8.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:5bfde62d1d2641a1f5173b8c8c2d96ceb4854f54a44c23102e2ccc7e02f003ec"}, - {file = "aiohttp-3.8.1-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:51467000f3647d519272392f484126aa716f747859794ac9924a7aafa86cd411"}, - {file = "aiohttp-3.8.1-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:03a6d5349c9ee8f79ab3ff3694d6ce1cfc3ced1c9d36200cb8f08ba06bd3b782"}, - {file = "aiohttp-3.8.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:102e487eeb82afac440581e5d7f8f44560b36cf0bdd11abc51a46c1cd88914d4"}, - {file = "aiohttp-3.8.1-cp36-cp36m-win32.whl", hash = "sha256:4aed991a28ea3ce320dc8ce655875e1e00a11bdd29fe9444dd4f88c30d558602"}, - {file = "aiohttp-3.8.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b0e20cddbd676ab8a64c774fefa0ad787cc506afd844de95da56060348021e96"}, - {file = "aiohttp-3.8.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:37951ad2f4a6df6506750a23f7cbabad24c73c65f23f72e95897bb2cecbae676"}, - {file = "aiohttp-3.8.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c23b1ad869653bc818e972b7a3a79852d0e494e9ab7e1a701a3decc49c20d51"}, - {file = "aiohttp-3.8.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:15b09b06dae900777833fe7fc4b4aa426556ce95847a3e8d7548e2d19e34edb8"}, - {file = "aiohttp-3.8.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:477c3ea0ba410b2b56b7efb072c36fa91b1e6fc331761798fa3f28bb224830dd"}, - {file = "aiohttp-3.8.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2f2f69dca064926e79997f45b2f34e202b320fd3782f17a91941f7eb85502ee2"}, - {file = "aiohttp-3.8.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ef9612483cb35171d51d9173647eed5d0069eaa2ee812793a75373447d487aa4"}, - {file = "aiohttp-3.8.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:6d69f36d445c45cda7b3b26afef2fc34ef5ac0cdc75584a87ef307ee3c8c6d00"}, - {file = "aiohttp-3.8.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:55c3d1072704d27401c92339144d199d9de7b52627f724a949fc7d5fc56d8b93"}, - {file = "aiohttp-3.8.1-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:b9d00268fcb9f66fbcc7cd9fe423741d90c75ee029a1d15c09b22d23253c0a44"}, - {file = "aiohttp-3.8.1-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:07b05cd3305e8a73112103c834e91cd27ce5b4bd07850c4b4dbd1877d3f45be7"}, - {file = "aiohttp-3.8.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:c34dc4958b232ef6188c4318cb7b2c2d80521c9a56c52449f8f93ab7bc2a8a1c"}, - {file = "aiohttp-3.8.1-cp37-cp37m-win32.whl", hash = "sha256:d2f9b69293c33aaa53d923032fe227feac867f81682f002ce33ffae978f0a9a9"}, - {file = "aiohttp-3.8.1-cp37-cp37m-win_amd64.whl", hash = "sha256:6ae828d3a003f03ae31915c31fa684b9890ea44c9c989056fea96e3d12a9fa17"}, - {file = "aiohttp-3.8.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0c7ebbbde809ff4e970824b2b6cb7e4222be6b95a296e46c03cf050878fc1785"}, - {file = "aiohttp-3.8.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8b7ef7cbd4fec9a1e811a5de813311ed4f7ac7d93e0fda233c9b3e1428f7dd7b"}, - {file = "aiohttp-3.8.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c3d6a4d0619e09dcd61021debf7059955c2004fa29f48788a3dfaf9c9901a7cd"}, - {file = "aiohttp-3.8.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:718626a174e7e467f0558954f94af117b7d4695d48eb980146016afa4b580b2e"}, - {file = "aiohttp-3.8.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:589c72667a5febd36f1315aa6e5f56dd4aa4862df295cb51c769d16142ddd7cd"}, - {file = "aiohttp-3.8.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2ed076098b171573161eb146afcb9129b5ff63308960aeca4b676d9d3c35e700"}, - {file = "aiohttp-3.8.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:086f92daf51a032d062ec5f58af5ca6a44d082c35299c96376a41cbb33034675"}, - {file = "aiohttp-3.8.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:11691cf4dc5b94236ccc609b70fec991234e7ef8d4c02dd0c9668d1e486f5abf"}, - {file = "aiohttp-3.8.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:31d1e1c0dbf19ebccbfd62eff461518dcb1e307b195e93bba60c965a4dcf1ba0"}, - {file = "aiohttp-3.8.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:11a67c0d562e07067c4e86bffc1553f2cf5b664d6111c894671b2b8712f3aba5"}, - {file = "aiohttp-3.8.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:bb01ba6b0d3f6c68b89fce7305080145d4877ad3acaed424bae4d4ee75faa950"}, - {file = "aiohttp-3.8.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:44db35a9e15d6fe5c40d74952e803b1d96e964f683b5a78c3cc64eb177878155"}, - {file = "aiohttp-3.8.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:844a9b460871ee0a0b0b68a64890dae9c415e513db0f4a7e3cab41a0f2fedf33"}, - {file = "aiohttp-3.8.1-cp38-cp38-win32.whl", hash = "sha256:7d08744e9bae2ca9c382581f7dce1273fe3c9bae94ff572c3626e8da5b193c6a"}, - {file = "aiohttp-3.8.1-cp38-cp38-win_amd64.whl", hash = "sha256:04d48b8ce6ab3cf2097b1855e1505181bdd05586ca275f2505514a6e274e8e75"}, - {file = "aiohttp-3.8.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f5315a2eb0239185af1bddb1abf472d877fede3cc8d143c6cddad37678293237"}, - {file = "aiohttp-3.8.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a996d01ca39b8dfe77440f3cd600825d05841088fd6bc0144cc6c2ec14cc5f74"}, - {file = "aiohttp-3.8.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:13487abd2f761d4be7c8ff9080de2671e53fff69711d46de703c310c4c9317ca"}, - {file = "aiohttp-3.8.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea302f34477fda3f85560a06d9ebdc7fa41e82420e892fc50b577e35fc6a50b2"}, - {file = "aiohttp-3.8.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a2f635ce61a89c5732537a7896b6319a8fcfa23ba09bec36e1b1ac0ab31270d2"}, - {file = "aiohttp-3.8.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e999f2d0e12eea01caeecb17b653f3713d758f6dcc770417cf29ef08d3931421"}, - {file = "aiohttp-3.8.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0770e2806a30e744b4e21c9d73b7bee18a1cfa3c47991ee2e5a65b887c49d5cf"}, - {file = "aiohttp-3.8.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d15367ce87c8e9e09b0f989bfd72dc641bcd04ba091c68cd305312d00962addd"}, - {file = "aiohttp-3.8.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6c7cefb4b0640703eb1069835c02486669312bf2f12b48a748e0a7756d0de33d"}, - {file = "aiohttp-3.8.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:71927042ed6365a09a98a6377501af5c9f0a4d38083652bcd2281a06a5976724"}, - {file = "aiohttp-3.8.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:28d490af82bc6b7ce53ff31337a18a10498303fe66f701ab65ef27e143c3b0ef"}, - {file = "aiohttp-3.8.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:b6613280ccedf24354406caf785db748bebbddcf31408b20c0b48cb86af76866"}, - {file = "aiohttp-3.8.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:81e3d8c34c623ca4e36c46524a3530e99c0bc95ed068fd6e9b55cb721d408fb2"}, - {file = "aiohttp-3.8.1-cp39-cp39-win32.whl", hash = "sha256:7187a76598bdb895af0adbd2fb7474d7f6025d170bc0a1130242da817ce9e7d1"}, - {file = "aiohttp-3.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:1c182cb873bc91b411e184dab7a2b664d4fea2743df0e4d57402f7f3fa644bac"}, - {file = "aiohttp-3.8.1.tar.gz", hash = "sha256:fc5471e1a54de15ef71c1bc6ebe80d4dc681ea600e68bfd1cbce40427f0b7578"}, -] -aiosignal = [ - {file = "aiosignal-1.2.0-py3-none-any.whl", hash = "sha256:26e62109036cd181df6e6ad646f91f0dcfd05fe16d0cb924138ff2ab75d64e3a"}, - {file = "aiosignal-1.2.0.tar.gz", hash = "sha256:78ed67db6c7b7ced4f98e495e572106d5c432a93e1ddd1bf475e1dc05f5b7df2"}, -] -alabaster = [ - {file = "alabaster-0.7.12-py2.py3-none-any.whl", hash = "sha256:446438bdcca0e05bd45ea2de1668c1d9b032e1a9154c2c259092d77031ddd359"}, - {file = "alabaster-0.7.12.tar.gz", hash = "sha256:a661d72d58e6ea8a57f7a86e37d86716863ee5e92788398526d58b26a4e4dc02"}, -] -alembic = [ - {file = "alembic-1.7.7-py3-none-any.whl", hash = "sha256:29be0856ec7591c39f4e1cb10f198045d890e6e2274cf8da80cb5e721a09642b"}, - {file = "alembic-1.7.7.tar.gz", hash = "sha256:4961248173ead7ce8a21efb3de378f13b8398e6630fab0eb258dc74a8af24c58"}, -] -appnope = [ - {file = "appnope-0.1.3-py2.py3-none-any.whl", hash = "sha256:265a455292d0bd8a72453494fa24df5a11eb18373a60c7c0430889f22548605e"}, - {file = "appnope-0.1.3.tar.gz", hash = "sha256:02bd91c4de869fbb1e1c50aafc4098827a7a54ab2f39d9dcba6c9547ed920e24"}, -] -apted = [ - {file = "apted-1.0.3-py3-none-any.whl", hash = "sha256:74193369d023649d335269e67c4df07f922959e5ac2597de1b79af4e694150e8"}, - {file = "apted-1.0.3.tar.gz", hash = "sha256:befa5181e2d4457fa88e54995a82604ee048bb2fbc781ea97d8e1856b4715ce9"}, -] -argon2-cffi = [ - {file = "argon2-cffi-21.3.0.tar.gz", hash = "sha256:d384164d944190a7dd7ef22c6aa3ff197da12962bd04b17f64d4e93d934dba5b"}, - {file = "argon2_cffi-21.3.0-py3-none-any.whl", hash = "sha256:8c976986f2c5c0e5000919e6de187906cfd81fb1c72bf9d88c01177e77da7f80"}, -] -argon2-cffi-bindings = [ - {file = "argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082"}, - {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f"}, - {file = "argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93"}, - {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3e385d1c39c520c08b53d63300c3ecc28622f076f4c2b0e6d7e796e9f6502194"}, - {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c3e3cc67fdb7d82c4718f19b4e7a87123caf8a93fde7e23cf66ac0337d3cb3f"}, - {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a22ad9800121b71099d0fb0a65323810a15f2e292f2ba450810a7316e128ee5"}, - {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f9f8b450ed0547e3d473fdc8612083fd08dd2120d6ac8f73828df9b7d45bb351"}, - {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:93f9bf70084f97245ba10ee36575f0c3f1e7d7724d67d8e5b08e61787c320ed7"}, - {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3b9ef65804859d335dc6b31582cad2c5166f0c3e7975f324d9ffaa34ee7e6583"}, - {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4966ef5848d820776f5f562a7d45fdd70c2f330c961d0d745b784034bd9f48d"}, - {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ef543a89dee4db46a1a6e206cd015360e5a75822f76df533845c3cbaf72670"}, - {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed2937d286e2ad0cc79a7087d3c272832865f779430e0cc2b4f3718d3159b0cb"}, - {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5e00316dabdaea0b2dd82d141cc66889ced0cdcbfa599e8b471cf22c620c329a"}, -] -astroid = [ - {file = "astroid-2.11.3-py3-none-any.whl", hash = "sha256:f1af57483cd17e963b2eddce8361e00fc593d1520fe19948488e94ff6476bd71"}, - {file = "astroid-2.11.3.tar.gz", hash = "sha256:4e5ba10571e197785e312966ea5efb2f5783176d4c1a73fa922d474ae2be59f7"}, -] -astunparse = [ - {file = "astunparse-1.6.3-py2.py3-none-any.whl", hash = "sha256:c2652417f2c8b5bb325c885ae329bdf3f86424075c4fd1a128674bc6fba4b8e8"}, - {file = "astunparse-1.6.3.tar.gz", hash = "sha256:5ad93a8456f0d084c3456d059fd9a92cce667963232cbf763eac3bc5b7940872"}, -] -async-timeout = [ - {file = "async-timeout-4.0.2.tar.gz", hash = "sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15"}, - {file = "async_timeout-4.0.2-py3-none-any.whl", hash = "sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c"}, -] -asynctest = [ - {file = "asynctest-0.13.0-py3-none-any.whl", hash = "sha256:5da6118a7e6d6b54d83a8f7197769d046922a44d2a99c21382f0a6e4fadae676"}, - {file = "asynctest-0.13.0.tar.gz", hash = "sha256:c27862842d15d83e6a34eb0b2866c323880eb3a75e4485b079ea11748fd77fac"}, -] -atomicwrites = [ - {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"}, - {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"}, -] -attrs = [ - {file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"}, - {file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"}, -] -autopage = [ - {file = "autopage-0.5.0-py3-none-any.whl", hash = "sha256:57232860f28a1867cdd54b5ea510e292c53d6dfb613f781c5120200666550b06"}, - {file = "autopage-0.5.0.tar.gz", hash = "sha256:5305b43cc0798170d7124e5a2feecf969e45f4a0baf75cb351138114eaf76b83"}, -] -babel = [ - {file = "Babel-2.10.1-py3-none-any.whl", hash = "sha256:3f349e85ad3154559ac4930c3918247d319f21910d5ce4b25d439ed8693b98d2"}, - {file = "Babel-2.10.1.tar.gz", hash = "sha256:98aeaca086133efb3e1e2aad0396987490c8425929ddbcfe0550184fdc54cd13"}, -] -backcall = [ - {file = "backcall-0.2.0-py2.py3-none-any.whl", hash = "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255"}, - {file = "backcall-0.2.0.tar.gz", hash = "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e"}, -] -beautifulsoup4 = [ - {file = "beautifulsoup4-4.11.1-py3-none-any.whl", hash = "sha256:58d5c3d29f5a36ffeb94f02f0d786cd53014cf9b3b3951d42e0080d8a9498d30"}, - {file = "beautifulsoup4-4.11.1.tar.gz", hash = "sha256:ad9aa55b65ef2808eb405f46cf74df7fcb7044d5cbc26487f96eb2ef2e436693"}, -] -black = [ - {file = "black-22.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2497f9c2386572e28921fa8bec7be3e51de6801f7459dffd6e62492531c47e09"}, - {file = "black-22.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5795a0375eb87bfe902e80e0c8cfaedf8af4d49694d69161e5bd3206c18618bb"}, - {file = "black-22.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e3556168e2e5c49629f7b0f377070240bd5511e45e25a4497bb0073d9dda776a"}, - {file = "black-22.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67c8301ec94e3bcc8906740fe071391bce40a862b7be0b86fb5382beefecd968"}, - {file = "black-22.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:fd57160949179ec517d32ac2ac898b5f20d68ed1a9c977346efbac9c2f1e779d"}, - {file = "black-22.3.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:cc1e1de68c8e5444e8f94c3670bb48a2beef0e91dddfd4fcc29595ebd90bb9ce"}, - {file = "black-22.3.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2fc92002d44746d3e7db7cf9313cf4452f43e9ea77a2c939defce3b10b5c82"}, - {file = "black-22.3.0-cp36-cp36m-win_amd64.whl", hash = "sha256:a6342964b43a99dbc72f72812bf88cad8f0217ae9acb47c0d4f141a6416d2d7b"}, - {file = "black-22.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:328efc0cc70ccb23429d6be184a15ce613f676bdfc85e5fe8ea2a9354b4e9015"}, - {file = "black-22.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06f9d8846f2340dfac80ceb20200ea5d1b3f181dd0556b47af4e8e0b24fa0a6b"}, - {file = "black-22.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:ad4efa5fad66b903b4a5f96d91461d90b9507a812b3c5de657d544215bb7877a"}, - {file = "black-22.3.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e8477ec6bbfe0312c128e74644ac8a02ca06bcdb8982d4ee06f209be28cdf163"}, - {file = "black-22.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:637a4014c63fbf42a692d22b55d8ad6968a946b4a6ebc385c5505d9625b6a464"}, - {file = "black-22.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:863714200ada56cbc366dc9ae5291ceb936573155f8bf8e9de92aef51f3ad0f0"}, - {file = "black-22.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10dbe6e6d2988049b4655b2b739f98785a884d4d6b85bc35133a8fb9a2233176"}, - {file = "black-22.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:cee3e11161dde1b2a33a904b850b0899e0424cc331b7295f2a9698e79f9a69a0"}, - {file = "black-22.3.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5891ef8abc06576985de8fa88e95ab70641de6c1fca97e2a15820a9b69e51b20"}, - {file = "black-22.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:30d78ba6bf080eeaf0b7b875d924b15cd46fec5fd044ddfbad38c8ea9171043a"}, - {file = "black-22.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ee8f1f7228cce7dffc2b464f07ce769f478968bfb3dd1254a4c2eeed84928aad"}, - {file = "black-22.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ee227b696ca60dd1c507be80a6bc849a5a6ab57ac7352aad1ffec9e8b805f21"}, - {file = "black-22.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:9b542ced1ec0ceeff5b37d69838106a6348e60db7b8fdd245294dc1d26136265"}, - {file = "black-22.3.0-py3-none-any.whl", hash = "sha256:bc58025940a896d7e5356952228b68f793cf5fcb342be703c3a2669a1488cb72"}, - {file = "black-22.3.0.tar.gz", hash = "sha256:35020b8886c022ced9282b51b5a875b6d1ab0c387b31a065b84db7c33085ca79"}, -] -bleach = [ - {file = "bleach-5.0.0-py3-none-any.whl", hash = "sha256:08a1fe86d253b5c88c92cc3d810fd8048a16d15762e1e5b74d502256e5926aa1"}, - {file = "bleach-5.0.0.tar.gz", hash = "sha256:c6d6cc054bdc9c83b48b8083e236e5f00f238428666d2ce2e083eaa5fd568565"}, -] -cached-property = [ - {file = "cached-property-1.5.2.tar.gz", hash = "sha256:9fa5755838eecbb2d234c3aa390bd80fbd3ac6b6869109bfc1b499f7bd89a130"}, - {file = "cached_property-1.5.2-py2.py3-none-any.whl", hash = "sha256:df4f613cf7ad9a588cc381aaf4a512d26265ecebd5eb9e1ba12f1319eb85a6a0"}, -] -cachetools = [ - {file = "cachetools-5.0.0-py3-none-any.whl", hash = "sha256:8fecd4203a38af17928be7b90689d8083603073622229ca7077b72d8e5a976e4"}, - {file = "cachetools-5.0.0.tar.gz", hash = "sha256:486471dfa8799eb7ec503a8059e263db000cdda20075ce5e48903087f79d5fd6"}, -] -certifi = [ - {file = "certifi-2021.10.8-py2.py3-none-any.whl", hash = "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569"}, - {file = "certifi-2021.10.8.tar.gz", hash = "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872"}, -] -cffi = [ - {file = "cffi-1.15.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:c2502a1a03b6312837279c8c1bd3ebedf6c12c4228ddbad40912d671ccc8a962"}, - {file = "cffi-1.15.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:23cfe892bd5dd8941608f93348c0737e369e51c100d03718f108bf1add7bd6d0"}, - {file = "cffi-1.15.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:41d45de54cd277a7878919867c0f08b0cf817605e4eb94093e7516505d3c8d14"}, - {file = "cffi-1.15.0-cp27-cp27m-win32.whl", hash = "sha256:4a306fa632e8f0928956a41fa8e1d6243c71e7eb59ffbd165fc0b41e316b2474"}, - {file = "cffi-1.15.0-cp27-cp27m-win_amd64.whl", hash = "sha256:e7022a66d9b55e93e1a845d8c9eba2a1bebd4966cd8bfc25d9cd07d515b33fa6"}, - {file = "cffi-1.15.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:14cd121ea63ecdae71efa69c15c5543a4b5fbcd0bbe2aad864baca0063cecf27"}, - {file = "cffi-1.15.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:d4d692a89c5cf08a8557fdeb329b82e7bf609aadfaed6c0d79f5a449a3c7c023"}, - {file = "cffi-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0104fb5ae2391d46a4cb082abdd5c69ea4eab79d8d44eaaf79f1b1fd806ee4c2"}, - {file = "cffi-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:91ec59c33514b7c7559a6acda53bbfe1b283949c34fe7440bcf917f96ac0723e"}, - {file = "cffi-1.15.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f5c7150ad32ba43a07c4479f40241756145a1f03b43480e058cfd862bf5041c7"}, - {file = "cffi-1.15.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:00c878c90cb53ccfaae6b8bc18ad05d2036553e6d9d1d9dbcf323bbe83854ca3"}, - {file = "cffi-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abb9a20a72ac4e0fdb50dae135ba5e77880518e742077ced47eb1499e29a443c"}, - {file = "cffi-1.15.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a5263e363c27b653a90078143adb3d076c1a748ec9ecc78ea2fb916f9b861962"}, - {file = "cffi-1.15.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f54a64f8b0c8ff0b64d18aa76675262e1700f3995182267998c31ae974fbc382"}, - {file = "cffi-1.15.0-cp310-cp310-win32.whl", hash = "sha256:c21c9e3896c23007803a875460fb786118f0cdd4434359577ea25eb556e34c55"}, - {file = "cffi-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:5e069f72d497312b24fcc02073d70cb989045d1c91cbd53979366077959933e0"}, - {file = "cffi-1.15.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:64d4ec9f448dfe041705426000cc13e34e6e5bb13736e9fd62e34a0b0c41566e"}, - {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2756c88cbb94231c7a147402476be2c4df2f6078099a6f4a480d239a8817ae39"}, - {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b96a311ac60a3f6be21d2572e46ce67f09abcf4d09344c49274eb9e0bf345fc"}, - {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75e4024375654472cc27e91cbe9eaa08567f7fbdf822638be2814ce059f58032"}, - {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:59888172256cac5629e60e72e86598027aca6bf01fa2465bdb676d37636573e8"}, - {file = "cffi-1.15.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:27c219baf94952ae9d50ec19651a687b826792055353d07648a5695413e0c605"}, - {file = "cffi-1.15.0-cp36-cp36m-win32.whl", hash = "sha256:4958391dbd6249d7ad855b9ca88fae690783a6be9e86df65865058ed81fc860e"}, - {file = "cffi-1.15.0-cp36-cp36m-win_amd64.whl", hash = "sha256:f6f824dc3bce0edab5f427efcfb1d63ee75b6fcb7282900ccaf925be84efb0fc"}, - {file = "cffi-1.15.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:06c48159c1abed75c2e721b1715c379fa3200c7784271b3c46df01383b593636"}, - {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c2051981a968d7de9dd2d7b87bcb9c939c74a34626a6e2f8181455dd49ed69e4"}, - {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:fd8a250edc26254fe5b33be00402e6d287f562b6a5b2152dec302fa15bb3e997"}, - {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91d77d2a782be4274da750752bb1650a97bfd8f291022b379bb8e01c66b4e96b"}, - {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:45db3a33139e9c8f7c09234b5784a5e33d31fd6907800b316decad50af323ff2"}, - {file = "cffi-1.15.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:263cc3d821c4ab2213cbe8cd8b355a7f72a8324577dc865ef98487c1aeee2bc7"}, - {file = "cffi-1.15.0-cp37-cp37m-win32.whl", hash = "sha256:17771976e82e9f94976180f76468546834d22a7cc404b17c22df2a2c81db0c66"}, - {file = "cffi-1.15.0-cp37-cp37m-win_amd64.whl", hash = "sha256:3415c89f9204ee60cd09b235810be700e993e343a408693e80ce7f6a40108029"}, - {file = "cffi-1.15.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4238e6dab5d6a8ba812de994bbb0a79bddbdf80994e4ce802b6f6f3142fcc880"}, - {file = "cffi-1.15.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0808014eb713677ec1292301ea4c81ad277b6cdf2fdd90fd540af98c0b101d20"}, - {file = "cffi-1.15.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:57e9ac9ccc3101fac9d6014fba037473e4358ef4e89f8e181f8951a2c0162024"}, - {file = "cffi-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b6c2ea03845c9f501ed1313e78de148cd3f6cad741a75d43a29b43da27f2e1e"}, - {file = "cffi-1.15.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:10dffb601ccfb65262a27233ac273d552ddc4d8ae1bf93b21c94b8511bffe728"}, - {file = "cffi-1.15.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:786902fb9ba7433aae840e0ed609f45c7bcd4e225ebb9c753aa39725bb3e6ad6"}, - {file = "cffi-1.15.0-cp38-cp38-win32.whl", hash = "sha256:da5db4e883f1ce37f55c667e5c0de439df76ac4cb55964655906306918e7363c"}, - {file = "cffi-1.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:181dee03b1170ff1969489acf1c26533710231c58f95534e3edac87fff06c443"}, - {file = "cffi-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:45e8636704eacc432a206ac7345a5d3d2c62d95a507ec70d62f23cd91770482a"}, - {file = "cffi-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:31fb708d9d7c3f49a60f04cf5b119aeefe5644daba1cd2a0fe389b674fd1de37"}, - {file = "cffi-1.15.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6dc2737a3674b3e344847c8686cf29e500584ccad76204efea14f451d4cc669a"}, - {file = "cffi-1.15.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:74fdfdbfdc48d3f47148976f49fab3251e550a8720bebc99bf1483f5bfb5db3e"}, - {file = "cffi-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffaa5c925128e29efbde7301d8ecaf35c8c60ffbcd6a1ffd3a552177c8e5e796"}, - {file = "cffi-1.15.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3f7d084648d77af029acb79a0ff49a0ad7e9d09057a9bf46596dac9514dc07df"}, - {file = "cffi-1.15.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ef1f279350da2c586a69d32fc8733092fd32cc8ac95139a00377841f59a3f8d8"}, - {file = "cffi-1.15.0-cp39-cp39-win32.whl", hash = "sha256:2a23af14f408d53d5e6cd4e3d9a24ff9e05906ad574822a10563efcef137979a"}, - {file = "cffi-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:3773c4d81e6e818df2efbc7dd77325ca0dcb688116050fb2b3011218eda36139"}, - {file = "cffi-1.15.0.tar.gz", hash = "sha256:920f0d66a896c2d99f0adbb391f990a84091179542c205fa53ce5787aff87954"}, -] -charset-normalizer = [ - {file = "charset-normalizer-2.0.12.tar.gz", hash = "sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597"}, - {file = "charset_normalizer-2.0.12-py3-none-any.whl", hash = "sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df"}, -] -click = [ - {file = "click-8.1.2-py3-none-any.whl", hash = "sha256:24e1a4a9ec5bf6299411369b208c1df2188d9eb8d916302fe6bf03faed227f1e"}, - {file = "click-8.1.2.tar.gz", hash = "sha256:479707fe14d9ec9a0757618b7a100a0ae4c4e236fac5b7f80ca68028141a1a72"}, -] -cliff = [ - {file = "cliff-3.10.1-py3-none-any.whl", hash = "sha256:a21da482714b9f0b0e9bafaaf2f6a8b3b14161bb47f62e10e28d2fe4ff4b1626"}, - {file = "cliff-3.10.1.tar.gz", hash = "sha256:045aee3f3c64471965d7ad507ce8474a4e2f20815fbb5405a770f8596a2a00a0"}, -] -cmaes = [ - {file = "cmaes-0.8.2-py3-none-any.whl", hash = "sha256:9c4127be8942da3ac6857a7564d18a4a655462d77aa2d551a8e88063b23e0699"}, - {file = "cmaes-0.8.2.tar.gz", hash = "sha256:1c04ba23ded925ef13b96f42cfbd667a905ea5b80754c750e6448b9fcda96a5d"}, -] -cmd2 = [ - {file = "cmd2-2.4.1-py3-none-any.whl", hash = "sha256:e6f49b0854b6aec2f20073bae99f1deede16c24b36fde682045d73c80c4cfb51"}, - {file = "cmd2-2.4.1.tar.gz", hash = "sha256:f3b0467daca18fca0dc7838de7726a72ab64127a018a377a86a6ed8ebfdbb25f"}, -] -colorama = [ - {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, - {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, -] -colorlog = [ - {file = "colorlog-6.6.0-py2.py3-none-any.whl", hash = "sha256:351c51e866c86c3217f08e4b067a7974a678be78f07f85fc2d55b8babde6d94e"}, - {file = "colorlog-6.6.0.tar.gz", hash = "sha256:344f73204009e4c83c5b6beb00b3c45dc70fcdae3c80db919e0a4171d006fde8"}, -] -coverage = [ - {file = "coverage-6.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9b27d894748475fa858f9597c0ee1d4829f44683f3813633aaf94b19cb5453cf"}, - {file = "coverage-6.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:37d1141ad6b2466a7b53a22e08fe76994c2d35a5b6b469590424a9953155afac"}, - {file = "coverage-6.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9987b0354b06d4df0f4d3e0ec1ae76d7ce7cbca9a2f98c25041eb79eec766f1"}, - {file = "coverage-6.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:26e2deacd414fc2f97dd9f7676ee3eaecd299ca751412d89f40bc01557a6b1b4"}, - {file = "coverage-6.3.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4dd8bafa458b5c7d061540f1ee9f18025a68e2d8471b3e858a9dad47c8d41903"}, - {file = "coverage-6.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:46191097ebc381fbf89bdce207a6c107ac4ec0890d8d20f3360345ff5976155c"}, - {file = "coverage-6.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6f89d05e028d274ce4fa1a86887b071ae1755082ef94a6740238cd7a8178804f"}, - {file = "coverage-6.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:58303469e9a272b4abdb9e302a780072c0633cdcc0165db7eec0f9e32f901e05"}, - {file = "coverage-6.3.2-cp310-cp310-win32.whl", hash = "sha256:2fea046bfb455510e05be95e879f0e768d45c10c11509e20e06d8fcaa31d9e39"}, - {file = "coverage-6.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:a2a8b8bcc399edb4347a5ca8b9b87e7524c0967b335fbb08a83c8421489ddee1"}, - {file = "coverage-6.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:f1555ea6d6da108e1999b2463ea1003fe03f29213e459145e70edbaf3e004aaa"}, - {file = "coverage-6.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5f4e1edcf57ce94e5475fe09e5afa3e3145081318e5fd1a43a6b4539a97e518"}, - {file = "coverage-6.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7a15dc0a14008f1da3d1ebd44bdda3e357dbabdf5a0b5034d38fcde0b5c234b7"}, - {file = "coverage-6.3.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21b7745788866028adeb1e0eca3bf1101109e2dc58456cb49d2d9b99a8c516e6"}, - {file = "coverage-6.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:8ce257cac556cb03be4a248d92ed36904a59a4a5ff55a994e92214cde15c5bad"}, - {file = "coverage-6.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b0be84e5a6209858a1d3e8d1806c46214e867ce1b0fd32e4ea03f4bd8b2e3359"}, - {file = "coverage-6.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:acf53bc2cf7282ab9b8ba346746afe703474004d9e566ad164c91a7a59f188a4"}, - {file = "coverage-6.3.2-cp37-cp37m-win32.whl", hash = "sha256:8bdde1177f2311ee552f47ae6e5aa7750c0e3291ca6b75f71f7ffe1f1dab3dca"}, - {file = "coverage-6.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:b31651d018b23ec463e95cf10070d0b2c548aa950a03d0b559eaa11c7e5a6fa3"}, - {file = "coverage-6.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:07e6db90cd9686c767dcc593dff16c8c09f9814f5e9c51034066cad3373b914d"}, - {file = "coverage-6.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2c6dbb42f3ad25760010c45191e9757e7dce981cbfb90e42feef301d71540059"}, - {file = "coverage-6.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c76aeef1b95aff3905fb2ae2d96e319caca5b76fa41d3470b19d4e4a3a313512"}, - {file = "coverage-6.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8cf5cfcb1521dc3255d845d9dca3ff204b3229401994ef8d1984b32746bb45ca"}, - {file = "coverage-6.3.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8fbbdc8d55990eac1b0919ca69eb5a988a802b854488c34b8f37f3e2025fa90d"}, - {file = "coverage-6.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:ec6bc7fe73a938933d4178c9b23c4e0568e43e220aef9472c4f6044bfc6dd0f0"}, - {file = "coverage-6.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:9baff2a45ae1f17c8078452e9e5962e518eab705e50a0aa8083733ea7d45f3a6"}, - {file = "coverage-6.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fd9e830e9d8d89b20ab1e5af09b32d33e1a08ef4c4e14411e559556fd788e6b2"}, - {file = "coverage-6.3.2-cp38-cp38-win32.whl", hash = "sha256:f7331dbf301b7289013175087636bbaf5b2405e57259dd2c42fdcc9fcc47325e"}, - {file = "coverage-6.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:68353fe7cdf91f109fc7d474461b46e7f1f14e533e911a2a2cbb8b0fc8613cf1"}, - {file = "coverage-6.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b78e5afb39941572209f71866aa0b206c12f0109835aa0d601e41552f9b3e620"}, - {file = "coverage-6.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4e21876082ed887baed0146fe222f861b5815455ada3b33b890f4105d806128d"}, - {file = "coverage-6.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34626a7eee2a3da12af0507780bb51eb52dca0e1751fd1471d0810539cefb536"}, - {file = "coverage-6.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1ebf730d2381158ecf3dfd4453fbca0613e16eaa547b4170e2450c9707665ce7"}, - {file = "coverage-6.3.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd6fe30bd519694b356cbfcaca9bd5c1737cddd20778c6a581ae20dc8c04def2"}, - {file = "coverage-6.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:96f8a1cb43ca1422f36492bebe63312d396491a9165ed3b9231e778d43a7fca4"}, - {file = "coverage-6.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:dd035edafefee4d573140a76fdc785dc38829fe5a455c4bb12bac8c20cfc3d69"}, - {file = "coverage-6.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5ca5aeb4344b30d0bec47481536b8ba1181d50dbe783b0e4ad03c95dc1296684"}, - {file = "coverage-6.3.2-cp39-cp39-win32.whl", hash = "sha256:f5fa5803f47e095d7ad8443d28b01d48c0359484fec1b9d8606d0e3282084bc4"}, - {file = "coverage-6.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:9548f10d8be799551eb3a9c74bbf2b4934ddb330e08a73320123c07f95cc2d92"}, - {file = "coverage-6.3.2-pp36.pp37.pp38-none-any.whl", hash = "sha256:18d520c6860515a771708937d2f78f63cc47ab3b80cb78e86573b0a760161faf"}, - {file = "coverage-6.3.2.tar.gz", hash = "sha256:03e2a7826086b91ef345ff18742ee9fc47a6839ccd517061ef8fa1976e652ce9"}, -] -cycler = [ - {file = "cycler-0.11.0-py3-none-any.whl", hash = "sha256:3a27e95f763a428a739d2add979fa7494c912a32c17c4c38c4d5f082cad165a3"}, - {file = "cycler-0.11.0.tar.gz", hash = "sha256:9c87405839a19696e837b3b818fed3f5f69f16f1eec1a1ad77e043dcea9c772f"}, -] -debugpy = [ - {file = "debugpy-1.6.0-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:eb1946efac0c0c3d411cea0b5ac772fbde744109fd9520fb0c5a51979faf05ad"}, - {file = "debugpy-1.6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e3513399177dd37af4c1332df52da5da1d0c387e5927dc4c0709e26ee7302e8f"}, - {file = "debugpy-1.6.0-cp310-cp310-win32.whl", hash = "sha256:5c492235d6b68f879df3bdbdb01f25c15be15682665517c2c7d0420e5658d71f"}, - {file = "debugpy-1.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:40de9ba137d355538432209d05e0f5fe5d0498dce761c39119ad4b950b51db31"}, - {file = "debugpy-1.6.0-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:0d383b91efee57dbb923ba20801130cf60450a0eda60bce25bccd937de8e323a"}, - {file = "debugpy-1.6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1ff853e60e77e1c16f85a31adb8360bb2d98ca588d7ed645b7f0985b240bdb5e"}, - {file = "debugpy-1.6.0-cp37-cp37m-win32.whl", hash = "sha256:8e972c717d95f56b6a3a7a29a5ede1ee8f2c3802f6f0e678203b0778eb322bf1"}, - {file = "debugpy-1.6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:a8aaeb53e87225141fda7b9081bd87155c1debc13e2f5a532d341112d1983b65"}, - {file = "debugpy-1.6.0-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:132defb585b518955358321d0f42f6aa815aa15b432be27db654807707c70b2f"}, - {file = "debugpy-1.6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8ee75844242b4537beb5899f3e60a578454d1f136b99e8d57ac424573797b94a"}, - {file = "debugpy-1.6.0-cp38-cp38-win32.whl", hash = "sha256:a65a2499761d47df3e9ea9567109be6e73d412e00ac3ffcf74839f3ddfcdf028"}, - {file = "debugpy-1.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:bd980d533d0ddfc451e03a3bb32acb2900049fec39afc3425b944ebf0889be62"}, - {file = "debugpy-1.6.0-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:245c7789a012f86210847ec7ee9f38c30a30d4c2223c3e111829a76c9006a5d0"}, - {file = "debugpy-1.6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0e3aa2368883e83e7b689ddff3cafb595f7b711f6a065886b46a96a7fef874e7"}, - {file = "debugpy-1.6.0-cp39-cp39-win32.whl", hash = "sha256:72bcfa97f3afa0064afc77ab811f48ad4a06ac330f290b675082c24437730366"}, - {file = "debugpy-1.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:30abefefd2ff5a5481162d613cb70e60e2fa80a5eb4c994717c0f008ed25d2e1"}, - {file = "debugpy-1.6.0-py2.py3-none-any.whl", hash = "sha256:4de7777842da7e08652f2776c552070bbdd758557fdec73a15d7be0e4aab95ce"}, - {file = "debugpy-1.6.0.zip", hash = "sha256:7b79c40852991f7b6c3ea65845ed0f5f6b731c37f4f9ad9c61e2ab4bd48a9275"}, -] -decorator = [ - {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, - {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, -] -defusedxml = [ - {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, - {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, -] -deprecated = [ - {file = "Deprecated-1.2.13-py2.py3-none-any.whl", hash = "sha256:64756e3e14c8c5eea9795d93c524551432a0be75629f8f29e67ab8caf076c76d"}, - {file = "Deprecated-1.2.13.tar.gz", hash = "sha256:43ac5335da90c31c24ba028af536a91d41d53f9e6901ddb021bcc572ce44e38d"}, -] -dill = [ - {file = "dill-0.3.4-py2.py3-none-any.whl", hash = "sha256:7e40e4a70304fd9ceab3535d36e58791d9c4a776b38ec7f7ec9afc8d3dca4d4f"}, - {file = "dill-0.3.4.zip", hash = "sha256:9f9734205146b2b353ab3fec9af0070237b6ddae78452af83d2fca84d739e675"}, -] -docutils = [ - {file = "docutils-0.17.1-py2.py3-none-any.whl", hash = "sha256:cf316c8370a737a022b72b56874f6602acf974a37a9fba42ec2876387549fc61"}, - {file = "docutils-0.17.1.tar.gz", hash = "sha256:686577d2e4c32380bb50cbb22f575ed742d58168cee37e99117a854bcd88f125"}, -] -entrypoints = [ - {file = "entrypoints-0.4-py3-none-any.whl", hash = "sha256:f174b5ff827504fd3cd97cc3f8649f3693f51538c7e4bdf3ef002c8429d42f9f"}, - {file = "entrypoints-0.4.tar.gz", hash = "sha256:b706eddaa9218a19ebcd67b56818f05bb27589b1ca9e8d797b74affad4ccacd4"}, -] -fastjsonschema = [ - {file = "fastjsonschema-2.15.3-py3-none-any.whl", hash = "sha256:ddb0b1d8243e6e3abb822bd14e447a89f4ab7439342912d590444831fa00b6a0"}, - {file = "fastjsonschema-2.15.3.tar.gz", hash = "sha256:0a572f0836962d844c1fc435e200b2e4f4677e4e6611a2e3bdd01ba697c275ec"}, -] -flatbuffers = [ - {file = "flatbuffers-2.0-py2.py3-none-any.whl", hash = "sha256:3751954f0604580d3219ae49a85fafec9d85eec599c0b96226e1bc0b48e57474"}, - {file = "flatbuffers-2.0.tar.gz", hash = "sha256:12158ab0272375eab8db2d663ae97370c33f152b27801fa6024e1d6105fd4dd2"}, -] -fonttools = [ - {file = "fonttools-4.33.3-py3-none-any.whl", hash = "sha256:f829c579a8678fa939a1d9e9894d01941db869de44390adb49ce67055a06cc2a"}, - {file = "fonttools-4.33.3.zip", hash = "sha256:c0fdcfa8ceebd7c1b2021240bd46ef77aa8e7408cf10434be55df52384865f8e"}, -] -frozenlist = [ - {file = "frozenlist-1.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d2257aaba9660f78c7b1d8fea963b68f3feffb1a9d5d05a18401ca9eb3e8d0a3"}, - {file = "frozenlist-1.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4a44ebbf601d7bac77976d429e9bdb5a4614f9f4027777f9e54fd765196e9d3b"}, - {file = "frozenlist-1.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:45334234ec30fc4ea677f43171b18a27505bfb2dba9aca4398a62692c0ea8868"}, - {file = "frozenlist-1.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47be22dc27ed933d55ee55845d34a3e4e9f6fee93039e7f8ebadb0c2f60d403f"}, - {file = "frozenlist-1.3.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:03a7dd1bfce30216a3f51a84e6dd0e4a573d23ca50f0346634916ff105ba6e6b"}, - {file = "frozenlist-1.3.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:691ddf6dc50480ce49f68441f1d16a4c3325887453837036e0fb94736eae1e58"}, - {file = "frozenlist-1.3.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bde99812f237f79eaf3f04ebffd74f6718bbd216101b35ac7955c2d47c17da02"}, - {file = "frozenlist-1.3.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a202458d1298ced3768f5a7d44301e7c86defac162ace0ab7434c2e961166e8"}, - {file = "frozenlist-1.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b9e3e9e365991f8cc5f5edc1fd65b58b41d0514a6a7ad95ef5c7f34eb49b3d3e"}, - {file = "frozenlist-1.3.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:04cb491c4b1c051734d41ea2552fde292f5f3a9c911363f74f39c23659c4af78"}, - {file = "frozenlist-1.3.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:436496321dad302b8b27ca955364a439ed1f0999311c393dccb243e451ff66aa"}, - {file = "frozenlist-1.3.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:754728d65f1acc61e0f4df784456106e35afb7bf39cfe37227ab00436fb38676"}, - {file = "frozenlist-1.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6eb275c6385dd72594758cbe96c07cdb9bd6becf84235f4a594bdf21e3596c9d"}, - {file = "frozenlist-1.3.0-cp310-cp310-win32.whl", hash = "sha256:e30b2f9683812eb30cf3f0a8e9f79f8d590a7999f731cf39f9105a7c4a39489d"}, - {file = "frozenlist-1.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:f7353ba3367473d1d616ee727945f439e027f0bb16ac1a750219a8344d1d5d3c"}, - {file = "frozenlist-1.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:88aafd445a233dbbf8a65a62bc3249a0acd0d81ab18f6feb461cc5a938610d24"}, - {file = "frozenlist-1.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4406cfabef8f07b3b3af0f50f70938ec06d9f0fc26cbdeaab431cbc3ca3caeaa"}, - {file = "frozenlist-1.3.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8cf829bd2e2956066dd4de43fd8ec881d87842a06708c035b37ef632930505a2"}, - {file = "frozenlist-1.3.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:603b9091bd70fae7be28bdb8aa5c9990f4241aa33abb673390a7f7329296695f"}, - {file = "frozenlist-1.3.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:25af28b560e0c76fa41f550eacb389905633e7ac02d6eb3c09017fa1c8cdfde1"}, - {file = "frozenlist-1.3.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94c7a8a9fc9383b52c410a2ec952521906d355d18fccc927fca52ab575ee8b93"}, - {file = "frozenlist-1.3.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:65bc6e2fece04e2145ab6e3c47428d1bbc05aede61ae365b2c1bddd94906e478"}, - {file = "frozenlist-1.3.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:3f7c935c7b58b0d78c0beea0c7358e165f95f1fd8a7e98baa40d22a05b4a8141"}, - {file = "frozenlist-1.3.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd89acd1b8bb4f31b47072615d72e7f53a948d302b7c1d1455e42622de180eae"}, - {file = "frozenlist-1.3.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:6983a31698490825171be44ffbafeaa930ddf590d3f051e397143a5045513b01"}, - {file = "frozenlist-1.3.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:adac9700675cf99e3615eb6a0eb5e9f5a4143c7d42c05cea2e7f71c27a3d0846"}, - {file = "frozenlist-1.3.0-cp37-cp37m-win32.whl", hash = "sha256:0c36e78b9509e97042ef869c0e1e6ef6429e55817c12d78245eb915e1cca7468"}, - {file = "frozenlist-1.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:57f4d3f03a18facacb2a6bcd21bccd011e3b75d463dc49f838fd699d074fabd1"}, - {file = "frozenlist-1.3.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8c905a5186d77111f02144fab5b849ab524f1e876a1e75205cd1386a9be4b00a"}, - {file = "frozenlist-1.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b5009062d78a8c6890d50b4e53b0ddda31841b3935c1937e2ed8c1bda1c7fb9d"}, - {file = "frozenlist-1.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2fdc3cd845e5a1f71a0c3518528bfdbfe2efaf9886d6f49eacc5ee4fd9a10953"}, - {file = "frozenlist-1.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:92e650bd09b5dda929523b9f8e7f99b24deac61240ecc1a32aeba487afcd970f"}, - {file = "frozenlist-1.3.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:40dff8962b8eba91fd3848d857203f0bd704b5f1fa2b3fc9af64901a190bba08"}, - {file = "frozenlist-1.3.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:768efd082074bb203c934e83a61654ed4931ef02412c2fbdecea0cff7ecd0274"}, - {file = "frozenlist-1.3.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:006d3595e7d4108a12025ddf415ae0f6c9e736e726a5db0183326fd191b14c5e"}, - {file = "frozenlist-1.3.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:871d42623ae15eb0b0e9df65baeee6976b2e161d0ba93155411d58ff27483ad8"}, - {file = "frozenlist-1.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:aff388be97ef2677ae185e72dc500d19ecaf31b698986800d3fc4f399a5e30a5"}, - {file = "frozenlist-1.3.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:9f892d6a94ec5c7b785e548e42722e6f3a52f5f32a8461e82ac3e67a3bd073f1"}, - {file = "frozenlist-1.3.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:e982878792c971cbd60ee510c4ee5bf089a8246226dea1f2138aa0bb67aff148"}, - {file = "frozenlist-1.3.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:c6c321dd013e8fc20735b92cb4892c115f5cdb82c817b1e5b07f6b95d952b2f0"}, - {file = "frozenlist-1.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:30530930410855c451bea83f7b272fb1c495ed9d5cc72895ac29e91279401db3"}, - {file = "frozenlist-1.3.0-cp38-cp38-win32.whl", hash = "sha256:40ec383bc194accba825fbb7d0ef3dda5736ceab2375462f1d8672d9f6b68d07"}, - {file = "frozenlist-1.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:f20baa05eaa2bcd5404c445ec51aed1c268d62600362dc6cfe04fae34a424bd9"}, - {file = "frozenlist-1.3.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0437fe763fb5d4adad1756050cbf855bbb2bf0d9385c7bb13d7a10b0dd550486"}, - {file = "frozenlist-1.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b684c68077b84522b5c7eafc1dc735bfa5b341fb011d5552ebe0968e22ed641c"}, - {file = "frozenlist-1.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:93641a51f89473837333b2f8100f3f89795295b858cd4c7d4a1f18e299dc0a4f"}, - {file = "frozenlist-1.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6d32ff213aef0fd0bcf803bffe15cfa2d4fde237d1d4838e62aec242a8362fa"}, - {file = "frozenlist-1.3.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31977f84828b5bb856ca1eb07bf7e3a34f33a5cddce981d880240ba06639b94d"}, - {file = "frozenlist-1.3.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3c62964192a1c0c30b49f403495911298810bada64e4f03249ca35a33ca0417a"}, - {file = "frozenlist-1.3.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4eda49bea3602812518765810af732229b4291d2695ed24a0a20e098c45a707b"}, - {file = "frozenlist-1.3.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:acb267b09a509c1df5a4ca04140da96016f40d2ed183cdc356d237286c971b51"}, - {file = "frozenlist-1.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e1e26ac0a253a2907d654a37e390904426d5ae5483150ce3adedb35c8c06614a"}, - {file = "frozenlist-1.3.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f96293d6f982c58ebebb428c50163d010c2f05de0cde99fd681bfdc18d4b2dc2"}, - {file = "frozenlist-1.3.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:e84cb61b0ac40a0c3e0e8b79c575161c5300d1d89e13c0e02f76193982f066ed"}, - {file = "frozenlist-1.3.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:ff9310f05b9d9c5c4dd472983dc956901ee6cb2c3ec1ab116ecdde25f3ce4951"}, - {file = "frozenlist-1.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d26b650b71fdc88065b7a21f8ace70175bcf3b5bdba5ea22df4bfd893e795a3b"}, - {file = "frozenlist-1.3.0-cp39-cp39-win32.whl", hash = "sha256:01a73627448b1f2145bddb6e6c2259988bb8aee0fb361776ff8604b99616cd08"}, - {file = "frozenlist-1.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:772965f773757a6026dea111a15e6e2678fbd6216180f82a48a40b27de1ee2ab"}, - {file = "frozenlist-1.3.0.tar.gz", hash = "sha256:ce6f2ba0edb7b0c1d8976565298ad2deba6f8064d2bebb6ffce2ca896eb35b0b"}, -] -fsspec = [ - {file = "fsspec-2022.5.0-py3-none-any.whl", hash = "sha256:2c198c50eb541a80bbd03540b07602c4a957366f3fb416a1f270d34bd4ff0926"}, - {file = "fsspec-2022.5.0.tar.gz", hash = "sha256:7a5459c75c44e760fbe6a3ccb1f37e81e023cde7da8ba20401258d877ec483b4"}, -] -gast = [ - {file = "gast-0.5.3-py3-none-any.whl", hash = "sha256:211aac1e58c167b25d3504998f2db694454a24bb1fb1225bce99420166f21d6a"}, - {file = "gast-0.5.3.tar.gz", hash = "sha256:cfbea25820e653af9c7d1807f659ce0a0a9c64f2439421a7bba4f0983f532dea"}, -] -google-auth = [ - {file = "google-auth-2.6.6.tar.gz", hash = "sha256:1ba4938e032b73deb51e59c4656a00e0939cf0b1112575099f136babb4563312"}, - {file = "google_auth-2.6.6-py2.py3-none-any.whl", hash = "sha256:349ac49b18b01019453cc99c11c92ed772739778c92f184002b7ab3a5b7ac77d"}, -] -google-auth-oauthlib = [ - {file = "google-auth-oauthlib-0.4.6.tar.gz", hash = "sha256:a90a072f6993f2c327067bf65270046384cda5a8ecb20b94ea9a687f1f233a7a"}, - {file = "google_auth_oauthlib-0.4.6-py2.py3-none-any.whl", hash = "sha256:3f2a6e802eebbb6fb736a370fbf3b055edcb6b52878bf2f26330b5e041316c73"}, -] -google-pasta = [ - {file = "google-pasta-0.2.0.tar.gz", hash = "sha256:c9f2c8dfc8f96d0d5808299920721be30c9eec37f2389f28904f454565c8a16e"}, - {file = "google_pasta-0.2.0-py2-none-any.whl", hash = "sha256:4612951da876b1a10fe3960d7226f0c7682cf901e16ac06e473b267a5afa8954"}, - {file = "google_pasta-0.2.0-py3-none-any.whl", hash = "sha256:b32482794a366b5366a32c92a9a9201b107821889935a02b3e51f6b432ea84ed"}, -] -greenlet = [ - {file = "greenlet-1.1.2-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:58df5c2a0e293bf665a51f8a100d3e9956febfbf1d9aaf8c0677cf70218910c6"}, - {file = "greenlet-1.1.2-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:aec52725173bd3a7b56fe91bc56eccb26fbdff1386ef123abb63c84c5b43b63a"}, - {file = "greenlet-1.1.2-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:833e1551925ed51e6b44c800e71e77dacd7e49181fdc9ac9a0bf3714d515785d"}, - {file = "greenlet-1.1.2-cp27-cp27m-win32.whl", hash = "sha256:aa5b467f15e78b82257319aebc78dd2915e4c1436c3c0d1ad6f53e47ba6e2713"}, - {file = "greenlet-1.1.2-cp27-cp27m-win_amd64.whl", hash = "sha256:40b951f601af999a8bf2ce8c71e8aaa4e8c6f78ff8afae7b808aae2dc50d4c40"}, - {file = "greenlet-1.1.2-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:95e69877983ea39b7303570fa6760f81a3eec23d0e3ab2021b7144b94d06202d"}, - {file = "greenlet-1.1.2-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:356b3576ad078c89a6107caa9c50cc14e98e3a6c4874a37c3e0273e4baf33de8"}, - {file = "greenlet-1.1.2-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:8639cadfda96737427330a094476d4c7a56ac03de7265622fcf4cfe57c8ae18d"}, - {file = "greenlet-1.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97e5306482182170ade15c4b0d8386ded995a07d7cc2ca8f27958d34d6736497"}, - {file = "greenlet-1.1.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e6a36bb9474218c7a5b27ae476035497a6990e21d04c279884eb10d9b290f1b1"}, - {file = "greenlet-1.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abb7a75ed8b968f3061327c433a0fbd17b729947b400747c334a9c29a9af6c58"}, - {file = "greenlet-1.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b336501a05e13b616ef81ce329c0e09ac5ed8c732d9ba7e3e983fcc1a9e86965"}, - {file = "greenlet-1.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:14d4f3cd4e8b524ae9b8aa567858beed70c392fdec26dbdb0a8a418392e71708"}, - {file = "greenlet-1.1.2-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:17ff94e7a83aa8671a25bf5b59326ec26da379ace2ebc4411d690d80a7fbcf23"}, - {file = "greenlet-1.1.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9f3cba480d3deb69f6ee2c1825060177a22c7826431458c697df88e6aeb3caee"}, - {file = "greenlet-1.1.2-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:fa877ca7f6b48054f847b61d6fa7bed5cebb663ebc55e018fda12db09dcc664c"}, - {file = "greenlet-1.1.2-cp35-cp35m-win32.whl", hash = "sha256:7cbd7574ce8e138bda9df4efc6bf2ab8572c9aff640d8ecfece1b006b68da963"}, - {file = "greenlet-1.1.2-cp35-cp35m-win_amd64.whl", hash = "sha256:903bbd302a2378f984aef528f76d4c9b1748f318fe1294961c072bdc7f2ffa3e"}, - {file = "greenlet-1.1.2-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:049fe7579230e44daef03a259faa24511d10ebfa44f69411d99e6a184fe68073"}, - {file = "greenlet-1.1.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:dd0b1e9e891f69e7675ba5c92e28b90eaa045f6ab134ffe70b52e948aa175b3c"}, - {file = "greenlet-1.1.2-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:7418b6bfc7fe3331541b84bb2141c9baf1ec7132a7ecd9f375912eca810e714e"}, - {file = "greenlet-1.1.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9d29ca8a77117315101425ec7ec2a47a22ccf59f5593378fc4077ac5b754fce"}, - {file = "greenlet-1.1.2-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:21915eb821a6b3d9d8eefdaf57d6c345b970ad722f856cd71739493ce003ad08"}, - {file = "greenlet-1.1.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eff9d20417ff9dcb0d25e2defc2574d10b491bf2e693b4e491914738b7908168"}, - {file = "greenlet-1.1.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:b8c008de9d0daba7b6666aa5bbfdc23dcd78cafc33997c9b7741ff6353bafb7f"}, - {file = "greenlet-1.1.2-cp36-cp36m-win32.whl", hash = "sha256:32ca72bbc673adbcfecb935bb3fb1b74e663d10a4b241aaa2f5a75fe1d1f90aa"}, - {file = "greenlet-1.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:f0214eb2a23b85528310dad848ad2ac58e735612929c8072f6093f3585fd342d"}, - {file = "greenlet-1.1.2-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:b92e29e58bef6d9cfd340c72b04d74c4b4e9f70c9fa7c78b674d1fec18896dc4"}, - {file = "greenlet-1.1.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:fdcec0b8399108577ec290f55551d926d9a1fa6cad45882093a7a07ac5ec147b"}, - {file = "greenlet-1.1.2-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:93f81b134a165cc17123626ab8da2e30c0455441d4ab5576eed73a64c025b25c"}, - {file = "greenlet-1.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e12bdc622676ce47ae9abbf455c189e442afdde8818d9da983085df6312e7a1"}, - {file = "greenlet-1.1.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c790abda465726cfb8bb08bd4ca9a5d0a7bd77c7ac1ca1b839ad823b948ea28"}, - {file = "greenlet-1.1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f276df9830dba7a333544bd41070e8175762a7ac20350786b322b714b0e654f5"}, - {file = "greenlet-1.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c5d5b35f789a030ebb95bff352f1d27a93d81069f2adb3182d99882e095cefe"}, - {file = "greenlet-1.1.2-cp37-cp37m-win32.whl", hash = "sha256:64e6175c2e53195278d7388c454e0b30997573f3f4bd63697f88d855f7a6a1fc"}, - {file = "greenlet-1.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:b11548073a2213d950c3f671aa88e6f83cda6e2fb97a8b6317b1b5b33d850e06"}, - {file = "greenlet-1.1.2-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:9633b3034d3d901f0a46b7939f8c4d64427dfba6bbc5a36b1a67364cf148a1b0"}, - {file = "greenlet-1.1.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:eb6ea6da4c787111adf40f697b4e58732ee0942b5d3bd8f435277643329ba627"}, - {file = "greenlet-1.1.2-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:f3acda1924472472ddd60c29e5b9db0cec629fbe3c5c5accb74d6d6d14773478"}, - {file = "greenlet-1.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e859fcb4cbe93504ea18008d1df98dee4f7766db66c435e4882ab35cf70cac43"}, - {file = "greenlet-1.1.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:00e44c8afdbe5467e4f7b5851be223be68adb4272f44696ee71fe46b7036a711"}, - {file = "greenlet-1.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec8c433b3ab0419100bd45b47c9c8551248a5aee30ca5e9d399a0b57ac04651b"}, - {file = "greenlet-1.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2bde6792f313f4e918caabc46532aa64aa27a0db05d75b20edfc5c6f46479de2"}, - {file = "greenlet-1.1.2-cp38-cp38-win32.whl", hash = "sha256:288c6a76705dc54fba69fbcb59904ae4ad768b4c768839b8ca5fdadec6dd8cfd"}, - {file = "greenlet-1.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:8d2f1fb53a421b410751887eb4ff21386d119ef9cde3797bf5e7ed49fb51a3b3"}, - {file = "greenlet-1.1.2-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:166eac03e48784a6a6e0e5f041cfebb1ab400b394db188c48b3a84737f505b67"}, - {file = "greenlet-1.1.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:572e1787d1460da79590bf44304abbc0a2da944ea64ec549188fa84d89bba7ab"}, - {file = "greenlet-1.1.2-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:be5f425ff1f5f4b3c1e33ad64ab994eed12fc284a6ea71c5243fd564502ecbe5"}, - {file = "greenlet-1.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1692f7d6bc45e3200844be0dba153612103db241691088626a33ff1f24a0d88"}, - {file = "greenlet-1.1.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7227b47e73dedaa513cdebb98469705ef0d66eb5a1250144468e9c3097d6b59b"}, - {file = "greenlet-1.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ff61ff178250f9bb3cd89752df0f1dd0e27316a8bd1465351652b1b4a4cdfd3"}, - {file = "greenlet-1.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0051c6f1f27cb756ffc0ffbac7d2cd48cb0362ac1736871399a739b2885134d3"}, - {file = "greenlet-1.1.2-cp39-cp39-win32.whl", hash = "sha256:f70a9e237bb792c7cc7e44c531fd48f5897961701cdaa06cf22fc14965c496cf"}, - {file = "greenlet-1.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:013d61294b6cd8fe3242932c1c5e36e5d1db2c8afb58606c5a67efce62c1f5fd"}, - {file = "greenlet-1.1.2.tar.gz", hash = "sha256:e30f5ea4ae2346e62cedde8794a56858a67b878dd79f7df76a0767e356b1744a"}, -] -grpcio = [ - {file = "grpcio-1.45.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:0d74a159df9401747e57960f0772f4371486e3281919004efa9df8a82985abee"}, - {file = "grpcio-1.45.0-cp310-cp310-macosx_10_10_universal2.whl", hash = "sha256:4e6d15bfdfa28e5f6d524dd3b29c7dc129cfc578505b067aa97574490c5b70fe"}, - {file = "grpcio-1.45.0-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:44615be86e5540a18f5e4ca5a0f428d4b1efb800d255cfd9f902a11daca8fd74"}, - {file = "grpcio-1.45.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8b452f715e2cae9e75cb309f59a37f82e5b25f51f0bfc3cd1462de86265cef05"}, - {file = "grpcio-1.45.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db1c45daa35c64f17498af1ba6eb1d0a8d88a8a0b6b322f960ab461e7ef0419e"}, - {file = "grpcio-1.45.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:678a673fe811dad3ed5bd2e2352b79851236e4d718aeaeffc10f372a55954d8d"}, - {file = "grpcio-1.45.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a5c8a08aff0af770c977dcede62fbed53ae7b99adbc184d5299d148bb04652f1"}, - {file = "grpcio-1.45.0-cp310-cp310-win32.whl", hash = "sha256:1d764c8a190719301ec6f3b6ddeb48a234604e337d0fbb3184a4ddcda2aca9da"}, - {file = "grpcio-1.45.0-cp310-cp310-win_amd64.whl", hash = "sha256:797f5b750be6ff2905b9d0529a00c1f873d8035a5d01a9801910ace5f0d52a18"}, - {file = "grpcio-1.45.0-cp36-cp36m-linux_armv7l.whl", hash = "sha256:b46772b7eb58c6cb0b468b56d59618694d2c2f2cee2e5b4e83ae9729a46b8af0"}, - {file = "grpcio-1.45.0-cp36-cp36m-macosx_10_10_x86_64.whl", hash = "sha256:2f135e5c8e9acd14f3090fd86dccb9d7c26aea7bfbd4528e8a86ff621d39e610"}, - {file = "grpcio-1.45.0-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:16603b9544a4af135ce4d594a7396602fbe62d1ccaa484b05cb1814c17a3e559"}, - {file = "grpcio-1.45.0-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ccba925045c00acc9ce2cc645b6fa9d19767dbb16c9c49921013da412b1d3415"}, - {file = "grpcio-1.45.0-cp36-cp36m-manylinux_2_17_aarch64.whl", hash = "sha256:7262b9d96db79e29049c7eb2b75b03f2b9485fd838209b5ff8e3cca73b2a706c"}, - {file = "grpcio-1.45.0-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a1c1098f35c33b985c312cacea39e2aa66f7ac1462579eed1d3aed2e51fff00d"}, - {file = "grpcio-1.45.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b18c86a9cfbedd0c4e083690fecc82027b3f938100ed0af8db77d52a171eb1e"}, - {file = "grpcio-1.45.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:638364d3603df9e4a1dbc2151b5fe1b491ceecda4e1672be86724e1dfa79c44d"}, - {file = "grpcio-1.45.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:8de79eac582431cb6d05ff5652e68089c40aa0e604ec1630fa52ac926bc44f1b"}, - {file = "grpcio-1.45.0-cp36-cp36m-win32.whl", hash = "sha256:6cf5f1827c182ef9b503d7d01e503c1067f4499d45af792d95ccd1d8b0bea30d"}, - {file = "grpcio-1.45.0-cp36-cp36m-win_amd64.whl", hash = "sha256:4f1a22744f93b38d393b7a83cb607029ac5e2de680cab39957ffdd116590a178"}, - {file = "grpcio-1.45.0-cp37-cp37m-linux_armv7l.whl", hash = "sha256:321f84dbc788481f7a3cd12636a133ba5f4d17e57f1c906de5a22fd709c971b5"}, - {file = "grpcio-1.45.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:a33ed7d3e52ddc839e2f020592a4371d805c2ae820fb63b12525058e1810fe46"}, - {file = "grpcio-1.45.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f9f28d8c5343602e1510d4839e38568bcd0ca6353bd98ad9941787584a371a1d"}, - {file = "grpcio-1.45.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3a40dbb8aac60cf6a86583e2ba74fc2c286f1abc7a3404b25dcd12a49b9f7d8b"}, - {file = "grpcio-1.45.0-cp37-cp37m-manylinux_2_17_aarch64.whl", hash = "sha256:b00ce58323dde47d2ea240d10ee745471b9966429c97d9e6567c8d56e02b0372"}, - {file = "grpcio-1.45.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bd4944f35f1e5ab54804c3e37d24921ecc01908ef871cdce6bd52995ea4f985c"}, - {file = "grpcio-1.45.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc135b77f384a84bac67a37947886986be136356446338d64160a30c85f20c6d"}, - {file = "grpcio-1.45.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:35ae55460514ed404ceaa95533b9a79989691b562faf012fc8fb143d8fd16e47"}, - {file = "grpcio-1.45.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:779db3d00c8da1d3efa942387cb0fea9ac6d50124d656024f82f9faefdd016e3"}, - {file = "grpcio-1.45.0-cp37-cp37m-win32.whl", hash = "sha256:aea67bd3cbf93db552c725bc0b4db0acdc6a284d036d1cc32d638305e0f01fd9"}, - {file = "grpcio-1.45.0-cp37-cp37m-win_amd64.whl", hash = "sha256:7fe3ac700cc5ecba9dc9072c0e6cfd2f964ea9f273ce1111eaa27d13aa20ec32"}, - {file = "grpcio-1.45.0-cp38-cp38-linux_armv7l.whl", hash = "sha256:259c126821fefcda298c020a0d83c4a4edac3cf10b1af12a62d250f8192ea1d1"}, - {file = "grpcio-1.45.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:5d05cd1b2b0975bb000ba97ca465565158dc211616c9bbbef5d1b77871974687"}, - {file = "grpcio-1.45.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6f2e044a715507fd13c70c928cd90daf8d0295c936a81fd9065a24e58ba7cc7d"}, - {file = "grpcio-1.45.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4d37c526b86c46d229f6117df5dca2510de597ab73c5956bc379ca41f8a1db84"}, - {file = "grpcio-1.45.0-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:6df338b8d2c328ba91a25e28786d10059dea3bc9115fa1ddad30ba5d459e714a"}, - {file = "grpcio-1.45.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:042921a824e90bf2974dbef7d89937096181298294799fb53e5576d9958884c7"}, - {file = "grpcio-1.45.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb23ed6ed84ae312df03e96c7a7cd3aa5f7e3a1ad7066fdb6cd47f1bd334196c"}, - {file = "grpcio-1.45.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:79582ec821ef10162348170a6e912d93ea257c749320a162dfc3a132ef25ac1b"}, - {file = "grpcio-1.45.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d14d372ea5a51d5ab991aa6d499a26e5a1e3b3f3af93f41826ea610f8a276c9e"}, - {file = "grpcio-1.45.0-cp38-cp38-win32.whl", hash = "sha256:b54444cf4212935a7b98cd26a30ad3a036389e4fd2ff3e461b176af876c7e20b"}, - {file = "grpcio-1.45.0-cp38-cp38-win_amd64.whl", hash = "sha256:da395720d6e9599c754f862f3f75bc0e8ff29fa55259e082e442a9cc916ffbc3"}, - {file = "grpcio-1.45.0-cp39-cp39-linux_armv7l.whl", hash = "sha256:add03308fa2d434628aeaa445e0c75cdb9535f39128eb949b1483ae83fafade6"}, - {file = "grpcio-1.45.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:250d8f18332f3dbd4db00efa91d33d336e58362e9c80e6946d45ecf5e82d95ec"}, - {file = "grpcio-1.45.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:dfca4dfd307b449d0a1e92bc7fbb5224ccf16db384aab412ba6766fc56bdffb6"}, - {file = "grpcio-1.45.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b7f2dc8831045eb0c892bb947e1cba2b1ed639e79a54abff7c4ad90bdd329f78"}, - {file = "grpcio-1.45.0-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:2355493a9e71f15d9004b2ab87892cb532e9e98db6882fced2912115eb5631af"}, - {file = "grpcio-1.45.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2798e42d62a0296982276d0bab96fc7d6772cd148357154348355304d6216763"}, - {file = "grpcio-1.45.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0fe6acb1439127e0bee773f8a9a3ece290cb4cac4fe8d46b10bc8dda250a990c"}, - {file = "grpcio-1.45.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6774272a59b9ee16fb0d4f53e23716953a22bbb3efe12fdf9a4ee3eec2c4f81f"}, - {file = "grpcio-1.45.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:52f61fcb17d92b87ba47d54b3c9deae09d4f0216a3ea277b7df4b6c1794e6556"}, - {file = "grpcio-1.45.0-cp39-cp39-win32.whl", hash = "sha256:3992c690228126e5652c7a1f61863c1ebfd71369cf2adb0fce86fee1d82d2d27"}, - {file = "grpcio-1.45.0-cp39-cp39-win_amd64.whl", hash = "sha256:220867a53e53b2e201e98c55061e3053e31c0ce613625087242be684d3e8612a"}, - {file = "grpcio-1.45.0.tar.gz", hash = "sha256:ff2c8b965b0fc25cf281961aa46619c10900543effe3f806ef818231c40aaff3"}, -] -h5py = [ - {file = "h5py-3.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a5320837c60870911645e9a935099bdb2be6a786fcf0dac5c860f3b679e2de55"}, - {file = "h5py-3.6.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98646e659bf8591a2177e12a4461dced2cad72da0ba4247643fd118db88880d2"}, - {file = "h5py-3.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:5996ff5adefd2d68c330a4265b6ef92e51b2fc674834a5990add5033bf109e20"}, - {file = "h5py-3.6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c9a5529343a619fea777b7caa27d493595b28b5af8b005e8d1817559fcccf493"}, - {file = "h5py-3.6.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e2b49c48df05e19bb20b400b7ff7dc6f1ee36b84dc717c3771c468b33697b466"}, - {file = "h5py-3.6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd9447633b0bafaf82190d9a8d56f3cb2e8d30169483aee67d800816e028190a"}, - {file = "h5py-3.6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:1c5acc660c458421e88c4c5fe092ce15923adfac4c732af1ac4fced683a5ea97"}, - {file = "h5py-3.6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:35ab552c6f0a93365b3cb5664a5305f3920daa0a43deb5b2c547c52815ec46b9"}, - {file = "h5py-3.6.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:542781d50e1182b8fb619b1265dfe1c765e18215f818b0ab28b2983c28471325"}, - {file = "h5py-3.6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f39242960b8d7f86f3056cc2546aa3047ff4835985f6483229af8f029e9c8db"}, - {file = "h5py-3.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:8ecedf16c613973622a334701f67edcc0249469f9daa0576e994fb20ac0405db"}, - {file = "h5py-3.6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d8cacad89aa7daf3626fce106f7f2662ac35b14849df22d252d0d8fab9dc1c0b"}, - {file = "h5py-3.6.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:dbaa1ed9768bf9ff04af0919acc55746e62b28333644f0251f38768313f31745"}, - {file = "h5py-3.6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:954c5c39a09b5302f69f752c3bbf165d368a65c8d200f7d5655e0fa6368a75e6"}, - {file = "h5py-3.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:9fd8a14236fdd092a20c0bdf25c3aba3777718d266fabb0fdded4fcf252d1630"}, - {file = "h5py-3.6.0.tar.gz", hash = "sha256:8752d2814a92aba4e2b2a5922d2782d0029102d99caaf3c201a566bc0b40db29"}, -] -idna = [ - {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, - {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, -] -imagesize = [ - {file = "imagesize-1.3.0-py2.py3-none-any.whl", hash = "sha256:1db2f82529e53c3e929e8926a1fa9235aa82d0bd0c580359c67ec31b2fddaa8c"}, - {file = "imagesize-1.3.0.tar.gz", hash = "sha256:cd1750d452385ca327479d45b64d9c7729ecf0b3969a58148298c77092261f9d"}, -] -importlib-metadata = [ - {file = "importlib_metadata-4.11.3-py3-none-any.whl", hash = "sha256:1208431ca90a8cca1a6b8af391bb53c1a2db74e5d1cef6ddced95d4b2062edc6"}, - {file = "importlib_metadata-4.11.3.tar.gz", hash = "sha256:ea4c597ebf37142f827b8f39299579e31685c31d3a438b59f469406afd0f2539"}, -] -importlib-resources = [ - {file = "importlib_resources-5.7.1-py3-none-any.whl", hash = "sha256:e447dc01619b1e951286f3929be820029d48c75eb25d265c28b92a16548212b8"}, - {file = "importlib_resources-5.7.1.tar.gz", hash = "sha256:b6062987dfc51f0fcb809187cffbd60f35df7acb4589091f154214af6d0d49d3"}, -] -iniconfig = [ - {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, - {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, -] -invoke = [ - {file = "invoke-1.7.0-py3-none-any.whl", hash = "sha256:a5159fc63dba6ca2a87a1e33d282b99cea69711b03c64a35bb4e1c53c6c4afa0"}, - {file = "invoke-1.7.0.tar.gz", hash = "sha256:e332e49de40463f2016315f51df42313855772be86435686156bc18f45b5cc6c"}, -] -ipykernel = [ - {file = "ipykernel-6.13.0-py3-none-any.whl", hash = "sha256:2b0987af43c0d4b62cecb13c592755f599f96f29aafe36c01731aaa96df30d39"}, - {file = "ipykernel-6.13.0.tar.gz", hash = "sha256:0e28273e290858393e86e152b104e5506a79c13d25b951ac6eca220051b4be60"}, -] -ipython = [ - {file = "ipython-7.32.0-py3-none-any.whl", hash = "sha256:86df2cf291c6c70b5be6a7b608650420e89180c8ec74f376a34e2dc15c3400e7"}, - {file = "ipython-7.32.0.tar.gz", hash = "sha256:468abefc45c15419e3c8e8c0a6a5c115b2127bafa34d7c641b1d443658793909"}, -] -ipython-genutils = [ - {file = "ipython_genutils-0.2.0-py2.py3-none-any.whl", hash = "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8"}, - {file = "ipython_genutils-0.2.0.tar.gz", hash = "sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8"}, -] -ipywidgets = [ - {file = "ipywidgets-7.7.0-py2.py3-none-any.whl", hash = "sha256:e58ff58bc94d481e91ecb6e13a5cb96a87b6b8ade135e055603d0ca24593df38"}, - {file = "ipywidgets-7.7.0.tar.gz", hash = "sha256:ab4a5596855a88b83761921c768707d65e5847068139bc1729ddfe834703542a"}, -] -isort = [ - {file = "isort-5.10.1-py3-none-any.whl", hash = "sha256:6f62d78e2f89b4500b080fe3a81690850cd254227f27f75c3a0c491a1f351ba7"}, - {file = "isort-5.10.1.tar.gz", hash = "sha256:e8443a5e7a020e9d7f97f1d7d9cd17c88bcb3bc7e218bf9cf5095fe550be2951"}, -] -jedi = [ - {file = "jedi-0.18.1-py2.py3-none-any.whl", hash = "sha256:637c9635fcf47945ceb91cd7f320234a7be540ded6f3e99a50cb6febdfd1ba8d"}, - {file = "jedi-0.18.1.tar.gz", hash = "sha256:74137626a64a99c8eb6ae5832d99b3bdd7d29a3850fe2aa80a4126b2a7d949ab"}, -] -jinja2 = [ - {file = "Jinja2-3.1.1-py3-none-any.whl", hash = "sha256:539835f51a74a69f41b848a9645dbdc35b4f20a3b601e2d9a7e22947b15ff119"}, - {file = "Jinja2-3.1.1.tar.gz", hash = "sha256:640bed4bb501cbd17194b3cace1dc2126f5b619cf068a726b98192a0fde74ae9"}, -] -joblib = [ - {file = "joblib-1.1.0-py2.py3-none-any.whl", hash = "sha256:f21f109b3c7ff9d95f8387f752d0d9c34a02aa2f7060c2135f465da0e5160ff6"}, - {file = "joblib-1.1.0.tar.gz", hash = "sha256:4158fcecd13733f8be669be0683b96ebdbbd38d23559f54dca7205aea1bf1e35"}, -] -jsonschema = [ - {file = "jsonschema-4.4.0-py3-none-any.whl", hash = "sha256:77281a1f71684953ee8b3d488371b162419767973789272434bbc3f29d9c8823"}, - {file = "jsonschema-4.4.0.tar.gz", hash = "sha256:636694eb41b3535ed608fe04129f26542b59ed99808b4f688aa32dcf55317a83"}, -] -jupyter = [ - {file = "jupyter-1.0.0-py2.py3-none-any.whl", hash = "sha256:5b290f93b98ffbc21c0c7e749f054b3267782166d72fa5e3ed1ed4eaf34a2b78"}, - {file = "jupyter-1.0.0.tar.gz", hash = "sha256:d9dc4b3318f310e34c82951ea5d6683f67bed7def4b259fafbfe4f1beb1d8e5f"}, - {file = "jupyter-1.0.0.zip", hash = "sha256:3e1f86076bbb7c8c207829390305a2b1fe836d471ed54be66a3b8c41e7f46cc7"}, -] -jupyter-client = [ - {file = "jupyter_client-7.3.0-py3-none-any.whl", hash = "sha256:671dd2d90d03f41716b09627a4eb06bb37875f92bf6563cc2ce4fe71c61c5cda"}, - {file = "jupyter_client-7.3.0.tar.gz", hash = "sha256:3bcc8e08a294d0fa9406e48cfe17e11ef0efdb7c504fe8cc335128e3ef8f3dac"}, -] -jupyter-console = [ - {file = "jupyter_console-6.4.3-py3-none-any.whl", hash = "sha256:e630bcb682c0088dda45688ad7c2424d4a825c8acf494cb036ced03ed0424841"}, - {file = "jupyter_console-6.4.3.tar.gz", hash = "sha256:55f32626b0be647a85e3217ddcdb22db69efc79e8b403b9771eb9ecc696019b5"}, -] -jupyter-core = [ - {file = "jupyter_core-4.10.0-py3-none-any.whl", hash = "sha256:e7f5212177af7ab34179690140f188aa9bf3d322d8155ed972cbded19f55b6f3"}, - {file = "jupyter_core-4.10.0.tar.gz", hash = "sha256:a6de44b16b7b31d7271130c71a6792c4040f077011961138afed5e5e73181aec"}, -] -jupyterlab-pygments = [ - {file = "jupyterlab_pygments-0.2.2-py2.py3-none-any.whl", hash = "sha256:2405800db07c9f770863bcf8049a529c3dd4d3e28536638bd7c1c01d2748309f"}, - {file = "jupyterlab_pygments-0.2.2.tar.gz", hash = "sha256:7405d7fde60819d905a9fa8ce89e4cd830e318cdad22a0030f7a901da705585d"}, -] -jupyterlab-widgets = [ - {file = "jupyterlab_widgets-1.1.0-py3-none-any.whl", hash = "sha256:c2a9bd3789f120f64d73268c066ed3b000c56bc1dda217be5cdc43e7b4ebad3f"}, - {file = "jupyterlab_widgets-1.1.0.tar.gz", hash = "sha256:d5f41bc1713795385f718d44dcba47e1e1473c6289f28a95aa6b2c0782ee372a"}, -] -jupytext = [ - {file = "jupytext-1.13.8-py3-none-any.whl", hash = "sha256:625d2d2012763cc87d3f0dd60383516cec442c11894f53ad0c5ee5aa2a52caa2"}, - {file = "jupytext-1.13.8.tar.gz", hash = "sha256:60148537de5aa08bb9cbe8797500a49360b7a8eb6667736ae5b80e3ec7ba084d"}, -] -keras = [ - {file = "keras-2.8.0-py2.py3-none-any.whl", hash = "sha256:744d39dc6577dcd80ff4a4d41549e92b77d6a17e0edd58a431d30656e29bc94e"}, -] -keras-preprocessing = [ - {file = "Keras_Preprocessing-1.1.2-py2.py3-none-any.whl", hash = "sha256:7b82029b130ff61cc99b55f3bd27427df4838576838c5b2f65940e4fcec99a7b"}, - {file = "Keras_Preprocessing-1.1.2.tar.gz", hash = "sha256:add82567c50c8bc648c14195bf544a5ce7c1f76761536956c3d2978970179ef3"}, -] -kiwisolver = [ - {file = "kiwisolver-1.4.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6e395ece147f0692ca7cdb05a028d31b83b72c369f7b4a2c1798f4b96af1e3d8"}, - {file = "kiwisolver-1.4.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0b7f50a1a25361da3440f07c58cd1d79957c2244209e4f166990e770256b6b0b"}, - {file = "kiwisolver-1.4.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3c032c41ae4c3a321b43a3650e6ecc7406b99ff3e5279f24c9b310f41bc98479"}, - {file = "kiwisolver-1.4.2-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1dcade8f6fe12a2bb4efe2cbe22116556e3b6899728d3b2a0d3b367db323eacc"}, - {file = "kiwisolver-1.4.2-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0e45e780a74416ef2f173189ef4387e44b5494f45e290bcb1f03735faa6779bf"}, - {file = "kiwisolver-1.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d2bb56309fb75a811d81ed55fbe2208aa77a3a09ff5f546ca95e7bb5fac6eff"}, - {file = "kiwisolver-1.4.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b2d6c12f2ad5f55104a36a356192cfb680c049fe5e7c1f6620fc37f119cdc2"}, - {file = "kiwisolver-1.4.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:262c248c60f22c2b547683ad521e8a3db5909c71f679b93876921549107a0c24"}, - {file = "kiwisolver-1.4.2-cp310-cp310-win32.whl", hash = "sha256:1008346a7741620ab9cc6c96e8ad9b46f7a74ce839dbb8805ddf6b119d5fc6c2"}, - {file = "kiwisolver-1.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:6ece2e12e4b57bc5646b354f436416cd2a6f090c1dadcd92b0ca4542190d7190"}, - {file = "kiwisolver-1.4.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b978afdb913ca953cf128d57181da2e8798e8b6153be866ae2a9c446c6162f40"}, - {file = "kiwisolver-1.4.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f88c4b8e449908eeddb3bbd4242bd4dc2c7a15a7aa44bb33df893203f02dc2d"}, - {file = "kiwisolver-1.4.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e348f1904a4fab4153407f7ccc27e43b2a139752e8acf12e6640ba683093dd96"}, - {file = "kiwisolver-1.4.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c839bf28e45d7ddad4ae8f986928dbf5a6d42ff79760d54ec8ada8fb263e097c"}, - {file = "kiwisolver-1.4.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8ae5a071185f1a93777c79a9a1e67ac46544d4607f18d07131eece08d415083a"}, - {file = "kiwisolver-1.4.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:c222f91a45da9e01a9bc4f760727ae49050f8e8345c4ff6525495f7a164c8973"}, - {file = "kiwisolver-1.4.2-cp37-cp37m-win32.whl", hash = "sha256:a4e8f072db1d6fb7a7cc05a6dbef8442c93001f4bb604f1081d8c2db3ca97159"}, - {file = "kiwisolver-1.4.2-cp37-cp37m-win_amd64.whl", hash = "sha256:be9a650890fb60393e60aacb65878c4a38bb334720aa5ecb1c13d0dac54dd73b"}, - {file = "kiwisolver-1.4.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8ec2e55bf31b43aabe32089125dca3b46fdfe9f50afbf0756ae11e14c97b80ca"}, - {file = "kiwisolver-1.4.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d1078ba770d6165abed3d9a1be1f9e79b61515de1dd00d942fa53bba79f01ae"}, - {file = "kiwisolver-1.4.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cbb5eb4a2ea1ffec26268d49766cafa8f957fe5c1b41ad00733763fae77f9436"}, - {file = "kiwisolver-1.4.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e6cda72db409eefad6b021e8a4f964965a629f577812afc7860c69df7bdb84a"}, - {file = "kiwisolver-1.4.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b1605c7c38cc6a85212dfd6a641f3905a33412e49f7c003f35f9ac6d71f67720"}, - {file = "kiwisolver-1.4.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81237957b15469ea9151ec8ca08ce05656090ffabc476a752ef5ad7e2644c526"}, - {file = "kiwisolver-1.4.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:240009fdf4fa87844f805e23f48995537a8cb8f8c361e35fda6b5ac97fcb906f"}, - {file = "kiwisolver-1.4.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:240c2d51d098395c012ddbcb9bd7b3ba5de412a1d11840698859f51d0e643c4f"}, - {file = "kiwisolver-1.4.2-cp38-cp38-win32.whl", hash = "sha256:8b6086aa6936865962b2cee0e7aaecf01ab6778ce099288354a7229b4d9f1408"}, - {file = "kiwisolver-1.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:0d98dca86f77b851350c250f0149aa5852b36572514d20feeadd3c6b1efe38d0"}, - {file = "kiwisolver-1.4.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:91eb4916271655dfe3a952249cb37a5c00b6ba68b4417ee15af9ba549b5ba61d"}, - {file = "kiwisolver-1.4.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fa4d97d7d2b2c082e67907c0b8d9f31b85aa5d3ba0d33096b7116f03f8061261"}, - {file = "kiwisolver-1.4.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:71469b5845b9876b8d3d252e201bef6f47bf7456804d2fbe9a1d6e19e78a1e65"}, - {file = "kiwisolver-1.4.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8ff3033e43e7ca1389ee59fb7ecb8303abb8713c008a1da49b00869e92e3dd7c"}, - {file = "kiwisolver-1.4.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:89b57c2984f4464840e4b768affeff6b6809c6150d1166938ade3e22fbe22db8"}, - {file = "kiwisolver-1.4.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffbdb9a96c536f0405895b5e21ee39ec579cb0ed97bdbd169ae2b55f41d73219"}, - {file = "kiwisolver-1.4.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8a830a03970c462d1a2311c90e05679da56d3bd8e78a4ba9985cb78ef7836c9f"}, - {file = "kiwisolver-1.4.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f74f2a13af201559e3d32b9ddfc303c94ae63d63d7f4326d06ce6fe67e7a8255"}, - {file = "kiwisolver-1.4.2-cp39-cp39-win32.whl", hash = "sha256:e677cc3626287f343de751e11b1e8a5b915a6ac897e8aecdbc996cd34de753a0"}, - {file = "kiwisolver-1.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:b3e251e5c38ac623c5d786adb21477f018712f8c6fa54781bd38aa1c60b60fc2"}, - {file = "kiwisolver-1.4.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0c380bb5ae20d829c1a5473cfcae64267b73aaa4060adc091f6df1743784aae0"}, - {file = "kiwisolver-1.4.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:484f2a5f0307bc944bc79db235f41048bae4106ffa764168a068d88b644b305d"}, - {file = "kiwisolver-1.4.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e8afdf533b613122e4bbaf3c1e42c2a5e9e2d1dd3a0a017749a7658757cb377"}, - {file = "kiwisolver-1.4.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:42f6ef9b640deb6f7d438e0a371aedd8bef6ddfde30683491b2e6f568b4e884e"}, - {file = "kiwisolver-1.4.2.tar.gz", hash = "sha256:7f606d91b8a8816be476513a77fd30abe66227039bd6f8b406c348cb0247dcc9"}, -] -lazy-object-proxy = [ - {file = "lazy-object-proxy-1.7.1.tar.gz", hash = "sha256:d609c75b986def706743cdebe5e47553f4a5a1da9c5ff66d76013ef396b5a8a4"}, - {file = "lazy_object_proxy-1.7.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bb8c5fd1684d60a9902c60ebe276da1f2281a318ca16c1d0a96db28f62e9166b"}, - {file = "lazy_object_proxy-1.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a57d51ed2997e97f3b8e3500c984db50a554bb5db56c50b5dab1b41339b37e36"}, - {file = "lazy_object_proxy-1.7.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd45683c3caddf83abbb1249b653a266e7069a09f486daa8863fb0e7496a9fdb"}, - {file = "lazy_object_proxy-1.7.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8561da8b3dd22d696244d6d0d5330618c993a215070f473b699e00cf1f3f6443"}, - {file = "lazy_object_proxy-1.7.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fccdf7c2c5821a8cbd0a9440a456f5050492f2270bd54e94360cac663398739b"}, - {file = "lazy_object_proxy-1.7.1-cp310-cp310-win32.whl", hash = "sha256:898322f8d078f2654d275124a8dd19b079080ae977033b713f677afcfc88e2b9"}, - {file = "lazy_object_proxy-1.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:85b232e791f2229a4f55840ed54706110c80c0a210d076eee093f2b2e33e1bfd"}, - {file = "lazy_object_proxy-1.7.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:46ff647e76f106bb444b4533bb4153c7370cdf52efc62ccfc1a28bdb3cc95442"}, - {file = "lazy_object_proxy-1.7.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:12f3bb77efe1367b2515f8cb4790a11cffae889148ad33adad07b9b55e0ab22c"}, - {file = "lazy_object_proxy-1.7.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c19814163728941bb871240d45c4c30d33b8a2e85972c44d4e63dd7107faba44"}, - {file = "lazy_object_proxy-1.7.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:e40f2013d96d30217a51eeb1db28c9ac41e9d0ee915ef9d00da639c5b63f01a1"}, - {file = "lazy_object_proxy-1.7.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:2052837718516a94940867e16b1bb10edb069ab475c3ad84fd1e1a6dd2c0fcfc"}, - {file = "lazy_object_proxy-1.7.1-cp36-cp36m-win32.whl", hash = "sha256:6a24357267aa976abab660b1d47a34aaf07259a0c3859a34e536f1ee6e76b5bb"}, - {file = "lazy_object_proxy-1.7.1-cp36-cp36m-win_amd64.whl", hash = "sha256:6aff3fe5de0831867092e017cf67e2750c6a1c7d88d84d2481bd84a2e019ec35"}, - {file = "lazy_object_proxy-1.7.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6a6e94c7b02641d1311228a102607ecd576f70734dc3d5e22610111aeacba8a0"}, - {file = "lazy_object_proxy-1.7.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4ce15276a1a14549d7e81c243b887293904ad2d94ad767f42df91e75fd7b5b6"}, - {file = "lazy_object_proxy-1.7.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e368b7f7eac182a59ff1f81d5f3802161932a41dc1b1cc45c1f757dc876b5d2c"}, - {file = "lazy_object_proxy-1.7.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:6ecbb350991d6434e1388bee761ece3260e5228952b1f0c46ffc800eb313ff42"}, - {file = "lazy_object_proxy-1.7.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:553b0f0d8dbf21890dd66edd771f9b1b5f51bd912fa5f26de4449bfc5af5e029"}, - {file = "lazy_object_proxy-1.7.1-cp37-cp37m-win32.whl", hash = "sha256:c7a683c37a8a24f6428c28c561c80d5f4fd316ddcf0c7cab999b15ab3f5c5c69"}, - {file = "lazy_object_proxy-1.7.1-cp37-cp37m-win_amd64.whl", hash = "sha256:df2631f9d67259dc9620d831384ed7732a198eb434eadf69aea95ad18c587a28"}, - {file = "lazy_object_proxy-1.7.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:07fa44286cda977bd4803b656ffc1c9b7e3bc7dff7d34263446aec8f8c96f88a"}, - {file = "lazy_object_proxy-1.7.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4dca6244e4121c74cc20542c2ca39e5c4a5027c81d112bfb893cf0790f96f57e"}, - {file = "lazy_object_proxy-1.7.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91ba172fc5b03978764d1df5144b4ba4ab13290d7bab7a50f12d8117f8630c38"}, - {file = "lazy_object_proxy-1.7.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:043651b6cb706eee4f91854da4a089816a6606c1428fd391573ef8cb642ae4f7"}, - {file = "lazy_object_proxy-1.7.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b9e89b87c707dd769c4ea91f7a31538888aad05c116a59820f28d59b3ebfe25a"}, - {file = "lazy_object_proxy-1.7.1-cp38-cp38-win32.whl", hash = "sha256:9d166602b525bf54ac994cf833c385bfcc341b364e3ee71e3bf5a1336e677b55"}, - {file = "lazy_object_proxy-1.7.1-cp38-cp38-win_amd64.whl", hash = "sha256:8f3953eb575b45480db6568306893f0bd9d8dfeeebd46812aa09ca9579595148"}, - {file = "lazy_object_proxy-1.7.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dd7ed7429dbb6c494aa9bc4e09d94b778a3579be699f9d67da7e6804c422d3de"}, - {file = "lazy_object_proxy-1.7.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70ed0c2b380eb6248abdef3cd425fc52f0abd92d2b07ce26359fcbc399f636ad"}, - {file = "lazy_object_proxy-1.7.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7096a5e0c1115ec82641afbdd70451a144558ea5cf564a896294e346eb611be1"}, - {file = "lazy_object_proxy-1.7.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f769457a639403073968d118bc70110e7dce294688009f5c24ab78800ae56dc8"}, - {file = "lazy_object_proxy-1.7.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:39b0e26725c5023757fc1ab2a89ef9d7ab23b84f9251e28f9cc114d5b59c1b09"}, - {file = "lazy_object_proxy-1.7.1-cp39-cp39-win32.whl", hash = "sha256:2130db8ed69a48a3440103d4a520b89d8a9405f1b06e2cc81640509e8bf6548f"}, - {file = "lazy_object_proxy-1.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:677ea950bef409b47e51e733283544ac3d660b709cfce7b187f5ace137960d61"}, - {file = "lazy_object_proxy-1.7.1-pp37.pp38-none-any.whl", hash = "sha256:d66906d5785da8e0be7360912e99c9188b70f52c422f9fc18223347235691a84"}, -] -libclang = [ - {file = "libclang-14.0.1-py2.py3-none-macosx_10_9_x86_64.whl", hash = "sha256:a00c5f433af032979ac0cf03bcba59cf5247cb01fa04ef2380bf9668e84d50a9"}, - {file = "libclang-14.0.1-py2.py3-none-macosx_11_0_arm64.whl", hash = "sha256:52634f51635e8fc710febde1d7c59d3756b14531bd9ab60df54397ccc08cc4a8"}, - {file = "libclang-14.0.1-py2.py3-none-manylinux1_x86_64.whl", hash = "sha256:02bacd219959601c627872f2c7c7090ce57cf6bd497618388e41813c7ee75a3a"}, - {file = "libclang-14.0.1-py2.py3-none-manylinux2014_aarch64.whl", hash = "sha256:9d44b8e4b063ea4c7e78c925f083c05ab14440d63ed1bad13d4ca62d2908d277"}, - {file = "libclang-14.0.1-py2.py3-none-manylinux2014_armv7l.whl", hash = "sha256:7c7b8c7c82c0cdc088052c6b7b2be4a45b6b06f5f856e7e7058e598f05c09910"}, - {file = "libclang-14.0.1-py2.py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:58b9679868b2d6b5172ded26026c2f71306c4cabd6d15b93b597446fd677eb98"}, - {file = "libclang-14.0.1-py2.py3-none-win_amd64.whl", hash = "sha256:1a4f0d5959c801c975950926cffb9b45521c890d7c4b730d8a1f688d75b25de9"}, -] -mako = [ - {file = "Mako-1.2.0-py3-none-any.whl", hash = "sha256:23aab11fdbbb0f1051b93793a58323ff937e98e34aece1c4219675122e57e4ba"}, - {file = "Mako-1.2.0.tar.gz", hash = "sha256:9a7c7e922b87db3686210cf49d5d767033a41d4010b284e747682c92bddd8b39"}, -] -markdown = [ - {file = "Markdown-3.3.6-py3-none-any.whl", hash = "sha256:9923332318f843411e9932237530df53162e29dc7a4e2b91e35764583c46c9a3"}, - {file = "Markdown-3.3.6.tar.gz", hash = "sha256:76df8ae32294ec39dcf89340382882dfa12975f87f45c3ed1ecdb1e8cefc7006"}, -] -markdown-it-py = [ - {file = "markdown-it-py-2.1.0.tar.gz", hash = "sha256:cf7e59fed14b5ae17c0006eff14a2d9a00ed5f3a846148153899a0224e2c07da"}, - {file = "markdown_it_py-2.1.0-py3-none-any.whl", hash = "sha256:93de681e5c021a432c63147656fe21790bc01231e0cd2da73626f1aa3ac0fe27"}, -] -markupsafe = [ - {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-win32.whl", hash = "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-win32.whl", hash = "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-win32.whl", hash = "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-win32.whl", hash = "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247"}, - {file = "MarkupSafe-2.1.1.tar.gz", hash = "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b"}, -] -matplotlib = [ - {file = "matplotlib-3.5.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:456cc8334f6d1124e8ff856b42d2cc1c84335375a16448189999496549f7182b"}, - {file = "matplotlib-3.5.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8a77906dc2ef9b67407cec0bdbf08e3971141e535db888974a915be5e1e3efc6"}, - {file = "matplotlib-3.5.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e70ae6475cfd0fad3816dcbf6cac536dc6f100f7474be58d59fa306e6e768a4"}, - {file = "matplotlib-3.5.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:53273c5487d1c19c3bc03b9eb82adaf8456f243b97ed79d09dded747abaf1235"}, - {file = "matplotlib-3.5.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e3b6f3fd0d8ca37861c31e9a7cab71a0ef14c639b4c95654ea1dd153158bf0df"}, - {file = "matplotlib-3.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e8c87cdaf06fd7b2477f68909838ff4176f105064a72ca9d24d3f2a29f73d393"}, - {file = "matplotlib-3.5.1-cp310-cp310-win32.whl", hash = "sha256:e2f28a07b4f82abb40267864ad7b3a4ed76f1b1663e81c7efc84a9b9248f672f"}, - {file = "matplotlib-3.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:d70a32ee1f8b55eed3fd4e892f0286df8cccc7e0475c11d33b5d0a148f5c7599"}, - {file = "matplotlib-3.5.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:68fa30cec89b6139dc559ed6ef226c53fd80396da1919a1b5ef672c911aaa767"}, - {file = "matplotlib-3.5.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e3484d8455af3fdb0424eae1789af61f6a79da0c80079125112fd5c1b604218"}, - {file = "matplotlib-3.5.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e293b16cf303fe82995e41700d172a58a15efc5331125d08246b520843ef21ee"}, - {file = "matplotlib-3.5.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:e3520a274a0e054e919f5b3279ee5dbccf5311833819ccf3399dab7c83e90a25"}, - {file = "matplotlib-3.5.1-cp37-cp37m-win32.whl", hash = "sha256:2252bfac85cec7af4a67e494bfccf9080bcba8a0299701eab075f48847cca907"}, - {file = "matplotlib-3.5.1-cp37-cp37m-win_amd64.whl", hash = "sha256:abf67e05a1b7f86583f6ebd01f69b693b9c535276f4e943292e444855870a1b8"}, - {file = "matplotlib-3.5.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6c094e4bfecd2fa7f9adffd03d8abceed7157c928c2976899de282f3600f0a3d"}, - {file = "matplotlib-3.5.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:506b210cc6e66a0d1c2bb765d055f4f6bc2745070fb1129203b67e85bbfa5c18"}, - {file = "matplotlib-3.5.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b04fc29bcef04d4e2d626af28d9d892be6aba94856cb46ed52bcb219ceac8943"}, - {file = "matplotlib-3.5.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:577ed20ec9a18d6bdedb4616f5e9e957b4c08563a9f985563a31fd5b10564d2a"}, - {file = "matplotlib-3.5.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e486f60db0cd1c8d68464d9484fd2a94011c1ac8593d765d0211f9daba2bd535"}, - {file = "matplotlib-3.5.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:b71f3a7ca935fc759f2aed7cec06cfe10bc3100fadb5dbd9c435b04e557971e1"}, - {file = "matplotlib-3.5.1-cp38-cp38-win32.whl", hash = "sha256:d24e5bb8028541ce25e59390122f5e48c8506b7e35587e5135efcb6471b4ac6c"}, - {file = "matplotlib-3.5.1-cp38-cp38-win_amd64.whl", hash = "sha256:778d398c4866d8e36ee3bf833779c940b5f57192fa0a549b3ad67bc4c822771b"}, - {file = "matplotlib-3.5.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bb1c613908f11bac270bc7494d68b1ef6e7c224b7a4204d5dacf3522a41e2bc3"}, - {file = "matplotlib-3.5.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:edf5e4e1d5fb22c18820e8586fb867455de3b109c309cb4fce3aaed85d9468d1"}, - {file = "matplotlib-3.5.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:40e0d7df05e8efe60397c69b467fc8f87a2affeb4d562fe92b72ff8937a2b511"}, - {file = "matplotlib-3.5.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7a350ca685d9f594123f652ba796ee37219bf72c8e0fc4b471473d87121d6d34"}, - {file = "matplotlib-3.5.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3e66497cd990b1a130e21919b004da2f1dc112132c01ac78011a90a0f9229778"}, - {file = "matplotlib-3.5.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:87900c67c0f1728e6db17c6809ec05c025c6624dcf96a8020326ea15378fe8e7"}, - {file = "matplotlib-3.5.1-cp39-cp39-win32.whl", hash = "sha256:b8a4fb2a0c5afbe9604f8a91d7d0f27b1832c3e0b5e365f95a13015822b4cd65"}, - {file = "matplotlib-3.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:fe8d40c434a8e2c68d64c6d6a04e77f21791a93ff6afe0dce169597c110d3079"}, - {file = "matplotlib-3.5.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:34a1fc29f8f96e78ec57a5eff5e8d8b53d3298c3be6df61e7aa9efba26929522"}, - {file = "matplotlib-3.5.1-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:b19a761b948e939a9e20173aaae76070025f0024fc8f7ba08bef22a5c8573afc"}, - {file = "matplotlib-3.5.1-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6803299cbf4665eca14428d9e886de62e24f4223ac31ab9c5d6d5339a39782c7"}, - {file = "matplotlib-3.5.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:14334b9902ec776461c4b8c6516e26b450f7ebe0b3ef8703bf5cdfbbaecf774a"}, - {file = "matplotlib-3.5.1.tar.gz", hash = "sha256:b2e9810e09c3a47b73ce9cab5a72243a1258f61e7900969097a817232246ce1c"}, -] -matplotlib-inline = [ - {file = "matplotlib-inline-0.1.3.tar.gz", hash = "sha256:a04bfba22e0d1395479f866853ec1ee28eea1485c1d69a6faf00dc3e24ff34ee"}, - {file = "matplotlib_inline-0.1.3-py3-none-any.whl", hash = "sha256:aed605ba3b72462d64d475a21a9296f400a19c4f74a31b59103d2a99ffd5aa5c"}, -] -mccabe = [ - {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, - {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, -] -mdit-py-plugins = [ - {file = "mdit-py-plugins-0.3.0.tar.gz", hash = "sha256:ecc24f51eeec6ab7eecc2f9724e8272c2fb191c2e93cf98109120c2cace69750"}, - {file = "mdit_py_plugins-0.3.0-py3-none-any.whl", hash = "sha256:b1279701cee2dbf50e188d3da5f51fee8d78d038cdf99be57c6b9d1aa93b4073"}, -] -mdurl = [ - {file = "mdurl-0.1.1-py3-none-any.whl", hash = "sha256:6a8f6804087b7128040b2fb2ebe242bdc2affaeaa034d5fc9feeed30b443651b"}, - {file = "mdurl-0.1.1.tar.gz", hash = "sha256:f79c9709944df218a4cdb0fcc0b0c7ead2f44594e3e84dc566606f04ad749c20"}, -] -mistune = [ - {file = "mistune-0.8.4-py2.py3-none-any.whl", hash = "sha256:88a1051873018da288eee8538d476dffe1262495144b33ecb586c4ab266bb8d4"}, - {file = "mistune-0.8.4.tar.gz", hash = "sha256:59a3429db53c50b5c6bcc8a07f8848cb00d7dc8bdb431a4ab41920d201d4756e"}, -] -more-itertools = [ - {file = "more-itertools-8.12.0.tar.gz", hash = "sha256:7dc6ad46f05f545f900dd59e8dfb4e84a4827b97b3cfecb175ea0c7d247f6064"}, - {file = "more_itertools-8.12.0-py3-none-any.whl", hash = "sha256:43e6dd9942dffd72661a2c4ef383ad7da1e6a3e968a927ad7a6083ab410a688b"}, -] -multidict = [ - {file = "multidict-6.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b9e95a740109c6047602f4db4da9949e6c5945cefbad34a1299775ddc9a62e2"}, - {file = "multidict-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ac0e27844758d7177989ce406acc6a83c16ed4524ebc363c1f748cba184d89d3"}, - {file = "multidict-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:041b81a5f6b38244b34dc18c7b6aba91f9cdaf854d9a39e5ff0b58e2b5773b9c"}, - {file = "multidict-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5fdda29a3c7e76a064f2477c9aab1ba96fd94e02e386f1e665bca1807fc5386f"}, - {file = "multidict-6.0.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3368bf2398b0e0fcbf46d85795adc4c259299fec50c1416d0f77c0a843a3eed9"}, - {file = "multidict-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4f052ee022928d34fe1f4d2bc743f32609fb79ed9c49a1710a5ad6b2198db20"}, - {file = "multidict-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:225383a6603c086e6cef0f2f05564acb4f4d5f019a4e3e983f572b8530f70c88"}, - {file = "multidict-6.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50bd442726e288e884f7be9071016c15a8742eb689a593a0cac49ea093eef0a7"}, - {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:47e6a7e923e9cada7c139531feac59448f1f47727a79076c0b1ee80274cd8eee"}, - {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:0556a1d4ea2d949efe5fd76a09b4a82e3a4a30700553a6725535098d8d9fb672"}, - {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:626fe10ac87851f4cffecee161fc6f8f9853f0f6f1035b59337a51d29ff3b4f9"}, - {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:8064b7c6f0af936a741ea1efd18690bacfbae4078c0c385d7c3f611d11f0cf87"}, - {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2d36e929d7f6a16d4eb11b250719c39560dd70545356365b494249e2186bc389"}, - {file = "multidict-6.0.2-cp310-cp310-win32.whl", hash = "sha256:fcb91630817aa8b9bc4a74023e4198480587269c272c58b3279875ed7235c293"}, - {file = "multidict-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:8cbf0132f3de7cc6c6ce00147cc78e6439ea736cee6bca4f068bcf892b0fd658"}, - {file = "multidict-6.0.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:05f6949d6169878a03e607a21e3b862eaf8e356590e8bdae4227eedadacf6e51"}, - {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2c2e459f7050aeb7c1b1276763364884595d47000c1cddb51764c0d8976e608"}, - {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d0509e469d48940147e1235d994cd849a8f8195e0bca65f8f5439c56e17872a3"}, - {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:514fe2b8d750d6cdb4712346a2c5084a80220821a3e91f3f71eec11cf8d28fd4"}, - {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19adcfc2a7197cdc3987044e3f415168fc5dc1f720c932eb1ef4f71a2067e08b"}, - {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b9d153e7f1f9ba0b23ad1568b3b9e17301e23b042c23870f9ee0522dc5cc79e8"}, - {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:aef9cc3d9c7d63d924adac329c33835e0243b5052a6dfcbf7732a921c6e918ba"}, - {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:4571f1beddff25f3e925eea34268422622963cd8dc395bb8778eb28418248e43"}, - {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:d48b8ee1d4068561ce8033d2c344cf5232cb29ee1a0206a7b828c79cbc5982b8"}, - {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:45183c96ddf61bf96d2684d9fbaf6f3564d86b34cb125761f9a0ef9e36c1d55b"}, - {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:75bdf08716edde767b09e76829db8c1e5ca9d8bb0a8d4bd94ae1eafe3dac5e15"}, - {file = "multidict-6.0.2-cp37-cp37m-win32.whl", hash = "sha256:a45e1135cb07086833ce969555df39149680e5471c04dfd6a915abd2fc3f6dbc"}, - {file = "multidict-6.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6f3cdef8a247d1eafa649085812f8a310e728bdf3900ff6c434eafb2d443b23a"}, - {file = "multidict-6.0.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0327292e745a880459ef71be14e709aaea2f783f3537588fb4ed09b6c01bca60"}, - {file = "multidict-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e875b6086e325bab7e680e4316d667fc0e5e174bb5611eb16b3ea121c8951b86"}, - {file = "multidict-6.0.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:feea820722e69451743a3d56ad74948b68bf456984d63c1a92e8347b7b88452d"}, - {file = "multidict-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cc57c68cb9139c7cd6fc39f211b02198e69fb90ce4bc4a094cf5fe0d20fd8b0"}, - {file = "multidict-6.0.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:497988d6b6ec6ed6f87030ec03280b696ca47dbf0648045e4e1d28b80346560d"}, - {file = "multidict-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:89171b2c769e03a953d5969b2f272efa931426355b6c0cb508022976a17fd376"}, - {file = "multidict-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:684133b1e1fe91eda8fa7447f137c9490a064c6b7f392aa857bba83a28cfb693"}, - {file = "multidict-6.0.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fd9fc9c4849a07f3635ccffa895d57abce554b467d611a5009ba4f39b78a8849"}, - {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:e07c8e79d6e6fd37b42f3250dba122053fddb319e84b55dd3a8d6446e1a7ee49"}, - {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4070613ea2227da2bfb2c35a6041e4371b0af6b0be57f424fe2318b42a748516"}, - {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:47fbeedbf94bed6547d3aa632075d804867a352d86688c04e606971595460227"}, - {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:5774d9218d77befa7b70d836004a768fb9aa4fdb53c97498f4d8d3f67bb9cfa9"}, - {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2957489cba47c2539a8eb7ab32ff49101439ccf78eab724c828c1a54ff3ff98d"}, - {file = "multidict-6.0.2-cp38-cp38-win32.whl", hash = "sha256:e5b20e9599ba74391ca0cfbd7b328fcc20976823ba19bc573983a25b32e92b57"}, - {file = "multidict-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:8004dca28e15b86d1b1372515f32eb6f814bdf6f00952699bdeb541691091f96"}, - {file = "multidict-6.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2e4a0785b84fb59e43c18a015ffc575ba93f7d1dbd272b4cdad9f5134b8a006c"}, - {file = "multidict-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6701bf8a5d03a43375909ac91b6980aea74b0f5402fbe9428fc3f6edf5d9677e"}, - {file = "multidict-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a007b1638e148c3cfb6bf0bdc4f82776cef0ac487191d093cdc316905e504071"}, - {file = "multidict-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:07a017cfa00c9890011628eab2503bee5872f27144936a52eaab449be5eaf032"}, - {file = "multidict-6.0.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c207fff63adcdf5a485969131dc70e4b194327666b7e8a87a97fbc4fd80a53b2"}, - {file = "multidict-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:373ba9d1d061c76462d74e7de1c0c8e267e9791ee8cfefcf6b0b2495762c370c"}, - {file = "multidict-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfba7c6d5d7c9099ba21f84662b037a0ffd4a5e6b26ac07d19e423e6fdf965a9"}, - {file = "multidict-6.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:19d9bad105dfb34eb539c97b132057a4e709919ec4dd883ece5838bcbf262b80"}, - {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:de989b195c3d636ba000ee4281cd03bb1234635b124bf4cd89eeee9ca8fcb09d"}, - {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7c40b7bbece294ae3a87c1bc2abff0ff9beef41d14188cda94ada7bcea99b0fb"}, - {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:d16cce709ebfadc91278a1c005e3c17dd5f71f5098bfae1035149785ea6e9c68"}, - {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:a2c34a93e1d2aa35fbf1485e5010337c72c6791407d03aa5f4eed920343dd360"}, - {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:feba80698173761cddd814fa22e88b0661e98cb810f9f986c54aa34d281e4937"}, - {file = "multidict-6.0.2-cp39-cp39-win32.whl", hash = "sha256:23b616fdc3c74c9fe01d76ce0d1ce872d2d396d8fa8e4899398ad64fb5aa214a"}, - {file = "multidict-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:4bae31803d708f6f15fd98be6a6ac0b6958fcf68fda3c77a048a4f9073704aae"}, - {file = "multidict-6.0.2.tar.gz", hash = "sha256:5ff3bd75f38e4c43f1f470f2df7a4d430b821c4ce22be384e1459cb57d6bb013"}, -] -mypy = [ - {file = "mypy-0.800-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:e1c84c65ff6d69fb42958ece5b1255394714e0aac4df5ffe151bc4fe19c7600a"}, - {file = "mypy-0.800-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:947126195bfe4709c360e89b40114c6746ae248f04d379dca6f6ab677aa07641"}, - {file = "mypy-0.800-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:b95068a3ce3b50332c40e31a955653be245666a4bc7819d3c8898aa9fb9ea496"}, - {file = "mypy-0.800-cp35-cp35m-win_amd64.whl", hash = "sha256:ca7ad5aed210841f1e77f5f2f7d725b62c78fa77519312042c719ed2ab937876"}, - {file = "mypy-0.800-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e32b7b282c4ed4e378bba8b8dfa08e1cfa6f6574067ef22f86bee5b1039de0c9"}, - {file = "mypy-0.800-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:e497a544391f733eca922fdcb326d19e894789cd4ff61d48b4b195776476c5cf"}, - {file = "mypy-0.800-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:5615785d3e2f4f03ab7697983d82c4b98af5c321614f51b8f1034eb9ebe48363"}, - {file = "mypy-0.800-cp36-cp36m-win_amd64.whl", hash = "sha256:2b216eacca0ec0ee124af9429bfd858d5619a0725ee5f88057e6e076f9eb1a7b"}, - {file = "mypy-0.800-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e3b8432f8df19e3c11235c4563a7250666dc9aa7cdda58d21b4177b20256ca9f"}, - {file = "mypy-0.800-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:d16c54b0dffb861dc6318a8730952265876d90c5101085a4bc56913e8521ba19"}, - {file = "mypy-0.800-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:0d2fc8beb99cd88f2d7e20d69131353053fbecea17904ee6f0348759302c52fa"}, - {file = "mypy-0.800-cp37-cp37m-win_amd64.whl", hash = "sha256:aa9d4901f3ee1a986a3a79fe079ffbf7f999478c281376f48faa31daaa814e86"}, - {file = "mypy-0.800-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:319ee5c248a7c3f94477f92a729b7ab06bf8a6d04447ef3aa8c9ba2aa47c6dcf"}, - {file = "mypy-0.800-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:74f5aa50d0866bc6fb8e213441c41e466c86678c800700b87b012ed11c0a13e0"}, - {file = "mypy-0.800-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:a301da58d566aca05f8f449403c710c50a9860782148332322decf73a603280b"}, - {file = "mypy-0.800-cp38-cp38-win_amd64.whl", hash = "sha256:b9150db14a48a8fa114189bfe49baccdff89da8c6639c2717750c7ae62316738"}, - {file = "mypy-0.800-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f5fdf935a46aa20aa937f2478480ebf4be9186e98e49cc3843af9a5795a49a25"}, - {file = "mypy-0.800-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:6f8425fecd2ba6007e526209bb985ce7f49ed0d2ac1cc1a44f243380a06a84fb"}, - {file = "mypy-0.800-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:5ff616787122774f510caeb7b980542a7cc2222be3f00837a304ea85cd56e488"}, - {file = "mypy-0.800-cp39-cp39-win_amd64.whl", hash = "sha256:90b6f46dc2181d74f80617deca611925d7e63007cf416397358aa42efb593e07"}, - {file = "mypy-0.800-py3-none-any.whl", hash = "sha256:3e0c159a7853e3521e3f582adb1f3eac66d0b0639d434278e2867af3a8c62653"}, - {file = "mypy-0.800.tar.gz", hash = "sha256:e0202e37756ed09daf4b0ba64ad2c245d357659e014c3f51d8cd0681ba66940a"}, -] -mypy-extensions = [ - {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, - {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, -] -nbclient = [ - {file = "nbclient-0.6.0-py3-none-any.whl", hash = "sha256:2eed35fc954716cdf0a01ea8cbdd9f9316761479008570059e2f5de29e139423"}, - {file = "nbclient-0.6.0.tar.gz", hash = "sha256:3f89a403c6badf24d2855a455b69a80985b3b27e04111243fdb6a88a28d27031"}, -] -nbconvert = [ - {file = "nbconvert-6.5.0-py3-none-any.whl", hash = "sha256:c56dd0b8978a1811a5654f74c727ff16ca87dd5a43abd435a1c49b840fcd8360"}, - {file = "nbconvert-6.5.0.tar.gz", hash = "sha256:223e46e27abe8596b8aed54301fadbba433b7ffea8196a68fd7b1ff509eee99d"}, -] -nbformat = [ - {file = "nbformat-5.3.0-py3-none-any.whl", hash = "sha256:38856d97de49e8292e2d5d8f595e9d26f02abfd87e075d450af4511870b40538"}, - {file = "nbformat-5.3.0.tar.gz", hash = "sha256:fcc5ab8cb74e20b19570b5be809e2dba9b82836fd2761a89066ad43394ba29f5"}, -] -nest-asyncio = [ - {file = "nest_asyncio-1.5.5-py3-none-any.whl", hash = "sha256:b98e3ec1b246135e4642eceffa5a6c23a3ab12c82ff816a92c612d68205813b2"}, - {file = "nest_asyncio-1.5.5.tar.gz", hash = "sha256:e442291cd942698be619823a17a86a5759eabe1f8613084790de189fe9e16d65"}, -] -networkx = [ - {file = "networkx-2.6.3-py3-none-any.whl", hash = "sha256:80b6b89c77d1dfb64a4c7854981b60aeea6360ac02c6d4e4913319e0a313abef"}, - {file = "networkx-2.6.3.tar.gz", hash = "sha256:c0946ed31d71f1b732b5aaa6da5a0388a345019af232ce2f49c766e2d6795c51"}, -] -notebook = [ - {file = "notebook-6.4.12-py3-none-any.whl", hash = "sha256:8c07a3bb7640e371f8a609bdbb2366a1976c6a2589da8ef917f761a61e3ad8b1"}, - {file = "notebook-6.4.12.tar.gz", hash = "sha256:6268c9ec9048cff7a45405c990c29ac9ca40b0bc3ec29263d218c5e01f2b4e86"}, -] -numexpr = [ - {file = "numexpr-2.8.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d148e99483e15de22d0acd5100136d39a336e91c8f8d37bf2e84e9f0ab4c0610"}, - {file = "numexpr-2.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ebf31aeed426840aefe1e94c89bb0b7530a72be36444ed4c73e4411865b79be5"}, - {file = "numexpr-2.8.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3bab5add6628fa8bb66fba7b1f0eed5d8d0ce05fdd2dcc326dde8a297a961c46"}, - {file = "numexpr-2.8.1-cp310-cp310-win32.whl", hash = "sha256:79ec94295aa57f5a9d212116bb7359744cd2f9e05d477df0dee383b7f44b9588"}, - {file = "numexpr-2.8.1-cp310-cp310-win_amd64.whl", hash = "sha256:cfd89f63028f8df3c9b11bf2c98085184f967a09f543a77c3335f4a0ec54f124"}, - {file = "numexpr-2.8.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:517f299c4bc8491b5117aa276e8f3cf7ee2e89223922e92e2ea78a32985d5087"}, - {file = "numexpr-2.8.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9f046cb5752f08a9291dc1fd37a9cfd15770262188bb984e4418490fef9c9ec"}, - {file = "numexpr-2.8.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:6bce8a183afe157c25385d27be314be22f06ba644c89b611d20e2570a06bd5dd"}, - {file = "numexpr-2.8.1-cp36-cp36m-win32.whl", hash = "sha256:1639561d056d2d790a56ddab7e7df40b6181ad50338b50fba94aa42874a00958"}, - {file = "numexpr-2.8.1-cp36-cp36m-win_amd64.whl", hash = "sha256:a97a087a5f5e56cd81c69215918fdaca60eb478a099daa757455e4ff887f7600"}, - {file = "numexpr-2.8.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:bd402e43b8baf6436b7c2c14541f69eb4f97f023469585a7ad258c49622ff619"}, - {file = "numexpr-2.8.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48258db3ba89ad028744e07b09dde963f82da7f081849d3a003bb0b96b112d4f"}, - {file = "numexpr-2.8.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:4eb79d9026f013cf8d16de8be74911c74c0c09362627bf4b39e2b7f1f3188c28"}, - {file = "numexpr-2.8.1-cp37-cp37m-win32.whl", hash = "sha256:fd6905bc80a11908e363c9821cbf8aeeca4dca5b6a2eea90a97b055bc73443e6"}, - {file = "numexpr-2.8.1-cp37-cp37m-win_amd64.whl", hash = "sha256:da180aaec7f6c387540b251f6ec2b8d280220c0e45731778853c8b0d86c4ae22"}, - {file = "numexpr-2.8.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b57d3ab7054409d9b4d2148241ae70d738c0b0daeb1a0efd5ea89b9279752e22"}, - {file = "numexpr-2.8.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7b64b125161e722c9dc8a27df282e755bd9a5adf826b2e3e1f038e3dfdc3307"}, - {file = "numexpr-2.8.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:a591f99ecbb413749725e8da4e52e663f0939dd5fbf1ae5a7c6c50ba734f57de"}, - {file = "numexpr-2.8.1-cp38-cp38-win32.whl", hash = "sha256:80db25e2934fd1a1b787440d5fa7946adb79a1289d7dc64e2c8bcd6ceae660ad"}, - {file = "numexpr-2.8.1-cp38-cp38-win_amd64.whl", hash = "sha256:d2b4b6379763ec5d794d4aaa1834ae00f1bba82a36d0b99c6e2d559302a21e85"}, - {file = "numexpr-2.8.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ab6b2cb64bc9391f77f08203fda5af3647ed2abcefb928cc6282727854f97735"}, - {file = "numexpr-2.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2247d92da60b85de619e797e59a80e9c7302fba82dcd0525de8f7dd729a0d60f"}, - {file = "numexpr-2.8.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5d0c98c4d8bcc25962e5859176e5728f69209cffb9b7f64bf6d1c801fe350946"}, - {file = "numexpr-2.8.1-cp39-cp39-win32.whl", hash = "sha256:24fb5b2c17273a76e7de9cea7817c54262198657998a093fceb4030f273524c7"}, - {file = "numexpr-2.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:920c6a3088790573765e103e20592864977aa4b4d1b819c298fa9d88771cde1b"}, - {file = "numexpr-2.8.1.tar.gz", hash = "sha256:cd779aa44dd986c4ef10163519239602b027be06a527946656207acf1f58113b"}, -] -numpy = [ - {file = "numpy-1.21.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8737609c3bbdd48e380d463134a35ffad3b22dc56295eff6f79fd85bd0eeeb25"}, - {file = "numpy-1.21.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:fdffbfb6832cd0b300995a2b08b8f6fa9f6e856d562800fea9182316d99c4e8e"}, - {file = "numpy-1.21.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3820724272f9913b597ccd13a467cc492a0da6b05df26ea09e78b171a0bb9da6"}, - {file = "numpy-1.21.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f17e562de9edf691a42ddb1eb4a5541c20dd3f9e65b09ded2beb0799c0cf29bb"}, - {file = "numpy-1.21.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f30427731561ce75d7048ac254dbe47a2ba576229250fb60f0fb74db96501a1"}, - {file = "numpy-1.21.6-cp310-cp310-win32.whl", hash = "sha256:d4bf4d43077db55589ffc9009c0ba0a94fa4908b9586d6ccce2e0b164c86303c"}, - {file = "numpy-1.21.6-cp310-cp310-win_amd64.whl", hash = "sha256:d136337ae3cc69aa5e447e78d8e1514be8c3ec9b54264e680cf0b4bd9011574f"}, - {file = "numpy-1.21.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6aaf96c7f8cebc220cdfc03f1d5a31952f027dda050e5a703a0d1c396075e3e7"}, - {file = "numpy-1.21.6-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:67c261d6c0a9981820c3a149d255a76918278a6b03b6a036800359aba1256d46"}, - {file = "numpy-1.21.6-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a6be4cb0ef3b8c9250c19cc122267263093eee7edd4e3fa75395dfda8c17a8e2"}, - {file = "numpy-1.21.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c4068a8c44014b2d55f3c3f574c376b2494ca9cc73d2f1bd692382b6dffe3db"}, - {file = "numpy-1.21.6-cp37-cp37m-win32.whl", hash = "sha256:7c7e5fa88d9ff656e067876e4736379cc962d185d5cd808014a8a928d529ef4e"}, - {file = "numpy-1.21.6-cp37-cp37m-win_amd64.whl", hash = "sha256:bcb238c9c96c00d3085b264e5c1a1207672577b93fa666c3b14a45240b14123a"}, - {file = "numpy-1.21.6-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:82691fda7c3f77c90e62da69ae60b5ac08e87e775b09813559f8901a88266552"}, - {file = "numpy-1.21.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:643843bcc1c50526b3a71cd2ee561cf0d8773f062c8cbaf9ffac9fdf573f83ab"}, - {file = "numpy-1.21.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:357768c2e4451ac241465157a3e929b265dfac85d9214074985b1786244f2ef3"}, - {file = "numpy-1.21.6-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9f411b2c3f3d76bba0865b35a425157c5dcf54937f82bbeb3d3c180789dd66a6"}, - {file = "numpy-1.21.6-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4aa48afdce4660b0076a00d80afa54e8a97cd49f457d68a4342d188a09451c1a"}, - {file = "numpy-1.21.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6a96eef20f639e6a97d23e57dd0c1b1069a7b4fd7027482a4c5c451cd7732f4"}, - {file = "numpy-1.21.6-cp38-cp38-win32.whl", hash = "sha256:5c3c8def4230e1b959671eb959083661b4a0d2e9af93ee339c7dada6759a9470"}, - {file = "numpy-1.21.6-cp38-cp38-win_amd64.whl", hash = "sha256:bf2ec4b75d0e9356edea834d1de42b31fe11f726a81dfb2c2112bc1eaa508fcf"}, - {file = "numpy-1.21.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:4391bd07606be175aafd267ef9bea87cf1b8210c787666ce82073b05f202add1"}, - {file = "numpy-1.21.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:67f21981ba2f9d7ba9ade60c9e8cbaa8cf8e9ae51673934480e45cf55e953673"}, - {file = "numpy-1.21.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ee5ec40fdd06d62fe5d4084bef4fd50fd4bb6bfd2bf519365f569dc470163ab0"}, - {file = "numpy-1.21.6-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1dbe1c91269f880e364526649a52eff93ac30035507ae980d2fed33aaee633ac"}, - {file = "numpy-1.21.6-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d9caa9d5e682102453d96a0ee10c7241b72859b01a941a397fd965f23b3e016b"}, - {file = "numpy-1.21.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58459d3bad03343ac4b1b42ed14d571b8743dc80ccbf27444f266729df1d6f5b"}, - {file = "numpy-1.21.6-cp39-cp39-win32.whl", hash = "sha256:7f5ae4f304257569ef3b948810816bc87c9146e8c446053539947eedeaa32786"}, - {file = "numpy-1.21.6-cp39-cp39-win_amd64.whl", hash = "sha256:e31f0bb5928b793169b87e3d1e070f2342b22d5245c755e2b81caa29756246c3"}, - {file = "numpy-1.21.6-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:dd1c8f6bd65d07d3810b90d02eba7997e32abbdf1277a481d698969e921a3be0"}, - {file = "numpy-1.21.6.zip", hash = "sha256:ecb55251139706669fdec2ff073c98ef8e9a84473e51e716211b41aa0f18e656"}, -] -oauthlib = [ - {file = "oauthlib-3.2.0-py3-none-any.whl", hash = "sha256:6db33440354787f9b7f3a6dbd4febf5d0f93758354060e802f6c06cb493022fe"}, - {file = "oauthlib-3.2.0.tar.gz", hash = "sha256:23a8208d75b902797ea29fd31fa80a15ed9dc2c6c16fe73f5d346f83f6fa27a2"}, -] -opt-einsum = [ - {file = "opt_einsum-3.3.0-py3-none-any.whl", hash = "sha256:2455e59e3947d3c275477df7f5205b30635e266fe6dc300e3d9f9646bfcea147"}, - {file = "opt_einsum-3.3.0.tar.gz", hash = "sha256:59f6475f77bbc37dcf7cd748519c0ec60722e91e63ca114e68821c0c54a46549"}, -] -optuna = [ - {file = "optuna-2.10.0-py3-none-any.whl", hash = "sha256:457ff8b12b459dc1eeb0178389ff9e5c4da41764cc91152fe324bfd56f88d43f"}, - {file = "optuna-2.10.0.tar.gz", hash = "sha256:04c3100a4fe88a71dc72f69d8a10ec9db7c9a0c884feaf932b68632b00686a8d"}, -] -packaging = [ - {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, - {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, -] -pandas = [ - {file = "pandas-1.1.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:bf23a3b54d128b50f4f9d4675b3c1857a688cc6731a32f931837d72effb2698d"}, - {file = "pandas-1.1.5-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:5a780260afc88268a9d3ac3511d8f494fdcf637eece62fb9eb656a63d53eb7ca"}, - {file = "pandas-1.1.5-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:b61080750d19a0122469ab59b087380721d6b72a4e7d962e4d7e63e0c4504814"}, - {file = "pandas-1.1.5-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:0de3ddb414d30798cbf56e642d82cac30a80223ad6fe484d66c0ce01a84d6f2f"}, - {file = "pandas-1.1.5-cp36-cp36m-win32.whl", hash = "sha256:70865f96bb38fec46f7ebd66d4b5cfd0aa6b842073f298d621385ae3898d28b5"}, - {file = "pandas-1.1.5-cp36-cp36m-win_amd64.whl", hash = "sha256:19a2148a1d02791352e9fa637899a78e371a3516ac6da5c4edc718f60cbae648"}, - {file = "pandas-1.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:26fa92d3ac743a149a31b21d6f4337b0594b6302ea5575b37af9ca9611e8981a"}, - {file = "pandas-1.1.5-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:c16d59c15d946111d2716856dd5479221c9e4f2f5c7bc2d617f39d870031e086"}, - {file = "pandas-1.1.5-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:3be7a7a0ca71a2640e81d9276f526bca63505850add10206d0da2e8a0a325dae"}, - {file = "pandas-1.1.5-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:573fba5b05bf2c69271a32e52399c8de599e4a15ab7cec47d3b9c904125ab788"}, - {file = "pandas-1.1.5-cp37-cp37m-win32.whl", hash = "sha256:21b5a2b033380adbdd36b3116faaf9a4663e375325831dac1b519a44f9e439bb"}, - {file = "pandas-1.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:24c7f8d4aee71bfa6401faeba367dd654f696a77151a8a28bc2013f7ced4af98"}, - {file = "pandas-1.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2860a97cbb25444ffc0088b457da0a79dc79f9c601238a3e0644312fcc14bf11"}, - {file = "pandas-1.1.5-cp38-cp38-manylinux1_i686.whl", hash = "sha256:5008374ebb990dad9ed48b0f5d0038124c73748f5384cc8c46904dace27082d9"}, - {file = "pandas-1.1.5-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:2c2f7c670ea4e60318e4b7e474d56447cf0c7d83b3c2a5405a0dbb2600b9c48e"}, - {file = "pandas-1.1.5-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:0a643bae4283a37732ddfcecab3f62dd082996021b980f580903f4e8e01b3c5b"}, - {file = "pandas-1.1.5-cp38-cp38-win32.whl", hash = "sha256:5447ea7af4005b0daf695a316a423b96374c9c73ffbd4533209c5ddc369e644b"}, - {file = "pandas-1.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:4c62e94d5d49db116bef1bd5c2486723a292d79409fc9abd51adf9e05329101d"}, - {file = "pandas-1.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:731568be71fba1e13cae212c362f3d2ca8932e83cb1b85e3f1b4dd77d019254a"}, - {file = "pandas-1.1.5-cp39-cp39-manylinux1_i686.whl", hash = "sha256:c61c043aafb69329d0f961b19faa30b1dab709dd34c9388143fc55680059e55a"}, - {file = "pandas-1.1.5-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:2b1c6cd28a0dfda75c7b5957363333f01d370936e4c6276b7b8e696dd500582a"}, - {file = "pandas-1.1.5-cp39-cp39-win32.whl", hash = "sha256:c94ff2780a1fd89f190390130d6d36173ca59fcfb3fe0ff596f9a56518191ccb"}, - {file = "pandas-1.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:edda9bacc3843dfbeebaf7a701763e68e741b08fccb889c003b0a52f0ee95782"}, - {file = "pandas-1.1.5.tar.gz", hash = "sha256:f10fc41ee3c75a474d3bdf68d396f10782d013d7f67db99c0efbfd0acb99701b"}, -] -pandocfilters = [ - {file = "pandocfilters-1.5.0-py2.py3-none-any.whl", hash = "sha256:33aae3f25fd1a026079f5d27bdd52496f0e0803b3469282162bafdcbdf6ef14f"}, - {file = "pandocfilters-1.5.0.tar.gz", hash = "sha256:0b679503337d233b4339a817bfc8c50064e2eff681314376a47cb582305a7a38"}, -] -parso = [ - {file = "parso-0.8.3-py2.py3-none-any.whl", hash = "sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75"}, - {file = "parso-0.8.3.tar.gz", hash = "sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0"}, -] -pathspec = [ - {file = "pathspec-0.9.0-py2.py3-none-any.whl", hash = "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a"}, - {file = "pathspec-0.9.0.tar.gz", hash = "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1"}, -] -pbr = [ - {file = "pbr-5.8.1-py2.py3-none-any.whl", hash = "sha256:27108648368782d07bbf1cb468ad2e2eeef29086affd14087a6d04b7de8af4ec"}, - {file = "pbr-5.8.1.tar.gz", hash = "sha256:66bc5a34912f408bb3925bf21231cb6f59206267b7f63f3503ef865c1a292e25"}, -] -pexpect = [ - {file = "pexpect-4.8.0-py2.py3-none-any.whl", hash = "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937"}, - {file = "pexpect-4.8.0.tar.gz", hash = "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c"}, -] -pickleshare = [ - {file = "pickleshare-0.7.5-py2.py3-none-any.whl", hash = "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56"}, - {file = "pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca"}, -] -pillow = [ - {file = "Pillow-9.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:af79d3fde1fc2e33561166d62e3b63f0cc3e47b5a3a2e5fea40d4917754734ea"}, - {file = "Pillow-9.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:55dd1cf09a1fd7c7b78425967aacae9b0d70125f7d3ab973fadc7b5abc3de652"}, - {file = "Pillow-9.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:66822d01e82506a19407d1afc104c3fcea3b81d5eb11485e593ad6b8492f995a"}, - {file = "Pillow-9.1.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a5eaf3b42df2bcda61c53a742ee2c6e63f777d0e085bbc6b2ab7ed57deb13db7"}, - {file = "Pillow-9.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01ce45deec9df310cbbee11104bae1a2a43308dd9c317f99235b6d3080ddd66e"}, - {file = "Pillow-9.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:aea7ce61328e15943d7b9eaca87e81f7c62ff90f669116f857262e9da4057ba3"}, - {file = "Pillow-9.1.0-cp310-cp310-win32.whl", hash = "sha256:7a053bd4d65a3294b153bdd7724dce864a1d548416a5ef61f6d03bf149205160"}, - {file = "Pillow-9.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:97bda660702a856c2c9e12ec26fc6d187631ddfd896ff685814ab21ef0597033"}, - {file = "Pillow-9.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:21dee8466b42912335151d24c1665fcf44dc2ee47e021d233a40c3ca5adae59c"}, - {file = "Pillow-9.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b6d4050b208c8ff886fd3db6690bf04f9a48749d78b41b7a5bf24c236ab0165"}, - {file = "Pillow-9.1.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5cfca31ab4c13552a0f354c87fbd7f162a4fafd25e6b521bba93a57fe6a3700a"}, - {file = "Pillow-9.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed742214068efa95e9844c2d9129e209ed63f61baa4d54dbf4cf8b5e2d30ccf2"}, - {file = "Pillow-9.1.0-cp37-cp37m-win32.whl", hash = "sha256:c9efef876c21788366ea1f50ecb39d5d6f65febe25ad1d4c0b8dff98843ac244"}, - {file = "Pillow-9.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:de344bcf6e2463bb25179d74d6e7989e375f906bcec8cb86edb8b12acbc7dfef"}, - {file = "Pillow-9.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:17869489de2fce6c36690a0c721bd3db176194af5f39249c1ac56d0bb0fcc512"}, - {file = "Pillow-9.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:25023a6209a4d7c42154073144608c9a71d3512b648a2f5d4465182cb93d3477"}, - {file = "Pillow-9.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8782189c796eff29dbb37dd87afa4ad4d40fc90b2742704f94812851b725964b"}, - {file = "Pillow-9.1.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:463acf531f5d0925ca55904fa668bb3461c3ef6bc779e1d6d8a488092bdee378"}, - {file = "Pillow-9.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f42364485bfdab19c1373b5cd62f7c5ab7cc052e19644862ec8f15bb8af289e"}, - {file = "Pillow-9.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:3fddcdb619ba04491e8f771636583a7cc5a5051cd193ff1aa1ee8616d2a692c5"}, - {file = "Pillow-9.1.0-cp38-cp38-win32.whl", hash = "sha256:4fe29a070de394e449fd88ebe1624d1e2d7ddeed4c12e0b31624561b58948d9a"}, - {file = "Pillow-9.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:c24f718f9dd73bb2b31a6201e6db5ea4a61fdd1d1c200f43ee585fc6dcd21b34"}, - {file = "Pillow-9.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fb89397013cf302f282f0fc998bb7abf11d49dcff72c8ecb320f76ea6e2c5717"}, - {file = "Pillow-9.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c870193cce4b76713a2b29be5d8327c8ccbe0d4a49bc22968aa1e680930f5581"}, - {file = "Pillow-9.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69e5ddc609230d4408277af135c5b5c8fe7a54b2bdb8ad7c5100b86b3aab04c6"}, - {file = "Pillow-9.1.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:35be4a9f65441d9982240e6966c1eaa1c654c4e5e931eaf580130409e31804d4"}, - {file = "Pillow-9.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82283af99c1c3a5ba1da44c67296d5aad19f11c535b551a5ae55328a317ce331"}, - {file = "Pillow-9.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a325ac71914c5c043fa50441b36606e64a10cd262de12f7a179620f579752ff8"}, - {file = "Pillow-9.1.0-cp39-cp39-win32.whl", hash = "sha256:a598d8830f6ef5501002ae85c7dbfcd9c27cc4efc02a1989369303ba85573e58"}, - {file = "Pillow-9.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:0c51cb9edac8a5abd069fd0758ac0a8bfe52c261ee0e330f363548aca6893595"}, - {file = "Pillow-9.1.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a336a4f74baf67e26f3acc4d61c913e378e931817cd1e2ef4dfb79d3e051b481"}, - {file = "Pillow-9.1.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb1b89b11256b5b6cad5e7593f9061ac4624f7651f7a8eb4dfa37caa1dfaa4d0"}, - {file = "Pillow-9.1.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:255c9d69754a4c90b0ee484967fc8818c7ff8311c6dddcc43a4340e10cd1636a"}, - {file = "Pillow-9.1.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5a3ecc026ea0e14d0ad7cd990ea7f48bfcb3eb4271034657dc9d06933c6629a7"}, - {file = "Pillow-9.1.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5b0ff59785d93b3437c3703e3c64c178aabada51dea2a7f2c5eccf1bcf565a3"}, - {file = "Pillow-9.1.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c7110ec1701b0bf8df569a7592a196c9d07c764a0a74f65471ea56816f10e2c8"}, - {file = "Pillow-9.1.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:8d79c6f468215d1a8415aa53d9868a6b40c4682165b8cb62a221b1baa47db458"}, - {file = "Pillow-9.1.0.tar.gz", hash = "sha256:f401ed2bbb155e1ade150ccc63db1a4f6c1909d3d378f7d1235a44e90d75fb97"}, -] -platformdirs = [ - {file = "platformdirs-2.5.2-py3-none-any.whl", hash = "sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788"}, - {file = "platformdirs-2.5.2.tar.gz", hash = "sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19"}, -] -pluggy = [ - {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, - {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, -] -prettytable = [ - {file = "prettytable-3.2.0-py3-none-any.whl", hash = "sha256:f6c5ec87c3ef9df5bba1d32d826c1b862ecad0344dddb6082e3562caf71fe085"}, - {file = "prettytable-3.2.0.tar.gz", hash = "sha256:ae7d96c64100543dc61662b40a28f3b03c0f94a503ed121c6fca2782c5816f81"}, -] -prometheus-client = [ - {file = "prometheus_client-0.14.1-py3-none-any.whl", hash = "sha256:522fded625282822a89e2773452f42df14b5a8e84a86433e3f8a189c1d54dc01"}, - {file = "prometheus_client-0.14.1.tar.gz", hash = "sha256:5459c427624961076277fdc6dc50540e2bacb98eebde99886e59ec55ed92093a"}, -] -prompt-toolkit = [ - {file = "prompt_toolkit-3.0.29-py3-none-any.whl", hash = "sha256:62291dad495e665fca0bda814e342c69952086afb0f4094d0893d357e5c78752"}, - {file = "prompt_toolkit-3.0.29.tar.gz", hash = "sha256:bd640f60e8cecd74f0dc249713d433ace2ddc62b65ee07f96d358e0b152b6ea7"}, -] -protobuf = [ - {file = "protobuf-3.20.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3cc797c9d15d7689ed507b165cd05913acb992d78b379f6014e013f9ecb20996"}, - {file = "protobuf-3.20.1-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:ff8d8fa42675249bb456f5db06c00de6c2f4c27a065955917b28c4f15978b9c3"}, - {file = "protobuf-3.20.1-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cd68be2559e2a3b84f517fb029ee611546f7812b1fdd0aa2ecc9bc6ec0e4fdde"}, - {file = "protobuf-3.20.1-cp310-cp310-win32.whl", hash = "sha256:9016d01c91e8e625141d24ec1b20fed584703e527d28512aa8c8707f105a683c"}, - {file = "protobuf-3.20.1-cp310-cp310-win_amd64.whl", hash = "sha256:32ca378605b41fd180dfe4e14d3226386d8d1b002ab31c969c366549e66a2bb7"}, - {file = "protobuf-3.20.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:9be73ad47579abc26c12024239d3540e6b765182a91dbc88e23658ab71767153"}, - {file = "protobuf-3.20.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:097c5d8a9808302fb0da7e20edf0b8d4703274d140fd25c5edabddcde43e081f"}, - {file = "protobuf-3.20.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e250a42f15bf9d5b09fe1b293bdba2801cd520a9f5ea2d7fb7536d4441811d20"}, - {file = "protobuf-3.20.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:cdee09140e1cd184ba9324ec1df410e7147242b94b5f8b0c64fc89e38a8ba531"}, - {file = "protobuf-3.20.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:af0ebadc74e281a517141daad9d0f2c5d93ab78e9d455113719a45a49da9db4e"}, - {file = "protobuf-3.20.1-cp37-cp37m-win32.whl", hash = "sha256:755f3aee41354ae395e104d62119cb223339a8f3276a0cd009ffabfcdd46bb0c"}, - {file = "protobuf-3.20.1-cp37-cp37m-win_amd64.whl", hash = "sha256:62f1b5c4cd6c5402b4e2d63804ba49a327e0c386c99b1675c8a0fefda23b2067"}, - {file = "protobuf-3.20.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:06059eb6953ff01e56a25cd02cca1a9649a75a7e65397b5b9b4e929ed71d10cf"}, - {file = "protobuf-3.20.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:cb29edb9eab15742d791e1025dd7b6a8f6fcb53802ad2f6e3adcb102051063ab"}, - {file = "protobuf-3.20.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:69ccfdf3657ba59569c64295b7d51325f91af586f8d5793b734260dfe2e94e2c"}, - {file = "protobuf-3.20.1-cp38-cp38-win32.whl", hash = "sha256:dd5789b2948ca702c17027c84c2accb552fc30f4622a98ab5c51fcfe8c50d3e7"}, - {file = "protobuf-3.20.1-cp38-cp38-win_amd64.whl", hash = "sha256:77053d28427a29987ca9caf7b72ccafee011257561259faba8dd308fda9a8739"}, - {file = "protobuf-3.20.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6f50601512a3d23625d8a85b1638d914a0970f17920ff39cec63aaef80a93fb7"}, - {file = "protobuf-3.20.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:284f86a6207c897542d7e956eb243a36bb8f9564c1742b253462386e96c6b78f"}, - {file = "protobuf-3.20.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7403941f6d0992d40161aa8bb23e12575637008a5a02283a930addc0508982f9"}, - {file = "protobuf-3.20.1-cp39-cp39-win32.whl", hash = "sha256:db977c4ca738dd9ce508557d4fce0f5aebd105e158c725beec86feb1f6bc20d8"}, - {file = "protobuf-3.20.1-cp39-cp39-win_amd64.whl", hash = "sha256:7e371f10abe57cee5021797126c93479f59fccc9693dafd6bd5633ab67808a91"}, - {file = "protobuf-3.20.1-py2.py3-none-any.whl", hash = "sha256:adfc6cf69c7f8c50fd24c793964eef18f0ac321315439d94945820612849c388"}, - {file = "protobuf-3.20.1.tar.gz", hash = "sha256:adc31566d027f45efe3f44eeb5b1f329da43891634d61c75a5944e9be6dd42c9"}, -] -psutil = [ - {file = "psutil-5.9.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:55ce319452e3d139e25d6c3f85a1acf12d1607ddedea5e35fb47a552c051161b"}, - {file = "psutil-5.9.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:7336292a13a80eb93c21f36bde4328aa748a04b68c13d01dfddd67fc13fd0618"}, - {file = "psutil-5.9.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:cb8d10461c1ceee0c25a64f2dd54872b70b89c26419e147a05a10b753ad36ec2"}, - {file = "psutil-5.9.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:7641300de73e4909e5d148e90cc3142fb890079e1525a840cf0dfd39195239fd"}, - {file = "psutil-5.9.0-cp27-none-win32.whl", hash = "sha256:ea42d747c5f71b5ccaa6897b216a7dadb9f52c72a0fe2b872ef7d3e1eacf3ba3"}, - {file = "psutil-5.9.0-cp27-none-win_amd64.whl", hash = "sha256:ef216cc9feb60634bda2f341a9559ac594e2eeaadd0ba187a4c2eb5b5d40b91c"}, - {file = "psutil-5.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:90a58b9fcae2dbfe4ba852b57bd4a1dded6b990a33d6428c7614b7d48eccb492"}, - {file = "psutil-5.9.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff0d41f8b3e9ebb6b6110057e40019a432e96aae2008951121ba4e56040b84f3"}, - {file = "psutil-5.9.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:742c34fff804f34f62659279ed5c5b723bb0195e9d7bd9907591de9f8f6558e2"}, - {file = "psutil-5.9.0-cp310-cp310-win32.whl", hash = "sha256:8293942e4ce0c5689821f65ce6522ce4786d02af57f13c0195b40e1edb1db61d"}, - {file = "psutil-5.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:9b51917c1af3fa35a3f2dabd7ba96a2a4f19df3dec911da73875e1edaf22a40b"}, - {file = "psutil-5.9.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e9805fed4f2a81de98ae5fe38b75a74c6e6ad2df8a5c479594c7629a1fe35f56"}, - {file = "psutil-5.9.0-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c51f1af02334e4b516ec221ee26b8fdf105032418ca5a5ab9737e8c87dafe203"}, - {file = "psutil-5.9.0-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32acf55cb9a8cbfb29167cd005951df81b567099295291bcfd1027365b36591d"}, - {file = "psutil-5.9.0-cp36-cp36m-win32.whl", hash = "sha256:e5c783d0b1ad6ca8a5d3e7b680468c9c926b804be83a3a8e95141b05c39c9f64"}, - {file = "psutil-5.9.0-cp36-cp36m-win_amd64.whl", hash = "sha256:d62a2796e08dd024b8179bd441cb714e0f81226c352c802fca0fd3f89eeacd94"}, - {file = "psutil-5.9.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3d00a664e31921009a84367266b35ba0aac04a2a6cad09c550a89041034d19a0"}, - {file = "psutil-5.9.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7779be4025c540d1d65a2de3f30caeacc49ae7a2152108adeaf42c7534a115ce"}, - {file = "psutil-5.9.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:072664401ae6e7c1bfb878c65d7282d4b4391f1bc9a56d5e03b5a490403271b5"}, - {file = "psutil-5.9.0-cp37-cp37m-win32.whl", hash = "sha256:df2c8bd48fb83a8408c8390b143c6a6fa10cb1a674ca664954de193fdcab36a9"}, - {file = "psutil-5.9.0-cp37-cp37m-win_amd64.whl", hash = "sha256:1d7b433519b9a38192dfda962dd8f44446668c009833e1429a52424624f408b4"}, - {file = "psutil-5.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c3400cae15bdb449d518545cbd5b649117de54e3596ded84aacabfbb3297ead2"}, - {file = "psutil-5.9.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b2237f35c4bbae932ee98902a08050a27821f8f6dfa880a47195e5993af4702d"}, - {file = "psutil-5.9.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1070a9b287846a21a5d572d6dddd369517510b68710fca56b0e9e02fd24bed9a"}, - {file = "psutil-5.9.0-cp38-cp38-win32.whl", hash = "sha256:76cebf84aac1d6da5b63df11fe0d377b46b7b500d892284068bacccf12f20666"}, - {file = "psutil-5.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:3151a58f0fbd8942ba94f7c31c7e6b310d2989f4da74fcbf28b934374e9bf841"}, - {file = "psutil-5.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:539e429da49c5d27d5a58e3563886057f8fc3868a5547b4f1876d9c0f007bccf"}, - {file = "psutil-5.9.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58c7d923dc209225600aec73aa2c4ae8ea33b1ab31bc11ef8a5933b027476f07"}, - {file = "psutil-5.9.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3611e87eea393f779a35b192b46a164b1d01167c9d323dda9b1e527ea69d697d"}, - {file = "psutil-5.9.0-cp39-cp39-win32.whl", hash = "sha256:4e2fb92e3aeae3ec3b7b66c528981fd327fb93fd906a77215200404444ec1845"}, - {file = "psutil-5.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:7d190ee2eaef7831163f254dc58f6d2e2a22e27382b936aab51c835fc080c3d3"}, - {file = "psutil-5.9.0.tar.gz", hash = "sha256:869842dbd66bb80c3217158e629d6fceaecc3a3166d3d1faee515b05dd26ca25"}, -] -ptyprocess = [ - {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, - {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, -] -py = [ - {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, - {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, -] -pyasn1 = [ - {file = "pyasn1-0.4.8-py2.4.egg", hash = "sha256:fec3e9d8e36808a28efb59b489e4528c10ad0f480e57dcc32b4de5c9d8c9fdf3"}, - {file = "pyasn1-0.4.8-py2.5.egg", hash = "sha256:0458773cfe65b153891ac249bcf1b5f8f320b7c2ce462151f8fa74de8934becf"}, - {file = "pyasn1-0.4.8-py2.6.egg", hash = "sha256:5c9414dcfede6e441f7e8f81b43b34e834731003427e5b09e4e00e3172a10f00"}, - {file = "pyasn1-0.4.8-py2.7.egg", hash = "sha256:6e7545f1a61025a4e58bb336952c5061697da694db1cae97b116e9c46abcf7c8"}, - {file = "pyasn1-0.4.8-py2.py3-none-any.whl", hash = "sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d"}, - {file = "pyasn1-0.4.8-py3.1.egg", hash = "sha256:78fa6da68ed2727915c4767bb386ab32cdba863caa7dbe473eaae45f9959da86"}, - {file = "pyasn1-0.4.8-py3.2.egg", hash = "sha256:08c3c53b75eaa48d71cf8c710312316392ed40899cb34710d092e96745a358b7"}, - {file = "pyasn1-0.4.8-py3.3.egg", hash = "sha256:03840c999ba71680a131cfaee6fab142e1ed9bbd9c693e285cc6aca0d555e576"}, - {file = "pyasn1-0.4.8-py3.4.egg", hash = "sha256:7ab8a544af125fb704feadb008c99a88805126fb525280b2270bb25cc1d78a12"}, - {file = "pyasn1-0.4.8-py3.5.egg", hash = "sha256:e89bf84b5437b532b0803ba5c9a5e054d21fec423a89952a74f87fa2c9b7bce2"}, - {file = "pyasn1-0.4.8-py3.6.egg", hash = "sha256:014c0e9976956a08139dc0712ae195324a75e142284d5f87f1a87ee1b068a359"}, - {file = "pyasn1-0.4.8-py3.7.egg", hash = "sha256:99fcc3c8d804d1bc6d9a099921e39d827026409a58f2a720dcdb89374ea0c776"}, - {file = "pyasn1-0.4.8.tar.gz", hash = "sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba"}, -] -pyasn1-modules = [ - {file = "pyasn1-modules-0.2.8.tar.gz", hash = "sha256:905f84c712230b2c592c19470d3ca8d552de726050d1d1716282a1f6146be65e"}, - {file = "pyasn1_modules-0.2.8-py2.4.egg", hash = "sha256:0fe1b68d1e486a1ed5473f1302bd991c1611d319bba158e98b106ff86e1d7199"}, - {file = "pyasn1_modules-0.2.8-py2.5.egg", hash = "sha256:fe0644d9ab041506b62782e92b06b8c68cca799e1a9636ec398675459e031405"}, - {file = "pyasn1_modules-0.2.8-py2.6.egg", hash = "sha256:a99324196732f53093a84c4369c996713eb8c89d360a496b599fb1a9c47fc3eb"}, - {file = "pyasn1_modules-0.2.8-py2.7.egg", hash = "sha256:0845a5582f6a02bb3e1bde9ecfc4bfcae6ec3210dd270522fee602365430c3f8"}, - {file = "pyasn1_modules-0.2.8-py2.py3-none-any.whl", hash = "sha256:a50b808ffeb97cb3601dd25981f6b016cbb3d31fbf57a8b8a87428e6158d0c74"}, - {file = "pyasn1_modules-0.2.8-py3.1.egg", hash = "sha256:f39edd8c4ecaa4556e989147ebf219227e2cd2e8a43c7e7fcb1f1c18c5fd6a3d"}, - {file = "pyasn1_modules-0.2.8-py3.2.egg", hash = "sha256:b80486a6c77252ea3a3e9b1e360bc9cf28eaac41263d173c032581ad2f20fe45"}, - {file = "pyasn1_modules-0.2.8-py3.3.egg", hash = "sha256:65cebbaffc913f4fe9e4808735c95ea22d7a7775646ab690518c056784bc21b4"}, - {file = "pyasn1_modules-0.2.8-py3.4.egg", hash = "sha256:15b7c67fabc7fc240d87fb9aabf999cf82311a6d6fb2c70d00d3d0604878c811"}, - {file = "pyasn1_modules-0.2.8-py3.5.egg", hash = "sha256:426edb7a5e8879f1ec54a1864f16b882c2837bfd06eee62f2c982315ee2473ed"}, - {file = "pyasn1_modules-0.2.8-py3.6.egg", hash = "sha256:cbac4bc38d117f2a49aeedec4407d23e8866ea4ac27ff2cf7fb3e5b570df19e0"}, - {file = "pyasn1_modules-0.2.8-py3.7.egg", hash = "sha256:c29a5e5cc7a3f05926aff34e097e84f8589cd790ce0ed41b67aed6857b26aafd"}, -] -pycparser = [ - {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, - {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, -] -pydantic = [ - {file = "pydantic-1.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:cb23bcc093697cdea2708baae4f9ba0e972960a835af22560f6ae4e7e47d33f5"}, - {file = "pydantic-1.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1d5278bd9f0eee04a44c712982343103bba63507480bfd2fc2790fa70cd64cf4"}, - {file = "pydantic-1.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab624700dc145aa809e6f3ec93fb8e7d0f99d9023b713f6a953637429b437d37"}, - {file = "pydantic-1.9.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c8d7da6f1c1049eefb718d43d99ad73100c958a5367d30b9321b092771e96c25"}, - {file = "pydantic-1.9.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:3c3b035103bd4e2e4a28da9da7ef2fa47b00ee4a9cf4f1a735214c1bcd05e0f6"}, - {file = "pydantic-1.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3011b975c973819883842c5ab925a4e4298dffccf7782c55ec3580ed17dc464c"}, - {file = "pydantic-1.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:086254884d10d3ba16da0588604ffdc5aab3f7f09557b998373e885c690dd398"}, - {file = "pydantic-1.9.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:0fe476769acaa7fcddd17cadd172b156b53546ec3614a4d880e5d29ea5fbce65"}, - {file = "pydantic-1.9.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c8e9dcf1ac499679aceedac7e7ca6d8641f0193c591a2d090282aaf8e9445a46"}, - {file = "pydantic-1.9.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d1e4c28f30e767fd07f2ddc6f74f41f034d1dd6bc526cd59e63a82fe8bb9ef4c"}, - {file = "pydantic-1.9.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:c86229333cabaaa8c51cf971496f10318c4734cf7b641f08af0a6fbf17ca3054"}, - {file = "pydantic-1.9.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:c0727bda6e38144d464daec31dff936a82917f431d9c39c39c60a26567eae3ed"}, - {file = "pydantic-1.9.0-cp36-cp36m-win_amd64.whl", hash = "sha256:dee5ef83a76ac31ab0c78c10bd7d5437bfdb6358c95b91f1ba7ff7b76f9996a1"}, - {file = "pydantic-1.9.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d9c9bdb3af48e242838f9f6e6127de9be7063aad17b32215ccc36a09c5cf1070"}, - {file = "pydantic-1.9.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ee7e3209db1e468341ef41fe263eb655f67f5c5a76c924044314e139a1103a2"}, - {file = "pydantic-1.9.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0b6037175234850ffd094ca77bf60fb54b08b5b22bc85865331dd3bda7a02fa1"}, - {file = "pydantic-1.9.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b2571db88c636d862b35090ccf92bf24004393f85c8870a37f42d9f23d13e032"}, - {file = "pydantic-1.9.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8b5ac0f1c83d31b324e57a273da59197c83d1bb18171e512908fe5dc7278a1d6"}, - {file = "pydantic-1.9.0-cp37-cp37m-win_amd64.whl", hash = "sha256:bbbc94d0c94dd80b3340fc4f04fd4d701f4b038ebad72c39693c794fd3bc2d9d"}, - {file = "pydantic-1.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e0896200b6a40197405af18828da49f067c2fa1f821491bc8f5bde241ef3f7d7"}, - {file = "pydantic-1.9.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7bdfdadb5994b44bd5579cfa7c9b0e1b0e540c952d56f627eb227851cda9db77"}, - {file = "pydantic-1.9.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:574936363cd4b9eed8acdd6b80d0143162f2eb654d96cb3a8ee91d3e64bf4cf9"}, - {file = "pydantic-1.9.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c556695b699f648c58373b542534308922c46a1cda06ea47bc9ca45ef5b39ae6"}, - {file = "pydantic-1.9.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:f947352c3434e8b937e3aa8f96f47bdfe6d92779e44bb3f41e4c213ba6a32145"}, - {file = "pydantic-1.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5e48ef4a8b8c066c4a31409d91d7ca372a774d0212da2787c0d32f8045b1e034"}, - {file = "pydantic-1.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:96f240bce182ca7fe045c76bcebfa0b0534a1bf402ed05914a6f1dadff91877f"}, - {file = "pydantic-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:815ddebb2792efd4bba5488bc8fde09c29e8ca3227d27cf1c6990fc830fd292b"}, - {file = "pydantic-1.9.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6c5b77947b9e85a54848343928b597b4f74fc364b70926b3c4441ff52620640c"}, - {file = "pydantic-1.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c68c3bc88dbda2a6805e9a142ce84782d3930f8fdd9655430d8576315ad97ce"}, - {file = "pydantic-1.9.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5a79330f8571faf71bf93667d3ee054609816f10a259a109a0738dac983b23c3"}, - {file = "pydantic-1.9.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f5a64b64ddf4c99fe201ac2724daada8595ada0d102ab96d019c1555c2d6441d"}, - {file = "pydantic-1.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a733965f1a2b4090a5238d40d983dcd78f3ecea221c7af1497b845a9709c1721"}, - {file = "pydantic-1.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:2cc6a4cb8a118ffec2ca5fcb47afbacb4f16d0ab8b7350ddea5e8ef7bcc53a16"}, - {file = "pydantic-1.9.0-py3-none-any.whl", hash = "sha256:085ca1de245782e9b46cefcf99deecc67d418737a1fd3f6a4f511344b613a5b3"}, - {file = "pydantic-1.9.0.tar.gz", hash = "sha256:742645059757a56ecd886faf4ed2441b9c0cd406079c2b4bee51bcc3fbcd510a"}, -] -pydeprecate = [ - {file = "pyDeprecate-0.3.2-py3-none-any.whl", hash = "sha256:ed86b68ed837e6465245904a3de2f59bf9eef78ac7a2502ee280533d04802457"}, - {file = "pyDeprecate-0.3.2.tar.gz", hash = "sha256:d481116cc5d7f6c473e7c4be820efdd9b90a16b594b350276e9e66a6cb5bdd29"}, -] -pygments = [ - {file = "Pygments-2.12.0-py3-none-any.whl", hash = "sha256:dc9c10fb40944260f6ed4c688ece0cd2048414940f1cea51b8b226318411c519"}, - {file = "Pygments-2.12.0.tar.gz", hash = "sha256:5eb116118f9612ff1ee89ac96437bb6b49e8f04d8a13b514ba26f620208e26eb"}, -] -pylint = [ - {file = "pylint-2.13.7-py3-none-any.whl", hash = "sha256:13ddbbd8872c804574149e81197c28877eba75224ba6b76cd8652fc31df55c1c"}, - {file = "pylint-2.13.7.tar.gz", hash = "sha256:911d3a97c808f7554643bcc5416028cfdc42eae34ed129b150741888c688d5d5"}, -] -pymongo = [ - {file = "pymongo-3.12.3-cp27-cp27m-macosx_10_14_intel.whl", hash = "sha256:c164eda0be9048f83c24b9b2656900041e069ddf72de81c17d874d0c32f6079f"}, - {file = "pymongo-3.12.3-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:a055d29f1302892a9389a382bed10a3f77708bcf3e49bfb76f7712fa5f391cc6"}, - {file = "pymongo-3.12.3-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:8c7ad5cab282f53b9d78d51504330d1c88c83fbe187e472c07e6908a0293142e"}, - {file = "pymongo-3.12.3-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a766157b195a897c64945d4ff87b050bb0e763bb78f3964e996378621c703b00"}, - {file = "pymongo-3.12.3-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:c8d6bf6fcd42cde2f02efb8126812a010c297eacefcd090a609639d2aeda6185"}, - {file = "pymongo-3.12.3-cp27-cp27m-win32.whl", hash = "sha256:5fdffb0cfeb4dc8646a5381d32ec981ae8472f29c695bf09e8f7a8edb2db12ca"}, - {file = "pymongo-3.12.3-cp27-cp27m-win_amd64.whl", hash = "sha256:648fcfd8e019b122b7be0e26830a3a2224d57c3e934f19c1e53a77b8380e6675"}, - {file = "pymongo-3.12.3-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:3f0ac6e0203bd88863649e6ed9c7cfe53afab304bc8225f2597c4c0a74e4d1f0"}, - {file = "pymongo-3.12.3-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:71c0db2c313ea8a80825fb61b7826b8015874aec29ee6364ade5cb774fe4511b"}, - {file = "pymongo-3.12.3-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5b779e87300635b8075e8d5cfd4fdf7f46078cd7610c381d956bca5556bb8f97"}, - {file = "pymongo-3.12.3-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:351a2efe1c9566c348ad0076f4bf541f4905a0ebe2d271f112f60852575f3c16"}, - {file = "pymongo-3.12.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0a02313e71b7c370c43056f6b16c45effbb2d29a44d24403a3d5ba6ed322fa3f"}, - {file = "pymongo-3.12.3-cp310-cp310-manylinux1_i686.whl", hash = "sha256:d3082e5c4d7b388792124f5e805b469109e58f1ab1eb1fbd8b998e8ab766ffb7"}, - {file = "pymongo-3.12.3-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:514e78d20d8382d5b97f32b20c83d1d0452c302c9a135f0a9022236eb9940fda"}, - {file = "pymongo-3.12.3-cp310-cp310-manylinux2014_i686.whl", hash = "sha256:b1b5be40ebf52c3c67ee547e2c4435ed5bc6352f38d23e394520b686641a6be4"}, - {file = "pymongo-3.12.3-cp310-cp310-manylinux2014_ppc64le.whl", hash = "sha256:58db209da08a502ce6948841d522dcec80921d714024354153d00b054571993c"}, - {file = "pymongo-3.12.3-cp310-cp310-manylinux2014_s390x.whl", hash = "sha256:5296e5e69243ffd76bd919854c4da6630ae52e46175c804bc4c0e050d937b705"}, - {file = "pymongo-3.12.3-cp310-cp310-manylinux2014_x86_64.whl", hash = "sha256:51d1d061df3995c2332ae78f036492cc188cb3da8ef122caeab3631a67bb477e"}, - {file = "pymongo-3.12.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:463b974b7f49d65a16ca1435bc1c25a681bb7d630509dd23b2e819ed36da0b7f"}, - {file = "pymongo-3.12.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e099b79ccf7c40f18b149a64d3d10639980035f9ceb223169dd806ff1bb0d9cc"}, - {file = "pymongo-3.12.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:27e5ea64332385385b75414888ce9d1a9806be8616d7cef4ef409f4f256c6d06"}, - {file = "pymongo-3.12.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed7d11330e443aeecab23866055e08a5a536c95d2c25333aeb441af2dbac38d2"}, - {file = "pymongo-3.12.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:93111fd4e08fa889c126aa8baf5c009a941880a539c87672e04583286517450a"}, - {file = "pymongo-3.12.3-cp310-cp310-win32.whl", hash = "sha256:2301051701b27aff2cbdf83fae22b7ca883c9563dfd088033267291b46196643"}, - {file = "pymongo-3.12.3-cp310-cp310-win_amd64.whl", hash = "sha256:c7e8221278e5f9e2b6d3893cfc3a3e46c017161a57bb0e6f244826e4cee97916"}, - {file = "pymongo-3.12.3-cp34-cp34m-macosx_10_6_intel.whl", hash = "sha256:7b4a9fcd95e978cd3c96cdc2096aa54705266551422cf0883c12a4044def31c6"}, - {file = "pymongo-3.12.3-cp34-cp34m-manylinux1_i686.whl", hash = "sha256:06b64cdf5121f86b78a84e61b8f899b6988732a8d304b503ea1f94a676221c06"}, - {file = "pymongo-3.12.3-cp34-cp34m-manylinux1_x86_64.whl", hash = "sha256:c8f7dd025cb0bf19e2f60a64dfc24b513c8330e0cfe4a34ccf941eafd6194d9e"}, - {file = "pymongo-3.12.3-cp34-cp34m-win32.whl", hash = "sha256:ab23b0545ec71ea346bf50a5d376d674f56205b729980eaa62cdb7871805014b"}, - {file = "pymongo-3.12.3-cp34-cp34m-win_amd64.whl", hash = "sha256:1b5cb75d2642ff7db823f509641f143f752c0d1ab03166cafea1e42e50469834"}, - {file = "pymongo-3.12.3-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:fc2048d13ff427605fea328cbe5369dce549b8c7657b0e22051a5b8831170af6"}, - {file = "pymongo-3.12.3-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:c5f83bb59d0ff60c6fdb1f8a7b0288fbc4640b1f0fd56f5ae2387749c35d34e3"}, - {file = "pymongo-3.12.3-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:6632b1c63d58cddc72f43ab9f17267354ddce563dd5e11eadabd222dcc808808"}, - {file = "pymongo-3.12.3-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3fedad05147b40ff8a93fcd016c421e6c159f149a2a481cfa0b94bfa3e473bab"}, - {file = "pymongo-3.12.3-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:208a61db8b8b647fb5b1ff3b52b4ed6dbced01eac3b61009958adb203596ee99"}, - {file = "pymongo-3.12.3-cp35-cp35m-win32.whl", hash = "sha256:3100a2352bdded6232b385ceda0c0a4624598c517d52c2d8cf014b7abbebd84d"}, - {file = "pymongo-3.12.3-cp35-cp35m-win_amd64.whl", hash = "sha256:3492ae1f97209c66af70e863e6420e6301cecb0a51a5efa701058aa73a8ca29e"}, - {file = "pymongo-3.12.3-cp36-cp36m-macosx_10_6_intel.whl", hash = "sha256:87e18f29bac4a6be76a30e74de9c9005475e27100acf0830679420ce1fd9a6fd"}, - {file = "pymongo-3.12.3-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:b3e08aef4ea05afbc0a70cd23c13684e7f5e074f02450964ec5cfa1c759d33d2"}, - {file = "pymongo-3.12.3-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:e66b3c9f8b89d4fd58a59c04fdbf10602a17c914fbaaa5e6ea593f1d54b06362"}, - {file = "pymongo-3.12.3-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:5d67dbc8da2dac1644d71c1839d12d12aa333e266a9964d5b1a49feed036bc94"}, - {file = "pymongo-3.12.3-cp36-cp36m-manylinux2014_i686.whl", hash = "sha256:a351986d6c9006308f163c359ced40f80b6cffb42069f3e569b979829951038d"}, - {file = "pymongo-3.12.3-cp36-cp36m-manylinux2014_ppc64le.whl", hash = "sha256:5296669bff390135528001b4e48d33a7acaffcd361d98659628ece7f282f11aa"}, - {file = "pymongo-3.12.3-cp36-cp36m-manylinux2014_s390x.whl", hash = "sha256:9d5b66d457d2c5739c184a777455c8fde7ab3600a56d8bbebecf64f7c55169e1"}, - {file = "pymongo-3.12.3-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:1c771f1a8b3cd2d697baaf57e9cfa4ae42371cacfbea42ea01d9577c06d92f96"}, - {file = "pymongo-3.12.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81a3ebc33b1367f301d1c8eda57eec4868e951504986d5d3fe437479dcdac5b2"}, - {file = "pymongo-3.12.3-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5cf113a46d81cff0559d57aa66ffa473d57d1a9496f97426318b6b5b14fdec1c"}, - {file = "pymongo-3.12.3-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:64b9122be1c404ce4eb367ad609b590394587a676d84bfed8e03c3ce76d70560"}, - {file = "pymongo-3.12.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c6c71e198b36f0f0dfe354f06d3655ecfa30d69493a1da125a9a54668aad652"}, - {file = "pymongo-3.12.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:33ab8c031f788609924e329003088831045f683931932a52a361d4a955b7dce2"}, - {file = "pymongo-3.12.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e2b4c95c47fb81b19ea77dc1c50d23af3eba87c9628fcc2e03d44124a3d336ea"}, - {file = "pymongo-3.12.3-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:4e0a3ea7fd01cf0a36509f320226bd8491e0f448f00b8cb89f601c109f6874e1"}, - {file = "pymongo-3.12.3-cp36-cp36m-win32.whl", hash = "sha256:dfec57f15f53d677b8e4535695ff3f37df7f8fe431f2efa8c3c8c4025b53d1eb"}, - {file = "pymongo-3.12.3-cp36-cp36m-win_amd64.whl", hash = "sha256:c22591cff80188dd8543be0b559d0c807f7288bd353dc0bcfe539b4588b3a5cd"}, - {file = "pymongo-3.12.3-cp37-cp37m-macosx_10_6_intel.whl", hash = "sha256:7738147cd9dbd6d18d5593b3491b4620e13b61de975fd737283e4ad6c255c273"}, - {file = "pymongo-3.12.3-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:be1f10145f7ea76e3e836fdc5c8429c605675bdcddb0bca9725ee6e26874c00c"}, - {file = "pymongo-3.12.3-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:295a5beaecb7bf054c1c6a28749ed72b19f4d4b61edcd8a0815d892424baf780"}, - {file = "pymongo-3.12.3-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:320f8734553c50cffe8a8e1ae36dfc7d7be1941c047489db20a814d2a170d7b5"}, - {file = "pymongo-3.12.3-cp37-cp37m-manylinux2014_i686.whl", hash = "sha256:5d20072d81cbfdd8e15e6a0c91fc7e3a4948c71e0adebfc67d3b4bcbe8602711"}, - {file = "pymongo-3.12.3-cp37-cp37m-manylinux2014_ppc64le.whl", hash = "sha256:2c46a0afef69d61938a6fe32c3afd75b91dec3ab3056085dc72abbeedcc94166"}, - {file = "pymongo-3.12.3-cp37-cp37m-manylinux2014_s390x.whl", hash = "sha256:5f530f35e1a57d4360eddcbed6945aecdaee2a491cd3f17025e7b5f2eea88ee7"}, - {file = "pymongo-3.12.3-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:6526933760ee1e6090db808f1690a111ec409699c1990efc96f134d26925c37f"}, - {file = "pymongo-3.12.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:95d15cf81cd2fb926f2a6151a9f94c7aacc102b415e72bc0e040e29332b6731c"}, - {file = "pymongo-3.12.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0d52a70350ec3dfc39b513df12b03b7f4c8f8ec6873bbf958299999db7b05eb1"}, - {file = "pymongo-3.12.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9252c991e8176b5a2fa574c5ab9a841679e315f6e576eb7cf0bd958f3e39b0ad"}, - {file = "pymongo-3.12.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:145d78c345a38011497e55aff22c0f8edd40ee676a6810f7e69563d68a125e83"}, - {file = "pymongo-3.12.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a8e0a086dbbee406cc6f603931dfe54d1cb2fba585758e06a2de01037784b737"}, - {file = "pymongo-3.12.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f6d5443104f89a840250087863c91484a72f254574848e951d1bdd7d8b2ce7c9"}, - {file = "pymongo-3.12.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6f93dbfa5a461107bc3f5026e0d5180499e13379e9404f07a9f79eb5e9e1303d"}, - {file = "pymongo-3.12.3-cp37-cp37m-win32.whl", hash = "sha256:c9d212e2af72d5c8d082775a43eb726520e95bf1c84826440f74225843975136"}, - {file = "pymongo-3.12.3-cp37-cp37m-win_amd64.whl", hash = "sha256:320a1fe403dd83a35709fcf01083d14bc1462e9789b711201349a9158db3a87e"}, - {file = "pymongo-3.12.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a1ba93be779a9b8e5e44f5c133dc1db4313661cead8a2fd27661e6cb8d942ee9"}, - {file = "pymongo-3.12.3-cp38-cp38-manylinux1_i686.whl", hash = "sha256:4294f2c1cd069b793e31c2e6d7ac44b121cf7cedccd03ebcc30f3fc3417b314a"}, - {file = "pymongo-3.12.3-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:845b178bd127bb074835d2eac635b980c58ec5e700ebadc8355062df708d5a71"}, - {file = "pymongo-3.12.3-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:176fdca18391e1206c32fb1d8265628a84d28333c20ad19468d91e3e98312cd1"}, - {file = "pymongo-3.12.3-cp38-cp38-manylinux2014_i686.whl", hash = "sha256:28bfd5244d32faf3e49b5a8d1fab0631e922c26e8add089312e4be19fb05af50"}, - {file = "pymongo-3.12.3-cp38-cp38-manylinux2014_ppc64le.whl", hash = "sha256:f38b35ecd2628bf0267761ed659e48af7e620a7fcccfccf5774e7308fb18325c"}, - {file = "pymongo-3.12.3-cp38-cp38-manylinux2014_s390x.whl", hash = "sha256:cebb3d8bcac4a6b48be65ebbc5c9881ed4a738e27bb96c86d9d7580a1fb09e05"}, - {file = "pymongo-3.12.3-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:80710d7591d579442c67a3bc7ae9dcba9ff95ea8414ac98001198d894fc4ff46"}, - {file = "pymongo-3.12.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89d7baa847383b9814de640c6f1a8553d125ec65e2761ad146ea2e75a7ad197c"}, - {file = "pymongo-3.12.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:602284e652bb56ca8760f8e88a5280636c5b63d7946fca1c2fe0f83c37dffc64"}, - {file = "pymongo-3.12.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bfc2d763d05ec7211313a06e8571236017d3e61d5fef97fcf34ec4b36c0b6556"}, - {file = "pymongo-3.12.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a6e4dccae8ef5dd76052647d78f02d5d0ffaff1856277d951666c54aeba3ad2"}, - {file = "pymongo-3.12.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e1fc4d3985868860b6585376e511bb32403c5ffb58b0ed913496c27fd791deea"}, - {file = "pymongo-3.12.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e4e5d163e6644c2bc84dd9f67bfa89288c23af26983d08fefcc2cbc22f6e57e6"}, - {file = "pymongo-3.12.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:8d92c6bb9174d47c2257528f64645a00bbc6324a9ff45a626192797aff01dc14"}, - {file = "pymongo-3.12.3-cp38-cp38-win32.whl", hash = "sha256:b0db9a4691074c347f5d7ee830ab3529bc5ad860939de21c1f9c403daf1eda9a"}, - {file = "pymongo-3.12.3-cp38-cp38-win_amd64.whl", hash = "sha256:d81047341ab56061aa4b6823c54d4632579c3b16e675089e8f520e9b918a133b"}, - {file = "pymongo-3.12.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:07398d8a03545b98282f459f2603a6bb271f4448d484ed7f411121a519a7ea48"}, - {file = "pymongo-3.12.3-cp39-cp39-manylinux1_i686.whl", hash = "sha256:b7df0d99e189b7027d417d4bfd9b8c53c9c7ed5a0a1495d26a6f547d820eca88"}, - {file = "pymongo-3.12.3-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:a283425e6a474facd73072d8968812d1d9058490a5781e022ccf8895500b83ce"}, - {file = "pymongo-3.12.3-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:2577b8161eeae4dd376d13100b2137d883c10bb457dd08935f60c9f9d4b5c5f6"}, - {file = "pymongo-3.12.3-cp39-cp39-manylinux2014_i686.whl", hash = "sha256:517b09b1dd842390a965a896d1327c55dfe78199c9f5840595d40facbcd81854"}, - {file = "pymongo-3.12.3-cp39-cp39-manylinux2014_ppc64le.whl", hash = "sha256:2567885ff0c8c7c0887ba6cefe4ae4af96364a66a7069f924ce0cd12eb971d04"}, - {file = "pymongo-3.12.3-cp39-cp39-manylinux2014_s390x.whl", hash = "sha256:71c5c200fd37a5322706080b09c3ec8907cf01c377a7187f354fc9e9e13abc73"}, - {file = "pymongo-3.12.3-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:14dee106a10b77224bba5efeeb6aee025aabe88eb87a2b850c46d3ee55bdab4a"}, - {file = "pymongo-3.12.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f340a2a908644ea6cccd399be0fb308c66e05d2800107345f9f0f0d59e1731c4"}, - {file = "pymongo-3.12.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1b4c535f524c9d8c86c3afd71d199025daa070859a2bdaf94a298120b0de16db"}, - {file = "pymongo-3.12.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8455176fd1b86de97d859fed4ae0ef867bf998581f584c7a1a591246dfec330f"}, - {file = "pymongo-3.12.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf254a1a95e95fdf4eaa25faa1ea450a6533ed7a997f9f8e49ab971b61ea514d"}, - {file = "pymongo-3.12.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a8a3540e21213cb8ce232e68a7d0ee49cdd35194856c50b8bd87eeb572fadd42"}, - {file = "pymongo-3.12.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0e7a5d0b9077e8c3e57727f797ee8adf12e1d5e7534642230d98980d160d1320"}, - {file = "pymongo-3.12.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:0be605bfb8461384a4cb81e80f51eb5ca1b89851f2d0e69a75458c788a7263a4"}, - {file = "pymongo-3.12.3-cp39-cp39-win32.whl", hash = "sha256:2157d68f85c28688e8b723bbe70c8013e0aba5570e08c48b3562f74d33fc05c4"}, - {file = "pymongo-3.12.3-cp39-cp39-win_amd64.whl", hash = "sha256:dfa217bf8cf3ff6b30c8e6a89014e0c0e7b50941af787b970060ae5ba04a4ce5"}, - {file = "pymongo-3.12.3-py2.7-macosx-10.14-intel.egg", hash = "sha256:d81299f63dc33cc172c26faf59cc54dd795fc6dd5821a7676cca112a5ee8bbd6"}, - {file = "pymongo-3.12.3.tar.gz", hash = "sha256:0a89cadc0062a5e53664dde043f6c097172b8c1c5f0094490095282ff9995a5f"}, -] -pyparsing = [ - {file = "pyparsing-3.0.8-py3-none-any.whl", hash = "sha256:ef7b523f6356f763771559412c0d7134753f037822dad1b16945b7b846f7ad06"}, - {file = "pyparsing-3.0.8.tar.gz", hash = "sha256:7bf433498c016c4314268d95df76c81b842a4cb2b276fa3312cfb1e1d85f6954"}, -] -pyperclip = [ - {file = "pyperclip-1.8.2.tar.gz", hash = "sha256:105254a8b04934f0bc84e9c24eb360a591aaf6535c9def5f29d92af107a9bf57"}, -] -pyreadline3 = [ - {file = "pyreadline3-3.4.1-py3-none-any.whl", hash = "sha256:b0efb6516fd4fb07b45949053826a62fa4cb353db5be2bbb4a7aa1fdd1e345fb"}, - {file = "pyreadline3-3.4.1.tar.gz", hash = "sha256:6f3d1f7b8a31ba32b73917cefc1f28cc660562f39aea8646d30bd6eff21f7bae"}, -] -pyrsistent = [ - {file = "pyrsistent-0.18.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:df46c854f490f81210870e509818b729db4488e1f30f2a1ce1698b2295a878d1"}, - {file = "pyrsistent-0.18.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d45866ececf4a5fff8742c25722da6d4c9e180daa7b405dc0a2a2790d668c26"}, - {file = "pyrsistent-0.18.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4ed6784ceac462a7d6fcb7e9b663e93b9a6fb373b7f43594f9ff68875788e01e"}, - {file = "pyrsistent-0.18.1-cp310-cp310-win32.whl", hash = "sha256:e4f3149fd5eb9b285d6bfb54d2e5173f6a116fe19172686797c056672689daf6"}, - {file = "pyrsistent-0.18.1-cp310-cp310-win_amd64.whl", hash = "sha256:636ce2dc235046ccd3d8c56a7ad54e99d5c1cd0ef07d9ae847306c91d11b5fec"}, - {file = "pyrsistent-0.18.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e92a52c166426efbe0d1ec1332ee9119b6d32fc1f0bbfd55d5c1088070e7fc1b"}, - {file = "pyrsistent-0.18.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7a096646eab884bf8bed965bad63ea327e0d0c38989fc83c5ea7b8a87037bfc"}, - {file = "pyrsistent-0.18.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cdfd2c361b8a8e5d9499b9082b501c452ade8bbf42aef97ea04854f4a3f43b22"}, - {file = "pyrsistent-0.18.1-cp37-cp37m-win32.whl", hash = "sha256:7ec335fc998faa4febe75cc5268a9eac0478b3f681602c1f27befaf2a1abe1d8"}, - {file = "pyrsistent-0.18.1-cp37-cp37m-win_amd64.whl", hash = "sha256:6455fc599df93d1f60e1c5c4fe471499f08d190d57eca040c0ea182301321286"}, - {file = "pyrsistent-0.18.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:fd8da6d0124efa2f67d86fa70c851022f87c98e205f0594e1fae044e7119a5a6"}, - {file = "pyrsistent-0.18.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7bfe2388663fd18bd8ce7db2c91c7400bf3e1a9e8bd7d63bf7e77d39051b85ec"}, - {file = "pyrsistent-0.18.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0e3e1fcc45199df76053026a51cc59ab2ea3fc7c094c6627e93b7b44cdae2c8c"}, - {file = "pyrsistent-0.18.1-cp38-cp38-win32.whl", hash = "sha256:b568f35ad53a7b07ed9b1b2bae09eb15cdd671a5ba5d2c66caee40dbf91c68ca"}, - {file = "pyrsistent-0.18.1-cp38-cp38-win_amd64.whl", hash = "sha256:d1b96547410f76078eaf66d282ddca2e4baae8964364abb4f4dcdde855cd123a"}, - {file = "pyrsistent-0.18.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f87cc2863ef33c709e237d4b5f4502a62a00fab450c9e020892e8e2ede5847f5"}, - {file = "pyrsistent-0.18.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bc66318fb7ee012071b2792024564973ecc80e9522842eb4e17743604b5e045"}, - {file = "pyrsistent-0.18.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:914474c9f1d93080338ace89cb2acee74f4f666fb0424896fcfb8d86058bf17c"}, - {file = "pyrsistent-0.18.1-cp39-cp39-win32.whl", hash = "sha256:1b34eedd6812bf4d33814fca1b66005805d3640ce53140ab8bbb1e2651b0d9bc"}, - {file = "pyrsistent-0.18.1-cp39-cp39-win_amd64.whl", hash = "sha256:e24a828f57e0c337c8d8bb9f6b12f09dfdf0273da25fda9e314f0b684b415a07"}, - {file = "pyrsistent-0.18.1.tar.gz", hash = "sha256:d4d61f8b993a7255ba714df3aca52700f8125289f84f704cf80916517c46eb96"}, -] -pytest = [ - {file = "pytest-6.2.5-py3-none-any.whl", hash = "sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"}, - {file = "pytest-6.2.5.tar.gz", hash = "sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"}, -] -pytest-black = [ - {file = "pytest-black-0.3.12.tar.gz", hash = "sha256:1d339b004f764d6cd0f06e690f6dd748df3d62e6fe1a692d6a5500ac2c5b75a5"}, -] -pytest-cov = [ - {file = "pytest-cov-2.12.1.tar.gz", hash = "sha256:261ceeb8c227b726249b376b8526b600f38667ee314f910353fa318caa01f4d7"}, - {file = "pytest_cov-2.12.1-py2.py3-none-any.whl", hash = "sha256:261bb9e47e65bd099c89c3edf92972865210c36813f80ede5277dceb77a4a62a"}, -] -pytest-datadir = [ - {file = "pytest-datadir-1.3.1.tar.gz", hash = "sha256:d3af1e738df87515ee509d6135780f25a15959766d9c2b2dbe02bf4fb979cb18"}, - {file = "pytest_datadir-1.3.1-py2.py3-none-any.whl", hash = "sha256:1847ed0efe0bc54cac40ab3fba6d651c2f03d18dd01f2a582979604d32e7621e"}, -] -pytest-mccabe = [ - {file = "pytest-mccabe-2.0.tar.gz", hash = "sha256:050a1f1c145202ea87f0c0ad7b529f088098040fe2eb8e5d797d36be86e0fa20"}, - {file = "pytest_mccabe-2.0-py2.py3-none-any.whl", hash = "sha256:9b1708efd52b8724dedcfe48ec668ab5bda2f7ffb1c85a2edcd4f36541307d04"}, -] -pytest-mock = [ - {file = "pytest-mock-3.7.0.tar.gz", hash = "sha256:5112bd92cc9f186ee96e1a92efc84969ea494939c3aead39c50f421c4cc69534"}, - {file = "pytest_mock-3.7.0-py3-none-any.whl", hash = "sha256:6cff27cec936bf81dc5ee87f07132b807bcda51106b5ec4b90a04331cba76231"}, -] -python-dateutil = [ - {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, - {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, -] -pytorch-lightning = [ - {file = "pytorch-lightning-1.6.2.tar.gz", hash = "sha256:ccb5e8593837afc9ecf914ee66bf171ee0e08a8d6673531a617b0a61863a9611"}, - {file = "pytorch_lightning-1.6.2-py3-none-any.whl", hash = "sha256:c590bdc6cc630689bd40abf5543ad7456f418d059f48b4a726c3867edae805ab"}, -] -pytorch-tree-lstm = [ - {file = "pytorch-tree-lstm-0.1.3.tar.gz", hash = "sha256:b8026d31f51fe05baed9595258b2908e3fd8c33f0568db657c5db5006c2b6b2c"}, - {file = "pytorch_tree_lstm-0.1.3-py3-none-any.whl", hash = "sha256:4a4ee5eb5d21d59f47776e4ce51fd71c5ed1c8f20959d6024d8f0e93f1906a9f"}, -] -pytz = [ - {file = "pytz-2022.1-py2.py3-none-any.whl", hash = "sha256:e68985985296d9a66a881eb3193b0906246245294a881e7c8afe623866ac6a5c"}, - {file = "pytz-2022.1.tar.gz", hash = "sha256:1e760e2fe6a8163bc0b3d9a19c4f84342afa0a2affebfaa84b01b978a02ecaa7"}, -] -pywin32 = [ - {file = "pywin32-303-cp310-cp310-win32.whl", hash = "sha256:6fed4af057039f309263fd3285d7b8042d41507343cd5fa781d98fcc5b90e8bb"}, - {file = "pywin32-303-cp310-cp310-win_amd64.whl", hash = "sha256:51cb52c5ec6709f96c3f26e7795b0bf169ee0d8395b2c1d7eb2c029a5008ed51"}, - {file = "pywin32-303-cp311-cp311-win32.whl", hash = "sha256:d9b5d87ca944eb3aa4cd45516203ead4b37ab06b8b777c54aedc35975dec0dee"}, - {file = "pywin32-303-cp311-cp311-win_amd64.whl", hash = "sha256:fcf44032f5b14fcda86028cdf49b6ebdaea091230eb0a757282aa656e4732439"}, - {file = "pywin32-303-cp36-cp36m-win32.whl", hash = "sha256:aad484d52ec58008ca36bd4ad14a71d7dd0a99db1a4ca71072213f63bf49c7d9"}, - {file = "pywin32-303-cp36-cp36m-win_amd64.whl", hash = "sha256:2a09632916b6bb231ba49983fe989f2f625cea237219530e81a69239cd0c4559"}, - {file = "pywin32-303-cp37-cp37m-win32.whl", hash = "sha256:b1675d82bcf6dbc96363fca747bac8bff6f6e4a447a4287ac652aa4b9adc796e"}, - {file = "pywin32-303-cp37-cp37m-win_amd64.whl", hash = "sha256:c268040769b48a13367221fced6d4232ed52f044ffafeda247bd9d2c6bdc29ca"}, - {file = "pywin32-303-cp38-cp38-win32.whl", hash = "sha256:5f9ec054f5a46a0f4dfd72af2ce1372f3d5a6e4052af20b858aa7df2df7d355b"}, - {file = "pywin32-303-cp38-cp38-win_amd64.whl", hash = "sha256:793bf74fce164bcffd9d57bb13c2c15d56e43c9542a7b9687b4fccf8f8a41aba"}, - {file = "pywin32-303-cp39-cp39-win32.whl", hash = "sha256:7d3271c98434617a11921c5ccf74615794d97b079e22ed7773790822735cc352"}, - {file = "pywin32-303-cp39-cp39-win_amd64.whl", hash = "sha256:79cbb862c11b9af19bcb682891c1b91942ec2ff7de8151e2aea2e175899cda34"}, -] -pywinpty = [ - {file = "pywinpty-2.0.5-cp310-none-win_amd64.whl", hash = "sha256:f86c76e2881c37e69678cbbf178109f8da1fa8584db24d58e1b9369b0276cfcb"}, - {file = "pywinpty-2.0.5-cp37-none-win_amd64.whl", hash = "sha256:ff9b52f182650cfdf3db1b264a6fe0963eb9d996a7a1fa843ac406c1e32111f8"}, - {file = "pywinpty-2.0.5-cp38-none-win_amd64.whl", hash = "sha256:651ee1467bd7eb6f64d44dbc954b7ab7d15ab6d8adacc4e13299692c67c5d5d2"}, - {file = "pywinpty-2.0.5-cp39-none-win_amd64.whl", hash = "sha256:e59a508ae78374febada3e53b5bbc90b5ad07ae68cbfd72a2e965f9793ae04f3"}, - {file = "pywinpty-2.0.5.tar.gz", hash = "sha256:e125d3f1804d8804952b13e33604ad2ca8b9b2cac92b27b521c005d1604794f8"}, -] -pyyaml = [ - {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, - {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"}, - {file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"}, - {file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"}, - {file = "PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4"}, - {file = "PyYAML-6.0-cp36-cp36m-win32.whl", hash = "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293"}, - {file = "PyYAML-6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57"}, - {file = "PyYAML-6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9"}, - {file = "PyYAML-6.0-cp37-cp37m-win32.whl", hash = "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737"}, - {file = "PyYAML-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d"}, - {file = "PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"}, - {file = "PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"}, - {file = "PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"}, - {file = "PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"}, - {file = "PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"}, - {file = "PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"}, - {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"}, - {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, -] -pyzmq = [ - {file = "pyzmq-22.3.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:6b217b8f9dfb6628f74b94bdaf9f7408708cb02167d644edca33f38746ca12dd"}, - {file = "pyzmq-22.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2841997a0d85b998cbafecb4183caf51fd19c4357075dfd33eb7efea57e4c149"}, - {file = "pyzmq-22.3.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f89468059ebc519a7acde1ee50b779019535db8dcf9b8c162ef669257fef7a93"}, - {file = "pyzmq-22.3.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea12133df25e3a6918718fbb9a510c6ee5d3fdd5a346320421aac3882f4feeea"}, - {file = "pyzmq-22.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76c532fd68b93998aab92356be280deec5de8f8fe59cd28763d2cc8a58747b7f"}, - {file = "pyzmq-22.3.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:f907c7359ce8bf7f7e63c82f75ad0223384105f5126f313400b7e8004d9b33c3"}, - {file = "pyzmq-22.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:902319cfe23366595d3fa769b5b751e6ee6750a0a64c5d9f757d624b2ac3519e"}, - {file = "pyzmq-22.3.0-cp310-cp310-win32.whl", hash = "sha256:67db33bea0a29d03e6eeec55a8190e033318cee3cbc732ba8fd939617cbf762d"}, - {file = "pyzmq-22.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:7661fc1d5cb73481cf710a1418a4e1e301ed7d5d924f91c67ba84b2a1b89defd"}, - {file = "pyzmq-22.3.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:79244b9e97948eaf38695f4b8e6fc63b14b78cc37f403c6642ba555517ac1268"}, - {file = "pyzmq-22.3.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ab888624ed68930442a3f3b0b921ad7439c51ba122dbc8c386e6487a658e4a4e"}, - {file = "pyzmq-22.3.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:18cd854b423fce44951c3a4d3e686bac8f1243d954f579e120a1714096637cc0"}, - {file = "pyzmq-22.3.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:de8df0684398bd74ad160afdc2a118ca28384ac6f5e234eb0508858d8d2d9364"}, - {file = "pyzmq-22.3.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:62bcade20813796c426409a3e7423862d50ff0639f5a2a95be4b85b09a618666"}, - {file = "pyzmq-22.3.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:ea5a79e808baef98c48c884effce05c31a0698c1057de8fc1c688891043c1ce1"}, - {file = "pyzmq-22.3.0-cp36-cp36m-win32.whl", hash = "sha256:3c1895c95be92600233e476fe283f042e71cf8f0b938aabf21b7aafa62a8dac9"}, - {file = "pyzmq-22.3.0-cp36-cp36m-win_amd64.whl", hash = "sha256:851977788b9caa8ed011f5f643d3ee8653af02c5fc723fa350db5125abf2be7b"}, - {file = "pyzmq-22.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b4ebed0977f92320f6686c96e9e8dd29eed199eb8d066936bac991afc37cbb70"}, - {file = "pyzmq-22.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42abddebe2c6a35180ca549fadc7228d23c1e1f76167c5ebc8a936b5804ea2df"}, - {file = "pyzmq-22.3.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c1e41b32d6f7f9c26bc731a8b529ff592f31fc8b6ef2be9fa74abd05c8a342d7"}, - {file = "pyzmq-22.3.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:be4e0f229cf3a71f9ecd633566bd6f80d9fa6afaaff5489492be63fe459ef98c"}, - {file = "pyzmq-22.3.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:08c4e315a76ef26eb833511ebf3fa87d182152adf43dedee8d79f998a2162a0b"}, - {file = "pyzmq-22.3.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:badb868fff14cfd0e200eaa845887b1011146a7d26d579aaa7f966c203736b92"}, - {file = "pyzmq-22.3.0-cp37-cp37m-win32.whl", hash = "sha256:7c58f598d9fcc52772b89a92d72bf8829c12d09746a6d2c724c5b30076c1f11d"}, - {file = "pyzmq-22.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:2b97502c16a5ec611cd52410bdfaab264997c627a46b0f98d3f666227fd1ea2d"}, - {file = "pyzmq-22.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d728b08448e5ac3e4d886b165385a262883c34b84a7fe1166277fe675e1c197a"}, - {file = "pyzmq-22.3.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:480b9931bfb08bf8b094edd4836271d4d6b44150da051547d8c7113bf947a8b0"}, - {file = "pyzmq-22.3.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7dc09198e4073e6015d9a8ea093fc348d4e59de49382476940c3dd9ae156fba8"}, - {file = "pyzmq-22.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ca6cd58f62a2751728016d40082008d3b3412a7f28ddfb4a2f0d3c130f69e74"}, - {file = "pyzmq-22.3.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:468bd59a588e276961a918a3060948ae68f6ff5a7fa10bb2f9160c18fe341067"}, - {file = "pyzmq-22.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c88fa7410e9fc471e0858638f403739ee869924dd8e4ae26748496466e27ac59"}, - {file = "pyzmq-22.3.0-cp38-cp38-win32.whl", hash = "sha256:c0f84360dcca3481e8674393bdf931f9f10470988f87311b19d23cda869bb6b7"}, - {file = "pyzmq-22.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:f762442bab706fd874064ca218b33a1d8e40d4938e96c24dafd9b12e28017f45"}, - {file = "pyzmq-22.3.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:954e73c9cd4d6ae319f1c936ad159072b6d356a92dcbbabfd6e6204b9a79d356"}, - {file = "pyzmq-22.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f43b4a2e6218371dd4f41e547bd919ceeb6ebf4abf31a7a0669cd11cd91ea973"}, - {file = "pyzmq-22.3.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:acebba1a23fb9d72b42471c3771b6f2f18dcd46df77482612054bd45c07dfa36"}, - {file = "pyzmq-22.3.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cf98fd7a6c8aaa08dbc699ffae33fd71175696d78028281bc7b832b26f00ca57"}, - {file = "pyzmq-22.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d072f7dfbdb184f0786d63bda26e8a0882041b1e393fbe98940395f7fab4c5e2"}, - {file = "pyzmq-22.3.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:53f4fd13976789ffafedd4d46f954c7bb01146121812b72b4ddca286034df966"}, - {file = "pyzmq-22.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d1b5d457acbadcf8b27561deeaa386b0217f47626b29672fa7bd31deb6e91e1b"}, - {file = "pyzmq-22.3.0-cp39-cp39-win32.whl", hash = "sha256:e6a02cf7271ee94674a44f4e62aa061d2d049001c844657740e156596298b70b"}, - {file = "pyzmq-22.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:d3dcb5548ead4f1123851a5ced467791f6986d68c656bc63bfff1bf9e36671e2"}, - {file = "pyzmq-22.3.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3a4c9886d61d386b2b493377d980f502186cd71d501fffdba52bd2a0880cef4f"}, - {file = "pyzmq-22.3.0-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:80e043a89c6cadefd3a0712f8a1322038e819ebe9dbac7eca3bce1721bcb63bf"}, - {file = "pyzmq-22.3.0-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1621e7a2af72cced1f6ec8ca8ca91d0f76ac236ab2e8828ac8fe909512d566cb"}, - {file = "pyzmq-22.3.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:d6157793719de168b199194f6b6173f0ccd3bf3499e6870fac17086072e39115"}, - {file = "pyzmq-22.3.0.tar.gz", hash = "sha256:8eddc033e716f8c91c6a2112f0a8ebc5e00532b4a6ae1eb0ccc48e027f9c671c"}, -] -qtconsole = [ - {file = "qtconsole-5.3.0-py3-none-any.whl", hash = "sha256:75f2ded876444454edcb5a53262149e33b53db3a4a53116b7c3df52830905b0f"}, - {file = "qtconsole-5.3.0.tar.gz", hash = "sha256:8e3520fdc75e46abc4cc6cffeca16fa2652754109b8ae839fa28e27d1eba5625"}, -] -qtpy = [ - {file = "QtPy-2.0.1-py3-none-any.whl", hash = "sha256:d93f2c98e97387fcc9d623d509772af5b6c15ab9d8f9f4c5dfbad9a73ad34812"}, - {file = "QtPy-2.0.1.tar.gz", hash = "sha256:adfd073ffbd2de81dc7aaa0b983499ef5c59c96adcfdcc9dea60d42ca885eb8f"}, -] -rdchiral = [ - {file = "rdchiral-1.1.0-py3-none-any.whl", hash = "sha256:9a0cc69cd8ed60cba61f55de70b36c93e6130208ab3c3911a819e46bf0f50e91"}, - {file = "rdchiral-1.1.0.tar.gz", hash = "sha256:433e23b99cbb81fe4701d3abb84ec3ecd979e4486464f1d7058cf1beb5abf822"}, -] -requests = [ - {file = "requests-2.27.1-py2.py3-none-any.whl", hash = "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d"}, - {file = "requests-2.27.1.tar.gz", hash = "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61"}, -] -requests-oauthlib = [ - {file = "requests-oauthlib-1.3.1.tar.gz", hash = "sha256:75beac4a47881eeb94d5ea5d6ad31ef88856affe2332b9aafb52c6452ccf0d7a"}, - {file = "requests_oauthlib-1.3.1-py2.py3-none-any.whl", hash = "sha256:2577c501a2fb8d05a304c09d090d6e47c306fef15809d102b327cf8364bddab5"}, -] +absl-py = [] +aiohttp = [] +aiosignal = [] +alabaster = [] +alembic = [] +anyio = [] +appnope = [] +apted = [] +argon2-cffi = [] +argon2-cffi-bindings = [] +astroid = [] +asttokens = [] +astunparse = [] +async-timeout = [] +atomicwrites = [] +attrs = [] +autopage = [] +babel = [] +backcall = [] +beautifulsoup4 = [] +black = [] +bleach = [] +cachetools = [] +certifi = [] +cffi = [] +charset-normalizer = [] +click = [] +cliff = [] +cmaes = [] +cmd2 = [] +colorama = [] +colorlog = [] +comm = [] +contourpy = [] +coverage = [] +cycler = [] +debugpy = [] +decorator = [] +defusedxml = [] +deprecated = [] +dill = [] +docutils = [] +entrypoints = [] +executing = [] +fastjsonschema = [] +fire = [] +flatbuffers = [] +fonttools = [] +frozenlist = [] +fsspec = [] +gast = [] +google-auth = [] +google-auth-oauthlib = [] +google-pasta = [] +greenlet = [] +grpcio = [] +h5py = [] +idna = [] +imagesize = [] +importlib-metadata = [] +importlib-resources = [] +iniconfig = [] +invoke = [] +ipykernel = [] +ipython = [] +ipython-genutils = [] +ipywidgets = [] +isort = [] +jedi = [] +jinja2 = [] +joblib = [] +jsonschema = [] +jupyter = [] +jupyter-client = [] +jupyter-console = [] +jupyter-core = [] +jupyter-server = [] +jupyterlab-pygments = [] +jupyterlab-widgets = [] +jupytext = [] +keras = [] +kiwisolver = [] +lazy-object-proxy = [] +libclang = [] +lightning-utilities = [] +mako = [] +markdown = [] +markdown-it-py = [] +markupsafe = [] +matplotlib = [] +matplotlib-inline = [] +mccabe = [] +mdit-py-plugins = [] +mdurl = [] +mistune = [] +more-itertools = [] +multidict = [] +mypy = [] +mypy-extensions = [] +nbclassic = [] +nbclient = [] +nbconvert = [] +nbformat = [] +nest-asyncio = [] +networkx = [] +notebook = [] +notebook-shim = [] +numexpr = [] +numpy = [] +nvidia-cublas-cu11 = [] +nvidia-cuda-nvrtc-cu11 = [] +nvidia-cuda-runtime-cu11 = [] +nvidia-cudnn-cu11 = [] +oauthlib = [] +opt-einsum = [] +optuna = [] +packaging = [] +pandas = [] +pandocfilters = [] +parso = [] +pathspec = [] +pbr = [] +pexpect = [] +pickleshare = [] +pillow = [] +pkgutil-resolve-name = [] +platformdirs = [] +pluggy = [] +prettytable = [] +prometheus-client = [] +prompt-toolkit = [] +protobuf = [] +psutil = [] +ptyprocess = [] +pure-eval = [] +py = [] +pyasn1 = [] +pyasn1-modules = [] +pycparser = [] +pydantic = [] +pygments = [] +pylint = [] +pymongo = [] +pyparsing = [] +pyperclip = [] +pyreadline3 = [] +pyrsistent = [] +pytest = [] +pytest-black = [] +pytest-cov = [] +pytest-datadir = [] +pytest-mccabe = [] +pytest-mock = [] +python-dateutil = [] +pytorch-lightning = [] +pytorch-tree-lstm = [] +pytz = [] +pywin32 = [] +pywinpty = [] +pyyaml = [] +pyzmq = [] +qtconsole = [] +qtpy = [] +rdchiral = [] +rdkit = [] +requests = [] +requests-oauthlib = [] route-distances = [] -rsa = [ - {file = "rsa-4.8-py3-none-any.whl", hash = "sha256:95c5d300c4e879ee69708c428ba566c59478fd653cc3a22243eeb8ed846950bb"}, - {file = "rsa-4.8.tar.gz", hash = "sha256:5c6bd9dc7a543b7fe4304a631f8a8a3b674e2bbfc49c2ae96200cdbe55df6b17"}, -] -scikit-learn = [ - {file = "scikit-learn-1.0.2.tar.gz", hash = "sha256:b5870959a5484b614f26d31ca4c17524b1b0317522199dc985c3b4256e030767"}, - {file = "scikit_learn-1.0.2-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:da3c84694ff693b5b3194d8752ccf935a665b8b5edc33a283122f4273ca3e687"}, - {file = "scikit_learn-1.0.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:75307d9ea39236cad7eea87143155eea24d48f93f3a2f9389c817f7019f00705"}, - {file = "scikit_learn-1.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f14517e174bd7332f1cca2c959e704696a5e0ba246eb8763e6c24876d8710049"}, - {file = "scikit_learn-1.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d9aac97e57c196206179f674f09bc6bffcd0284e2ba95b7fe0b402ac3f986023"}, - {file = "scikit_learn-1.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:d93d4c28370aea8a7cbf6015e8a669cd5d69f856cc2aa44e7a590fb805bb5583"}, - {file = "scikit_learn-1.0.2-cp37-cp37m-macosx_10_13_x86_64.whl", hash = "sha256:85260fb430b795d806251dd3bb05e6f48cdc777ac31f2bcf2bc8bbed3270a8f5"}, - {file = "scikit_learn-1.0.2-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:a053a6a527c87c5c4fa7bf1ab2556fa16d8345cf99b6c5a19030a4a7cd8fd2c0"}, - {file = "scikit_learn-1.0.2-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:245c9b5a67445f6f044411e16a93a554edc1efdcce94d3fc0bc6a4b9ac30b752"}, - {file = "scikit_learn-1.0.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:158faf30684c92a78e12da19c73feff9641a928a8024b4fa5ec11d583f3d8a87"}, - {file = "scikit_learn-1.0.2-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:08ef968f6b72033c16c479c966bf37ccd49b06ea91b765e1cc27afefe723920b"}, - {file = "scikit_learn-1.0.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16455ace947d8d9e5391435c2977178d0ff03a261571e67f627c8fee0f9d431a"}, - {file = "scikit_learn-1.0.2-cp37-cp37m-win32.whl", hash = "sha256:2f3b453e0b149898577e301d27e098dfe1a36943f7bb0ad704d1e548efc3b448"}, - {file = "scikit_learn-1.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:46f431ec59dead665e1370314dbebc99ead05e1c0a9df42f22d6a0e00044820f"}, - {file = "scikit_learn-1.0.2-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:ff3fa8ea0e09e38677762afc6e14cad77b5e125b0ea70c9bba1992f02c93b028"}, - {file = "scikit_learn-1.0.2-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:9369b030e155f8188743eb4893ac17a27f81d28a884af460870c7c072f114243"}, - {file = "scikit_learn-1.0.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:7d6b2475f1c23a698b48515217eb26b45a6598c7b1840ba23b3c5acece658dbb"}, - {file = "scikit_learn-1.0.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:285db0352e635b9e3392b0b426bc48c3b485512d3b4ac3c7a44ec2a2ba061e66"}, - {file = "scikit_learn-1.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cb33fe1dc6f73dc19e67b264dbb5dde2a0539b986435fdd78ed978c14654830"}, - {file = "scikit_learn-1.0.2-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b1391d1a6e2268485a63c3073111fe3ba6ec5145fc957481cfd0652be571226d"}, - {file = "scikit_learn-1.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc3744dabc56b50bec73624aeca02e0def06b03cb287de26836e730659c5d29c"}, - {file = "scikit_learn-1.0.2-cp38-cp38-win32.whl", hash = "sha256:a999c9f02ff9570c783069f1074f06fe7386ec65b84c983db5aeb8144356a355"}, - {file = "scikit_learn-1.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:7626a34eabbf370a638f32d1a3ad50526844ba58d63e3ab81ba91e2a7c6d037e"}, - {file = "scikit_learn-1.0.2-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:a90b60048f9ffdd962d2ad2fb16367a87ac34d76e02550968719eb7b5716fd10"}, - {file = "scikit_learn-1.0.2-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:7a93c1292799620df90348800d5ac06f3794c1316ca247525fa31169f6d25855"}, - {file = "scikit_learn-1.0.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:eabceab574f471de0b0eb3f2ecf2eee9f10b3106570481d007ed1c84ebf6d6a1"}, - {file = "scikit_learn-1.0.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:55f2f3a8414e14fbee03782f9fe16cca0f141d639d2b1c1a36779fa069e1db57"}, - {file = "scikit_learn-1.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:80095a1e4b93bd33261ef03b9bc86d6db649f988ea4dbcf7110d0cded8d7213d"}, - {file = "scikit_learn-1.0.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fa38a1b9b38ae1fad2863eff5e0d69608567453fdfc850c992e6e47eb764e846"}, - {file = "scikit_learn-1.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff746a69ff2ef25f62b36338c615dd15954ddc3ab8e73530237dd73235e76d62"}, - {file = "scikit_learn-1.0.2-cp39-cp39-win32.whl", hash = "sha256:e174242caecb11e4abf169342641778f68e1bfaba80cd18acd6bc84286b9a534"}, - {file = "scikit_learn-1.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:b54a62c6e318ddbfa7d22c383466d38d2ee770ebdb5ddb668d56a099f6eaf75f"}, -] -scipy = [ - {file = "scipy-1.7.3-1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:c9e04d7e9b03a8a6ac2045f7c5ef741be86727d8f49c45db45f244bdd2bcff17"}, - {file = "scipy-1.7.3-1-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:b0e0aeb061a1d7dcd2ed59ea57ee56c9b23dd60100825f98238c06ee5cc4467e"}, - {file = "scipy-1.7.3-1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:b78a35c5c74d336f42f44106174b9851c783184a85a3fe3e68857259b37b9ffb"}, - {file = "scipy-1.7.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:173308efba2270dcd61cd45a30dfded6ec0085b4b6eb33b5eb11ab443005e088"}, - {file = "scipy-1.7.3-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:21b66200cf44b1c3e86495e3a436fc7a26608f92b8d43d344457c54f1c024cbc"}, - {file = "scipy-1.7.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ceebc3c4f6a109777c0053dfa0282fddb8893eddfb0d598574acfb734a926168"}, - {file = "scipy-1.7.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7eaea089345a35130bc9a39b89ec1ff69c208efa97b3f8b25ea5d4c41d88094"}, - {file = "scipy-1.7.3-cp310-cp310-win_amd64.whl", hash = "sha256:304dfaa7146cffdb75fbf6bb7c190fd7688795389ad060b970269c8576d038e9"}, - {file = "scipy-1.7.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:033ce76ed4e9f62923e1f8124f7e2b0800db533828c853b402c7eec6e9465d80"}, - {file = "scipy-1.7.3-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:4d242d13206ca4302d83d8a6388c9dfce49fc48fdd3c20efad89ba12f785bf9e"}, - {file = "scipy-1.7.3-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8499d9dd1459dc0d0fe68db0832c3d5fc1361ae8e13d05e6849b358dc3f2c279"}, - {file = "scipy-1.7.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca36e7d9430f7481fc7d11e015ae16fbd5575615a8e9060538104778be84addf"}, - {file = "scipy-1.7.3-cp37-cp37m-win32.whl", hash = "sha256:e2c036492e673aad1b7b0d0ccdc0cb30a968353d2c4bf92ac8e73509e1bf212c"}, - {file = "scipy-1.7.3-cp37-cp37m-win_amd64.whl", hash = "sha256:866ada14a95b083dd727a845a764cf95dd13ba3dc69a16b99038001b05439709"}, - {file = "scipy-1.7.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:65bd52bf55f9a1071398557394203d881384d27b9c2cad7df9a027170aeaef93"}, - {file = "scipy-1.7.3-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:f99d206db1f1ae735a8192ab93bd6028f3a42f6fa08467d37a14eb96c9dd34a3"}, - {file = "scipy-1.7.3-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5f2cfc359379c56b3a41b17ebd024109b2049f878badc1e454f31418c3a18436"}, - {file = "scipy-1.7.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb7ae2c4dbdb3c9247e07acc532f91077ae6dbc40ad5bd5dca0bb5a176ee9bda"}, - {file = "scipy-1.7.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95c2d250074cfa76715d58830579c64dff7354484b284c2b8b87e5a38321672c"}, - {file = "scipy-1.7.3-cp38-cp38-win32.whl", hash = "sha256:87069cf875f0262a6e3187ab0f419f5b4280d3dcf4811ef9613c605f6e4dca95"}, - {file = "scipy-1.7.3-cp38-cp38-win_amd64.whl", hash = "sha256:7edd9a311299a61e9919ea4192dd477395b50c014cdc1a1ac572d7c27e2207fa"}, - {file = "scipy-1.7.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:eef93a446114ac0193a7b714ce67659db80caf940f3232bad63f4c7a81bc18df"}, - {file = "scipy-1.7.3-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:eb326658f9b73c07081300daba90a8746543b5ea177184daed26528273157294"}, - {file = "scipy-1.7.3-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:93378f3d14fff07572392ce6a6a2ceb3a1f237733bd6dcb9eb6a2b29b0d19085"}, - {file = "scipy-1.7.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edad1cf5b2ce1912c4d8ddad20e11d333165552aba262c882e28c78bbc09dbf6"}, - {file = "scipy-1.7.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d1cc2c19afe3b5a546ede7e6a44ce1ff52e443d12b231823268019f608b9b12"}, - {file = "scipy-1.7.3-cp39-cp39-win32.whl", hash = "sha256:2c56b820d304dffcadbbb6cbfbc2e2c79ee46ea291db17e288e73cd3c64fefa9"}, - {file = "scipy-1.7.3-cp39-cp39-win_amd64.whl", hash = "sha256:3f78181a153fa21c018d346f595edd648344751d7f03ab94b398be2ad083ed3e"}, - {file = "scipy-1.7.3.tar.gz", hash = "sha256:ab5875facfdef77e0a47d5fd39ea178b58e60e454a4c85aa1e52fcb80db7babf"}, -] -send2trash = [ - {file = "Send2Trash-1.8.0-py3-none-any.whl", hash = "sha256:f20eaadfdb517eaca5ce077640cb261c7d2698385a6a0f072a4a5447fd49fa08"}, - {file = "Send2Trash-1.8.0.tar.gz", hash = "sha256:d2c24762fd3759860a0aff155e45871447ea58d2be6bdd39b5c8f966a0c99c2d"}, -] -setuptools-scm = [ - {file = "setuptools_scm-6.4.2-py3-none-any.whl", hash = "sha256:acea13255093849de7ccb11af9e1fb8bde7067783450cee9ef7a93139bddf6d4"}, - {file = "setuptools_scm-6.4.2.tar.gz", hash = "sha256:6833ac65c6ed9711a4d5d2266f8024cfa07c533a0e55f4c12f6eff280a5a9e30"}, -] -six = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, -] -snowballstemmer = [ - {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, - {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, -] -soupsieve = [ - {file = "soupsieve-2.3.2.post1-py3-none-any.whl", hash = "sha256:3b2503d3c7084a42b1ebd08116e5f81aadfaea95863628c80a3b774a11b7c759"}, - {file = "soupsieve-2.3.2.post1.tar.gz", hash = "sha256:fc53893b3da2c33de295667a0e19f078c14bf86544af307354de5fcf12a3f30d"}, -] -sphinx = [ - {file = "Sphinx-4.5.0-py3-none-any.whl", hash = "sha256:ebf612653238bcc8f4359627a9b7ce44ede6fdd75d9d30f68255c7383d3a6226"}, - {file = "Sphinx-4.5.0.tar.gz", hash = "sha256:7bf8ca9637a4ee15af412d1a1d9689fec70523a68ca9bb9127c2f3eeb344e2e6"}, -] -sphinxcontrib-applehelp = [ - {file = "sphinxcontrib-applehelp-1.0.2.tar.gz", hash = "sha256:a072735ec80e7675e3f432fcae8610ecf509c5f1869d17e2eecff44389cdbc58"}, - {file = "sphinxcontrib_applehelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:806111e5e962be97c29ec4c1e7fe277bfd19e9652fb1a4392105b43e01af885a"}, -] -sphinxcontrib-devhelp = [ - {file = "sphinxcontrib-devhelp-1.0.2.tar.gz", hash = "sha256:ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4"}, - {file = "sphinxcontrib_devhelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:8165223f9a335cc1af7ffe1ed31d2871f325254c0423bc0c4c7cd1c1e4734a2e"}, -] -sphinxcontrib-htmlhelp = [ - {file = "sphinxcontrib-htmlhelp-2.0.0.tar.gz", hash = "sha256:f5f8bb2d0d629f398bf47d0d69c07bc13b65f75a81ad9e2f71a63d4b7a2f6db2"}, - {file = "sphinxcontrib_htmlhelp-2.0.0-py2.py3-none-any.whl", hash = "sha256:d412243dfb797ae3ec2b59eca0e52dac12e75a241bf0e4eb861e450d06c6ed07"}, -] -sphinxcontrib-jsmath = [ - {file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"}, - {file = "sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178"}, -] -sphinxcontrib-qthelp = [ - {file = "sphinxcontrib-qthelp-1.0.3.tar.gz", hash = "sha256:4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72"}, - {file = "sphinxcontrib_qthelp-1.0.3-py2.py3-none-any.whl", hash = "sha256:bd9fc24bcb748a8d51fd4ecaade681350aa63009a347a8c14e637895444dfab6"}, -] -sphinxcontrib-serializinghtml = [ - {file = "sphinxcontrib-serializinghtml-1.1.5.tar.gz", hash = "sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952"}, - {file = "sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl", hash = "sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd"}, -] -sqlalchemy = [ - {file = "SQLAlchemy-1.4.36-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:81e53bd383c2c33de9d578bfcc243f559bd3801a0e57f2bcc9a943c790662e0c"}, - {file = "SQLAlchemy-1.4.36-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6e1fe00ee85c768807f2a139b83469c1e52a9ffd58a6eb51aa7aeb524325ab18"}, - {file = "SQLAlchemy-1.4.36-cp27-cp27m-win32.whl", hash = "sha256:d57ac32f8dc731fddeb6f5d1358b4ca5456e72594e664769f0a9163f13df2a31"}, - {file = "SQLAlchemy-1.4.36-cp27-cp27m-win_amd64.whl", hash = "sha256:fca8322e04b2dde722fcb0558682740eebd3bd239bea7a0d0febbc190e99dc15"}, - {file = "SQLAlchemy-1.4.36-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:53d2d9ee93970c969bc4e3c78b1277d7129554642f6ffea039c282c7dc4577bc"}, - {file = "SQLAlchemy-1.4.36-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:f0394a3acfb8925db178f7728adb38c027ed7e303665b225906bfa8099dc1ce8"}, - {file = "SQLAlchemy-1.4.36-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09c606d8238feae2f360b8742ffbe67741937eb0a05b57f536948d198a3def96"}, - {file = "SQLAlchemy-1.4.36-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8d07fe2de0325d06e7e73281e9a9b5e259fbd7cbfbe398a0433cbb0082ad8fa7"}, - {file = "SQLAlchemy-1.4.36-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5041474dcab7973baa91ec1f3112049a9dd4652898d6a95a6a895ff5c58beb6b"}, - {file = "SQLAlchemy-1.4.36-cp310-cp310-win32.whl", hash = "sha256:be094460930087e50fd08297db9d7aadaed8408ad896baf758e9190c335632da"}, - {file = "SQLAlchemy-1.4.36-cp310-cp310-win_amd64.whl", hash = "sha256:64d796e9af522162f7f2bf7a3c5531a0a550764c426782797bbeed809d0646c5"}, - {file = "SQLAlchemy-1.4.36-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:a0ae3aa2e86a4613f2d4c49eb7da23da536e6ce80b2bfd60bbb2f55fc02b0b32"}, - {file = "SQLAlchemy-1.4.36-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d50cb71c1dbed70646d521a0975fb0f92b7c3f84c61fa59e07be23a1aaeecfc"}, - {file = "SQLAlchemy-1.4.36-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:16abf35af37a3d5af92725fc9ec507dd9e9183d261c2069b6606d60981ed1c6e"}, - {file = "SQLAlchemy-1.4.36-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5864a83bd345871ad9699ce466388f836db7572003d67d9392a71998092210e3"}, - {file = "SQLAlchemy-1.4.36-cp36-cp36m-win32.whl", hash = "sha256:fbf8c09fe9728168f8cc1b40c239eab10baf9c422c18be7f53213d70434dea43"}, - {file = "SQLAlchemy-1.4.36-cp36-cp36m-win_amd64.whl", hash = "sha256:6e859fa96605027bd50d8e966db1c4e1b03e7b3267abbc4b89ae658c99393c58"}, - {file = "SQLAlchemy-1.4.36-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:166a3887ec355f7d2f12738f7fa25dc8ac541867147a255f790f2f41f614cb44"}, - {file = "SQLAlchemy-1.4.36-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e885548da361aa3f8a9433db4cfb335b2107e533bf314359ae3952821d84b3e"}, - {file = "SQLAlchemy-1.4.36-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5c90ef955d429966d84326d772eb34333178737ebb669845f1d529eb00c75e72"}, - {file = "SQLAlchemy-1.4.36-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a052bd9f53004f8993c624c452dfad8ec600f572dd0ed0445fbe64b22f5570e"}, - {file = "SQLAlchemy-1.4.36-cp37-cp37m-win32.whl", hash = "sha256:dce3468bf1fc12374a1a732c9efd146ce034f91bb0482b602a9311cb6166a920"}, - {file = "SQLAlchemy-1.4.36-cp37-cp37m-win_amd64.whl", hash = "sha256:6cb4c4f57a20710cea277edf720d249d514e587f796b75785ad2c25e1c0fed26"}, - {file = "SQLAlchemy-1.4.36-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:e74ce103b81c375c3853b436297952ef8d7863d801dcffb6728d01544e5191b5"}, - {file = "SQLAlchemy-1.4.36-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b20c4178ead9bc398be479428568ff31b6c296eb22e75776273781a6551973f"}, - {file = "SQLAlchemy-1.4.36-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:af2587ae11400157753115612d6c6ad255143efba791406ad8a0cbcccf2edcb3"}, - {file = "SQLAlchemy-1.4.36-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:83cf3077712be9f65c9aaa0b5bc47bc1a44789fd45053e2e3ecd59ff17c63fe9"}, - {file = "SQLAlchemy-1.4.36-cp38-cp38-win32.whl", hash = "sha256:ce20f5da141f8af26c123ebaa1b7771835ca6c161225ce728962a79054f528c3"}, - {file = "SQLAlchemy-1.4.36-cp38-cp38-win_amd64.whl", hash = "sha256:316c7e5304dda3e3ad711569ac5d02698bbc71299b168ac56a7076b86259f7ea"}, - {file = "SQLAlchemy-1.4.36-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:f522214f6749bc073262529c056f7dfd660f3b5ec4180c5354d985eb7219801e"}, - {file = "SQLAlchemy-1.4.36-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2ecac4db8c1aa4a269f5829df7e706639a24b780d2ac46b3e485cbbd27ec0028"}, - {file = "SQLAlchemy-1.4.36-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b3db741beaa983d4cbf9087558620e7787106319f7e63a066990a70657dd6b35"}, - {file = "SQLAlchemy-1.4.36-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ec89bf98cc6a0f5d1e28e3ad28e9be6f3b4bdbd521a4053c7ae8d5e1289a8a1"}, - {file = "SQLAlchemy-1.4.36-cp39-cp39-win32.whl", hash = "sha256:e12532c4d3f614678623da5d852f038ace1f01869b89f003ed6fe8c793f0c6a3"}, - {file = "SQLAlchemy-1.4.36-cp39-cp39-win_amd64.whl", hash = "sha256:cb441ca461bf97d00877b607f132772644b623518b39ced54da433215adce691"}, - {file = "SQLAlchemy-1.4.36.tar.gz", hash = "sha256:64678ac321d64a45901ef2e24725ec5e783f1f4a588305e196431447e7ace243"}, -] -stevedore = [ - {file = "stevedore-3.5.0-py3-none-any.whl", hash = "sha256:a547de73308fd7e90075bb4d301405bebf705292fa90a90fc3bcf9133f58616c"}, - {file = "stevedore-3.5.0.tar.gz", hash = "sha256:f40253887d8712eaa2bb0ea3830374416736dc8ec0e22f5a65092c1174c44335"}, -] -tables = [ - {file = "tables-3.7.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2262d400fd0a29b11414e95a85817e987056543f25d62d80cac730d7b3567bf3"}, - {file = "tables-3.7.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c74db2d5402f68093292cf89dda6124578ae2a8df796fb236a50f505245f294"}, - {file = "tables-3.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a4627309c69ff8936ce641e2e2b48c19e7b4a5fd6649861233ac73621267afb"}, - {file = "tables-3.7.0-cp310-cp310-win32.whl", hash = "sha256:e445f7da56d692f663fa1a1a9e9059ddf5eebb9e99efecb38ef7b3ea0d541b4d"}, - {file = "tables-3.7.0-cp310-cp310-win_amd64.whl", hash = "sha256:38055a11f80acfe0670262595fdcdae1ac607a554355692a6abf26f20e54ec5f"}, - {file = "tables-3.7.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:1d12a3a7b06620267504ec8315d05ee13f84db76a48ecaf4cefd9aba909a791a"}, - {file = "tables-3.7.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8d9ebe9df7dd294c11632ed74ac450f73703f59fc76ea9db28388a2a655e434"}, - {file = "tables-3.7.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e7d5aaf8c2723dcd471a3fe1730e1f30e1d2b145939d49f70e36c52199994e0"}, - {file = "tables-3.7.0-cp36-cp36m-win32.whl", hash = "sha256:db8e9e49038916ba461f57793840075719066fef9cbf9813a6be1e6590e795c9"}, - {file = "tables-3.7.0-cp36-cp36m-win_amd64.whl", hash = "sha256:2c568304e11d5ea3cbbb1b489bc0edacde5b9943e2714667c83009fae8823f14"}, - {file = "tables-3.7.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8b0d4317a5f7c9086a8a567bd2173dfa736e85f06d3aab172c4c540319fbd264"}, - {file = "tables-3.7.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:084bbd93038340aed132056435993f020672984c55ace27aedecd09abf0f8fd2"}, - {file = "tables-3.7.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e48c74dfa4765b312861f7d4c6e8eb7dcea7fe7674c95bd04cf6d738e04470af"}, - {file = "tables-3.7.0-cp37-cp37m-win32.whl", hash = "sha256:78f146aa4a6518cd8664661c421083d71fec1c7956eb7eebeee2ded351ce9289"}, - {file = "tables-3.7.0-cp37-cp37m-win_amd64.whl", hash = "sha256:e89746e56dc5c47dadae8a639e08820835f0522e709b3914436e47e04fe67cea"}, - {file = "tables-3.7.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:90bdfe44aec11cf207e37d7e767852f949cfc918d409210f0e12cd675b28c23e"}, - {file = "tables-3.7.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1286143ac2bd5a51adda0f72f4496e53a085faba91c44c28dc38d1e9803d979"}, - {file = "tables-3.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69e1bc63c9a6dcd4f2a820aba7ca24a35aae08814b90deb18ed67b2c171872c0"}, - {file = "tables-3.7.0-cp38-cp38-win32.whl", hash = "sha256:0f404df7740dabaafa6f18ff279503ecacc1241c5f451b8a4609c01e6102c440"}, - {file = "tables-3.7.0-cp38-cp38-win_amd64.whl", hash = "sha256:1ccb258296c580192a4dd4763ce937ca913d0fe4e3606dc289808117868cc1a8"}, - {file = "tables-3.7.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9d0f2fb26caab50ef42e2f91d76024a3041e158773844d725a0f85514d58a6b0"}, - {file = "tables-3.7.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2546e28c07c04b59c2cbf2986604ceb8abf9d14d5da8b501d51c4577bf843b52"}, - {file = "tables-3.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d23e1f70c32ce26532048c9d33c44597989766ee6acac4a19f2eb33d09dab8e6"}, - {file = "tables-3.7.0-cp39-cp39-win32.whl", hash = "sha256:b973d787f417b751c7daa10f2c09798bb37b0527ff62dd29cedc75c31c3f0db9"}, - {file = "tables-3.7.0-cp39-cp39-win_amd64.whl", hash = "sha256:3c2350f0047685f5932fb0af09806ed0089d042d550292ff1e68d796da0d90fb"}, - {file = "tables-3.7.0.tar.gz", hash = "sha256:e92a887ad6f2a983e564a69902de4a7645c30069fc01abd353ec5da255c5e1fe"}, -] -tensorboard = [ - {file = "tensorboard-2.8.0-py3-none-any.whl", hash = "sha256:65a338e4424e9079f2604923bdbe301792adce2ace1be68da6b3ddf005170def"}, -] -tensorboard-data-server = [ - {file = "tensorboard_data_server-0.6.1-py3-none-any.whl", hash = "sha256:809fe9887682d35c1f7d1f54f0f40f98bb1f771b14265b453ca051e2ce58fca7"}, - {file = "tensorboard_data_server-0.6.1-py3-none-macosx_10_9_x86_64.whl", hash = "sha256:fa8cef9be4fcae2f2363c88176638baf2da19c5ec90addb49b1cde05c95c88ee"}, - {file = "tensorboard_data_server-0.6.1-py3-none-manylinux2010_x86_64.whl", hash = "sha256:d8237580755e58eff68d1f3abefb5b1e39ae5c8b127cc40920f9c4fb33f4b98a"}, -] -tensorboard-plugin-wit = [ - {file = "tensorboard_plugin_wit-1.8.1-py3-none-any.whl", hash = "sha256:ff26bdd583d155aa951ee3b152b3d0cffae8005dc697f72b44a8e8c2a77a8cbe"}, -] -tensorflow = [ - {file = "tensorflow-2.8.0-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:78c3ba2e0c952aa9eb388200f1923e40287f9357492a464188ca3043e35edc52"}, - {file = "tensorflow-2.8.0-cp310-cp310-manylinux2010_x86_64.whl", hash = "sha256:2a520538e77a52fb428acb05e300c960844fd1d2c3918ca8ca14127edba6f83b"}, - {file = "tensorflow-2.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:b7170844ae6b048d82a9d7a61b2fa627f2e16cb829267bf0ce4b3a0de0a61054"}, - {file = "tensorflow-2.8.0-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:fa4a723368d5f748b6f4ec305cf7c26b98e4a6a8c2ce1425f8ae10383a37bcfc"}, - {file = "tensorflow-2.8.0-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:05fb161c6b2a6c4b8317a703a0a6d7f7aa6b5e3c6ea31bbc4f44ef96b89c3344"}, - {file = "tensorflow-2.8.0-cp37-cp37m-win_amd64.whl", hash = "sha256:291fa84f1022914580810ad76732fb254e44a8a609128e1c58873a12b2f81559"}, - {file = "tensorflow-2.8.0-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:dd0f9f113ebc21b73fcd349db1629e187b8686395b8146d100eb1706a943bbc0"}, - {file = "tensorflow-2.8.0-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:8489b4f1771e146f752b0eaeb57acf183bd07357e4550464e7dff18b3b656b5d"}, - {file = "tensorflow-2.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:da38d4043185267e7316ae5dc98d18e89c8af4170859f64798e7a3607fd606e3"}, - {file = "tensorflow-2.8.0-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:52f225fecc688281b3ae2cba2b52d3ed6215ed4a3ffb686b9cfd09885ca65563"}, - {file = "tensorflow-2.8.0-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:9d91a989e5455ae713c03fd7236071ab3f232ad8ff2831f2658072933546091f"}, - {file = "tensorflow-2.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:b360c13b3e58b9a5c0780cbdb6b549eea73f620275fa203f8508fe418ae02735"}, -] -tensorflow-io-gcs-filesystem = [ - {file = "tensorflow_io_gcs_filesystem-0.25.0-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:b7aeae64dd4db1c8c0a4a7581af421fe16fd7704385017c6e4b89c041cef9830"}, - {file = "tensorflow_io_gcs_filesystem-0.25.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cbcf8c973637140dceaacfe04b0e4a010f6d41d468cccfbf2e328fed7c6b3c46"}, - {file = "tensorflow_io_gcs_filesystem-0.25.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4307f25069f6afd7ecebbecd8603491b379af39b98ed74e5395282ef017ca5b2"}, - {file = "tensorflow_io_gcs_filesystem-0.25.0-cp310-cp310-win_amd64.whl", hash = "sha256:5ade6c5fadc067d576ff6b8b2d125ed7f60f4ecb6f9e6480b3cf28037cd74030"}, - {file = "tensorflow_io_gcs_filesystem-0.25.0-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:f62edcf9a44ebf178233a189cc8f8d7f07ae156a87123a29530e803159cc0a27"}, - {file = "tensorflow_io_gcs_filesystem-0.25.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:30b7489472d1f635df202b7f9910a00354dc791d3f4c8d99ae517f58e0cdbd12"}, - {file = "tensorflow_io_gcs_filesystem-0.25.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2ae065451e915dcf00c730355ecd5a954e47593d71df5865f5224cd915fd8cb3"}, - {file = "tensorflow_io_gcs_filesystem-0.25.0-cp37-cp37m-win_amd64.whl", hash = "sha256:1d1de2dbed94fb3763b020cc31b79dc9185aafc3855976ac5d0ad10967143d3c"}, - {file = "tensorflow_io_gcs_filesystem-0.25.0-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:8cab4ecb376a871bc98124dfee9be53a7387808a7f65438f8adecc1b31e4d228"}, - {file = "tensorflow_io_gcs_filesystem-0.25.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a6ce3f487b43b2e8e3e5e0cf9bdeb5cd67c68f5932ea74be0cdba099e3f13050"}, - {file = "tensorflow_io_gcs_filesystem-0.25.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7cfa39909e9e7f408ec2ed19ced70566ef10211eb18dec63e5ad6d42f88a3976"}, - {file = "tensorflow_io_gcs_filesystem-0.25.0-cp38-cp38-win_amd64.whl", hash = "sha256:643dd1b3e8942d381efc04013d8b4cd694ba558446eea9a9877096182bdb85e5"}, - {file = "tensorflow_io_gcs_filesystem-0.25.0-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:3da161baf459980960c2130a5085d8fb3391d4d69f52bc1787c45210218a8576"}, - {file = "tensorflow_io_gcs_filesystem-0.25.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:660e4e837057c0ab96661f56a401bb14e8bc58c3a0d57c54383c3dc7c1a06119"}, - {file = "tensorflow_io_gcs_filesystem-0.25.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:53611b66d7604976af2410502c05e1230fd1d856a18c5b391266d0bc9a1a14a6"}, - {file = "tensorflow_io_gcs_filesystem-0.25.0-cp39-cp39-win_amd64.whl", hash = "sha256:e7b15047cce35cd16fe4708ebe384c3a0077201cd2745e20df4204683c84e464"}, -] -tensorflow-serving-api = [ - {file = "tensorflow_serving_api-2.8.0-py2.py3-none-any.whl", hash = "sha256:d0790df170c582b2bddd894c7469787f873437ea8936bef7e034f86ed91bd6b4"}, -] -termcolor = [ - {file = "termcolor-1.1.0.tar.gz", hash = "sha256:1d6d69ce66211143803fbc56652b41d73b4a400a2891d7bf7a1cdf4c02de613b"}, -] -terminado = [ - {file = "terminado-0.13.3-py3-none-any.whl", hash = "sha256:874d4ea3183536c1782d13c7c91342ef0cf4e5ee1d53633029cbc972c8760bd8"}, - {file = "terminado-0.13.3.tar.gz", hash = "sha256:94d1cfab63525993f7d5c9b469a50a18d0cdf39435b59785715539dd41e36c0d"}, -] -tf-estimator-nightly = [ - {file = "tf_estimator_nightly-2.8.0.dev2021122109-py2.py3-none-any.whl", hash = "sha256:0065a04e396b2890bd19761fc1de7559ceafeba12839f8db2c7e7473afaaf612"}, -] -threadpoolctl = [ - {file = "threadpoolctl-3.1.0-py3-none-any.whl", hash = "sha256:8b99adda265feb6773280df41eece7b2e6561b772d21ffd52e372f999024907b"}, - {file = "threadpoolctl-3.1.0.tar.gz", hash = "sha256:a335baacfaa4400ae1f0d8e3a58d6674d2f8828e3716bb2802c44955ad391380"}, -] -timeout-decorator = [ - {file = "timeout-decorator-0.5.0.tar.gz", hash = "sha256:6a2f2f58db1c5b24a2cc79de6345760377ad8bdc13813f5265f6c3e63d16b3d7"}, -] -tinycss2 = [ - {file = "tinycss2-1.1.1-py3-none-any.whl", hash = "sha256:fe794ceaadfe3cf3e686b22155d0da5780dd0e273471a51846d0a02bc204fec8"}, - {file = "tinycss2-1.1.1.tar.gz", hash = "sha256:b2e44dd8883c360c35dd0d1b5aad0b610e5156c2cb3b33434634e539ead9d8bf"}, -] -toml = [ - {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, - {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, -] -tomli = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, -] -torch = [ - {file = "torch-1.11.0-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:62052b50fffc29ca7afc0c04ef8206b6f1ca9d10629cb543077e12967e8d0398"}, - {file = "torch-1.11.0-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:866bfba29ac98dec35d893d8e17eaec149d0ac7a53be7baae5c98069897db667"}, - {file = "torch-1.11.0-cp310-cp310-win_amd64.whl", hash = "sha256:951640fb8db308a59d9b510e7d1ad910aff92913323bbe4bc75435347ddd346d"}, - {file = "torch-1.11.0-cp310-none-macosx_10_9_x86_64.whl", hash = "sha256:5d77b5ece78fdafa5c7f42995ff9474399d22571cd6b2de21a5d666306a2ff8c"}, - {file = "torch-1.11.0-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:b5a38682769b544c875ecc34bcb81fbad5c922139b61319aacffcfd8a32f528c"}, - {file = "torch-1.11.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:f82d77695a60626f2b7382d85bc566de8a6b3e50d32080755abc040db802e419"}, - {file = "torch-1.11.0-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:b96654d42566080a134e784705f33f8536b3b95b5dcde357ed7879b1692a5f78"}, - {file = "torch-1.11.0-cp37-cp37m-win_amd64.whl", hash = "sha256:8ee7c2e8d7f7020d5bfbc1bb91b9591044c26bbd0cee5e4f694cfd7ed8649260"}, - {file = "torch-1.11.0-cp37-none-macosx_10_9_x86_64.whl", hash = "sha256:6860b1d1bf0bb0b67a6bd47f85a0e4c825b518eea13b5d6101999dbbcbd5bc0c"}, - {file = "torch-1.11.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:4322aa29f50da7f404db06cdf30896ea67b09f673af4a985afc7162bc897864d"}, - {file = "torch-1.11.0-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:e4d2e0ddd652f30e94cff750220324ec45705d4ecc69658f773b3cb1c7a28dd0"}, - {file = "torch-1.11.0-cp38-cp38-win_amd64.whl", hash = "sha256:34ce5ea4d8d85da32cdbadb50d4585106901e9f8a3527991daa70c13a09de1f7"}, - {file = "torch-1.11.0-cp38-none-macosx_10_9_x86_64.whl", hash = "sha256:0ccc85cd06227a3edf809e2c795fd5762c3d4e8a38b5c9f744c6e7cf841361bb"}, - {file = "torch-1.11.0-cp38-none-macosx_11_0_arm64.whl", hash = "sha256:c1554e49d74f1b2c3e7202d77056ba2dd7465437585bac64062b580f714a44e9"}, - {file = "torch-1.11.0-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:58c7814502b1c129a650d7092033bbb0bbd64faf1a7941631aaa1aeaddc37570"}, - {file = "torch-1.11.0-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:831cf588f01dda9409e75576741d2823453990dee2983d670f2584b37a01adf7"}, - {file = "torch-1.11.0-cp39-cp39-win_amd64.whl", hash = "sha256:44a1d02fd20f827f0f36dc26fdcfc45e793806a6ad52769a22260655a77a4369"}, - {file = "torch-1.11.0-cp39-none-macosx_10_9_x86_64.whl", hash = "sha256:50fd9bf85c578c871c28f1cb0ace9dfc6024401c7f399b174fb0f370899f4454"}, - {file = "torch-1.11.0-cp39-none-macosx_11_0_arm64.whl", hash = "sha256:0e48af66ad755f0f9c5f2664028a414f57c49d6adc37e77e06fe0004da4edb61"}, -] -torchmetrics = [ - {file = "torchmetrics-0.8.1-py3-none-any.whl", hash = "sha256:8b8bb2ed4c455ae328e36b4d49d102da4ca8ceb6ca208fab8441ca1723442aff"}, - {file = "torchmetrics-0.8.1.tar.gz", hash = "sha256:836c666425fd83a9b9785d9a9b52cd988925d3f545aed1217b3192552c7558ce"}, -] -tornado = [ - {file = "tornado-6.1-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:d371e811d6b156d82aa5f9a4e08b58debf97c302a35714f6f45e35139c332e32"}, - {file = "tornado-6.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:0d321a39c36e5f2c4ff12b4ed58d41390460f798422c4504e09eb5678e09998c"}, - {file = "tornado-6.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9de9e5188a782be6b1ce866e8a51bc76a0fbaa0e16613823fc38e4fc2556ad05"}, - {file = "tornado-6.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:61b32d06ae8a036a6607805e6720ef00a3c98207038444ba7fd3d169cd998910"}, - {file = "tornado-6.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:3e63498f680547ed24d2c71e6497f24bca791aca2fe116dbc2bd0ac7f191691b"}, - {file = "tornado-6.1-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:6c77c9937962577a6a76917845d06af6ab9197702a42e1346d8ae2e76b5e3675"}, - {file = "tornado-6.1-cp35-cp35m-win32.whl", hash = "sha256:6286efab1ed6e74b7028327365cf7346b1d777d63ab30e21a0f4d5b275fc17d5"}, - {file = "tornado-6.1-cp35-cp35m-win_amd64.whl", hash = "sha256:fa2ba70284fa42c2a5ecb35e322e68823288a4251f9ba9cc77be04ae15eada68"}, - {file = "tornado-6.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:0a00ff4561e2929a2c37ce706cb8233b7907e0cdc22eab98888aca5dd3775feb"}, - {file = "tornado-6.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:748290bf9112b581c525e6e6d3820621ff020ed95af6f17fedef416b27ed564c"}, - {file = "tornado-6.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:e385b637ac3acaae8022e7e47dfa7b83d3620e432e3ecb9a3f7f58f150e50921"}, - {file = "tornado-6.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:25ad220258349a12ae87ede08a7b04aca51237721f63b1808d39bdb4b2164558"}, - {file = "tornado-6.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:65d98939f1a2e74b58839f8c4dab3b6b3c1ce84972ae712be02845e65391ac7c"}, - {file = "tornado-6.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:e519d64089b0876c7b467274468709dadf11e41d65f63bba207e04217f47c085"}, - {file = "tornado-6.1-cp36-cp36m-win32.whl", hash = "sha256:b87936fd2c317b6ee08a5741ea06b9d11a6074ef4cc42e031bc6403f82a32575"}, - {file = "tornado-6.1-cp36-cp36m-win_amd64.whl", hash = "sha256:cc0ee35043162abbf717b7df924597ade8e5395e7b66d18270116f8745ceb795"}, - {file = "tornado-6.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7250a3fa399f08ec9cb3f7b1b987955d17e044f1ade821b32e5f435130250d7f"}, - {file = "tornado-6.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:ed3ad863b1b40cd1d4bd21e7498329ccaece75db5a5bf58cd3c9f130843e7102"}, - {file = "tornado-6.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:dcef026f608f678c118779cd6591c8af6e9b4155c44e0d1bc0c87c036fb8c8c4"}, - {file = "tornado-6.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:70dec29e8ac485dbf57481baee40781c63e381bebea080991893cd297742b8fd"}, - {file = "tornado-6.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:d3f7594930c423fd9f5d1a76bee85a2c36fd8b4b16921cae7e965f22575e9c01"}, - {file = "tornado-6.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:3447475585bae2e77ecb832fc0300c3695516a47d46cefa0528181a34c5b9d3d"}, - {file = "tornado-6.1-cp37-cp37m-win32.whl", hash = "sha256:e7229e60ac41a1202444497ddde70a48d33909e484f96eb0da9baf8dc68541df"}, - {file = "tornado-6.1-cp37-cp37m-win_amd64.whl", hash = "sha256:cb5ec8eead331e3bb4ce8066cf06d2dfef1bfb1b2a73082dfe8a161301b76e37"}, - {file = "tornado-6.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:20241b3cb4f425e971cb0a8e4ffc9b0a861530ae3c52f2b0434e6c1b57e9fd95"}, - {file = "tornado-6.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:c77da1263aa361938476f04c4b6c8916001b90b2c2fdd92d8d535e1af48fba5a"}, - {file = "tornado-6.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:fba85b6cd9c39be262fcd23865652920832b61583de2a2ca907dbd8e8a8c81e5"}, - {file = "tornado-6.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:1e8225a1070cd8eec59a996c43229fe8f95689cb16e552d130b9793cb570a288"}, - {file = "tornado-6.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:d14d30e7f46a0476efb0deb5b61343b1526f73ebb5ed84f23dc794bdb88f9d9f"}, - {file = "tornado-6.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:8f959b26f2634a091bb42241c3ed8d3cedb506e7c27b8dd5c7b9f745318ddbb6"}, - {file = "tornado-6.1-cp38-cp38-win32.whl", hash = "sha256:34ca2dac9e4d7afb0bed4677512e36a52f09caa6fded70b4e3e1c89dbd92c326"}, - {file = "tornado-6.1-cp38-cp38-win_amd64.whl", hash = "sha256:6196a5c39286cc37c024cd78834fb9345e464525d8991c21e908cc046d1cc02c"}, - {file = "tornado-6.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f0ba29bafd8e7e22920567ce0d232c26d4d47c8b5cf4ed7b562b5db39fa199c5"}, - {file = "tornado-6.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:33892118b165401f291070100d6d09359ca74addda679b60390b09f8ef325ffe"}, - {file = "tornado-6.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:7da13da6f985aab7f6f28debab00c67ff9cbacd588e8477034c0652ac141feea"}, - {file = "tornado-6.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:e0791ac58d91ac58f694d8d2957884df8e4e2f6687cdf367ef7eb7497f79eaa2"}, - {file = "tornado-6.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:66324e4e1beede9ac79e60f88de548da58b1f8ab4b2f1354d8375774f997e6c0"}, - {file = "tornado-6.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:a48900ecea1cbb71b8c71c620dee15b62f85f7c14189bdeee54966fbd9a0c5bd"}, - {file = "tornado-6.1-cp39-cp39-win32.whl", hash = "sha256:d3d20ea5782ba63ed13bc2b8c291a053c8d807a8fa927d941bd718468f7b950c"}, - {file = "tornado-6.1-cp39-cp39-win_amd64.whl", hash = "sha256:548430be2740e327b3fe0201abe471f314741efcb0067ec4f2d7dcfb4825f3e4"}, - {file = "tornado-6.1.tar.gz", hash = "sha256:33c6e81d7bd55b468d2e793517c909b139960b6c790a60b7991b9b6b76fb9791"}, -] -tqdm = [ - {file = "tqdm-4.64.0-py2.py3-none-any.whl", hash = "sha256:74a2cdefe14d11442cedf3ba4e21a3b84ff9a2dbdc6cfae2c34addb2a14a5ea6"}, - {file = "tqdm-4.64.0.tar.gz", hash = "sha256:40be55d30e200777a307a7585aee69e4eabb46b4ec6a4b4a5f2d9f11e7d5408d"}, -] -traitlets = [ - {file = "traitlets-5.1.1-py3-none-any.whl", hash = "sha256:2d313cc50a42cd6c277e7d7dc8d4d7fedd06a2c215f78766ae7b1a66277e0033"}, - {file = "traitlets-5.1.1.tar.gz", hash = "sha256:059f456c5a7c1c82b98c2e8c799f39c9b8128f6d0d46941ee118daace9eb70c7"}, -] -typed-ast = [ - {file = "typed_ast-1.4.3-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:2068531575a125b87a41802130fa7e29f26c09a2833fea68d9a40cf33902eba6"}, - {file = "typed_ast-1.4.3-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:c907f561b1e83e93fad565bac5ba9c22d96a54e7ea0267c708bffe863cbe4075"}, - {file = "typed_ast-1.4.3-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:1b3ead4a96c9101bef08f9f7d1217c096f31667617b58de957f690c92378b528"}, - {file = "typed_ast-1.4.3-cp35-cp35m-win32.whl", hash = "sha256:dde816ca9dac1d9c01dd504ea5967821606f02e510438120091b84e852367428"}, - {file = "typed_ast-1.4.3-cp35-cp35m-win_amd64.whl", hash = "sha256:777a26c84bea6cd934422ac2e3b78863a37017618b6e5c08f92ef69853e765d3"}, - {file = "typed_ast-1.4.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f8afcf15cc511ada719a88e013cec87c11aff7b91f019295eb4530f96fe5ef2f"}, - {file = "typed_ast-1.4.3-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:52b1eb8c83f178ab787f3a4283f68258525f8d70f778a2f6dd54d3b5e5fb4341"}, - {file = "typed_ast-1.4.3-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:01ae5f73431d21eead5015997ab41afa53aa1fbe252f9da060be5dad2c730ace"}, - {file = "typed_ast-1.4.3-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:c190f0899e9f9f8b6b7863debfb739abcb21a5c054f911ca3596d12b8a4c4c7f"}, - {file = "typed_ast-1.4.3-cp36-cp36m-win32.whl", hash = "sha256:398e44cd480f4d2b7ee8d98385ca104e35c81525dd98c519acff1b79bdaac363"}, - {file = "typed_ast-1.4.3-cp36-cp36m-win_amd64.whl", hash = "sha256:bff6ad71c81b3bba8fa35f0f1921fb24ff4476235a6e94a26ada2e54370e6da7"}, - {file = "typed_ast-1.4.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0fb71b8c643187d7492c1f8352f2c15b4c4af3f6338f21681d3681b3dc31a266"}, - {file = "typed_ast-1.4.3-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:760ad187b1041a154f0e4d0f6aae3e40fdb51d6de16e5c99aedadd9246450e9e"}, - {file = "typed_ast-1.4.3-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:5feca99c17af94057417d744607b82dd0a664fd5e4ca98061480fd8b14b18d04"}, - {file = "typed_ast-1.4.3-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:95431a26309a21874005845c21118c83991c63ea800dd44843e42a916aec5899"}, - {file = "typed_ast-1.4.3-cp37-cp37m-win32.whl", hash = "sha256:aee0c1256be6c07bd3e1263ff920c325b59849dc95392a05f258bb9b259cf39c"}, - {file = "typed_ast-1.4.3-cp37-cp37m-win_amd64.whl", hash = "sha256:9ad2c92ec681e02baf81fdfa056fe0d818645efa9af1f1cd5fd6f1bd2bdfd805"}, - {file = "typed_ast-1.4.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b36b4f3920103a25e1d5d024d155c504080959582b928e91cb608a65c3a49e1a"}, - {file = "typed_ast-1.4.3-cp38-cp38-manylinux1_i686.whl", hash = "sha256:067a74454df670dcaa4e59349a2e5c81e567d8d65458d480a5b3dfecec08c5ff"}, - {file = "typed_ast-1.4.3-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7538e495704e2ccda9b234b82423a4038f324f3a10c43bc088a1636180f11a41"}, - {file = "typed_ast-1.4.3-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:af3d4a73793725138d6b334d9d247ce7e5f084d96284ed23f22ee626a7b88e39"}, - {file = "typed_ast-1.4.3-cp38-cp38-win32.whl", hash = "sha256:f2362f3cb0f3172c42938946dbc5b7843c2a28aec307c49100c8b38764eb6927"}, - {file = "typed_ast-1.4.3-cp38-cp38-win_amd64.whl", hash = "sha256:dd4a21253f42b8d2b48410cb31fe501d32f8b9fbeb1f55063ad102fe9c425e40"}, - {file = "typed_ast-1.4.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f328adcfebed9f11301eaedfa48e15bdece9b519fb27e6a8c01aa52a17ec31b3"}, - {file = "typed_ast-1.4.3-cp39-cp39-manylinux1_i686.whl", hash = "sha256:2c726c276d09fc5c414693a2de063f521052d9ea7c240ce553316f70656c84d4"}, - {file = "typed_ast-1.4.3-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:cae53c389825d3b46fb37538441f75d6aecc4174f615d048321b716df2757fb0"}, - {file = "typed_ast-1.4.3-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:b9574c6f03f685070d859e75c7f9eeca02d6933273b5e69572e5ff9d5e3931c3"}, - {file = "typed_ast-1.4.3-cp39-cp39-win32.whl", hash = "sha256:209596a4ec71d990d71d5e0d312ac935d86930e6eecff6ccc7007fe54d703808"}, - {file = "typed_ast-1.4.3-cp39-cp39-win_amd64.whl", hash = "sha256:9c6d1a54552b5330bc657b7ef0eae25d00ba7ffe85d9ea8ae6540d2197a3788c"}, - {file = "typed_ast-1.4.3.tar.gz", hash = "sha256:fb1bbeac803adea29cedd70781399c99138358c26d05fcbd23c13016b7f5ec65"}, -] -typing-extensions = [ - {file = "typing_extensions-4.2.0-py3-none-any.whl", hash = "sha256:6657594ee297170d19f67d55c05852a874e7eb634f4f753dbd667855e07c1708"}, - {file = "typing_extensions-4.2.0.tar.gz", hash = "sha256:f1c24655a0da0d1b67f07e17a5e6b2a105894e6824b92096378bb3668ef02376"}, -] -urllib3 = [ - {file = "urllib3-1.26.9-py2.py3-none-any.whl", hash = "sha256:44ece4d53fb1706f667c9bd1c648f5469a2ec925fcf3a776667042d645472c14"}, - {file = "urllib3-1.26.9.tar.gz", hash = "sha256:aabaf16477806a5e1dd19aa41f8c2b7950dd3c746362d7e3223dbe6de6ac448e"}, -] -wcwidth = [ - {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"}, - {file = "wcwidth-0.2.5.tar.gz", hash = "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"}, -] -webencodings = [ - {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, - {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, -] -werkzeug = [ - {file = "Werkzeug-2.1.1-py3-none-any.whl", hash = "sha256:3c5493ece8268fecdcdc9c0b112211acd006354723b280d643ec732b6d4063d6"}, - {file = "Werkzeug-2.1.1.tar.gz", hash = "sha256:f8e89a20aeabbe8a893c24a461d3ee5dad2123b05cc6abd73ceed01d39c3ae74"}, -] -widgetsnbextension = [ - {file = "widgetsnbextension-3.6.0-py2.py3-none-any.whl", hash = "sha256:4fd321cad39fdcf8a8e248a657202d42917ada8e8ed5dd3f60f073e0d54ceabd"}, - {file = "widgetsnbextension-3.6.0.tar.gz", hash = "sha256:e84a7a9fcb9baf3d57106e184a7389a8f8eb935bf741a5eb9d60aa18cc029a80"}, -] -wrapt = [ - {file = "wrapt-1.14.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:5a9a1889cc01ed2ed5f34574c90745fab1dd06ec2eee663e8ebeefe363e8efd7"}, - {file = "wrapt-1.14.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:9a3ff5fb015f6feb78340143584d9f8a0b91b6293d6b5cf4295b3e95d179b88c"}, - {file = "wrapt-1.14.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:4b847029e2d5e11fd536c9ac3136ddc3f54bc9488a75ef7d040a3900406a91eb"}, - {file = "wrapt-1.14.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:9a5a544861b21e0e7575b6023adebe7a8c6321127bb1d238eb40d99803a0e8bd"}, - {file = "wrapt-1.14.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:88236b90dda77f0394f878324cfbae05ae6fde8a84d548cfe73a75278d760291"}, - {file = "wrapt-1.14.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:f0408e2dbad9e82b4c960274214af533f856a199c9274bd4aff55d4634dedc33"}, - {file = "wrapt-1.14.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:9d8c68c4145041b4eeae96239802cfdfd9ef927754a5be3f50505f09f309d8c6"}, - {file = "wrapt-1.14.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:22626dca56fd7f55a0733e604f1027277eb0f4f3d95ff28f15d27ac25a45f71b"}, - {file = "wrapt-1.14.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:65bf3eb34721bf18b5a021a1ad7aa05947a1767d1aa272b725728014475ea7d5"}, - {file = "wrapt-1.14.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:09d16ae7a13cff43660155383a2372b4aa09109c7127aa3f24c3cf99b891c330"}, - {file = "wrapt-1.14.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:debaf04f813ada978d7d16c7dfa16f3c9c2ec9adf4656efdc4defdf841fc2f0c"}, - {file = "wrapt-1.14.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:748df39ed634851350efa87690c2237a678ed794fe9ede3f0d79f071ee042561"}, - {file = "wrapt-1.14.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1807054aa7b61ad8d8103b3b30c9764de2e9d0c0978e9d3fc337e4e74bf25faa"}, - {file = "wrapt-1.14.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:763a73ab377390e2af26042f685a26787c402390f682443727b847e9496e4a2a"}, - {file = "wrapt-1.14.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8529b07b49b2d89d6917cfa157d3ea1dfb4d319d51e23030664a827fe5fd2131"}, - {file = "wrapt-1.14.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:68aeefac31c1f73949662ba8affaf9950b9938b712fb9d428fa2a07e40ee57f8"}, - {file = "wrapt-1.14.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59d7d92cee84a547d91267f0fea381c363121d70fe90b12cd88241bd9b0e1763"}, - {file = "wrapt-1.14.0-cp310-cp310-win32.whl", hash = "sha256:3a88254881e8a8c4784ecc9cb2249ff757fd94b911d5df9a5984961b96113fff"}, - {file = "wrapt-1.14.0-cp310-cp310-win_amd64.whl", hash = "sha256:9a242871b3d8eecc56d350e5e03ea1854de47b17f040446da0e47dc3e0b9ad4d"}, - {file = "wrapt-1.14.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:a65bffd24409454b889af33b6c49d0d9bcd1a219b972fba975ac935f17bdf627"}, - {file = "wrapt-1.14.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9d9fcd06c952efa4b6b95f3d788a819b7f33d11bea377be6b8980c95e7d10775"}, - {file = "wrapt-1.14.0-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:db6a0ddc1282ceb9032e41853e659c9b638789be38e5b8ad7498caac00231c23"}, - {file = "wrapt-1.14.0-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:14e7e2c5f5fca67e9a6d5f753d21f138398cad2b1159913ec9e9a67745f09ba3"}, - {file = "wrapt-1.14.0-cp35-cp35m-win32.whl", hash = "sha256:6d9810d4f697d58fd66039ab959e6d37e63ab377008ef1d63904df25956c7db0"}, - {file = "wrapt-1.14.0-cp35-cp35m-win_amd64.whl", hash = "sha256:d808a5a5411982a09fef6b49aac62986274ab050e9d3e9817ad65b2791ed1425"}, - {file = "wrapt-1.14.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b77159d9862374da213f741af0c361720200ab7ad21b9f12556e0eb95912cd48"}, - {file = "wrapt-1.14.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:36a76a7527df8583112b24adc01748cd51a2d14e905b337a6fefa8b96fc708fb"}, - {file = "wrapt-1.14.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a0057b5435a65b933cbf5d859cd4956624df37b8bf0917c71756e4b3d9958b9e"}, - {file = "wrapt-1.14.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a0a4ca02752ced5f37498827e49c414d694ad7cf451ee850e3ff160f2bee9d3"}, - {file = "wrapt-1.14.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:8c6be72eac3c14baa473620e04f74186c5d8f45d80f8f2b4eda6e1d18af808e8"}, - {file = "wrapt-1.14.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:21b1106bff6ece8cb203ef45b4f5778d7226c941c83aaaa1e1f0f4f32cc148cd"}, - {file = "wrapt-1.14.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:493da1f8b1bb8a623c16552fb4a1e164c0200447eb83d3f68b44315ead3f9036"}, - {file = "wrapt-1.14.0-cp36-cp36m-win32.whl", hash = "sha256:89ba3d548ee1e6291a20f3c7380c92f71e358ce8b9e48161401e087e0bc740f8"}, - {file = "wrapt-1.14.0-cp36-cp36m-win_amd64.whl", hash = "sha256:729d5e96566f44fccac6c4447ec2332636b4fe273f03da128fff8d5559782b06"}, - {file = "wrapt-1.14.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:891c353e95bb11abb548ca95c8b98050f3620a7378332eb90d6acdef35b401d4"}, - {file = "wrapt-1.14.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23f96134a3aa24cc50614920cc087e22f87439053d886e474638c68c8d15dc80"}, - {file = "wrapt-1.14.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6807bcee549a8cb2f38f73f469703a1d8d5d990815c3004f21ddb68a567385ce"}, - {file = "wrapt-1.14.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6915682f9a9bc4cf2908e83caf5895a685da1fbd20b6d485dafb8e218a338279"}, - {file = "wrapt-1.14.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:f2f3bc7cd9c9fcd39143f11342eb5963317bd54ecc98e3650ca22704b69d9653"}, - {file = "wrapt-1.14.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:3a71dbd792cc7a3d772ef8cd08d3048593f13d6f40a11f3427c000cf0a5b36a0"}, - {file = "wrapt-1.14.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:5a0898a640559dec00f3614ffb11d97a2666ee9a2a6bad1259c9facd01a1d4d9"}, - {file = "wrapt-1.14.0-cp37-cp37m-win32.whl", hash = "sha256:167e4793dc987f77fd476862d32fa404d42b71f6a85d3b38cbce711dba5e6b68"}, - {file = "wrapt-1.14.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d066ffc5ed0be00cd0352c95800a519cf9e4b5dd34a028d301bdc7177c72daf3"}, - {file = "wrapt-1.14.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d9bdfa74d369256e4218000a629978590fd7cb6cf6893251dad13d051090436d"}, - {file = "wrapt-1.14.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2498762814dd7dd2a1d0248eda2afbc3dd9c11537bc8200a4b21789b6df6cd38"}, - {file = "wrapt-1.14.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f24ca7953f2643d59a9c87d6e272d8adddd4a53bb62b9208f36db408d7aafc7"}, - {file = "wrapt-1.14.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b835b86bd5a1bdbe257d610eecab07bf685b1af2a7563093e0e69180c1d4af1"}, - {file = "wrapt-1.14.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b21650fa6907e523869e0396c5bd591cc326e5c1dd594dcdccac089561cacfb8"}, - {file = "wrapt-1.14.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:354d9fc6b1e44750e2a67b4b108841f5f5ea08853453ecbf44c81fdc2e0d50bd"}, - {file = "wrapt-1.14.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1f83e9c21cd5275991076b2ba1cd35418af3504667affb4745b48937e214bafe"}, - {file = "wrapt-1.14.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:61e1a064906ccba038aa3c4a5a82f6199749efbbb3cef0804ae5c37f550eded0"}, - {file = "wrapt-1.14.0-cp38-cp38-win32.whl", hash = "sha256:28c659878f684365d53cf59dc9a1929ea2eecd7ac65da762be8b1ba193f7e84f"}, - {file = "wrapt-1.14.0-cp38-cp38-win_amd64.whl", hash = "sha256:b0ed6ad6c9640671689c2dbe6244680fe8b897c08fd1fab2228429b66c518e5e"}, - {file = "wrapt-1.14.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b3f7e671fb19734c872566e57ce7fc235fa953d7c181bb4ef138e17d607dc8a1"}, - {file = "wrapt-1.14.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:87fa943e8bbe40c8c1ba4086971a6fefbf75e9991217c55ed1bcb2f1985bd3d4"}, - {file = "wrapt-1.14.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4775a574e9d84e0212f5b18886cace049a42e13e12009bb0491562a48bb2b758"}, - {file = "wrapt-1.14.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9d57677238a0c5411c76097b8b93bdebb02eb845814c90f0b01727527a179e4d"}, - {file = "wrapt-1.14.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00108411e0f34c52ce16f81f1d308a571df7784932cc7491d1e94be2ee93374b"}, - {file = "wrapt-1.14.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d332eecf307fca852d02b63f35a7872de32d5ba8b4ec32da82f45df986b39ff6"}, - {file = "wrapt-1.14.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:01f799def9b96a8ec1ef6b9c1bbaf2bbc859b87545efbecc4a78faea13d0e3a0"}, - {file = "wrapt-1.14.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:47045ed35481e857918ae78b54891fac0c1d197f22c95778e66302668309336c"}, - {file = "wrapt-1.14.0-cp39-cp39-win32.whl", hash = "sha256:2eca15d6b947cfff51ed76b2d60fd172c6ecd418ddab1c5126032d27f74bc350"}, - {file = "wrapt-1.14.0-cp39-cp39-win_amd64.whl", hash = "sha256:bb36fbb48b22985d13a6b496ea5fb9bb2a076fea943831643836c9f6febbcfdc"}, - {file = "wrapt-1.14.0.tar.gz", hash = "sha256:8323a43bd9c91f62bb7d4be74cc9ff10090e7ef820e27bfe8815c57e68261311"}, -] -yarl = [ - {file = "yarl-1.7.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f2a8508f7350512434e41065684076f640ecce176d262a7d54f0da41d99c5a95"}, - {file = "yarl-1.7.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:da6df107b9ccfe52d3a48165e48d72db0eca3e3029b5b8cb4fe6ee3cb870ba8b"}, - {file = "yarl-1.7.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a1d0894f238763717bdcfea74558c94e3bc34aeacd3351d769460c1a586a8b05"}, - {file = "yarl-1.7.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfe4b95b7e00c6635a72e2d00b478e8a28bfb122dc76349a06e20792eb53a523"}, - {file = "yarl-1.7.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c145ab54702334c42237a6c6c4cc08703b6aa9b94e2f227ceb3d477d20c36c63"}, - {file = "yarl-1.7.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1ca56f002eaf7998b5fcf73b2421790da9d2586331805f38acd9997743114e98"}, - {file = "yarl-1.7.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1d3d5ad8ea96bd6d643d80c7b8d5977b4e2fb1bab6c9da7322616fd26203d125"}, - {file = "yarl-1.7.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:167ab7f64e409e9bdd99333fe8c67b5574a1f0495dcfd905bc7454e766729b9e"}, - {file = "yarl-1.7.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:95a1873b6c0dd1c437fb3bb4a4aaa699a48c218ac7ca1e74b0bee0ab16c7d60d"}, - {file = "yarl-1.7.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6152224d0a1eb254f97df3997d79dadd8bb2c1a02ef283dbb34b97d4f8492d23"}, - {file = "yarl-1.7.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:5bb7d54b8f61ba6eee541fba4b83d22b8a046b4ef4d8eb7f15a7e35db2e1e245"}, - {file = "yarl-1.7.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:9c1f083e7e71b2dd01f7cd7434a5f88c15213194df38bc29b388ccdf1492b739"}, - {file = "yarl-1.7.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f44477ae29025d8ea87ec308539f95963ffdc31a82f42ca9deecf2d505242e72"}, - {file = "yarl-1.7.2-cp310-cp310-win32.whl", hash = "sha256:cff3ba513db55cc6a35076f32c4cdc27032bd075c9faef31fec749e64b45d26c"}, - {file = "yarl-1.7.2-cp310-cp310-win_amd64.whl", hash = "sha256:c9c6d927e098c2d360695f2e9d38870b2e92e0919be07dbe339aefa32a090265"}, - {file = "yarl-1.7.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:9b4c77d92d56a4c5027572752aa35082e40c561eec776048330d2907aead891d"}, - {file = "yarl-1.7.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c01a89a44bb672c38f42b49cdb0ad667b116d731b3f4c896f72302ff77d71656"}, - {file = "yarl-1.7.2-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c19324a1c5399b602f3b6e7db9478e5b1adf5cf58901996fc973fe4fccd73eed"}, - {file = "yarl-1.7.2-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3abddf0b8e41445426d29f955b24aeecc83fa1072be1be4e0d194134a7d9baee"}, - {file = "yarl-1.7.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6a1a9fe17621af43e9b9fcea8bd088ba682c8192d744b386ee3c47b56eaabb2c"}, - {file = "yarl-1.7.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8b0915ee85150963a9504c10de4e4729ae700af11df0dc5550e6587ed7891e92"}, - {file = "yarl-1.7.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:29e0656d5497733dcddc21797da5a2ab990c0cb9719f1f969e58a4abac66234d"}, - {file = "yarl-1.7.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:bf19725fec28452474d9887a128e98dd67eee7b7d52e932e6949c532d820dc3b"}, - {file = "yarl-1.7.2-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:d6f3d62e16c10e88d2168ba2d065aa374e3c538998ed04996cd373ff2036d64c"}, - {file = "yarl-1.7.2-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:ac10bbac36cd89eac19f4e51c032ba6b412b3892b685076f4acd2de18ca990aa"}, - {file = "yarl-1.7.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:aa32aaa97d8b2ed4e54dc65d241a0da1c627454950f7d7b1f95b13985afd6c5d"}, - {file = "yarl-1.7.2-cp36-cp36m-win32.whl", hash = "sha256:87f6e082bce21464857ba58b569370e7b547d239ca22248be68ea5d6b51464a1"}, - {file = "yarl-1.7.2-cp36-cp36m-win_amd64.whl", hash = "sha256:ac35ccde589ab6a1870a484ed136d49a26bcd06b6a1c6397b1967ca13ceb3913"}, - {file = "yarl-1.7.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a467a431a0817a292121c13cbe637348b546e6ef47ca14a790aa2fa8cc93df63"}, - {file = "yarl-1.7.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ab0c3274d0a846840bf6c27d2c60ba771a12e4d7586bf550eefc2df0b56b3b4"}, - {file = "yarl-1.7.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d260d4dc495c05d6600264a197d9d6f7fc9347f21d2594926202fd08cf89a8ba"}, - {file = "yarl-1.7.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fc4dd8b01a8112809e6b636b00f487846956402834a7fd59d46d4f4267181c41"}, - {file = "yarl-1.7.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c1164a2eac148d85bbdd23e07dfcc930f2e633220f3eb3c3e2a25f6148c2819e"}, - {file = "yarl-1.7.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:67e94028817defe5e705079b10a8438b8cb56e7115fa01640e9c0bb3edf67332"}, - {file = "yarl-1.7.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:89ccbf58e6a0ab89d487c92a490cb5660d06c3a47ca08872859672f9c511fc52"}, - {file = "yarl-1.7.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:8cce6f9fa3df25f55521fbb5c7e4a736683148bcc0c75b21863789e5185f9185"}, - {file = "yarl-1.7.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:211fcd65c58bf250fb994b53bc45a442ddc9f441f6fec53e65de8cba48ded986"}, - {file = "yarl-1.7.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c10ea1e80a697cf7d80d1ed414b5cb8f1eec07d618f54637067ae3c0334133c4"}, - {file = "yarl-1.7.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:52690eb521d690ab041c3919666bea13ab9fbff80d615ec16fa81a297131276b"}, - {file = "yarl-1.7.2-cp37-cp37m-win32.whl", hash = "sha256:695ba021a9e04418507fa930d5f0704edbce47076bdcfeeaba1c83683e5649d1"}, - {file = "yarl-1.7.2-cp37-cp37m-win_amd64.whl", hash = "sha256:c17965ff3706beedafd458c452bf15bac693ecd146a60a06a214614dc097a271"}, - {file = "yarl-1.7.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:fce78593346c014d0d986b7ebc80d782b7f5e19843ca798ed62f8e3ba8728576"}, - {file = "yarl-1.7.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c2a1ac41a6aa980db03d098a5531f13985edcb451bcd9d00670b03129922cd0d"}, - {file = "yarl-1.7.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:39d5493c5ecd75c8093fa7700a2fb5c94fe28c839c8e40144b7ab7ccba6938c8"}, - {file = "yarl-1.7.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1eb6480ef366d75b54c68164094a6a560c247370a68c02dddb11f20c4c6d3c9d"}, - {file = "yarl-1.7.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ba63585a89c9885f18331a55d25fe81dc2d82b71311ff8bd378fc8004202ff6"}, - {file = "yarl-1.7.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e39378894ee6ae9f555ae2de332d513a5763276a9265f8e7cbaeb1b1ee74623a"}, - {file = "yarl-1.7.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c0910c6b6c31359d2f6184828888c983d54d09d581a4a23547a35f1d0b9484b1"}, - {file = "yarl-1.7.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6feca8b6bfb9eef6ee057628e71e1734caf520a907b6ec0d62839e8293e945c0"}, - {file = "yarl-1.7.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8300401dc88cad23f5b4e4c1226f44a5aa696436a4026e456fe0e5d2f7f486e6"}, - {file = "yarl-1.7.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:788713c2896f426a4e166b11f4ec538b5736294ebf7d5f654ae445fd44270832"}, - {file = "yarl-1.7.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:fd547ec596d90c8676e369dd8a581a21227fe9b4ad37d0dc7feb4ccf544c2d59"}, - {file = "yarl-1.7.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:737e401cd0c493f7e3dd4db72aca11cfe069531c9761b8ea474926936b3c57c8"}, - {file = "yarl-1.7.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:baf81561f2972fb895e7844882898bda1eef4b07b5b385bcd308d2098f1a767b"}, - {file = "yarl-1.7.2-cp38-cp38-win32.whl", hash = "sha256:ede3b46cdb719c794427dcce9d8beb4abe8b9aa1e97526cc20de9bd6583ad1ef"}, - {file = "yarl-1.7.2-cp38-cp38-win_amd64.whl", hash = "sha256:cc8b7a7254c0fc3187d43d6cb54b5032d2365efd1df0cd1749c0c4df5f0ad45f"}, - {file = "yarl-1.7.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:580c1f15500e137a8c37053e4cbf6058944d4c114701fa59944607505c2fe3a0"}, - {file = "yarl-1.7.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3ec1d9a0d7780416e657f1e405ba35ec1ba453a4f1511eb8b9fbab81cb8b3ce1"}, - {file = "yarl-1.7.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3bf8cfe8856708ede6a73907bf0501f2dc4e104085e070a41f5d88e7faf237f3"}, - {file = "yarl-1.7.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1be4bbb3d27a4e9aa5f3df2ab61e3701ce8fcbd3e9846dbce7c033a7e8136746"}, - {file = "yarl-1.7.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:534b047277a9a19d858cde163aba93f3e1677d5acd92f7d10ace419d478540de"}, - {file = "yarl-1.7.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c6ddcd80d79c96eb19c354d9dca95291589c5954099836b7c8d29278a7ec0bda"}, - {file = "yarl-1.7.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9bfcd43c65fbb339dc7086b5315750efa42a34eefad0256ba114cd8ad3896f4b"}, - {file = "yarl-1.7.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f64394bd7ceef1237cc604b5a89bf748c95982a84bcd3c4bbeb40f685c810794"}, - {file = "yarl-1.7.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:044daf3012e43d4b3538562da94a88fb12a6490652dbc29fb19adfa02cf72eac"}, - {file = "yarl-1.7.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:368bcf400247318382cc150aaa632582d0780b28ee6053cd80268c7e72796dec"}, - {file = "yarl-1.7.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:bab827163113177aee910adb1f48ff7af31ee0289f434f7e22d10baf624a6dfe"}, - {file = "yarl-1.7.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:0cba38120db72123db7c58322fa69e3c0efa933040ffb586c3a87c063ec7cae8"}, - {file = "yarl-1.7.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:59218fef177296451b23214c91ea3aba7858b4ae3306dde120224cfe0f7a6ee8"}, - {file = "yarl-1.7.2-cp39-cp39-win32.whl", hash = "sha256:1edc172dcca3f11b38a9d5c7505c83c1913c0addc99cd28e993efeaafdfaa18d"}, - {file = "yarl-1.7.2-cp39-cp39-win_amd64.whl", hash = "sha256:797c2c412b04403d2da075fb93c123df35239cd7b4cc4e0cd9e5839b73f52c58"}, - {file = "yarl-1.7.2.tar.gz", hash = "sha256:45399b46d60c253327a460e99856752009fcee5f5d3c80b2f7c0cae1c38d56dd"}, -] -zipp = [ - {file = "zipp-3.8.0-py3-none-any.whl", hash = "sha256:c4f6e5bbf48e74f7a38e7cc5b0480ff42b0ae5178957d564d18932525d5cf099"}, - {file = "zipp-3.8.0.tar.gz", hash = "sha256:56bf8aadb83c24db6c4b577e13de374ccfb67da2078beba1d037c17980bf43ad"}, -] +rsa = [] +scikit-learn = [] +scipy = [] +send2trash = [] +setuptools-scm = [] +six = [] +sniffio = [] +snowballstemmer = [] +soupsieve = [] +sphinx = [] +sphinxcontrib-applehelp = [] +sphinxcontrib-devhelp = [] +sphinxcontrib-htmlhelp = [] +sphinxcontrib-jsmath = [] +sphinxcontrib-qthelp = [] +sphinxcontrib-serializinghtml = [] +sqlalchemy = [] +stack-data = [] +stevedore = [] +tables = [] +tensorboard = [] +tensorboard-data-server = [] +tensorboard-plugin-wit = [] +tensorboardx = [] +tensorflow = [] +tensorflow-estimator = [] +tensorflow-io-gcs-filesystem = [] +tensorflow-serving-api = [] +termcolor = [] +terminado = [] +threadpoolctl = [] +timeout-decorator = [] +tinycss2 = [] +toml = [] +tomli = [] +tomlkit = [] +torch = [] +torchmetrics = [] +tornado = [] +tqdm = [] +traitlets = [] +typed-ast = [] +typing-extensions = [] +urllib3 = [] +wcwidth = [] +webencodings = [] +websocket-client = [] +werkzeug = [] +widgetsnbextension = [] +wrapt = [] +yarl = [] +zipp = [] diff --git a/pyproject.toml b/pyproject.toml index 1b00c9e..5cb2dcb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "aizynthfinder" -version = "3.5.0" +version = "3.6.0" description = "Retrosynthetic route finding using neural network guided Monte-Carlo tree search" authors = ["Molecular AI group "] license = "MIT" @@ -13,34 +13,34 @@ mccabe-complexity = 9 [tool.pylint.'MESSAGES CONTROL'] max-line-length = 120 max-args = 6 -max-attributes = 15 +max-attributes = 20 min-public-methods = 0 -disable = "W1201, W1203, R0401, W0707, W0221, W0603, R0801, R1735, W1514, C0209, W0237, R1732, W0602, typecheck" +disable = "W3101, R0022, W1201, W1203, R0401, W0707, W0221, W0603, R0801, R1735, W1514, C0209, W0237, R1732, W0602, R0914, typecheck" [tool.poetry.dependencies] -python = ">=3.7,<3.10" -deprecated = "^1.2.10" -grpcio = "^1.24.0" +python = ">=3.8,<3.10" ipywidgets = "^7.5.1" jinja2 = "^3.0.0" jupyter = "^1.0.0" jupytext = "^1.3.3" -matplotlib = "^3.0.0" -more-itertools = "^8.2.0" networkx = "^2.4" +more-itertools = "^8.2.0" +deprecated = "^1.2.10" pandas = "^1.0.0" pillow = "^9.0.0" -pymongo = "^3.10.1" -rdchiral = "^1.0.0" requests = "^2.23.0" -scikit-learn = ">0.21.0" -scipy = "^1.0" +rdchiral = "^1.0.0" +rdkit = "^2022.3.3" tables = "^3.6.1" tensorflow = "^2.8.0" -tensorflow-serving-api = "^2.1.0" tqdm = "^4.42.1" -timeout-decorator = "^0.5.0" -route_distances = { url = "https://github.com/MolecularAI/route-distances/archive/refs/tags/v1.0.1.tar.gz" } +grpcio = {version = "^1.24.0", optional=true} +tensorflow-serving-api = {version = "^2.1.0", optional=true} +pymongo = {version = "^3.10.1", optional=true} +route-distances = {version = "^1.1.0", optional=true} +scipy = {version = "^1.0", optional=true} +matplotlib = {version = "^3.0.0", optional=true} +timeout-decorator = {version = "^0.5.0", optional=true} [tool.poetry.dev-dependencies] black = "^22.0.0" @@ -55,19 +55,16 @@ sphinx = "^4.0.0" mypy = "^0.800" pylint = "^2.7.0" +[tool.poetry.extras] +all = ["grpcio", "tensorflow-serving-api", "pymongo", "route-distances", "scipy", "matplotlib", "timeout-decorator"] + [tool.poetry.scripts] aizynthapp = "aizynthfinder.interfaces.aizynthapp:main" aizynthcli = "aizynthfinder.interfaces.aizynthcli:main" -aizynth_training = "aizynthfinder.training.training:main" cat_aizynth_output = "aizynthfinder.tools.cat_output:main" download_public_data = "aizynthfinder.tools.download_public_data:main" -make_false_products = "aizynthfinder.training.make_false_products:main" -preprocess_expansion = "aizynthfinder.training.preprocess_expansion:main" -preprocess_filter = "aizynthfinder.training.preprocess_filter:main" -preprocess_recommender = "aizynthfinder.training.preprocess_recommender:main" -preprocess_rollout = "aizynthfinder.training.preprocess_expansion:main" smiles2stock = "aizynthfinder.tools.make_stock:main" [build-system] requires = ["poetry_core>=1.0.0"] -build-backend = "poetry.core.masonry.api" +build-backend = "poetry.core.masonry.api" \ No newline at end of file diff --git a/tests/data/linear_route.json b/tests/data/linear_route.json index a4e183e..53df39d 100644 --- a/tests/data/linear_route.json +++ b/tests/data/linear_route.json @@ -1,5 +1,9 @@ { "type": "mol", + "route_metadata": { + "created_at_iteration": 1, + "is_solved": true + }, "hide": false, "smiles": "OOc1ccc(-c2ccc(NC3CCCC(C4C=CC=C4)C3)cc2)cc1", "is_chemical": true, diff --git a/tests/mcts/test_node.py b/tests/mcts/test_node.py index 50d046d..4688fdb 100644 --- a/tests/mcts/test_node.py +++ b/tests/mcts/test_node.py @@ -5,6 +5,7 @@ def test_root_state_properties(generate_root): assert round(root.state.score, 4) == 0.0491 assert root.state.stock_availability == ["Not in stock"] assert hash(root.state) == hash(root2.state) + assert root.created_at_iteration is None def test_expand_root_node(setup_mcts_search): @@ -126,3 +127,18 @@ def test_expand_dead_end(setup_policies, generate_root): assert not node.is_expandable assert not node.is_expanded + + +def test_expand_recursive(setup_policies, generate_root, default_config): + """This was implemented to check that a non-recursive version + of `promising_child` did not raise a recursion exception""" + root_smiles = "CCCCOc1ccc(CC(=O)N(C)O)cc1" + expansions = {root_smiles: [{"smiles": "", "prior": 0.01} for _ in range(1000)]} + setup_policies(expansions) + default_config.cutoff_number = 1000 + node = generate_root(root_smiles, default_config) + node.expand() + + child = node.promising_child() + + assert child is None diff --git a/tests/test_analysis.py b/tests/test_analysis.py index cc1ec00..b2bf812 100644 --- a/tests/test_analysis.py +++ b/tests/test_analysis.py @@ -6,7 +6,7 @@ from aizynthfinder.analysis import TreeAnalysis, RouteCollection from aizynthfinder.analysis.utils import RouteSelectionArguments -from aizynthfinder.reactiontree import ReactionTree +from aizynthfinder.reactiontree import ReactionTree, SUPPORT_DISTANCES from aizynthfinder.search.mcts import MctsSearchTree from aizynthfinder.context.scoring import StateScorer, NumberOfReactionsScorer @@ -130,7 +130,7 @@ def test_create_route_collection_full(setup_analysis, mocker): mocker.patch("aizynthfinder.reactiontree.ReactionTree.to_dict") mocker.patch("aizynthfinder.reactiontree.json.dumps") - mocker.patch("aizynthfinder.utils.image.make_graphviz_image") + mocker.patch("aizynthfinder.reactiontree.RouteImageFactory") # Just see that the code does not crash, does not verify content assert len(routes.images) == 5 @@ -188,6 +188,50 @@ def test_dict_with_scores(setup_analysis): assert np.round(dicts[0]["scores"]["state score"], 3) == 0.994 +def test_dict_with_extras_no_arg(setup_analysis): + analysis, _ = setup_analysis() + routes = RouteCollection.from_analysis(analysis) + + dicts = routes.dict_with_extra() + + assert "scores" not in dicts[0] + assert "metadata" not in dicts[0] + + +def test_dict_with_extras_only_score(setup_analysis): + analysis, _ = setup_analysis() + routes = RouteCollection.from_analysis(analysis) + + dicts = routes.dict_with_extra(include_scores=True) + + assert "scores" in dicts[0] + assert "metadata" not in dicts[0] + assert np.round(dicts[0]["scores"]["state score"], 3) == 0.994 + + +def test_dict_with_extras_only_metadata(setup_analysis): + analysis, _ = setup_analysis() + routes = RouteCollection.from_analysis(analysis) + + dicts = routes.dict_with_extra(include_metadata=True) + + assert "scores" not in dicts[0] + assert "metadata" in dicts[0] + assert dicts[0]["metadata"] == {"created_at_iteration": 0, "is_solved": True} + + +def test_dict_with_extras_all(setup_analysis): + analysis, _ = setup_analysis() + routes = RouteCollection.from_analysis(analysis) + + dicts = routes.dict_with_extra(include_metadata=True, include_scores=True) + + assert "scores" in dicts[0] + assert "metadata" in dicts[0] + assert np.round(dicts[0]["scores"]["state score"], 3) == 0.994 + assert dicts[0]["metadata"] == {"created_at_iteration": 0, "is_solved": True} + + def test_compute_new_score_for_trees(default_config, setup_linear_reaction_tree): rt = setup_linear_reaction_tree() routes = RouteCollection(reaction_trees=[rt]) @@ -294,6 +338,9 @@ def test_create_combine_tree_to_visjs(load_reaction_tree, tmpdir): assert len([name for name in tarobj.getnames() if name.endswith(".png")]) == 8 +@pytest.mark.xfail( + condition=not SUPPORT_DISTANCES, reason="route_distances not installed" +) def test_distance_collection(load_reaction_tree): collection = RouteCollection( reaction_trees=[ @@ -318,6 +365,9 @@ def test_distance_collection(load_reaction_tree): assert pytest.approx(dist_mat3[2, 1], abs=1e-2) == 0.7483 +@pytest.mark.xfail( + condition=not SUPPORT_DISTANCES, reason="route_distances not installed" +) def test_clustering_collection(load_reaction_tree): collection = RouteCollection( reaction_trees=[ @@ -334,6 +384,9 @@ def test_clustering_collection(load_reaction_tree): assert collection.clusters[1].reaction_trees == [collection.reaction_trees[0]] +@pytest.mark.xfail( + condition=not SUPPORT_DISTANCES, reason="route_distances not installed" +) def test_clustering_collection_timeout(load_reaction_tree): collection = RouteCollection( reaction_trees=[ diff --git a/tests/test_cli.py b/tests/test_cli.py index ed07789..f53daf0 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -7,21 +7,33 @@ import pytest from aizynthfinder.interfaces import AiZynthApp -from aizynthfinder.interfaces.gui import ClusteringGui from aizynthfinder.interfaces.aizynthapp import main as app_main from aizynthfinder.interfaces.aizynthcli import main as cli_main from aizynthfinder.tools.make_stock import main as make_stock_main from aizynthfinder.tools.cat_output import main as cat_main -from aizynthfinder.training.preprocess_expansion import main as expansion_main -from aizynthfinder.training.preprocess_recommender import main as recommender_main -from aizynthfinder.training.preprocess_filter import main as filter_main -from aizynthfinder.training.make_false_products import main as make_false_main from aizynthfinder.tools.download_public_data import main as download_main -from aizynthfinder.training.utils import Config from aizynthfinder.chem import MoleculeException from aizynthfinder.analysis import RouteCollection from aizynthfinder.reactiontree import ReactionTree +try: + from aizynthfinder.training.utils import Config + from aizynthfinder.training.preprocess_expansion import main as expansion_main + from aizynthfinder.training.preprocess_recommender import main as recommender_main + from aizynthfinder.training.preprocess_filter import main as filter_main + from aizynthfinder.training.make_false_products import main as make_false_main +except ImportError: + SUPPORT_TRAINING = False +else: + SUPPORT_TRAINING = True + +try: + from aizynthfinder.interfaces.gui import ClusteringGui +except ImportError: + SUPPORT_CLUSTERING = False +else: + SUPPORT_CLUSTERING = True + def test_create_gui_app(mocker): display_patch = mocker.patch("aizynthfinder.interfaces.aizynthapp.display") @@ -34,6 +46,9 @@ def test_create_gui_app(mocker): display_patch.assert_called() +@pytest.mark.xfail( + condition=not SUPPORT_CLUSTERING, reason="route_distances not installed" +) def test_create_clustering_gui(mocker, load_reaction_tree): collection = RouteCollection( reaction_trees=[ @@ -187,6 +202,21 @@ def test_cli_single_smile_with_postprocessing( sys.path.remove(module_path) +def test_cli_smiles_argument_incorrect( + add_cli_arguments, + tmpdir, + capsys, +): + smiles_input = str(tmpdir / "smiles_source.txt") + add_cli_arguments(f"--smiles {smiles_input} --config config_local.yml") + + cli_main() + + output = capsys.readouterr() + assert "Cannot start retrosynthesis planning." in output.out + assert smiles_input in output.out + + def test_make_stock_from_plain_file( create_dummy_smiles_source, tmpdir, add_cli_arguments, default_config ): @@ -212,6 +242,7 @@ def test_cat_main(tmpdir, add_cli_arguments, create_dummy_stock1, create_dummy_s assert len(data) == 4 +@pytest.mark.xfail(condition=not SUPPORT_TRAINING, reason="dependencies not installed") def test_preprocess_expansion(write_yaml, shared_datadir, add_cli_arguments): config_path = write_yaml( { @@ -247,6 +278,7 @@ def test_preprocess_expansion(write_yaml, shared_datadir, add_cli_arguments): assert column in data.columns +@pytest.mark.xfail(condition=not SUPPORT_TRAINING, reason="dependencies not installed") def test_preprocess_expansion_no_class(write_yaml, shared_datadir, add_cli_arguments): config_path = write_yaml( { @@ -292,6 +324,7 @@ def test_preprocess_expansion_no_class(write_yaml, shared_datadir, add_cli_argum assert column in data.columns +@pytest.mark.xfail(condition=not SUPPORT_TRAINING, reason="dependencies not installed") def test_preprocess_expansion_csv_headers(write_yaml, shared_datadir): config_path = write_yaml( { @@ -332,6 +365,7 @@ def test_preprocess_expansion_csv_headers(write_yaml, shared_datadir): assert column in data.columns +@pytest.mark.xfail(condition=not SUPPORT_TRAINING, reason="dependencies not installed") def test_preprocess_expansion_bad_product( write_yaml, shared_datadir, add_cli_arguments ): @@ -346,6 +380,7 @@ def test_preprocess_expansion_bad_product( expansion_main([config_path]) +@pytest.mark.xfail(condition=not SUPPORT_TRAINING, reason="dependencies not installed") def test_preprocess_expansion_skip_bad_product( write_yaml, shared_datadir, add_cli_arguments ): @@ -364,6 +399,7 @@ def test_preprocess_expansion_skip_bad_product( assert len(lines) == 10 +@pytest.mark.xfail(condition=not SUPPORT_TRAINING, reason="dependencies not installed") def test_preprocess_recommender(write_yaml, shared_datadir, add_cli_arguments): config_path = write_yaml( { @@ -401,6 +437,7 @@ def test_preprocess_recommender(write_yaml, shared_datadir, add_cli_arguments): assert len(data) == 2 +@pytest.mark.xfail(condition=not SUPPORT_TRAINING, reason="dependencies not installed") def test_preprocess_recommender_csv_headers( write_yaml, shared_datadir, add_cli_arguments ): @@ -445,6 +482,7 @@ def test_preprocess_recommender_csv_headers( assert len(data) == 2 +@pytest.mark.xfail(condition=not SUPPORT_TRAINING, reason="dependencies not installed") def test_preprocess_filter(write_yaml, shared_datadir, add_cli_arguments): def duplicate_file(filename): with open(shared_datadir / filename, "r") as fileobj: @@ -489,6 +527,7 @@ def duplicate_file(filename): assert len(lines) == 2 +@pytest.mark.xfail(condition=not SUPPORT_TRAINING, reason="dependencies not installed") def test_preprocess_filter_csv_headers(write_yaml, shared_datadir, add_cli_arguments): def duplicate_file(filename): with open(shared_datadir / filename, "r") as fileobj: @@ -538,6 +577,7 @@ def duplicate_file(filename): assert len(lines) == 3 +@pytest.mark.xfail(condition=not SUPPORT_TRAINING, reason="dependencies not installed") def test_make_false_products(write_yaml, shared_datadir, add_cli_arguments): config_path = write_yaml( { diff --git a/tests/test_finder.py b/tests/test_finder.py index db9c59e..8be1ce5 100644 --- a/tests/test_finder.py +++ b/tests/test_finder.py @@ -35,6 +35,7 @@ def test_dead_end_expansion(setup_aizynthfinder): assert len(nodes) == 1 assert state_smiles(nodes[0].state) == [root_smi] assert finder.search_stats["iterations"] == 100 + assert nodes[0].created_at_iteration == 0 def test_one_expansion(setup_aizynthfinder): @@ -57,6 +58,8 @@ def test_one_expansion(setup_aizynthfinder): assert len(nodes) == 2 assert state_smiles(nodes[0].state) == [root_smi] assert state_smiles(nodes[1].state) == child1_smi + assert nodes[0].created_at_iteration == 0 + assert nodes[1].created_at_iteration == 1 assert finder.search_stats["iterations"] == 1 assert finder.search_stats["returned_first"] @@ -129,6 +132,12 @@ def test_two_expansions_two_children(setup_aizynthfinder): nodes = list(finder.tree.graph()) assert len(nodes) == 5 + assert nodes[0].created_at_iteration == 0 + assert nodes[1].created_at_iteration == 1 + assert nodes[2].created_at_iteration == 1 + assert nodes[3].created_at_iteration == 2 + assert nodes[4].created_at_iteration == 2 + assert state_smiles(nodes[0].state) == [root_smi] assert state_smiles(nodes[1].state) == child1_smi assert ( @@ -615,3 +624,22 @@ def test_two_expansions_two_children_one_filtered(setup_aizynthfinder, caplog): state_smiles(nodes[2].state) == [child1_smi[0], child1_smi[2]] + grandchild_smi ) assert finder.search_stats["iterations"] == 10 + + +def test_stock_info(setup_aizynthfinder): + root_smi = "CN1CCC(C(=O)c2cccc(NC(=O)c3ccc(F)cc3)c2F)CC1" + child1_smi = ["CN1CCC(Cl)CC1", "N#Cc1cccc(NC(=O)c2ccc(F)cc2)c1F", "O"] + lookup = {root_smi: {"smiles": ".".join(child1_smi), "prior": 1.0}} + finder = setup_aizynthfinder(lookup, child1_smi) + + # Test first with return_first + finder.config.return_first = True + finder.tree_search() + + assert finder.stock_info() == {} + + finder.build_routes() + + expected = {smi: ["stock"] for smi in child1_smi} + expected[root_smi] = [] + assert finder.stock_info() == expected diff --git a/tests/test_reactiontree.py b/tests/test_reactiontree.py index a44158e..41fd08a 100644 --- a/tests/test_reactiontree.py +++ b/tests/test_reactiontree.py @@ -1,6 +1,6 @@ import pytest -from aizynthfinder.reactiontree import ReactionTree +from aizynthfinder.reactiontree import ReactionTree, SUPPORT_DISTANCES def test_mcts_route_to_reactiontree(setup_linear_mcts, load_reaction_tree): @@ -14,6 +14,7 @@ def remove_metadata(tree_dict): expected_dict = load_reaction_tree("linear_route.json") reaction_tree = node.to_reaction_tree() + assert reaction_tree.metadata == {"created_at_iteration": 1, "is_solved": True} mol_nodes = list(reaction_tree.molecules()) assert len(mol_nodes) == 5 @@ -28,7 +29,7 @@ def remove_metadata(tree_dict): "c1ccccc1", "OOc1ccccc1", } - actual_dict = reaction_tree.to_dict() + actual_dict = reaction_tree.to_dict(include_metadata=True) remove_metadata(actual_dict) assert actual_dict == expected_dict @@ -39,12 +40,12 @@ def test_reactiontree_from_dict(load_reaction_tree): rt = ReactionTree.from_dict(expected) # Simply check that the to_dict() and from_dict() gives/produces the same dict - resp = rt.to_dict() + resp = rt.to_dict(include_metadata=True) assert resp == expected def test_reactiontree_to_image(load_reaction_tree, mocker): - patched_make_image = mocker.patch("aizynthfinder.reactiontree.make_graphviz_image") + patched_make_image = mocker.patch("aizynthfinder.reactiontree.RouteImageFactory") tree = load_reaction_tree("linear_route.json") rt = ReactionTree.from_dict(tree) @@ -52,36 +53,6 @@ def test_reactiontree_to_image(load_reaction_tree, mocker): rt.to_image() patched_make_image.assert_called_once() - assert len(patched_make_image.call_args[0][0]) == len(list(rt.molecules())) - assert len(patched_make_image.call_args[0][1]) == len(list(rt.reactions())) - - -def test_reactiontree_to_image_hiding(load_reaction_tree, mocker): - patched_make_image = mocker.patch("aizynthfinder.reactiontree.make_graphviz_image") - - tree = load_reaction_tree("linear_route.json", 1) - rt = ReactionTree.from_dict(tree) - for idx, reaction in enumerate(rt.reactions()): - if idx == 0: - continue - rt.graph.nodes[reaction]["hide"] = True - for idx, mol in enumerate(rt.leafs()): - if idx == 2: - continue - rt.graph.nodes[mol]["hide"] = True - - rt.to_image(show_all=True) - - patched_make_image.assert_called_once() - assert len(patched_make_image.call_args[0][0]) == len(list(rt.molecules())) - assert len(patched_make_image.call_args[0][1]) == len(list(rt.reactions())) - - patched_make_image.reset_mock() - - rt.to_image(show_all=False) - - assert len(patched_make_image.call_args[0][0]) == len(list(rt.molecules())) - 2 - assert len(patched_make_image.call_args[0][1]) == len(list(rt.reactions())) - 1 def test_route_node_depth_from_mcts(setup_branched_reaction_tree): @@ -135,6 +106,9 @@ def test_route_node_depth_from_json(load_reaction_tree): assert rt.depth(mol) == 2 * rt.graph.nodes[mol]["transform"] +@pytest.mark.xfail( + condition=not SUPPORT_DISTANCES, reason="route_distances not installed" +) def test_route_distance_self(load_reaction_tree): dict_ = load_reaction_tree("branched_route.json", 0) rt = ReactionTree.from_dict(dict_) @@ -142,6 +116,9 @@ def test_route_distance_self(load_reaction_tree): assert rt.distance_to(rt) == 0.0 +@pytest.mark.xfail( + condition=not SUPPORT_DISTANCES, reason="route_distances not installed" +) def test_route_distance_other(load_reaction_tree): dict_ = load_reaction_tree("branched_route.json") rt1 = ReactionTree.from_dict(dict_) diff --git a/tests/test_training.py b/tests/test_training.py index ff5f016..db888ad 100644 --- a/tests/test_training.py +++ b/tests/test_training.py @@ -3,29 +3,36 @@ import pytest import pandas as pd import numpy as np -from scipy import sparse - -from aizynthfinder.training.utils import ( - Config, - create_reactants_molecules, - reverse_template, - reaction_hash, - split_and_save_data, - smiles_to_fingerprint, - is_sanitizable, - reaction_to_fingerprints, -) -from aizynthfinder.training.keras_models import ( - ExpansionModelSequence, - FilterModelSequence, -) -from aizynthfinder.training.make_false_products import ( - strict_application, - random_application, - recommender_application, -) + from aizynthfinder.chem import Molecule +try: + from scipy import sparse + + from aizynthfinder.training.utils import ( + Config, + create_reactants_molecules, + reverse_template, + reaction_hash, + split_and_save_data, + smiles_to_fingerprint, + is_sanitizable, + reaction_to_fingerprints, + ) + from aizynthfinder.training.keras_models import ( + ExpansionModelSequence, + FilterModelSequence, + ) + from aizynthfinder.training.make_false_products import ( + strict_application, + random_application, + recommender_application, + ) +except ImportError: + SUPPORT_TRAINING = False +else: + SUPPORT_TRAINING = True + @pytest.fixture def default_config(): @@ -60,6 +67,7 @@ def expansion_model_sequence(mocker, default_config): return ExpansionModelSequence(default_config, "training") +@pytest.mark.xfail(condition=not SUPPORT_TRAINING, reason="Dependencies not installed") def test_empty_config(default_config, write_yaml): filename = write_yaml({}) @@ -68,6 +76,7 @@ def test_empty_config(default_config, write_yaml): assert config._config == default_config._config +@pytest.mark.xfail(condition=not SUPPORT_TRAINING, reason="Dependencies not installed") def test_update_single_setting(default_config, write_yaml): filename = write_yaml({"fingerprint_len": 10}) @@ -77,6 +86,7 @@ def test_update_single_setting(default_config, write_yaml): assert config["template_occurrence"] == default_config["template_occurrence"] +@pytest.mark.xfail(condition=not SUPPORT_TRAINING, reason="Dependencies not installed") def test_update_nested_setting(default_config, write_yaml): filename = write_yaml( {"split_size": {"training": 0.8, "testing": 0.1, "validation": 0.1}} @@ -90,6 +100,7 @@ def test_update_nested_setting(default_config, write_yaml): assert config["split_size"]["validation"] == 0.1 +@pytest.mark.xfail(condition=not SUPPORT_TRAINING, reason="Dependencies not installed") def test_update_invalid_setting(default_config, write_yaml): filename = write_yaml( {"fingerprint_len": {"training": 0.8, "testing": 0.1, "validation": 0.1}} @@ -100,6 +111,7 @@ def test_update_invalid_setting(default_config, write_yaml): assert config["fingerprint_len"] == default_config["fingerprint_len"] +@pytest.mark.xfail(condition=not SUPPORT_TRAINING, reason="Dependencies not installed") def test_config_filename(default_config): filename = default_config.filename("raw_library") @@ -111,6 +123,7 @@ def test_config_filename(default_config): assert filename.endswith("something") +@pytest.mark.xfail(condition=not SUPPORT_TRAINING, reason="Dependencies not installed") def test_split_and_save_data_frame(tmpdir, default_config): default_config["output_path"] = str(tmpdir) default_config["file_prefix"] = "dummy" @@ -141,6 +154,7 @@ def test_split_and_save_data_frame(tmpdir, default_config): assert len(data_read) == 5 +@pytest.mark.xfail(condition=not SUPPORT_TRAINING, reason="Dependencies not installed") def test_split_and_save_data_ndarray(tmpdir, default_config): default_config["output_path"] = str(tmpdir) default_config["file_prefix"] = "dummy" @@ -171,6 +185,7 @@ def test_split_and_save_data_ndarray(tmpdir, default_config): assert len(data_read) == 5 +@pytest.mark.xfail(condition=not SUPPORT_TRAINING, reason="Dependencies not installed") def test_split_and_save_data_sparse(default_config, tmpdir): default_config["output_path"] = str(tmpdir) default_config["file_prefix"] = "dummy" @@ -201,6 +216,7 @@ def test_split_and_save_data_sparse(default_config, tmpdir): assert data_read.shape[0] == 5 +@pytest.mark.xfail(condition=not SUPPORT_TRAINING, reason="Dependencies not installed") def test_smiles_to_fingerprint(default_config): default_config["fingerprint_len"] = 10 @@ -209,6 +225,7 @@ def test_smiles_to_fingerprint(default_config): assert sum(fingerprint) == 1 +@pytest.mark.xfail(condition=not SUPPORT_TRAINING, reason="Dependencies not installed") def test_is_sanitizable(): flag = is_sanitizable(("O")) @@ -218,6 +235,7 @@ def test_is_sanitizable(): assert not flag +@pytest.mark.xfail(condition=not SUPPORT_TRAINING, reason="Dependencies not installed") def test_reaction_to_fingerprint(default_config): default_config["fingerprint_len"] = 10 product_smiles = "[Cl:1][c:2]1[c:3]([C:4](=[O:5])[C:12]([F:11])([F:13])[F:14])[cH:6][c:7]([F:10])[cH:8][cH:9]1" # noqa @@ -230,12 +248,14 @@ def test_reaction_to_fingerprint(default_config): assert list(fingerprint) == [-1, -1, -1, 0, -1, 0, 0, -1, 0, -1] +@pytest.mark.xfail(condition=not SUPPORT_TRAINING, reason="Dependencies not installed") def test_expansion_model_sequence_loading(expansion_model_sequence): assert expansion_model_sequence.input_dim == 10 assert expansion_model_sequence.output_dim == 100 +@pytest.mark.xfail(condition=not SUPPORT_TRAINING, reason="Dependencies not installed") def test_expansion_model_sequence_slicing(expansion_model_sequence, default_config): seq = expansion_model_sequence @@ -247,11 +267,13 @@ def test_expansion_model_sequence_slicing(expansion_model_sequence, default_conf assert ybatch.shape[1] == expansion_model_sequence.output_dim +@pytest.mark.xfail(condition=not SUPPORT_TRAINING, reason="Dependencies not installed") def test_filter_model_sequence_loading(filter_model_sequence): assert filter_model_sequence.input_dim == 10 +@pytest.mark.xfail(condition=not SUPPORT_TRAINING, reason="Dependencies not installed") def test_filter_model_sequence_slicing(filter_model_sequence, default_config): seq = filter_model_sequence @@ -264,6 +286,7 @@ def test_filter_model_sequence_slicing(filter_model_sequence, default_config): assert xbatch[1].shape[1] == filter_model_sequence.input_dim +@pytest.mark.xfail(condition=not SUPPORT_TRAINING, reason="Dependencies not installed") def test_reactants_molecules(): reactants_str = "C[O:5][C:4](=O)[c:3]1[c:2]([Cl:1])[cH:9][cH:8][c:7]([F:10])[cH:6]1.C[Si](C)(C)[C:12]([F:11])([F:13])[F:14].COCCOC.Cl.[Cs+].[F-]" # noqa @@ -277,6 +300,7 @@ def test_reactants_molecules(): assert mols[1].smiles == "C[Si](C)(C)[C:12]([F:11])([F:13])[F:14]" +@pytest.mark.xfail(condition=not SUPPORT_TRAINING, reason="Dependencies not installed") def test_reverse_template(): retro_template = "([C:2]-[C:3](=[O;D1;H0:4])-[N;H0;D3;+0:5](-[CH3;D1;+0:1])-[c:6])>>(I-[CH3;D1;+0:1]).([C:2]-[C:3](=[O;D1;H0:4])-[NH;D2;+0:5]-[c:6])" # noqa expected = "(I-[CH3;D1;+0:1]).([C:2]-[C:3](=[O;D1;H0:4])-[NH;D2;+0:5]-[c:6])>>([C:2]-[C:3](=[O;D1;H0:4])-[N;H0;D3;+0:5](-[CH3;D1;+0:1])-[c:6])" # noqa @@ -284,6 +308,7 @@ def test_reverse_template(): assert reverse_template(retro_template) == expected +@pytest.mark.xfail(condition=not SUPPORT_TRAINING, reason="Dependencies not installed") def test_reaction_hash(): reactants_str = "C[O:5][C:4](=O)[c:3]1[c:2]([Cl:1])[cH:9][cH:8][c:7]([F:10])[cH:6]1.C[Si](C)(C)[C:12]([F:11])([F:13])[F:14].COCCOC.Cl.[Cs+].[F-].[Na+].[OH-]" # noqa product = Molecule( @@ -316,6 +341,7 @@ def library_data(shared_datadir, default_config): return library, default_config +@pytest.mark.xfail(condition=not SUPPORT_TRAINING, reason="Dependencies not installed") def test_strict_application(library_data): library, config = library_data errors = [] @@ -336,6 +362,7 @@ def test_strict_application(library_data): next(gen) +@pytest.mark.xfail(condition=not SUPPORT_TRAINING, reason="Dependencies not installed") def test_random_application(library_data): library, config = library_data errors = [] @@ -357,6 +384,7 @@ def test_random_application(library_data): next(gen) +@pytest.mark.xfail(condition=not SUPPORT_TRAINING, reason="Dependencies not installed") def test_recommender_application(library_data, mocker): mocked_load_model = mocker.patch( "aizynthfinder.training.make_false_products.load_keras_model" diff --git a/tests/utils/test_external_tf_models.py b/tests/utils/test_external_tf_models.py index ef21125..a0e2f9a 100644 --- a/tests/utils/test_external_tf_models.py +++ b/tests/utils/test_external_tf_models.py @@ -3,9 +3,16 @@ import tensorflow as tf import aizynthfinder.utils.models as models -from aizynthfinder.utils.models import ExternalModelViaREST, ExternalModelViaGRPC +from aizynthfinder.utils.models import ( + ExternalModelViaREST, + ExternalModelViaGRPC, + SUPPORT_EXTERNAL_APIS, +) +@pytest.mark.xfail( + condition=not SUPPORT_EXTERNAL_APIS, reason="API packages not installed" +) @pytest.fixture() def setup_rest_mock(mocker): models.TF_SERVING_HOST = "localhost" @@ -27,6 +34,9 @@ def wrapper(response): models.TF_SERVING_REST_PORT = None +@pytest.mark.xfail( + condition=not SUPPORT_EXTERNAL_APIS, reason="API packages not installed" +) @pytest.fixture() def setup_grpc_mock(mocker, signature_grpc): models.TF_SERVING_HOST = "localhost" @@ -92,6 +102,9 @@ def signature_grpc(): } +@pytest.mark.xfail( + condition=not SUPPORT_EXTERNAL_APIS, reason="API packages not installed" +) def test_setup_tf_rest_model(signature_rest, setup_rest_mock): setup_rest_mock(signature_rest) @@ -100,6 +113,9 @@ def test_setup_tf_rest_model(signature_rest, setup_rest_mock): assert len(model) == 2048 +@pytest.mark.xfail( + condition=not SUPPORT_EXTERNAL_APIS, reason="API packages not installed" +) def test_predict_tf_rest_model(signature_rest, setup_rest_mock): responses = [signature_rest, {"outputs": [0.0, 1.0]}] setup_rest_mock(responses) @@ -110,6 +126,9 @@ def test_predict_tf_rest_model(signature_rest, setup_rest_mock): assert list(out) == [0.0, 1.0] +@pytest.mark.xfail( + condition=not SUPPORT_EXTERNAL_APIS, reason="API packages not installed" +) def test_setup_tf_grpc_model(setup_grpc_mock): setup_grpc_mock() @@ -118,6 +137,9 @@ def test_setup_tf_grpc_model(setup_grpc_mock): assert len(model) == 2048 +@pytest.mark.xfail( + condition=not SUPPORT_EXTERNAL_APIS, reason="API packages not installed" +) def test_predict_tf_grpc_model(setup_grpc_mock): setup_grpc_mock({"output": tf.make_tensor_proto(tf.constant([0.0, 1.0]))}) model = ExternalModelViaGRPC("dummy") diff --git a/tests/utils/test_image.py b/tests/utils/test_image.py index 5935766..0245dab 100644 --- a/tests/utils/test_image.py +++ b/tests/utils/test_image.py @@ -1,5 +1,8 @@ import os +import shutil +import json from tarfile import TarFile +from pathlib import Path import pytest from PIL import Image, ImageDraw @@ -61,6 +64,9 @@ def test_save_molecule_images(): assert len(os.listdir(image.IMAGE_FOLDER)) == nfiles + 2 +@pytest.mark.xfail( + condition=shutil.which("dot") is None, reason="graphviz is not installed" +) def test_graphviz_usage(mocker, tmpdir, setup_graphviz_graph): mkstemp_patch = mocker.patch("aizynthfinder.utils.image.tempfile.mkstemp") files = [ @@ -78,6 +84,9 @@ def test_graphviz_usage(mocker, tmpdir, setup_graphviz_graph): assert os.path.exists(filename) +@pytest.mark.xfail( + condition=shutil.which("dot") is None, reason="graphviz is not installed" +) def test_graphviz_usage_exception_dot(mocker, tmpdir, setup_graphviz_graph): exists_patch = mocker.patch("aizynthfinder.utils.image.os.path.exists") exists_patch.side_effect = [False, True] @@ -110,3 +119,20 @@ def test_visjs_page(mocker, tmpdir, setup_graphviz_graph): with TarFile(filename) as tarobj: assert "./route.html" in tarobj.getnames() assert len([name for name in tarobj.getnames() if name.endswith(".png")]) == 1 + + +def test_image_factory(request): + route_path = Path(request.fspath).parent.parent / "data" / "branched_route.json" + with open(route_path, "r") as fileobj: + dict_ = json.load(fileobj) + dict_["children"][0]["children"][1]["hide"] = True + + factory0 = image.RouteImageFactory(dict_) + + factory_tighter = image.RouteImageFactory(dict_, margin=50) + assert factory0.image.width == factory_tighter.image.width + 150 + assert factory0.image.height == factory_tighter.image.height + 175 + + factory_hidden = image.RouteImageFactory(dict_, show_all=False) + assert factory0.image.width == factory_hidden.image.width + assert factory0.image.height > factory_hidden.image.height From ef846c274a956d4bf89ffcc2d65d61f9b9485552 Mon Sep 17 00:00:00 2001 From: "Genheden, Samuel" Date: Mon, 28 Nov 2022 15:10:53 +0100 Subject: [PATCH 6/7] Update workflows, README and metadata --- .github/workflows/docs.yml | 2 +- .github/workflows/tests.yml | 2 +- README.md | 17 +++++++++-------- env-users.yml | 2 +- pyproject.toml | 3 +++ 5 files changed, 15 insertions(+), 11 deletions(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 47b54a9..3e052aa 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -14,7 +14,7 @@ jobs: wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh | bash -s -- --batch conda env create -f env-dev.yml - conda run --name aizynth-dev poetry install + conda run --name aizynth-dev poetry install -E all conda run --name aizynth-dev inv build-docs - name: deploy uses: peaceiris/actions-gh-pages@v3 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 2966c89..dfe7211 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -15,7 +15,7 @@ jobs: run: | wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh | bash -s -- --batch - conda env create -vv -f env-dev.yml + conda env create -f env-dev.yml conda run --name aizynth-dev poetry install -E all conda run --name aizynth-dev inv full-tests - name: Upload coverage to Codecov diff --git a/README.md b/README.md index 500b70c..c9a82f9 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ Before you begin, ensure you have met the following requirements: * Linux, Windows or macOS platforms are supported - as long as the dependencies are supported on these platforms. -* You have installed [anaconda](https://www.anaconda.com/) or [miniconda](https://docs.conda.io/en/latest/miniconda.html) with python 3.6 - 3.9 +* You have installed [anaconda](https://www.anaconda.com/) or [miniconda](https://docs.conda.io/en/latest/miniconda.html) with python 3.8 - 3.9 The tool has been developed on a Linux platform, but the software has been tested on Windows 10 and macOS Catalina. @@ -29,15 +29,16 @@ The tool has been developed on a Linux platform, but the software has been teste First time, execute the following command in a console or an Anaconda prompt - conda env create -f https://raw.githubusercontent.com/MolecularAI/aizynthfinder/master/env-users.yml + conda create "python>=3.8,<3.10" -n aizynth-env -And if you want to update the environment - - conda env update -n aizynth-env -f https://raw.githubusercontent.com/MolecularAI/aizynthfinder/master/env-users.yml - -The package is now installed in a new conda environment, that you need to activate each time you want to use it +To install, activate the environment and install the package using pypi conda activate aizynth-env + python -m pip install aizynthfinder[all] + +for a smaller package, without all the functionality, you can also type + + python -m pip install aizynthfinder ### For developers @@ -47,7 +48,7 @@ Then execute the following commands in the root of the repository conda env create -f env-dev.yml conda activate aizynth-dev - poetry install --E all + poetry install -E all the `aizynthfinder` package is now installed in editable mode. diff --git a/env-users.yml b/env-users.yml index 26315c1..4d72754 100644 --- a/env-users.yml +++ b/env-users.yml @@ -7,5 +7,5 @@ dependencies: - git - pip>=20.0 - pip: - - https://github.com/MolecularAI/aizynthfinder/archive/v3.4.0.tar.gz + - https://github.com/MolecularAI/aizynthfinder/archive/v3.6.0.tar.gz \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 5cb2dcb..c070871 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,6 +6,9 @@ authors = ["Molecular AI group "] license = "MIT" include = ["aizynthfinder/data/*.yml", "aizynthfinder/data/templates/*"] readme = "README.md" +homepage = "https://github.com/MolecularAI/aizynthfinder/" +repository = "https://github.com/MolecularAI/aizynthfinder/" +documentation = "https://molecularai.github.io/aizynthfinder/" [tool.pytest.ini_options] mccabe-complexity = 9 From 867d1c2459ccfa872f2eaadf4ec3bf93e381fcd9 Mon Sep 17 00:00:00 2001 From: "Genheden, Samuel" Date: Mon, 28 Nov 2022 15:23:03 +0100 Subject: [PATCH 7/7] Update downloaded models --- CHANGELOG.md | 1 + aizynthfinder/tools/download_public_data.py | 19 ++++++++++++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f497bfb..8af7356 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ - Graphviz dependency for route drawing is removed, pure python implementation is used instead - Dependencies reworked so that a minimal package can be installed - Extra dependencies are related to route distances, clustering, training, MongoDB and external models +- Downloaded files are now the latest USPTO and Ringbreaker models ### Trivial changes diff --git a/aizynthfinder/tools/download_public_data.py b/aizynthfinder/tools/download_public_data.py index 09211f5..0691a35 100644 --- a/aizynthfinder/tools/download_public_data.py +++ b/aizynthfinder/tools/download_public_data.py @@ -11,11 +11,19 @@ FILES_TO_DOWNLOAD = { "policy_model": { "filename": "uspto_model.hdf5", - "url": "https://ndownloader.figshare.com/files/23086454", + "url": "https://zenodo.org/record/7341155/files/uspto_keras_model.hdf5", }, "template_file": { - "filename": "uspto_templates.hdf5", - "url": "https://ndownloader.figshare.com/files/23086457", + "filename": "uspto_templates.csv.gz", + "url": "https://zenodo.org/record/7341155/files/uspto_unique_templates.csv.gz", + }, + "ringbreaker_model": { + "filename": "uspto_ringbreaker_model.hdf5", + "url": "https://zenodo.org/record/7341155/files/uspto_ringbreaker_keras_model.hdf5", + }, + "ringbreaker_templates": { + "filename": "uspto_ringbreaker_templates.csv.gz", + "url": "https://zenodo.org/record/7341155/files/uspto_ringbreaker_unique_templates.csv.gz", }, "stock": { "filename": "zinc_stock.hdf5", @@ -32,6 +40,9 @@ uspto: - {} - {} + ringbreaker: + - {} + - {} filter: files: uspto: {} @@ -78,6 +89,8 @@ def main() -> None: YAML_TEMPLATE.format( os.path.join(path, FILES_TO_DOWNLOAD["policy_model"]["filename"]), os.path.join(path, FILES_TO_DOWNLOAD["template_file"]["filename"]), + os.path.join(path, FILES_TO_DOWNLOAD["ringbreaker_model"]["filename"]), + os.path.join(path, FILES_TO_DOWNLOAD["ringbreaker_templates"]["filename"]), os.path.join(path, FILES_TO_DOWNLOAD["filter_policy"]["filename"]), os.path.join(path, FILES_TO_DOWNLOAD["stock"]["filename"]), )