{ "info": { "author": "Alejandro Molina et al.", "author_email": "molina@cs.tu-darmstadt.de", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "[![pypi](https://img.shields.io/pypi/v/spflow.svg)](https://pypi.org/project/spflow/)\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n[![Build Status](https://travis-ci.com/SPFlow/SPFlow.svg?branch=master)](https://travis-ci.com/SPFlow/SPFlow)\n\n\n# SPFlow: An Easy and Extensible Library for Sum-Product Networks\n\nSPFlow, an open-source Python library providing a simple interface to inference,\nlearning and manipulation routines for deep and tractable probabilistic models called Sum-Product Networks (SPNs).\nThe library allows one to quickly create SPNs both from data and through a domain specific language (DSL).\nIt efficiently implements several probabilistic inference routines like computing marginals, conditionals and (approximate) most probable explanations (MPEs)\nalong with sampling as well as utilities for serializing,plotting and structure statistics on an SPN.\n\nFurthermore, SPFlow is extremely extensible and customizable, allowing users to promptly create new inference and learning routines\nby injecting custom code into a light-weight functional-oriented API framework.\n\n## Getting Started\n\nThese instructions will get you a copy of the project up and running on your local machine for development and testing purposes.\n\n### Installing\n\nTo install the latest released version of SPFlow using pip\n\n```sh\npip3 install spflow\n```\n\n## Examples\n\nWe start by creating an SPN. Using a Domain-Specific Language (DSL), we can quickly create an SPN of categorical\nleave nodes like this:\n\n\n```python\nfrom spn.structure.leaves.parametric.Parametric import Categorical\n\nspn = 0.4 * (Categorical(p=[0.2, 0.8], scope=0) *\n (0.3 * (Categorical(p=[0.3, 0.7], scope=1) *\n Categorical(p=[0.4, 0.6], scope=2))\n + 0.7 * (Categorical(p=[0.5, 0.5], scope=1) *\n Categorical(p=[0.6, 0.4], scope=2))))\n + 0.6 * (Categorical(p=[0.2, 0.8], scope=0) *\n Categorical(p=[0.3, 0.7], scope=1) *\n Categorical(p=[0.4, 0.6], scope=2))\n```\n\nWe can create the same SPN using the object hierarchy:\n\n```python\nfrom spn.structure.leaves.parametric.Parametric import Categorical\n\nfrom spn.structure.Base import Sum, Product\n\nfrom spn.structure.Base import assign_ids, rebuild_scopes_bottom_up\n\n\np0 = Product(children=[Categorical(p=[0.3, 0.7], scope=1), Categorical(p=[0.4, 0.6], scope=2)])\np1 = Product(children=[Categorical(p=[0.5, 0.5], scope=1), Categorical(p=[0.6, 0.4], scope=2)])\ns1 = Sum(weights=[0.3, 0.7], children=[p0, p1])\np2 = Product(children=[Categorical(p=[0.2, 0.8], scope=0), s1])\np3 = Product(children=[Categorical(p=[0.2, 0.8], scope=0), Categorical(p=[0.3, 0.7], scope=1)])\np4 = Product(children=[p3, Categorical(p=[0.4, 0.6], scope=2)])\nspn = Sum(weights=[0.4, 0.6], children=[p2, p4])\n\nassign_ids(spn)\nrebuild_scopes_bottom_up(spn)\n\nreturn spn\n```\n\nThe p parameter indicates the probabilities, and the scope indicates the variable we are modeling.\n\n\nWe can now visualize the SPN using:\n\n```python\nfrom spn.io.Graphics import plot_spn\n\nplot_spn(spn, 'basicspn.png')\n```\n\n![basicspn.png](https://github.com/SPFlow/SPFlow/blob/master/Documentation/basicspn.png)\n\nMarginalizing an SPN means summing out all the other non-relevant variables.\nSo, if we want to marginalize the above SPN and sum out all other variables leaving only variables 1 and 2, we can do:\n\n```python\nfrom spn.algorithms.Marginalization import marginalize\n\nspn_marg = marginalize(spn, [1,2])\n```\nHere, we marginalize all the variables not in [1,2], and create a *NEW* structure that knows nothing about the previous one\nnor about the variable 0.\n\nWe can use this new spn to do all the operations we are interested in. That means, we can also plot it!\n```python\nplot_spn(spn_marg, 'marginalspn.png')\n```\n![basicspn.png](https://github.com/SPFlow/SPFlow/blob/master/Documentation/marginalspn.png)\n\nWe can also dump the SPN as text:\n```python\nfrom spn.io.Text import spn_to_str_equation\ntxt = spn_to_str_equation(spn_marg)\nprint(txt)\n```\nAnd the output is:\n```python\n(0.6*((Categorical(V1|p=[0.3, 0.7]) * Categorical(V2|p=[0.4, 0.6]))) + 0.12000000000000002*((Categorical(V1|p=[0.3, 0.7]) * Categorical(V2|p=[0.4, 0.6]))) + 0.27999999999999997*((Categorical(V1|p=[0.5, 0.5]) * Categorical(V2|p=[0.6, 0.4]))))\n```\n\nHowever, the most interesting aspect of SPNs is the tractable inference. Here is an example on how to evaluate the SPNs from above.\nSince we have 3 variables, we want to create a 2D numpy array of 3 columns and 1 row.\n```python\nimport numpy as np\ntest_data = np.array([1.0, 0.0, 1.0]).reshape(-1, 3)\n```\n\nWe then compute the log-likelihood:\n```python\nfrom spn.algorithms.Inference import log_likelihood\n\nll = log_likelihood(spn, test_data)\nprint(ll, np.exp(ll))\n```\n\nAnd the output is:\n```python\n[[-1.90730501]] [[0.14848]]\n```\n\nWe can also compute the log-likelihood of the marginal SPN:\n```python\nllm = log_likelihood(spn_marg, test_data)\nprint(llm, np.exp(llm))\n```\nNote that we used the same test_data input, as the SPN is still expecting a numpy array with data at columns 1 and 2, ignoring column 0.\nThe output is:\n```python\n[[-1.68416146]] [[0.1856]]\n```\n\nAnother alternative, is marginal inference on the original SPN. This is done by setting as np.nan the feature we want to marginalize on the fly.\nIt does not change the structure.\n\n```python\ntest_data2 = np.array([np.nan, 0.0, 1.0]).reshape(-1, 3)\nllom = log_likelihood(spn, test_data2)\nprint(llom, np.exp(llom))\n```\n\nThe output is exactly the same as the evaluation of the marginal spn:\n```python\n[[-1.68416146]] [[0.1856]]\n```\n\nWe can use tensorflow to do the evaluation in a GPU:\n```python\nfrom spn.gpu.TensorFlow import eval_tf\nlltf = eval_tf(spn, test_data)\nprint(lltf, np.exp(lltf))\n```\nThe output is as expected, equal to the one in python:\n```python\n[[-1.90730501]] [[0.14848]]\n```\n\nWe can also use tensorflow to do the parameter optimization in a GPU:\n```python\nfrom spn.gpu.TensorFlow import optimize_tf\noptimized_spn = optimize_tf(spn, test_data)\nlloptimized = log_likelihood(optimized_spn, test_data)\nprint(lloptimized, np.exp(lloptimized))\n```\nThe output is of course, higher likelihoods:\n```python\n[[-1.38152628]] [[0.25119487]]\n```\n\nWe can generate new samples that follow the joint distribution captured by the SPN!\n```python\nfrom numpy.random.mtrand import RandomState\nfrom spn.algorithms.Sampling import sample_instances\nprint(sample_instances(spn, np.array([np.nan, np.nan, np.nan] * 5).reshape(-1, 3), RandomState(123)))\n```\nHere we created 5 new instances that follow the distribution\n```python\n[[0. 1. 0.]\n [1. 0. 0.]\n [1. 1. 0.]\n [1. 1. 1.]\n [1. 1. 0.]]\n```\nthe np.nan values indicate the columns we want to sample.\n\nWe can also do conditional sampling, that is, if we have evidence for some of the variables we can pass that information\nto the SPN and sample for the rest of the variables:\n```python\nfrom numpy.random.mtrand import RandomState\nfrom spn.algorithms.Sampling import sample_instances\nprint(sample_instances(spn, np.array([np.nan, 0, 0] * 5).reshape(-1, 3), RandomState(123)))\n```\nHere we created 5 new instances whose evidence is V1=0 and V2=0\n```python\n[[0. 0. 0.]\n [1. 0. 0.]\n [0. 0. 0.]\n [1. 0. 0.]\n [1. 0. 0.]]\n```\n\nWe can do classification, by learning an SPN from data and then comparing the probabilities for the given classes:\nImagine we have the following dataset:\n\n![basicspn.png](https://github.com/SPFlow/SPFlow/blob/master/Documentation/classification_training_data.png)\n\ngenerated by two gaussians with means (5,5) and (10,10), and we label the cluster at (5,5) to be class 0 and the cluster at (10,10) to be class 1.\n\n```python\nnp.random.seed(123)\ntrain_data = np.c_[np.r_[np.random.normal(5, 1, (500, 2)), np.random.normal(10, 1, (500, 2))],\n np.r_[np.zeros((500, 1)), np.ones((500, 1))]]\n```\n\nWe can learn an SPN from data:\n\n```python\nfrom spn.algorithms.LearningWrappers import learn_parametric, learn_classifier\nfrom spn.structure.leaves.parametric.Parametric import Categorical, Gaussian\nfrom spn.structure.Base import Context\nspn_classification = learn_classifier(train_data,\n Context(parametric_types=[Gaussian, Gaussian, Categorical]).add_domains(train_data),\n learn_parametric, 2)\n```\nHere, we model our problem as containing 3 features, two Gaussians for the coordinates and one Categorical for the label.\nWe specify that the label is in column 2, and create the corresponding SPN.\n\nNow, imagine we want to classify two instances, one located at (3,4) and another one at (12,8).\nTo do that, we first create an array with two rows and 3 columns. We set the last column to np.nan to indicate that we don't know the labels.\nAnd we set the rest of the values in the 2D array accordingly.\n\n```python\ntest_classification = np.array([3.0, 4.0, np.nan, 12.0, 18.0, np.nan]).reshape(-1, 3)\n```\nthe first row is the first instance, the second row is the second instance.\n```python\n[[ 3. 4. nan]\n [12. 18. nan]]\n```\n\nWe can do classification via approximate most probable explanation (MPE).\nHere, we expect the first instance to be labeled as 0 and the second one as 1.\n```python\nfrom spn.algorithms.MPE import mpe\nprint(mpe(spn_classification, test_classification))\n```\nas we can see, both instances are classified correctly, as the correct label is set in the last column\n```python\n[[ 3. 4. 0.]\n [12. 18. 1.]]\n```\n\nWe can learn an MSPN and a parametric SPN from data:\n\n```python\nimport numpy as np\nnp.random.seed(123)\n\na = np.random.randint(2, size=1000).reshape(-1, 1)\nb = np.random.randint(3, size=1000).reshape(-1, 1)\nc = np.r_[np.random.normal(10, 5, (300, 1)), np.random.normal(20, 10, (700, 1))]\nd = 5 * a + 3 * b + c\ntrain_data = np.c_[a, b, c, d]\n\n```\nHere, we have a dataset containing four features, two Discrete and two Real valued.\n\nWe can learn an MSPN with:\n```python\nfrom spn.structure.Base import Context\nfrom spn.structure.StatisticalTypes import MetaType\n\nds_context = Context(meta_types=[MetaType.DISCRETE, MetaType.DISCRETE, MetaType.REAL, MetaType.REAL])\nds_context.add_domains(train_data)\n\nfrom spn.algorithms.LearningWrappers import learn_mspn\n\nmspn = learn_mspn(train_data, ds_context, min_instances_slice=20)\n```\n\nWe can learn a parametric SPN with:\n```python\nfrom spn.structure.Base import Context\nfrom spn.structure.leaves.parametric.Parametric import Categorical, Gaussian\n\nds_context = Context(parametric_types=[Categorical, Categorical, Gaussian, Gaussian]).add_domains(train_data)\n\nfrom spn.algorithms.LearningWrappers import learn_parametric\n\nspn = learn_parametric(train_data, ds_context, min_instances_slice=20)\n```\n\n### Multivariate leaf\n\nWe can learn a SPN with multivariate leaf. For instance SPN with Chow Liu tree (CLTs) as multivariate leaf can be learned with:\n```python\nimport numpy as np\nnp.random.seed(123)\n\ntrain_data = np.random.binomial(1, [0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,0.1], size=(100,10))\n\nfrom spn.structure.leaves.cltree.CLTree import create_cltree_leaf\nfrom spn.structure.Base import Context\nfrom spn.structure.leaves.parametric.Parametric import Bernoulli\nfrom spn.algorithms.LearningWrappers import learn_parametric\nfrom spn.algorithms.Inference import log_likelihood\n\nds_context = Context(parametric_types=[Bernoulli,Bernoulli,Bernoulli,Bernoulli,\n Bernoulli,Bernoulli,Bernoulli,Bernoulli,\n Bernoulli,Bernoulli]).add_domains(train_data)\n\nspn = learn_parametric(train_data, \n ds_context, \n min_instances_slice=20, \n min_features_slice=1, \n multivariate_leaf=True, \n leaves=create_cltree_leaf)\n\nll = log_likelihood(spn, train_data)\nprint(np.mean(ll))\n```\n\n### Cutset Networks (CNets)\n\nWith SPFlow we can learn both the structure and the parameters of CNets, a particular kind of SPNs with CLTs as leaf providing exact MPE inference, with:\n```python\nimport numpy as np\nnp.random.seed(123)\n\n\nfrom spn.structure.leaves.cltree.CLTree import create_cltree_leaf\nfrom spn.structure.Base import Context\nfrom spn.structure.leaves.parametric.Parametric import Bernoulli\nfrom spn.algorithms.LearningWrappers import learn_parametric, learn_cnet\nfrom spn.algorithms.Inference import log_likelihood\n\ntrain_data = np.random.binomial(1, [0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,0.1], size=(100,10))\n\nds_context = Context(parametric_types=[Bernoulli,Bernoulli,Bernoulli,Bernoulli,\n Bernoulli,Bernoulli,Bernoulli,Bernoulli,\n Bernoulli,Bernoulli]).add_domains(train_data)\n\n# learning a CNet with a naive mle conditioning\ncnet_naive_mle = learn_cnet(train_data, \n ds_context, \n cond=\"naive_mle\", \n min_instances_slice=20, \n min_features_slice=1)\n\n# learning a CNet with random conditioning\ncnet_random = learn_cnet(train_data, \n ds_context, \n cond=\"random\", \n min_instances_slice=20, \n min_features_slice=1)\n\nll = log_likelihood(cnet_naive_mle, train_data)\nprint(\"Naive mle conditioning\", np.mean(ll))\n\nll = log_likelihood(cnet_random, train_data)\nprint(\"Random conditioning\", np.mean(ll))\n\n# computing exact MPE\nfrom spn.algorithms.MPE import mpe\ntrain_data_mpe = train_data.astype(float)\ntrain_data_mpe[:,0] = np.nan\nprint(mpe(cnet_random, train_data_mpe)) \n```\n\n### Expectations and Moments\nSPNs allow you to compute first and higher order moments of the represented probability function by directly evaluating the tree structure. There are three main functions implemented for that.\n\nThe _Expectations_ function allows you to directly compute first oder moments given an SPN and (optionally) a list of features for which you need the expectation and an array of evidence.\n\n```python\nfrom spn.algorithms.stats.Expectations import Expectation\n\npiecewise_spn = ((0.5 * PiecewiseLinear([0, 1, 2], [0, 1, 0], [], scope=[0]) +\n 0.5 * PiecewiseLinear([-2, -1, 0], [0, 1, 0], [], scope=[0])) *\n (0.5 * PiecewiseLinear([0, 1, 2], [0, 1, 0], [], scope=[1]) +\n 0.5 * PiecewiseLinear([-1, 0, 1], [0, 1, 0], [], scope=[1])))\nExpectation(piecewise_spn) # = [[0, 0.5]]\n```\n\nIf you pass a feature scope, only the expectation for those features will be returned:\n```python\nfrom spn.algorithms.stats.Expectations import Expectation\n\npiecewise_spn = ((0.5 * PiecewiseLinear([0, 1, 2], [0, 1, 0], [], scope=[0]) +\n 0.5 * PiecewiseLinear([-2, -1, 0], [0, 1, 0], [], scope=[0])) *\n (0.5 * PiecewiseLinear([0, 1, 2], [0, 1, 0], [], scope=[1]) +\n 0.5 * PiecewiseLinear([-1, 0, 1], [0, 1, 0], [], scope=[1])))\nExpectation(piecewise_spn, feature_scope=[0]) # = [[0]]\nExpectation(piecewise_spn, feature_scope=[1]) # = [[0.5]]\n```\n\nFinally, you can also pass evidence to the network which computes the conditional expectation:\n```python\nfrom spn.algorithms.stats.Expectations import Expectation\n\npiecewise_spn = ((0.5 * PiecewiseLinear([0, 1, 2], [0, 1, 0], [], scope=[0]) +\n 0.5 * PiecewiseLinear([-2, -1, 0], [0, 1, 0], [], scope=[0])) *\n (0.5 * PiecewiseLinear([0, 1, 2], [0, 1, 0], [], scope=[1]) +\n 0.5 * PiecewiseLinear([-1, 0, 1], [0, 1, 0], [], scope=[1])))\nExpectation(piecewise_spn, feature_scope=[0], evidence=np.array([[np.nan, 0]])) # = [[0]]\nExpectation(piecewise_spn, feature_scope=[1], evidence=np.array([[0, np.nan]])) # = [[0.5]]\n\n```\n### Utilities\n\nFinally, we have some basic utilities for working with SPNs:\n\nWe can make sure that the SPN that we are using is valid, that is, it is consistent and complete.\n```python\nfrom spn.algorithms.Validity import is_valid\nprint(is_valid(spn))\n```\nThe output indicates that the SPN is valid and there are no debugging error messages:\n```python\n(True, None)\n```\n\nTo compute basic statistics on the structure of the SPN:\n```python\nfrom spn.algorithms.Statistics import get_structure_stats\nprint(get_structure_stats(spn))\n```\n\n### Layerwise SPN in PyTorch\nA layerwise implementation of leaf, sum and product nodes in PyTorch is available in the `spn.algorithms.layerwise` module. For more information, check out the [Layerwise SPN README](./src/spn/algorithms/layerwise/README.rst).\n\n### Extending the library\n\nUsing the SPN is as we have seen, relatively easy. However, we might need to extend it if we want to work with new distributions.\n\nImagine, we wanted to create a new Leaf type that models the Pareto distribution.\nWe start by creating a new class:\n```python\nfrom spn.structure.leaves.parametric.Parametric import Leaf\nclass Pareto(Leaf):\n def __init__(self, a, scope=None):\n Leaf.__init__(self, scope=scope)\n self.a = a\n```\n\nNow, if we want to do inference with this new node type, we just implement the corresponding likelihood function:\n```python\ndef pareto_likelihood(node, data=None, dtype=np.float64):\n probs = np.ones((data.shape[0], 1), dtype=dtype)\n from scipy.stats import pareto\n probs[:] = pareto.pdf(data[:, node.scope], node.a)\n return probs\n```\n\nThis function receives the node, the data on which to compute the probability and the numpy dtype for the result.\n\nNow, we just need to register this function so that it can be used seamlessly by the rest of the infrastructure:\n\n```python\nfrom spn.algorithms.Inference import add_node_likelihood\nadd_node_likelihood(Pareto, pareto_likelihood)\n```\n\nNow, we can create SPNs that use the new distribution and also evaluate them.\n\n```python\nspn = 0.3 * Pareto(2.0, scope=0) + 0.7 * Pareto(3.0, scope=0)\nlog_likelihood(spn, np.array([1.5]).reshape(-1, 1))\n```\n\nthis produces the output:\n```python\n[[-0.52324814]]\n```\n\nAll other aspects of the SPN library can be extended in a similar same way.\n\n## Papers SPFlow can reproduce\n\n* Nicola Di Mauro, Antonio Vergari, Teresa M.A. Basile, Floriana Esposito. \"Fast and Accurate Density Estimation with Extremely Randomized Cutset Networks\". In: ECML/PKDD, 2017.\n* Nicola Di Mauro, Antonio Vergari, and Teresa M.A. Basile. \"Learning Bayesian Random Cutset Forests\". In ISMIS 2015, LNAI 9384, pp. 1-11, Springer, 2015.\n* Nicola Di Mauro, Antonio Vergari, and Floriana Esposito. \"Learning Accurate Cutset Networks by Exploiting Decomposability\". In AI*IA. 2015, LNAI 9336, 1-12, Springer, 2015.\n* Antonio Vergari, Nicola Di Mauro, and Floriana Esposito. \"Simplifying, Regularizing and Strengthening Sum-Product Network Structure Learning\". In ECML/PKDD, LNCS, 343-358, Springer. 2015.\n\n## Papers implemented in SPFlow\n\n* Molina, Alejandro, Sriraam Natarajan, and Kristian Kersting. \"Poisson Sum-Product Networks: A Deep Architecture for Tractable Multivariate Poisson Distributions.\" In AAAI, pp. 2357-2363. 2017.\n\n* Molina, Alejandro, Antonio Vergari, Nicola Di Mauro, Sriraam Natarajan, Floriana Esposito, and Kristian Kersting. \"Mixed sum-product networks: A deep architecture for hybrid domains.\" In Proceedings of the AAAI Conference on Artificial Intelligence (AAAI). 2018.\n\n## Citation\nIf you find SPFlow useful please cite us in your work:\n```\n@misc{Molina2019SPFlow,\n Author = {Alejandro Molina and Antonio Vergari and Karl Stelzner and Robert Peharz and Pranav Subramani and Nicola Di Mauro and Pascal Poupart and Kristian Kersting},\n Title = {SPFlow: An Easy and Extensible Library for Deep Probabilistic Learning using Sum-Product Networks},\n Year = {2019},\n Eprint = {arXiv:1901.03704},\n}\n```\n\n## Authors\n\n* **Alejandro Molina** - *TU Darmstadt*\n* **Antonio Vergari** - *Max-Planck-Institute*\n* **Karl Stelzner** - *TU Darmstadt*\n* **Robert Peharz** - *University of Cambridge*\n* **Nicola Di Mauro** - *University of Bari Aldo Moro*\n* **Kristian Kersting** - *TU Darmstadt*\n\nSee also the list of [contributors](https://github.com/alejandromolinaml/SPFlow/contributors) who participated in this project.\n\n## Contributors\n\n* **Moritz Kulessa** - *TU Darmstadt*\n* **Claas Voelcker** - *TU Darmstadt*\n* **Simon Roesler** - *Karlsruhe Institute of Technology*\n* **Steven Lang** - *TU Darmstadt*\n\n## License\n\nThis project is licensed under the Apache License, Version 2.0 - see the [LICENSE.md](LICENSE.md) file for details\n\n\n\n## Acknowledgments\n\n* Parts of SPFlow as well as its motivating research have been supported by the Germany Science Foundation (DFG) - AIPHES, GRK 1994, and CAML, KE 1686/3-1 as part of SPP 1999- and the Federal Ministry of Education and Research (BMBF) - InDaS, 01IS17063B.\n\n\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/alejandromolinaml/SPFlow", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "spflow", "package_url": "https://pypi.org/project/spflow/", "platform": "", "project_url": "https://pypi.org/project/spflow/", "project_urls": { "Homepage": "https://github.com/alejandromolinaml/SPFlow" }, "release_url": "https://pypi.org/project/spflow/0.0.38/", "requires_dist": [ "numpy", "scipy (==1.2)", "sklearn", "statsmodels", "networkx", "joblib", "matplotlib", "pydot", "lark-parser", "tqdm", "ete3 (>=3.1.1)", "sympy", "PyQt5", "arff", "pytest" ], "requires_python": "", "summary": "Sum Product Flow: An Easy and Extensible Library for Sum-Product Networks", "version": "0.0.38" }, "last_serial": 5821565, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "9fc7c263221db20904b269041b3ff6ee", "sha256": "59ea53bf0bd50bc2535c1a89ccd0ca7b4925d62f9f681d4b7f681688da2d61db" }, "downloads": -1, "filename": "spflow-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "9fc7c263221db20904b269041b3ff6ee", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 160075, "upload_time": "2018-10-08T10:15:07", "url": "https://files.pythonhosted.org/packages/7a/2b/20bf4b0019230259892b5aabb356a6ec2873f92c91e0abcc7c931e8e3f39/spflow-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e32c41f405fd9801714319e4398b3854", "sha256": "57d1539fee95dd34f1c9cadb36b5be63cf1737a54c24f6a1b10600e69c8e31fe" }, "downloads": -1, "filename": "spflow-0.0.1.tar.gz", "has_sig": false, "md5_digest": "e32c41f405fd9801714319e4398b3854", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 101142, "upload_time": "2018-10-08T10:15:10", "url": "https://files.pythonhosted.org/packages/ad/18/e322897928e8d12dc1c0cb7028f9dea52d72cf29e3d99382c049a77ead28/spflow-0.0.1.tar.gz" } ], "0.0.10": [ { "comment_text": "", "digests": { "md5": "252158461b4f90b2726aeb85539e51ea", "sha256": "1d1b96c4cb75d34b51b6facf882723d10d0f4991403f94f27527150a128638b9" }, "downloads": -1, "filename": "spflow-0.0.10-py3-none-any.whl", "has_sig": false, "md5_digest": "252158461b4f90b2726aeb85539e51ea", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 169138, "upload_time": "2018-11-24T11:18:40", "url": "https://files.pythonhosted.org/packages/1a/03/e104df6d52c6db7aade52235f2a08c00da24cf47db2182ecb5f0222d6341/spflow-0.0.10-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8750fa664096f1cd44e0e1f7e57cd339", "sha256": "c619684f0769bf04af7337ba1a0ca93a921e66faea7af8fd00429a18bd2d3979" }, "downloads": -1, "filename": "spflow-0.0.10.tar.gz", "has_sig": false, "md5_digest": "8750fa664096f1cd44e0e1f7e57cd339", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 114301, "upload_time": "2018-11-24T11:18:42", "url": "https://files.pythonhosted.org/packages/82/d7/f96803d701e6ee56c6522b4d0d83a6d303f7b95ec7f859de95dddeb9c764/spflow-0.0.10.tar.gz" } ], "0.0.11": [ { "comment_text": "", "digests": { "md5": "5fd3f694a71066b94443c946255d87d2", "sha256": "080eeb62a89b1e3c91a22324784b9270c098ede8d0ebe4a30a09fb0f8cf266a2" }, "downloads": -1, "filename": "spflow-0.0.11-py3-none-any.whl", "has_sig": false, "md5_digest": "5fd3f694a71066b94443c946255d87d2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 169159, "upload_time": "2018-11-25T13:35:07", "url": "https://files.pythonhosted.org/packages/bf/a4/2603887fef8c98963e757584cdbc8487e456532f03359c7a2e3bf6b356f5/spflow-0.0.11-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "24e78e5cdc2a1296d6e8774d95e640a1", "sha256": "27ef09240cd5ce84aa3c2f0e11502c379369ee5dd764c31a75833cbe06f4994c" }, "downloads": -1, "filename": "spflow-0.0.11.tar.gz", "has_sig": false, "md5_digest": "24e78e5cdc2a1296d6e8774d95e640a1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 114306, "upload_time": "2018-11-25T13:35:09", "url": "https://files.pythonhosted.org/packages/2d/74/9946ddb22cb9051c7baa9db707e9e006e96dbfed64e2a962ca0d00e5d24e/spflow-0.0.11.tar.gz" } ], "0.0.12": [ { "comment_text": "", "digests": { "md5": "fe6c43790a6f7c33fd039d2c5fe33f74", "sha256": "4db9ccf154d947a5ff8ec6e1f3cf10f8d8c72ed2817eb081d0583c64009379bf" }, "downloads": -1, "filename": "spflow-0.0.12-py3-none-any.whl", "has_sig": false, "md5_digest": "fe6c43790a6f7c33fd039d2c5fe33f74", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 163805, "upload_time": "2018-11-30T14:59:53", "url": "https://files.pythonhosted.org/packages/5d/1c/8c7a6057d36fe1ae4a9dd018f979c7171586b32f96a8c219bcc1262d8e86/spflow-0.0.12-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b9ab859525293dff02812a44286428a6", "sha256": "6ab9a4e362f651ba0c2dfb5c505ab0ac290fae89571eb8a61408c835b7038e1c" }, "downloads": -1, "filename": "spflow-0.0.12.tar.gz", "has_sig": false, "md5_digest": "b9ab859525293dff02812a44286428a6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 109831, "upload_time": "2018-11-30T14:59:55", "url": "https://files.pythonhosted.org/packages/19/82/b795b7b611be6ed473a9fe5cf89a29ae54e4af987fb06f3977f7de2beb04/spflow-0.0.12.tar.gz" } ], "0.0.13": [ { "comment_text": "", "digests": { "md5": "c2617f11ef6891fef91b88668a28dd74", "sha256": "9166b8f0b47df137511d890cdc9d1276af23b8c3b08c6bd04b00ac712a939ada" }, "downloads": -1, "filename": "spflow-0.0.13-py3-none-any.whl", "has_sig": false, "md5_digest": "c2617f11ef6891fef91b88668a28dd74", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 158152, "upload_time": "2018-12-04T21:43:56", "url": "https://files.pythonhosted.org/packages/d0/6f/91e8939a7d42d9aa0b10ee8385b0e2b2e8abf99f5e25819c68573b652556/spflow-0.0.13-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6f57001b543ad93864ae3396023fe35b", "sha256": "afbee773accd33cf913f306bdb1ca5aa9b8e896e54ca4abb11043288c9ef5001" }, "downloads": -1, "filename": "spflow-0.0.13.tar.gz", "has_sig": false, "md5_digest": "6f57001b543ad93864ae3396023fe35b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 106022, "upload_time": "2018-12-04T21:43:59", "url": "https://files.pythonhosted.org/packages/09/8f/656a692f3ed6fd8b8ba6a22de5ce89a6584008c2da92cea5d955145c751d/spflow-0.0.13.tar.gz" } ], "0.0.14": [ { "comment_text": "", "digests": { "md5": "c557907af0453c4be74f89ca67dbaed0", "sha256": "abcdf8b4c63a5f143ad6cb1f7d72155e287b93a5cd57035a15b8df7d7748d572" }, "downloads": -1, "filename": "spflow-0.0.14-py3-none-any.whl", "has_sig": false, "md5_digest": "c557907af0453c4be74f89ca67dbaed0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 158821, "upload_time": "2018-12-06T10:55:42", "url": "https://files.pythonhosted.org/packages/22/31/8e2390e6ac6653b16868fd8f3519995116cda3e42143a360e121864b8ae8/spflow-0.0.14-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7846c2799077035cc5269287003f38c4", "sha256": "c4390d12a77bb418e68025e943aeb89f4ec3286ed6f670e75656b234a35ecb44" }, "downloads": -1, "filename": "spflow-0.0.14.tar.gz", "has_sig": false, "md5_digest": "7846c2799077035cc5269287003f38c4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 106694, "upload_time": "2018-12-06T10:55:44", "url": "https://files.pythonhosted.org/packages/f5/c5/dc4f329b2f742e11698d96127deb1c6303b33520e013dca960d3ebf25f6a/spflow-0.0.14.tar.gz" } ], "0.0.15": [ { "comment_text": "", "digests": { "md5": "6d7848435bf6edd0b1715e68b4c60f38", "sha256": "6969bc7853cb866012b887bcc8083c405bb9bbda8a5fef4f4d63f3810dbaa488" }, "downloads": -1, "filename": "spflow-0.0.15-py3-none-any.whl", "has_sig": false, "md5_digest": "6d7848435bf6edd0b1715e68b4c60f38", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 158818, "upload_time": "2018-12-06T15:09:46", "url": "https://files.pythonhosted.org/packages/a6/1f/647487d4efbf807718eda15c8d773d03644255a862fdf37d400d59293a0b/spflow-0.0.15-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fe4237398a04cd20173312ee9eee0fa4", "sha256": "16a0f534772efeb28776971e7e1bd00a4a83d46c2bff7d36f59abc8795eacc99" }, "downloads": -1, "filename": "spflow-0.0.15.tar.gz", "has_sig": false, "md5_digest": "fe4237398a04cd20173312ee9eee0fa4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 106704, "upload_time": "2018-12-06T15:09:48", "url": "https://files.pythonhosted.org/packages/ad/74/33ba8cbdde7f6abec43a35804c9b2ccfd3c6aafa6611dffa7389ae7869dc/spflow-0.0.15.tar.gz" } ], "0.0.16": [ { "comment_text": "", "digests": { "md5": "42186aec5e733361eca01ccb6a263f9a", "sha256": "1a99ab85e5d1a559929dde1a799f7b9c7e245d880222a306079ea32239805d27" }, "downloads": -1, "filename": "spflow-0.0.16-py3-none-any.whl", "has_sig": false, "md5_digest": "42186aec5e733361eca01ccb6a263f9a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 160456, "upload_time": "2018-12-10T18:11:55", "url": "https://files.pythonhosted.org/packages/4e/b3/2bc64b5102d9a1170a8b1d53627b5a807370457074875c9298e370731657/spflow-0.0.16-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "affc11c4614012930096b725f8a5421d", "sha256": "3f681932a68e97830a44dfedd742e1623f76d472132cede568fb062aec870c77" }, "downloads": -1, "filename": "spflow-0.0.16.tar.gz", "has_sig": false, "md5_digest": "affc11c4614012930096b725f8a5421d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 107994, "upload_time": "2018-12-10T18:11:58", "url": "https://files.pythonhosted.org/packages/f8/76/2049d1bb47975069c628298c35bf444b76fcabbde9865601898f10017fa8/spflow-0.0.16.tar.gz" } ], "0.0.17": [ { "comment_text": "", "digests": { "md5": "e9059daa98ea621cd725f6f150f6aad7", "sha256": "c7221ed8fe87c4a962928942abdf9e0cb4fe47965246b0e74c5436b1950d0720" }, "downloads": -1, "filename": "spflow-0.0.17-py3-none-any.whl", "has_sig": false, "md5_digest": "e9059daa98ea621cd725f6f150f6aad7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 160533, "upload_time": "2018-12-11T15:40:07", "url": "https://files.pythonhosted.org/packages/5b/0c/545912feac33b0b97229897d6ac8dc56f530f361ae3eb69fdf057eae39a0/spflow-0.0.17-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5ecc465745cebb41438e1e55ddf3ce1c", "sha256": "43ef25a7ee5e2658dab3b7551c9acf7ef1ef233aa3f32109ab566880bd0d2d1c" }, "downloads": -1, "filename": "spflow-0.0.17.tar.gz", "has_sig": false, "md5_digest": "5ecc465745cebb41438e1e55ddf3ce1c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 108058, "upload_time": "2018-12-11T15:40:09", "url": "https://files.pythonhosted.org/packages/03/ea/85b5a1cc992428b221806686d0b1abf4c4cdc84134480fb6894068987bf9/spflow-0.0.17.tar.gz" } ], "0.0.18": [ { "comment_text": "", "digests": { "md5": "e90b425566c4e8233c22306af3f367df", "sha256": "7b82bff0520a2c84c14e0370bda82269e81e95e104b88938a7926498f49588fa" }, "downloads": -1, "filename": "spflow-0.0.18-py3-none-any.whl", "has_sig": false, "md5_digest": "e90b425566c4e8233c22306af3f367df", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 160553, "upload_time": "2018-12-11T17:39:52", "url": "https://files.pythonhosted.org/packages/5f/a3/a8dd3af72fd826500e9151ae7267e78ab986e4eee500998a6657e1570764/spflow-0.0.18-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fb51f4be1c13fea0254db19625190726", "sha256": "42369cd97aa409dd3891662576ca2d8e0b817e896c453b7c02b3c51ce2042cf0" }, "downloads": -1, "filename": "spflow-0.0.18.tar.gz", "has_sig": false, "md5_digest": "fb51f4be1c13fea0254db19625190726", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 108093, "upload_time": "2018-12-11T17:39:54", "url": "https://files.pythonhosted.org/packages/18/ab/ddf44cc12735eee05fdf196bc83ea956a874fdf0e388cacf9fd9761ade17/spflow-0.0.18.tar.gz" } ], "0.0.19": [ { "comment_text": "", "digests": { "md5": "d5af00e6a133b2cacbecfedd74d2100b", "sha256": "d0423713ff744d05e5f9e54d86e7440013b9ac7e3b33f3c900c89dd29a5605ed" }, "downloads": -1, "filename": "spflow-0.0.19-py3-none-any.whl", "has_sig": false, "md5_digest": "d5af00e6a133b2cacbecfedd74d2100b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 181390, "upload_time": "2018-12-12T15:51:14", "url": "https://files.pythonhosted.org/packages/5a/9e/d3b4fda6cbb6f4027ba4707093930e71c07d413136826241212641967fdf/spflow-0.0.19-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5f874b9d9813d4427e3cfe493755f87e", "sha256": "c101a718729951793f09de914052bf95513d52f0fb7e51f5f3057b3606e95dd5" }, "downloads": -1, "filename": "spflow-0.0.19.tar.gz", "has_sig": false, "md5_digest": "5f874b9d9813d4427e3cfe493755f87e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 129203, "upload_time": "2018-12-12T15:51:16", "url": "https://files.pythonhosted.org/packages/bb/4f/f2d355e7e36736493c371f48f9bfcbb93e0d7ea7345367a6718fe4dee6c7/spflow-0.0.19.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "09e016e6591483791fb73c6c42ea148d", "sha256": "39ec9b21a65f43d7f1bf35e00693cd8ae19bf9791ed0c0cac61f9e4fc231996a" }, "downloads": -1, "filename": "spflow-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "09e016e6591483791fb73c6c42ea148d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 160075, "upload_time": "2018-10-08T10:15:08", "url": "https://files.pythonhosted.org/packages/b8/39/9aba7be3b504b0af3cc00c9405b3a74e9abb48a1f499bd093fcd2f7e49be/spflow-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c30a33096c1a023eda8868ee68831fc8", "sha256": "ecf4656d08ba38b2646d06753f2ec5f3819271cfd44becdc5c2503c02215b8ec" }, "downloads": -1, "filename": "spflow-0.0.2.tar.gz", "has_sig": false, "md5_digest": "c30a33096c1a023eda8868ee68831fc8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 101150, "upload_time": "2018-10-08T10:15:11", "url": "https://files.pythonhosted.org/packages/c1/64/e6fc82d5aff231ea926291fae344d0435d96459983a82cd445089e577f5d/spflow-0.0.2.tar.gz" } ], "0.0.20": [ { "comment_text": "", "digests": { "md5": "9ac302c8c50dcf784cbfeaed2d68c6b5", "sha256": "79190f295430174d3e4f27bb3678d63179929bea97270642f583211266c14f96" }, "downloads": -1, "filename": "spflow-0.0.20-py3-none-any.whl", "has_sig": false, "md5_digest": "9ac302c8c50dcf784cbfeaed2d68c6b5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 181553, "upload_time": "2018-12-12T16:03:52", "url": "https://files.pythonhosted.org/packages/28/db/b8dffcd1a35aa0d10224f442dbb04fe4eaa5430a318deb5e934ee0d40381/spflow-0.0.20-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "877ae16a38a207297f5b732a5ec7b962", "sha256": "2acf2ee4a5302b0b9c52128104323a115653f1f9b13ea90840504cd63beba1bb" }, "downloads": -1, "filename": "spflow-0.0.20.tar.gz", "has_sig": false, "md5_digest": "877ae16a38a207297f5b732a5ec7b962", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 129338, "upload_time": "2018-12-12T16:03:54", "url": "https://files.pythonhosted.org/packages/a3/a1/3b314d0d70763791edb904a3be9a6a1558790fd665717b9c437acba9d21d/spflow-0.0.20.tar.gz" } ], "0.0.21": [ { "comment_text": "", "digests": { "md5": "4df6d83bd491fe98e8457e34139861f8", "sha256": "dbef35a0be90e498416df1c75aae2486290fc3a1257ad2b58930f2cb7d6432d9" }, "downloads": -1, "filename": "spflow-0.0.21-py3-none-any.whl", "has_sig": false, "md5_digest": "4df6d83bd491fe98e8457e34139861f8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 181698, "upload_time": "2018-12-19T15:18:55", "url": "https://files.pythonhosted.org/packages/9c/c8/95393dd54795675624ae30dd0e6356df59129219bb16e1cfc7ab791fb2ce/spflow-0.0.21-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "59fb29a30dc286615f0b04df48b3be3d", "sha256": "ab558205d1e3aed36e6678bff992975ebd4e33d599fd4d131bb132ae0ad3e450" }, "downloads": -1, "filename": "spflow-0.0.21.tar.gz", "has_sig": false, "md5_digest": "59fb29a30dc286615f0b04df48b3be3d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 129448, "upload_time": "2018-12-19T15:18:57", "url": "https://files.pythonhosted.org/packages/97/e2/cff25084828590803f90ee852901f3237403ab03733254e28ce5143720df/spflow-0.0.21.tar.gz" } ], "0.0.22": [ { "comment_text": "", "digests": { "md5": "8b9633c459c074762fde53a77e82fd2f", "sha256": "f8353c21d3c8131700f724d675a0d72cc616f4db2a721e0a454bfcab92bb0ebe" }, "downloads": -1, "filename": "spflow-0.0.22-py3-none-any.whl", "has_sig": false, "md5_digest": "8b9633c459c074762fde53a77e82fd2f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 183734, "upload_time": "2018-12-21T18:55:22", "url": "https://files.pythonhosted.org/packages/0b/7b/74d1e2054775731a2a305a2c50c9104f14db7f17eb3db0e0c4c63705c5df/spflow-0.0.22-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6d96f90f2e6c5f56dc9de570965b8a36", "sha256": "112d4441e4a6b2470de6eb254cd188fe4f75d0c975f7cfbb76d0f7d97a1c1dca" }, "downloads": -1, "filename": "spflow-0.0.22.tar.gz", "has_sig": false, "md5_digest": "6d96f90f2e6c5f56dc9de570965b8a36", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 125726, "upload_time": "2018-12-21T18:55:25", "url": "https://files.pythonhosted.org/packages/92/0d/0bf42af753d65bca216c11fba5ab80b7ba048eca63f499f0ba5a335534ca/spflow-0.0.22.tar.gz" } ], "0.0.23": [ { "comment_text": "", "digests": { "md5": "4fec5a9d3912661d2ab5ea1a6a0419ec", "sha256": "b873a2438a36d016b18ca4ab736e5df1fb8f63e105f0c85a2481d1de9ce2eeaa" }, "downloads": -1, "filename": "spflow-0.0.23-py3-none-any.whl", "has_sig": false, "md5_digest": "4fec5a9d3912661d2ab5ea1a6a0419ec", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 184462, "upload_time": "2019-01-08T11:17:56", "url": "https://files.pythonhosted.org/packages/d7/ed/4891b9d68c7c43421df5ce67cbbe904ef0b3e66f3dbdf0bdfd549b6a0be7/spflow-0.0.23-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5cceee7c7e03c5f33f09e81e2d240a2a", "sha256": "0e4d289d42068650fdeb4324424c99cf6f44edd6290b0f38b977db4839725904" }, "downloads": -1, "filename": "spflow-0.0.23.tar.gz", "has_sig": false, "md5_digest": "5cceee7c7e03c5f33f09e81e2d240a2a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 130514, "upload_time": "2019-01-08T11:17:58", "url": "https://files.pythonhosted.org/packages/df/6b/6f2ebceefee1f45dcbf3732f0459ded913e88b251fcadd9376ec86b0a67e/spflow-0.0.23.tar.gz" } ], "0.0.24": [ { "comment_text": "", "digests": { "md5": "ff99ca33df5b3363bc4b5da2e11530d4", "sha256": "97ffb04072dcdb57d34de34c03c1c83d40ea340ca22e40d12d3e938ce28057a8" }, "downloads": -1, "filename": "spflow-0.0.24-py3-none-any.whl", "has_sig": false, "md5_digest": "ff99ca33df5b3363bc4b5da2e11530d4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 187388, "upload_time": "2019-01-08T16:33:51", "url": "https://files.pythonhosted.org/packages/ce/e1/14f0c2248681774c732e8c5c0877401d3ec2eead5865142123a507571371/spflow-0.0.24-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ce02ac9bb2fe80d6530d2cf3e490bf8a", "sha256": "32afdb80c9e0e5fa8d99240f27f55b51e1b96c05c0dc6faf0a83647543043ab3" }, "downloads": -1, "filename": "spflow-0.0.24.tar.gz", "has_sig": false, "md5_digest": "ce02ac9bb2fe80d6530d2cf3e490bf8a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 133112, "upload_time": "2019-01-08T16:33:53", "url": "https://files.pythonhosted.org/packages/f3/fa/b3798edeb4fe04f7dfa175102fd3a346ecba6209abf2fdbbc4a7646fb200/spflow-0.0.24.tar.gz" } ], "0.0.25": [ { "comment_text": "", "digests": { "md5": "eda5fc6e9fcb7dab3e4e71427634812e", "sha256": "ea680aed7f9913a7bba12a4c6405caddecbf5d5ea0a2b04db981bfd0749b02f6" }, "downloads": -1, "filename": "spflow-0.0.25-py3-none-any.whl", "has_sig": false, "md5_digest": "eda5fc6e9fcb7dab3e4e71427634812e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 193608, "upload_time": "2019-01-11T15:28:35", "url": "https://files.pythonhosted.org/packages/ee/92/796e60f174ea985106d713d10ba93a98cc05f15ef2a1ed226c39c2a48b7b/spflow-0.0.25-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "11e3b4b234ae836f066af2f6c5fed01b", "sha256": "faeb4cfb15dae060e8c13a53dbae45b1776257b4f985b08240148dfab3d12c38" }, "downloads": -1, "filename": "spflow-0.0.25.tar.gz", "has_sig": false, "md5_digest": "11e3b4b234ae836f066af2f6c5fed01b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 137704, "upload_time": "2019-01-11T15:28:37", "url": "https://files.pythonhosted.org/packages/96/ee/e5dde461cc6d478a1f203dcec94b4bb24b0e55dd1c80ffcd98634d0a8515/spflow-0.0.25.tar.gz" } ], "0.0.26": [ { "comment_text": "", "digests": { "md5": "38ff6c96d2732b9ad19a63dc58554509", "sha256": "b284625fc7669d130da929c42fbacf5d663cf93edfe659b8d4b33ab8702be3ad" }, "downloads": -1, "filename": "spflow-0.0.26-py3-none-any.whl", "has_sig": false, "md5_digest": "38ff6c96d2732b9ad19a63dc58554509", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 193949, "upload_time": "2019-01-17T14:37:52", "url": "https://files.pythonhosted.org/packages/b7/fe/1a4df4e6dca2594e0d6550c42305a0c2721822a5f8bdf36b94aee6ae20ef/spflow-0.0.26-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4314579dfcb17e4095a80ff00fb5cedf", "sha256": "e2e7b1e48d80a577b46025d0f0b7a09cdab9a88fc5815d44dea99a17b7ef5545" }, "downloads": -1, "filename": "spflow-0.0.26.tar.gz", "has_sig": false, "md5_digest": "4314579dfcb17e4095a80ff00fb5cedf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 138356, "upload_time": "2019-01-17T14:37:54", "url": "https://files.pythonhosted.org/packages/a0/b3/4802db5899f92dc4bd1dd2a5c0454fd71abb228aa6659d073ce651bd94dc/spflow-0.0.26.tar.gz" } ], "0.0.27": [ { "comment_text": "", "digests": { "md5": "d2c68449780712cb03f222cfa84a09b3", "sha256": "bbb482efd680cac76025d6e41b6a27eb08ff2f544db5444fab7ca4c3a4dcb1c6" }, "downloads": -1, "filename": "spflow-0.0.27-py3-none-any.whl", "has_sig": false, "md5_digest": "d2c68449780712cb03f222cfa84a09b3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 193961, "upload_time": "2019-01-17T15:42:59", "url": "https://files.pythonhosted.org/packages/d6/f3/3cbc36c9f7e9b7ca822c42edc39a5cab7ba07c5f382a01b31bb57acb4401/spflow-0.0.27-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "00f816a79296a3b309b5216518dfd9af", "sha256": "a0d19bcc790f307d07d8d6574b50758bc7512e41ceb5c21e74d201306c2fd2dc" }, "downloads": -1, "filename": "spflow-0.0.27.tar.gz", "has_sig": false, "md5_digest": "00f816a79296a3b309b5216518dfd9af", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 138376, "upload_time": "2019-01-17T15:43:02", "url": "https://files.pythonhosted.org/packages/90/df/c6ff59c01421890dfdacb51f479f0244d6cb22837ee466d617e341fe951f/spflow-0.0.27.tar.gz" } ], "0.0.28": [ { "comment_text": "", "digests": { "md5": "cf9e82b493ba4b9de77885ba35f1da8d", "sha256": "3d434220d79a263596ccde35d0b69aef968715d8b8b96628a1dd91a2e5abcb61" }, "downloads": -1, "filename": "spflow-0.0.28-py3-none-any.whl", "has_sig": false, "md5_digest": "cf9e82b493ba4b9de77885ba35f1da8d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 194013, "upload_time": "2019-01-19T14:46:21", "url": "https://files.pythonhosted.org/packages/4b/cf/88c7e5b7d9b885d3d05bcccadc09cee75bd07c9f96f3c03a1b2ecc65231f/spflow-0.0.28-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "04ddfd210eb202e1b72c4dd01dda3849", "sha256": "57afcde496f21b5600f6433f64f195efa3dd87a407f9a0deafce3e5ad13d52ab" }, "downloads": -1, "filename": "spflow-0.0.28.tar.gz", "has_sig": false, "md5_digest": "04ddfd210eb202e1b72c4dd01dda3849", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 133173, "upload_time": "2019-01-19T14:46:24", "url": "https://files.pythonhosted.org/packages/8e/fc/f8ca18336680ebe64374874b4321e0bd3b16b1a4d0fc1ef6f135e21f8aaf/spflow-0.0.28.tar.gz" } ], "0.0.29": [ { "comment_text": "", "digests": { "md5": "a3cef72153b02095802cc7c70be8d1a0", "sha256": "4f8ed6c4fb309251cb104bd1a1a25fffba9db7fdfe1f0bbbe6f089674c613ebf" }, "downloads": -1, "filename": "spflow-0.0.29-py3-none-any.whl", "has_sig": false, "md5_digest": "a3cef72153b02095802cc7c70be8d1a0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 194566, "upload_time": "2019-02-21T13:33:18", "url": "https://files.pythonhosted.org/packages/f0/35/7d992f1b1084bde0c5fde405d04363bf5939720d37140cf0ca02b0eba577/spflow-0.0.29-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f52f25ec370a1a695ed2fc04d53291ae", "sha256": "eed084d42eba1025913dbc564e66d861a6c0f8098af3cc0b4c4e53913f471c63" }, "downloads": -1, "filename": "spflow-0.0.29.tar.gz", "has_sig": false, "md5_digest": "f52f25ec370a1a695ed2fc04d53291ae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 139088, "upload_time": "2019-02-21T13:33:21", "url": "https://files.pythonhosted.org/packages/f3/d8/62b0fc6d6630280bee5319e11f78523ab93506b095e92f5b58df0a0b1819/spflow-0.0.29.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "afbd7522cd8893934bbf2ace1546d0a7", "sha256": "4e7b17054dc8a7f9dee8be2dfd163f3c995beb9ef5fa9c5d99edea112fb2ed1a" }, "downloads": -1, "filename": "spflow-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "afbd7522cd8893934bbf2ace1546d0a7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 160263, "upload_time": "2018-10-08T10:54:21", "url": "https://files.pythonhosted.org/packages/ac/6d/44a75ab13f08833476918694eacfe5d4537a9824ff59a259f5f23ecfaa87/spflow-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ef19a70cc8fbeadca741988b1687d3f8", "sha256": "994fbd347349a660efd11b792ca5fb3f492f5d1aaba33e7d725fc53fecf4626c" }, "downloads": -1, "filename": "spflow-0.0.3.tar.gz", "has_sig": false, "md5_digest": "ef19a70cc8fbeadca741988b1687d3f8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 101473, "upload_time": "2018-10-08T10:54:25", "url": "https://files.pythonhosted.org/packages/46/c1/d3bb0d2afc96a95c2991eeed1f02588b921f631b037e1137122e641124b3/spflow-0.0.3.tar.gz" } ], "0.0.30": [ { "comment_text": "", "digests": { "md5": "c385edf775227e56da1b09f0c7136370", "sha256": "d0f5703b44e32959be0c948c54a1a4018af41e7a3d53817afbe34805f72047f2" }, "downloads": -1, "filename": "spflow-0.0.30-py3-none-any.whl", "has_sig": false, "md5_digest": "c385edf775227e56da1b09f0c7136370", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 194822, "upload_time": "2019-02-28T13:55:42", "url": "https://files.pythonhosted.org/packages/eb/10/2e06641585f7af947d226d1b1474399eaacfb72078de6cd951c88f9940b9/spflow-0.0.30-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1bb9db265235624870f79cd3a1e4d6d4", "sha256": "ba8cbeec3afe6268879bae18ab51bf625863abe8b9261de897072e8288207d23" }, "downloads": -1, "filename": "spflow-0.0.30.tar.gz", "has_sig": false, "md5_digest": "1bb9db265235624870f79cd3a1e4d6d4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 139288, "upload_time": "2019-02-28T13:55:44", "url": "https://files.pythonhosted.org/packages/1d/db/f651f7e764e7c8ecddd66ebcf4e2e12ddf6a8cc534117c897b8bd40fd701/spflow-0.0.30.tar.gz" } ], "0.0.31": [ { "comment_text": "", "digests": { "md5": "6422f987b169c30ef76d53074e9b7abb", "sha256": "4a460b1d9c55c918f67739634c9c0db7c15f940d0facd6d7151734c94c3fa093" }, "downloads": -1, "filename": "spflow-0.0.31-py3-none-any.whl", "has_sig": false, "md5_digest": "6422f987b169c30ef76d53074e9b7abb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 198552, "upload_time": "2019-03-07T15:33:42", "url": "https://files.pythonhosted.org/packages/c2/8a/488ef9ecb9982671e0f8b27393a1ea8da2886b3e36e1e618793b9f360fda/spflow-0.0.31-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8de73b52a3848e4d9c22242bda1c1995", "sha256": "0cb87d55d1fd0db2141f0414cec6d7a33fba17a18abd8d4566be17cf65d4fef0" }, "downloads": -1, "filename": "spflow-0.0.31.tar.gz", "has_sig": false, "md5_digest": "8de73b52a3848e4d9c22242bda1c1995", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 142036, "upload_time": "2019-03-07T15:33:44", "url": "https://files.pythonhosted.org/packages/00/ff/4a0cda7c5311cb3f77dc3d97b49ea50e074cfa0d54c4566dd814ac6acd03/spflow-0.0.31.tar.gz" } ], "0.0.32": [ { "comment_text": "", "digests": { "md5": "ded5d603e578e6c6d2aed5d7b8aa2798", "sha256": "5b472d8accb5e35e2257fb9ce428be28b2c64ced509856825e3d2b801c0c9f2d" }, "downloads": -1, "filename": "spflow-0.0.32-py3-none-any.whl", "has_sig": false, "md5_digest": "ded5d603e578e6c6d2aed5d7b8aa2798", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 198912, "upload_time": "2019-03-14T09:14:49", "url": "https://files.pythonhosted.org/packages/73/b3/50a094323abb6612db435436c7b12222ed729379e518100ca32891a36ea1/spflow-0.0.32-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "344fd1ce4a8e74a60146605e1578d4cf", "sha256": "a587988ceee4a0f3366e9ddd0a250c01ac83ac72e322e2387fbd309d6053ddf0" }, "downloads": -1, "filename": "spflow-0.0.32.tar.gz", "has_sig": false, "md5_digest": "344fd1ce4a8e74a60146605e1578d4cf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 142332, "upload_time": "2019-03-14T09:14:53", "url": "https://files.pythonhosted.org/packages/29/de/bcea257552804b32567e97e464784fa5e7106169691aafa0c1632f6831ca/spflow-0.0.32.tar.gz" } ], "0.0.33": [ { "comment_text": "", "digests": { "md5": "d6d67ba3ac8bce7ae266ca1a41d4a41c", "sha256": "36382f78de6f34f1efc7e39e7d1b663c1e5da12e3ac3bed392cda227e34e83ac" }, "downloads": -1, "filename": "spflow-0.0.33-py3-none-any.whl", "has_sig": false, "md5_digest": "d6d67ba3ac8bce7ae266ca1a41d4a41c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 199478, "upload_time": "2019-03-14T15:07:51", "url": "https://files.pythonhosted.org/packages/47/3e/a0ff61bc6ed283cf31d8639a01730d5a08ba414b351ab60acf4b07698492/spflow-0.0.33-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c64de69f11e40de8796795e01ad1ba1d", "sha256": "552849b6a8805c63789e3da767d043ac21573d3ce4de430391a54c85c1732cfe" }, "downloads": -1, "filename": "spflow-0.0.33.tar.gz", "has_sig": false, "md5_digest": "c64de69f11e40de8796795e01ad1ba1d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 142835, "upload_time": "2019-03-14T15:07:53", "url": "https://files.pythonhosted.org/packages/28/1e/bbaacfae4a501ce5f865903f91a320c2165e31e4cc8b1fec366b7b1ed696/spflow-0.0.33.tar.gz" } ], "0.0.34": [ { "comment_text": "", "digests": { "md5": "1608d2e3ba94389a3512d51683514a09", "sha256": "592d340d907adaa4a4581bbf304cbd1f01a30ba8548ee344149f4fc18d2b210a" }, "downloads": -1, "filename": "spflow-0.0.34-py3-none-any.whl", "has_sig": false, "md5_digest": "1608d2e3ba94389a3512d51683514a09", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 199879, "upload_time": "2019-03-22T13:56:07", "url": "https://files.pythonhosted.org/packages/4b/7a/4212ab5ca43f7c5db41d533fc5804273baebcada2ee82104fecd71fc1bcf/spflow-0.0.34-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5a46091096d899fad5ee7b44d42e5b47", "sha256": "a994bf5de39120d69485c1f9f7b6ced512c5ad5a95de318a09b01b3b81ee2c15" }, "downloads": -1, "filename": "spflow-0.0.34.tar.gz", "has_sig": false, "md5_digest": "5a46091096d899fad5ee7b44d42e5b47", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 138225, "upload_time": "2019-03-22T13:56:10", "url": "https://files.pythonhosted.org/packages/50/99/1b4d78c74dfebd6ebb5d3ca283665fb97ee27435908412274ec826e374d5/spflow-0.0.34.tar.gz" } ], "0.0.36": [ { "comment_text": "", "digests": { "md5": "bcf407da3a23e318f7e5291db64be9ab", "sha256": "15845ca631ed3211de4fff294176a859bf1de82f1d2d114bf46b49b014159d9f" }, "downloads": -1, "filename": "spflow-0.0.36-py3-none-any.whl", "has_sig": false, "md5_digest": "bcf407da3a23e318f7e5291db64be9ab", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 202905, "upload_time": "2019-07-22T08:02:47", "url": "https://files.pythonhosted.org/packages/cb/a8/b7a487131d6cf2d0df8f677cb5fd44cc4715c2cbf2e103c47be89a296fc0/spflow-0.0.36-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "eaf7169f01d8a410aa2a0e2d67a4e81e", "sha256": "90fc04973e35c2340bba4ebf9da102cb03955b4c2874846b31792abe0e924c94" }, "downloads": -1, "filename": "spflow-0.0.36.tar.gz", "has_sig": false, "md5_digest": "eaf7169f01d8a410aa2a0e2d67a4e81e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 144998, "upload_time": "2019-07-22T08:02:50", "url": "https://files.pythonhosted.org/packages/d0/de/95b030ab9ec8b84f245e6d79aea71f0474678d51a9cc61aa9b6386df8a23/spflow-0.0.36.tar.gz" } ], "0.0.37": [ { "comment_text": "", "digests": { "md5": "9156efd1ce91e1f93143526afe717cc8", "sha256": "5e9d20778c368588a32d977612a7fc7a4c562c0a0603e546b5dac98d68f73bd5" }, "downloads": -1, "filename": "spflow-0.0.37-py3-none-any.whl", "has_sig": false, "md5_digest": "9156efd1ce91e1f93143526afe717cc8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 209734, "upload_time": "2019-09-12T13:04:07", "url": "https://files.pythonhosted.org/packages/cd/6a/9e7d74923991bebcfcd08e2ff1ce4ab0f22df638fd8833f17d7c332b6941/spflow-0.0.37-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "77ccdced2b581b157d1c37127629c316", "sha256": "e4f6862c047540cb5cc5595fe8da4fe67625d97d167138d2eb6dc0024102226d" }, "downloads": -1, "filename": "spflow-0.0.37.tar.gz", "has_sig": false, "md5_digest": "77ccdced2b581b157d1c37127629c316", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 145190, "upload_time": "2019-09-12T13:04:10", "url": "https://files.pythonhosted.org/packages/b4/61/f59e1df80241e23e873f8275b9fe1b1262c3b282bed793cec00a7615fee6/spflow-0.0.37.tar.gz" } ], "0.0.38": [ { "comment_text": "", "digests": { "md5": "44516014c4a57f316eac59945d681940", "sha256": "d57f9aa43376238b244ed9ca53786092300de95d17222511039d4ca647150c89" }, "downloads": -1, "filename": "spflow-0.0.38-py3-none-any.whl", "has_sig": false, "md5_digest": "44516014c4a57f316eac59945d681940", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 210253, "upload_time": "2019-09-12T17:01:31", "url": "https://files.pythonhosted.org/packages/ba/d8/736f89aa47ff11e838459da425f77e7a05d6acd42ec1ce23507dbff547a7/spflow-0.0.38-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5e13a461b52cebbd456b08d4545a06de", "sha256": "c2528975be08d9080d9e2ac1842a7875b500cc039f6f66fe866fb45bada8a200" }, "downloads": -1, "filename": "spflow-0.0.38.tar.gz", "has_sig": false, "md5_digest": "5e13a461b52cebbd456b08d4545a06de", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 145590, "upload_time": "2019-09-12T17:01:35", "url": "https://files.pythonhosted.org/packages/f2/cb/0ac460e60ae83de1f7ddcc9101e717e297d184d74f8486d0bc37d2eb45e6/spflow-0.0.38.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "7cb75e6a874294b45b429374f7ea260f", "sha256": "85cd38a00effcb260fa9488527ba22af078b0e9f3172169457d89f9098d11ffc" }, "downloads": -1, "filename": "spflow-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "7cb75e6a874294b45b429374f7ea260f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 157529, "upload_time": "2018-10-15T16:02:32", "url": "https://files.pythonhosted.org/packages/92/b2/0b261515eaa3e16b66237b09d597f11dade340561f093dae70b211b2effa/spflow-0.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "72063a88e466b3ecf388dbadf680fda4", "sha256": "590c9d7c4c6c53e9db744bccbea59475065bc4fb4c8d2502e7530d3d63c6b74a" }, "downloads": -1, "filename": "spflow-0.0.4.tar.gz", "has_sig": false, "md5_digest": "72063a88e466b3ecf388dbadf680fda4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 89110, "upload_time": "2018-10-15T16:02:33", "url": "https://files.pythonhosted.org/packages/be/cf/5aba7c374c61d6ba74584c08e156418ccc80be96ab498174cef8b364fe33/spflow-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "1acdacfabde4292ad0b43cc571f9071e", "sha256": "2b8ac4739147251a65174a8bfef088f2e602a41ddbf0642aed2f476352097f74" }, "downloads": -1, "filename": "spflow-0.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "1acdacfabde4292ad0b43cc571f9071e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 157877, "upload_time": "2018-10-17T13:55:47", "url": "https://files.pythonhosted.org/packages/97/49/8432906aef92eea32179c2f07ec2e30f2e8b3b0e5b9df2ddc1e3af221ae9/spflow-0.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "da42a5c3bcb2191667746d4db635dd45", "sha256": "604a79a68731f6792e08a19b3c6d681761fb5c52a6e1fa95a00e79d2aa70fbc9" }, "downloads": -1, "filename": "spflow-0.0.5.tar.gz", "has_sig": false, "md5_digest": "da42a5c3bcb2191667746d4db635dd45", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 89469, "upload_time": "2018-10-17T13:55:49", "url": "https://files.pythonhosted.org/packages/3f/63/66b1342bf350a95d4c4d742ca9ccb43db91231946e6be63756262c660f1a/spflow-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "a51d8cbd88fa236f47b455824b5a9f84", "sha256": "ba798fbbc8af588737fccb4af4bc612655a4db244d3815f17f56dd5de13e650d" }, "downloads": -1, "filename": "spflow-0.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "a51d8cbd88fa236f47b455824b5a9f84", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 136299, "upload_time": "2018-10-17T14:09:09", "url": "https://files.pythonhosted.org/packages/b8/ac/5a942657af998acef34481ae5bb594bb2f770aa68a1b6fbf3ff81c9133b5/spflow-0.0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "12dd71205532b66c482cf097a53ba1ef", "sha256": "6ce0f4b84a5f24c551caf643d22043d2a058016cea5cbbc0be7cbcc7f34aa449" }, "downloads": -1, "filename": "spflow-0.0.6.tar.gz", "has_sig": false, "md5_digest": "12dd71205532b66c482cf097a53ba1ef", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 89472, "upload_time": "2018-10-17T14:09:11", "url": "https://files.pythonhosted.org/packages/29/af/0b3f00c5142a07689fbd126c155aa57c6cf623100fec1de60aa2266e88c6/spflow-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "a32b0c26c82151f504a733a85e997663", "sha256": "7fda882c7f8c39bbf8aaf99d29504af64e944222487a8340158b346ed1c3dd89" }, "downloads": -1, "filename": "spflow-0.0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "a32b0c26c82151f504a733a85e997663", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 136320, "upload_time": "2018-10-18T12:57:46", "url": "https://files.pythonhosted.org/packages/8d/56/a5b1c84fe20cc301588840fceb8d0604117b0335277d9aac42b91fe3e44a/spflow-0.0.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7ddc18b56fe27d2259e602db8fe5b2ef", "sha256": "be669201990b0375d3f0fd2669cdd89ffe6a892d6659f6f3008de1bd0c9ee77f" }, "downloads": -1, "filename": "spflow-0.0.7.tar.gz", "has_sig": false, "md5_digest": "7ddc18b56fe27d2259e602db8fe5b2ef", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 89490, "upload_time": "2018-10-18T12:57:48", "url": "https://files.pythonhosted.org/packages/39/e4/08f14614701866add9abff63b4bce10f70231b04cb822b5cb5634ab133c2/spflow-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "9377bc3017920a3524dc240f01fa852f", "sha256": "fc5eb0bed0ef7baf485291f0bd1c817ca20c5b322d62baec730da96042af1ee6" }, "downloads": -1, "filename": "spflow-0.0.8-py3-none-any.whl", "has_sig": false, "md5_digest": "9377bc3017920a3524dc240f01fa852f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 165227, "upload_time": "2018-11-22T15:16:23", "url": "https://files.pythonhosted.org/packages/0b/63/321d870be70c31cc7ed328353223adf1b2bd50d6b03ffdbfc4b27511660c/spflow-0.0.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1ae25a8183522f2451ea7c61e7dda223", "sha256": "e9dfdabc546940ced435a9cb093d53d6bf56c6be7bf1c6230ee472efd5971a35" }, "downloads": -1, "filename": "spflow-0.0.8.tar.gz", "has_sig": false, "md5_digest": "1ae25a8183522f2451ea7c61e7dda223", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 112635, "upload_time": "2018-11-22T15:16:24", "url": "https://files.pythonhosted.org/packages/3c/49/e8779fb3da63f59f307fee1dd17bbc421562e1d201ccd9307efe8f7a4e72/spflow-0.0.8.tar.gz" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "e05d57472d2af7be46100d7b0603e669", "sha256": "0118b5eb186dbbcfa09f6a148153aa135262c0fb4637a1a6e0c68523231a4fcc" }, "downloads": -1, "filename": "spflow-0.0.9-py3-none-any.whl", "has_sig": false, "md5_digest": "e05d57472d2af7be46100d7b0603e669", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 169060, "upload_time": "2018-11-23T13:34:49", "url": "https://files.pythonhosted.org/packages/7b/14/9b35d13a2d5081a1bd72b5047d732943faa0b74f859fa15d6ff9b73e6307/spflow-0.0.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4e8adf8f1bb9d219cfd77ec4fa065201", "sha256": "8a188f73c2c3ee4d242c122ead739b4c5521c4a632f203ef173c8b34b5661340" }, "downloads": -1, "filename": "spflow-0.0.9.tar.gz", "has_sig": false, "md5_digest": "4e8adf8f1bb9d219cfd77ec4fa065201", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 114198, "upload_time": "2018-11-23T13:34:51", "url": "https://files.pythonhosted.org/packages/49/ea/11a07cbdc2bb1ae00812c0617ea151a29aa1de1d9bd10bc0cb21b9b497d9/spflow-0.0.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "44516014c4a57f316eac59945d681940", "sha256": "d57f9aa43376238b244ed9ca53786092300de95d17222511039d4ca647150c89" }, "downloads": -1, "filename": "spflow-0.0.38-py3-none-any.whl", "has_sig": false, "md5_digest": "44516014c4a57f316eac59945d681940", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 210253, "upload_time": "2019-09-12T17:01:31", "url": "https://files.pythonhosted.org/packages/ba/d8/736f89aa47ff11e838459da425f77e7a05d6acd42ec1ce23507dbff547a7/spflow-0.0.38-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5e13a461b52cebbd456b08d4545a06de", "sha256": "c2528975be08d9080d9e2ac1842a7875b500cc039f6f66fe866fb45bada8a200" }, "downloads": -1, "filename": "spflow-0.0.38.tar.gz", "has_sig": false, "md5_digest": "5e13a461b52cebbd456b08d4545a06de", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 145590, "upload_time": "2019-09-12T17:01:35", "url": "https://files.pythonhosted.org/packages/f2/cb/0ac460e60ae83de1f7ddcc9101e717e297d184d74f8486d0bc37d2eb45e6/spflow-0.0.38.tar.gz" } ] }