{ "info": { "author": "", "author_email": "", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved", "Operating System :: MacOS", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX", "Operating System :: Unix", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Scientific/Engineering", "Topic :: Software Development" ], "description": "# SecML: Secure and Explainable Machine Learning in Python\n\n[![Status Alpha](https://img.shields.io/badge/status-alpha-yellow.svg)](.)\n[![Python 3.6 | 3.7 | 3.8](https://img.shields.io/badge/python-3.6%20%7C%203.7%20%7C%203.8-brightgreen.svg)](.)\n[![Platform Linux | MacOS | Windows ](https://img.shields.io/badge/platform-linux%20%7C%20macos%20%7C%20windows-lightgrey.svg)](.)\n[![Apache License 2.0](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](https://www.apache.org/licenses/LICENSE-2.0)\n\nSecML is an open-source Python library for the **security evaluation** of\nMachine Learning algorithms.\nIt is equipped with **evasion** and **poisoning** adversarial machine learning attacks, \nand it can **wrap models and attacks** from other different frameworks.\n\n## Table of Contents\n* [Getting Started](#getting-started)\n* [Usage](#usage)\n* [Tutorials](#tutorials)\n* [Contributing](#contributing)\n* [How to cite SecML](#how-to-cite-secml)\n* [Contacts](#contacts)\n* [Acknowledgements](#acknowledgements)\n* [Copyright](#copyright)\n\n\n## Getting Started\n\nSecML can run with Python >= 3.6 with no additional configuration steps \nrequired, as all its dependencies are available as wheel packages for \nthe principal macOS versions, Linux distributions and Windows.\n\n### Installation\n\n1. Install the latest version of ``setuptools``:\n\n```bash\npip install -U setuptools\n```\n\n2. Install from official PyPI repository:\n```bash\npip install secml\n```\n\nIn all cases, the setup process will try to install the correct dependencies.\nIn case something goes wrong during the install process, try to install\nthe dependencies **first** by calling: \n```python\npip install -r requirements.txt\n```\n\n\n### Extra Components\n\nSecML comes with a set of extras components that can be installed if desired.\nTo specify the extra components to install, add the section `[extras]` while\ncalling `pip install`. `extras` will be a comma-separated list of components \nyou want to install. Example:\n```bash\npip install secml[extra1,extra2]\n```\nThe following extra components are available:\n - `pytorch` : Neural Networks (NNs) through [PyTorch](https://pytorch.org/) deep learning platform. \n Installs: `torch >= 1.4`, `torchvision >= 0.5` \n *Windows only*: the url to installation archives should be manually provided as \n `pip install secml[pytorch] -f https://download.pytorch.org/whl/torch_stable.html`.\n - `foolbox` : Wrapper of [Foolbox](https://github.com/bethgelab/foolbox), \n a Python toolbox to create adversarial examples that fool neural networks. \n Installs: `foolbox >= 3.3.0`, `eagerpy >= 0.29.0`, `torch >= 1.4`, `torchvision >= 0.5`\n - `cleverhans` : Wrapper of [CleverHans](https://github.com/tensorflow/cleverhans), \n a Python library to benchmark vulnerability of machine learning systems to adversarial examples. \n Installs: `tensorflow >= 1.14.*, < 2`, `cleverhans < 3.1` \n *Warning*: not available for `python >= 3.8`\n - `tf-gpu` : Shortcut for installing `TensorFlow` package with GPU support (Linux and Windows only). \n Installs: `tensorflow-gpu >= 1.14.*, < 2` \n *Warning*: not available for `python >= 3.8`\n\n### Advanced features\nTo support additional advanced features (like the usage of GPUs) more packages can be necessary\ndepending on the Operating System used:\n\n - Linux (Ubuntu 16.04 or later or equivalent distribution)\n - `python3-tk` for running MatplotLib Tk-based backends;\n - [NVIDIA\u00ae CUDA\u00ae Toolkit](\n https://developer.nvidia.com/cuda-toolkit) for GPU support.\n\n - macOS (10.12 Sierra or later)\n - Nothing to note.\n\n - Windows (7 or later)\n - [Microsoft Visual C++ Redistributable for Visual Studio 2015, 2017 and 2019](\n https://support.microsoft.com/help/2977003/the-latest-supported-visual-c-downloads).\n - [NVIDIA\u00ae CUDA\u00ae Toolkit](\n https://developer.nvidia.com/cuda-toolkit) for GPU support.\n\n## Usage\nHere we show some of the key features of the SecML library.\n\n**Wide range of supported ML algorithms.** All supervised learning algorithms\n supported by `scikit-learn` are available:\n```python\n# Wrapping a scikit-learn classifier\nfrom sklearn.svm import SVC\nfrom secml.ml.classifiers import CClassifierSkLearn\nmodel = SVC()\nsecml_model = CClassifierSkLearn(model)\n```\nAlso, SecML supports Neural Networks (NNs) through [PyTorch](https://pytorch.org/) deep learning platform:\n```python\n# Wrapping a Pytorch network\nfrom torchvision.models import resnet18\nfrom secml.ml.classifiers import CClassifierPyTorch\nmodel = resnet18(pretrained=True)\nsecml_model = CClassifierPyTorch(model, input_shape=(3, 224, 224))\n```\n\n**Management of datasets.** SecML can bundle together samples and labels together in a single object:\n```python\nfrom secml.array import CArray\nfrom secml.data import CDataset\n\nx = CArray.randn((200, 10))\ny = CArray.zeros(200)\ndataset = CDataset(x, y)\n```\nAlso, you can load famous datasets as well:\n```python\nfrom secml.data.loader import CDataLoaderMNIST\ndigits = (1, 5, 9) # load subset of digits\nloader = CDataLoaderMNIST()\nnum_samples = 200\ntrain_set = loader.load('training', digits=digits)\ntest_set = loader.load('testing', digits=digits, num_samples=num_samples)\n```\n\n**Built-in attack algorithms.** Evasion and poisoning attacks based on a\n custom-developed fast solver. In addition, we provide connectors to other \n third-party Adversarial Machine Learning libraries.\n```python\nfrom secml.adv.attacks import CAttackEvasionPGD\n\ndistance = 'l2' # type of perturbation 'l1' or 'l2'\ndmax = 2.5 # maximum perturbation\nlb, ub = 0., 1. # bounds of the attack space. None for unbounded\ny_target = None # None if untargeted, specify target label otherwise\n\n# Should be chosen depending on the optimization problem\nsolver_params = {\n 'eta': 0.5, # step size of the attack\n 'max_iter': 100, # number of gradient descent steps\n}\n\nattack = CAttackEvasionPGD(classifier=secml_model,\n distance=distance,\n dmax=dmax,\n solver_params=solver_params,\n y_target=y_target)\n\nadv_pred, scores, adv_ds, f_obj = attack.run(x, y)\n```\n\nA more detailed example covering evasion and poisoning attacks built-in in SecML can be found in [this](tutorials/06-MNIST_dataset.ipynb) notebook.\n\n**Wrapper of other adversarial frameworks.** Attacks can also be instantiated using other framework as well.\nIn particular, SecML can utilizes algorithms from `foolbox` and `cleverhans`.\n```python\nfrom secml.adv.attacks import CFoolboxPGDL2\ny_target = None\nsteps = 100\nepsilon = 1.0 # maximum perturbation\nattack = CFoolboxPGDL2(classifier=secml_model,\n y_target=y_target,\n epsilons=epsilon,\n steps=steps)\n\nadv_pred, scores, adv_ds, f_obj = attack.run(x, y)\n```\n\nA more detailed example covering attacks wrapped from other libraries can be found in [this](tutorials/15-Foolbox.ipynb) notebook.\n\n\n**Dense/Sparse data support.** We provide full, transparent support for both\n dense (through `numpy` library) and sparse data (through `scipy` library)\n in a single data structure.\n```python\nfrom secml.array import CArray\n\nx = CArray.zeros((4, 4))\nx[0, 2] = 1\nprint(x)\n\n\"\"\"\n>> CArray([[0. 0. 1. 0.]\n [0. 0. 0. 0.]\n [0. 0. 0. 0.]\n [0. 0. 0. 0.]])\n\"\"\"\nx = x.tosparse()\nprint(x) \n\n\"\"\"\n>> CArray((0, 2) 1.0)\n\"\"\"\n```\n\nA more detailed example covering the usage of sparse data with an application in Android Malware Classification can be found in [this](tutorials/13-Android-Malware-Detection.ipynb) notebook.\n\n\n**Visualize your results.** We provide a visualization and plotting framework,\n based on the widely-known library [matplotlib](https://matplotlib.org/).\n```python\nfrom secml.figure import CFigure\nfrom secml.optim.constraints import CConstraintL2\n\nfig = CFigure(width=5, height=5, markersize=12)\n\nfig.subplot(1, 2, 1)\n\n# Plot the attack objective function\nfig.sp.plot_fun(attack.objective_function, \n plot_levels=False,\n n_grid_points=200)\n\n# Plot the decision boundaries of the classifier\nfig.sp.plot_decision_regions(secml_model, \n plot_background=False, \n n_grid_points=200)\n\n# Plot the optimization sequence\nfig.sp.plot_path(attack.x_seq)\n\n# Plot a constraint\nfig.sp.plot_constraint(constraint)\n\nfig.title(\"SecML example\")\n\nfig.show()\n```\n\n**Explain your results.** Explainable ML methods to interpret model decisions\n via influential features and prototypes.\n```python\nfrom src.secml.explanation import CExplainerIntegratedGradients\n\n# Compute explanations (attributions) w.r.t. each class\nattributions = CArray.empty(shape=(dataset.num_classes, x.size))\nfor c in dataset.classes:\n attributions_c = CExplainerIntegratedGradients(clf).explain(x, y=c)\n attributions[c, :] = attributions_c\n\n# Visualize the explanations\nfig = CFigure()\n\n# Threshold to plot positive and negative relevance values symmetrically\nthreshold = max(abs(attributions.min()), abs(attributions.max()))\n\n# Plot explanations\nfor c in dataset.classes:\n fig.sp.imshow(attributions[c, :].reshape((dataset.header.img_h, \n dataset.header.img_w)),\n cmap='seismic', vmin=-1 * threshold, vmax=threshold)\n fig.sp.yticks([])\n fig.sp.xticks([])\nfig.show()\n```\n\nA more detailed example covering explainability techniques can be found in [this](tutorials/10-Explanation.ipynb) notebook.\n\n\n**Model Zoo.** Use our pre-trained models to save time and easily replicate \n scientific results.\n```python\nfrom secml.model_zoo import load_model\nclf = load_model('mnist159-cnn')\n```\n\n## Tutorials\nWe provide tutorials that cover more advanced usages of SecML, and they can be found inside the [tutorials](tutorials) folder.\n\n## Contributing\n\nThe contributing and developer's guide is available at: \nhttps://secml.readthedocs.io/en/latest/developers/\n\n## How to cite SecML\nIf you use SecML in a scientific publication, please cite the following paper:\n\n[secml: A Python Library for Secure and Explainable Machine Learning](\nhttps://arxiv.org/abs/1912.10013), Melis *et al.*, arXiv preprint arXiv:1912.10013 (2019).\n\n```bibtex\n@article{melis2019secml,\n title={secml: A Python Library for Secure and Explainable Machine Learning},\n author={Melis, Marco and Demontis, Ambra and Pintor, Maura and Sotgiu, Angelo and Biggio, Battista},\n journal={arXiv preprint arXiv:1912.10013},\n year={2019}\n}\n```\n\n## Contacts\nThe best way for reaching us is by opening issues. However, if you wish to contact us, you can drop an email to:\n* [maura.pintor@unica.it](mailto:maura.pintor@unica.it)\n* [luca.demetrio93@unica.it](mailto:luca.demetrio93@unica.it)\n\n\n## Acknowledgements\nSecML has been partially developed with the support of European Union\u2019s \n[ALOHA project](https://www.aloha-h2020.eu/) Horizon 2020 Research and \nInnovation programme, grant agreement No. 780788.\n\n\n## Copyright\nSecML has been developed by [PRALab - Pattern Recognition and Applications lab](\nhttps://pralab.diee.unica.it) and [Pluribus One s.r.l.](https://www.pluribus-one.it/) \nunder [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). All rights reserved.\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "https://pypi.python.org/pypi/secml#files", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://secml.gitlab.io", "keywords": "", "license": "Apache License 2.0", "maintainer": "Marco Melis", "maintainer_email": "marco.melis@unica.it", "name": "secml", "package_url": "https://pypi.org/project/secml/", "platform": "Linux", "project_url": "https://pypi.org/project/secml/", "project_urls": { "Bug Tracker": "https://gitlab.com/secml/secml/-/issues", "Download": "https://pypi.python.org/pypi/secml#files", "Homepage": "https://secml.gitlab.io", "Source Code": "https://gitlab.com/secml/secml" }, "release_url": "https://pypi.org/project/secml/0.15/", "requires_dist": [ "numpy (>=1.17)", "scipy (>=1.3.2)", "matplotlib (>=3)", "scikit-learn (>=0.22)", "joblib (>=0.14)", "Pillow (>=6.2.1)", "requests", "python-dateutil", "tensorflow (<2,>=1.14) ; extra == 'cleverhans'", "cleverhans (<3.1) ; extra == 'cleverhans'", "foolbox (>=3.3.0) ; extra == 'foolbox'", "torch (!=1.5.*,>=1.4) ; extra == 'foolbox'", "torchvision (!=0.6.*,>=0.5) ; extra == 'foolbox'", "torch (!=1.5.*,>=1.4) ; extra == 'pytorch'", "torchvision (!=0.6.*,>=0.5) ; extra == 'pytorch'", "tensorflow-gpu (<2,>=1.14) ; extra == 'tf-gpu'", "pytest (>=5) ; extra == 'unittests'", "pytest-cov (>=2.9) ; extra == 'unittests'", "coverage ; extra == 'unittests'", "jupyter ; extra == 'unittests'", "nbval ; extra == 'unittests'", "requests-mock ; extra == 'unittests'" ], "requires_python": ">=3.5, <3.10", "summary": "A library for Secure and Explainable Machine Learning", "version": "0.15", "yanked": false, "yanked_reason": null }, "last_serial": 12133907, "releases": { "0.10": [ { "comment_text": "", "digests": { "md5": "1d072a5f89a2c5e9187eecbfd39d77e9", "sha256": "c8d2addbf2cfe596ebadf0162c023fd7ee5838d92b966ddb926f1b11d7af4ff2" }, "downloads": -1, "filename": "secml-0.10-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1d072a5f89a2c5e9187eecbfd39d77e9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 408517, "upload_time": "2019-10-29T17:53:51", "upload_time_iso_8601": "2019-10-29T17:53:51.792026Z", "url": "https://files.pythonhosted.org/packages/d8/f8/a8c76a160a22bd7beeecaf3dc4b72fe4a39c00602fb2076a8ae3005a457d/secml-0.10-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "f89dedf87d554f5882ba11783437a85f", "sha256": "34752188e4c8f1a112fb892faf79e763edbc0eab811e5dbb07063d579784dc9f" }, "downloads": -1, "filename": "secml-0.10.zip", "has_sig": false, "md5_digest": "f89dedf87d554f5882ba11783437a85f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 418941, "upload_time": "2019-10-29T17:53:53", "upload_time_iso_8601": "2019-10-29T17:53:53.342796Z", "url": "https://files.pythonhosted.org/packages/8d/08/0004159383195027455b5002506a31aaf46caed599044619dea9e2084589/secml-0.10.zip", "yanked": false, "yanked_reason": null } ], "0.10rc1": [ { "comment_text": "", "digests": { "md5": "fa84e7f9264543652fd8fee336be968e", "sha256": "470da9796b420990911be0501581c60d4b4cba99b8e095de6e1d2c288a8268e4" }, "downloads": -1, "filename": "secml-0.10rc1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "fa84e7f9264543652fd8fee336be968e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 408553, "upload_time": "2019-10-29T11:49:15", "upload_time_iso_8601": "2019-10-29T11:49:15.447877Z", "url": "https://files.pythonhosted.org/packages/ec/b1/38206514ffa78eded369bfd0a65675142a7e2c33f0c6f50ec9399cd5eeb8/secml-0.10rc1-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "13e7349e639b3add65931329aa155211", "sha256": "4213847b33127461ce082753887d001403d4e707e9c651251cdfb8de62552ffe" }, "downloads": -1, "filename": "secml-0.10rc1.zip", "has_sig": false, "md5_digest": "13e7349e639b3add65931329aa155211", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 418810, "upload_time": "2019-10-29T11:49:17", "upload_time_iso_8601": "2019-10-29T11:49:17.201489Z", "url": "https://files.pythonhosted.org/packages/ec/e4/ae39365ce0a3fb4b30625b4e3a4f828fb4678d1f1cd6473c67a311708c6b/secml-0.10rc1.zip", "yanked": false, "yanked_reason": null } ], "0.11": [ { "comment_text": "", "digests": { "md5": "01377592d48595638bb9cc27cd08416a", "sha256": "f58ee420a4a7b1eae08ecf49825e5da5ddf1913301cac83109e45e59ad8f0645" }, "downloads": -1, "filename": "secml-0.11-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "01377592d48595638bb9cc27cd08416a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.5.*, <4", "size": 408127, "upload_time": "2019-12-02T14:57:04", "upload_time_iso_8601": "2019-12-02T14:57:04.912065Z", "url": "https://files.pythonhosted.org/packages/38/5a/175cd9bae1583af5f2cd4be38fea58cece42efe95825e8de11fe23172337/secml-0.11-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "d22db4614b17c3acbceddbb70aab3c29", "sha256": "62f59f7ac52233b52cac7d22cb41e3e99b05f1c0d3dfe4c3669fa4bf62436102" }, "downloads": -1, "filename": "secml-0.11.zip", "has_sig": false, "md5_digest": "d22db4614b17c3acbceddbb70aab3c29", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.*, <4", "size": 420059, "upload_time": "2019-12-02T14:57:06", "upload_time_iso_8601": "2019-12-02T14:57:06.942780Z", "url": "https://files.pythonhosted.org/packages/54/b5/eda97ae0c257451d70c7f94c950ba355b8f73d64dbc08a6af2b7a699058e/secml-0.11.zip", "yanked": false, "yanked_reason": null } ], "0.11.1": [ { "comment_text": "", "digests": { "md5": "5d4281a97576263e1aed72dc1ba71efa", "sha256": "8824b7dce4f788ff27b2da06af5a4708750b72fdebd890952244d5b14a99f8a3" }, "downloads": -1, "filename": "secml-0.11.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5d4281a97576263e1aed72dc1ba71efa", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.5.*, <4", "size": 408428, "upload_time": "2019-12-18T14:13:42", "upload_time_iso_8601": "2019-12-18T14:13:42.974220Z", "url": "https://files.pythonhosted.org/packages/43/d3/8122ae8f8bb2463f7b714d43963bd1b51c96f4613846af846a45b6167477/secml-0.11.1-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "463574a2df28997b8e94bb86230c9321", "sha256": "7d60b15dfbbe698df2776249cbc32c4bd83d529715b796d2ece31922bbb2580c" }, "downloads": -1, "filename": "secml-0.11.1.zip", "has_sig": false, "md5_digest": "463574a2df28997b8e94bb86230c9321", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.*, <4", "size": 421629, "upload_time": "2019-12-18T14:13:45", "upload_time_iso_8601": "2019-12-18T14:13:45.164769Z", "url": "https://files.pythonhosted.org/packages/b1/46/19daca4deaf86dffd4329a2a922357efdae7358b14d5961147374d2b5d0e/secml-0.11.1.zip", "yanked": false, "yanked_reason": null } ], "0.11.1rc2": [ { "comment_text": "", "digests": { "md5": "4417a300dc57218e19c579b6e86fd73f", "sha256": "c38182b4e94901ce705ef336307f9713e77cdd06b5c504e43711303d8cb020bf" }, "downloads": -1, "filename": "secml-0.11.1rc2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4417a300dc57218e19c579b6e86fd73f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.5.*, <4", "size": 408472, "upload_time": "2019-12-18T13:05:32", "upload_time_iso_8601": "2019-12-18T13:05:32.931433Z", "url": "https://files.pythonhosted.org/packages/aa/42/42b694a6558d9ef61fc902515bb4a2e433fa81d4ffaeff648ca69a7e612a/secml-0.11.1rc2-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "69c5720d7cb5a5a90d086b81f7e386ac", "sha256": "a1d0593ebac292d6d62101e548a38b3b52dde25a1f98a0a1cd97e6c2e36ad09f" }, "downloads": -1, "filename": "secml-0.11.1rc2.zip", "has_sig": false, "md5_digest": "69c5720d7cb5a5a90d086b81f7e386ac", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.*, <4", "size": 422881, "upload_time": "2019-12-18T13:05:34", "upload_time_iso_8601": "2019-12-18T13:05:34.893551Z", "url": "https://files.pythonhosted.org/packages/53/d3/4722cddbe5908bec442e5bf357c4950ea25a3a118457f06671d925510b81/secml-0.11.1rc2.zip", "yanked": false, "yanked_reason": null } ], "0.11.2": [ { "comment_text": "", "digests": { "md5": "a018a9b2dcfbde04cda359905cca7205", "sha256": "dad1c7f4a95ef6089dcaa1e20379bdd61d5b3e4cf38418af4263a8c8937ad812" }, "downloads": -1, "filename": "secml-0.11.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a018a9b2dcfbde04cda359905cca7205", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.5.*, <4", "size": 408371, "upload_time": "2020-01-07T17:19:14", "upload_time_iso_8601": "2020-01-07T17:19:14.556283Z", "url": "https://files.pythonhosted.org/packages/70/42/6e0c3355779499b80023c91d711719b6070a3ab1e2be7dda06f474835711/secml-0.11.2-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "3bf946088c13c0a390a342fc79278488", "sha256": "252d4ac2f925c4c146dd3444bb548e8cff70581ca52bc4e5044b3695f44bd0b4" }, "downloads": -1, "filename": "secml-0.11.2.zip", "has_sig": false, "md5_digest": "3bf946088c13c0a390a342fc79278488", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.*, <4", "size": 420571, "upload_time": "2020-01-07T17:19:16", "upload_time_iso_8601": "2020-01-07T17:19:16.432905Z", "url": "https://files.pythonhosted.org/packages/23/e3/738baeedb614bab64acddc4c774b582604e935dd8a239a9888ff5005594d/secml-0.11.2.zip", "yanked": false, "yanked_reason": null } ], "0.11.2.post1": [ { "comment_text": "", "digests": { "md5": "bf649d9a5e94ae72d260e62222c34fb7", "sha256": "291154fc7b76abfd2b5eada06abfb5cd82f90f2b92760dea377713997d28a492" }, "downloads": -1, "filename": "secml-0.11.2.post1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "bf649d9a5e94ae72d260e62222c34fb7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.5.*, <4", "size": 408445, "upload_time": "2020-03-09T17:50:20", "upload_time_iso_8601": "2020-03-09T17:50:20.992453Z", "url": "https://files.pythonhosted.org/packages/59/99/2f2c4794e40bb567e836c374cb9ac5e7df03b03dd3c870ab6a4db7d1ca90/secml-0.11.2.post1-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "75e5fc5b335580e56b28a89a686f75ca", "sha256": "0d8f1c164f3fd3f7998fe60e79f1789d19aa199038e1037d525bf4a9bc87a99c" }, "downloads": -1, "filename": "secml-0.11.2.post1.zip", "has_sig": false, "md5_digest": "75e5fc5b335580e56b28a89a686f75ca", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.*, <4", "size": 423407, "upload_time": "2020-03-09T17:50:22", "upload_time_iso_8601": "2020-03-09T17:50:22.484946Z", "url": "https://files.pythonhosted.org/packages/86/cd/4d2d400114973427bde27fb7885b2db3cbbbd13b2ddbc5b63813c48237f9/secml-0.11.2.post1.zip", "yanked": false, "yanked_reason": null } ], "0.11.2rc1": [ { "comment_text": "", "digests": { "md5": "b13462fad6ebd9c767dbcfe1d27192ad", "sha256": "0e535e9f383ab119cd2a2432a4c11d21c304c53e1413523cb89a3edfe22971d1" }, "downloads": -1, "filename": "secml-0.11.2rc1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b13462fad6ebd9c767dbcfe1d27192ad", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.5.*, <4", "size": 408407, "upload_time": "2020-01-07T16:08:28", "upload_time_iso_8601": "2020-01-07T16:08:28.570782Z", "url": "https://files.pythonhosted.org/packages/ea/03/10ab9b7864de9fe39e55db955ff5aab467c55d64d1e0afe07043cd838d59/secml-0.11.2rc1-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "634ccecbed05e01af61a5d53227a82a8", "sha256": "5c3ca6b8e86a3073f661cb88e01acfc220c46109ff9111a7934c6b7a10b832a5" }, "downloads": -1, "filename": "secml-0.11.2rc1.zip", "has_sig": false, "md5_digest": "634ccecbed05e01af61a5d53227a82a8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.*, <4", "size": 421559, "upload_time": "2020-01-07T16:08:30", "upload_time_iso_8601": "2020-01-07T16:08:30.350495Z", "url": "https://files.pythonhosted.org/packages/63/34/42cb018b98ab52f832193f59e0678b3cf43e9d9896859935f352a9bebb4e/secml-0.11.2rc1.zip", "yanked": false, "yanked_reason": null } ], "0.11rc1": [ { "comment_text": "", "digests": { "md5": "ab2cdd15e9701386eccb4330ef818331", "sha256": "4d6c9c1204ce1d5651600dfb96b3e5ac0f765eeb0aa0c972d4d6cef7ce003d64" }, "downloads": -1, "filename": "secml-0.11rc1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ab2cdd15e9701386eccb4330ef818331", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.5.*, <4", "size": 408168, "upload_time": "2019-12-02T11:23:34", "upload_time_iso_8601": "2019-12-02T11:23:34.726400Z", "url": "https://files.pythonhosted.org/packages/93/35/be84be8139e53f8238a1fb44ade77004fe57eba56582d042a03c22dab23c/secml-0.11rc1-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "57f4e623ebd69716a271bce64752e6ba", "sha256": "214ba195554dc1a967df8d5dbd1d6bf3968c5ac3b2a84ae5f86f954faf700fce" }, "downloads": -1, "filename": "secml-0.11rc1.zip", "has_sig": false, "md5_digest": "57f4e623ebd69716a271bce64752e6ba", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.*, <4", "size": 419810, "upload_time": "2019-12-02T11:23:36", "upload_time_iso_8601": "2019-12-02T11:23:36.229100Z", "url": "https://files.pythonhosted.org/packages/74/b7/1725cae8d2059b4a4f4810e4097207d61ef3e1851df95d9a2c13afa817d7/secml-0.11rc1.zip", "yanked": false, "yanked_reason": null } ], "0.12": [ { "comment_text": "", "digests": { "md5": "708b1109ecfd401898ad6c385071bfca", "sha256": "805b308b8d5ae034b02345de17e8ae29e78db606e447c5edd54e896d4edf410f" }, "downloads": -1, "filename": "secml-0.12-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "708b1109ecfd401898ad6c385071bfca", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.5.*, <4", "size": 417394, "upload_time": "2020-03-11T15:37:16", "upload_time_iso_8601": "2020-03-11T15:37:16.524157Z", "url": "https://files.pythonhosted.org/packages/31/2b/da14565ba2727e59385bc3c5f39366f20724e452f137303cb885fe99617c/secml-0.12-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "dd7a8de5258f7c7cb416cefd0b8e7c1e", "sha256": "8e6e2d37b37c8d961de5f8b5c8e5e6007e417e8c06e56e025d1fda82c1d10f35" }, "downloads": -1, "filename": "secml-0.12.zip", "has_sig": false, "md5_digest": "dd7a8de5258f7c7cb416cefd0b8e7c1e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.*, <4", "size": 431062, "upload_time": "2020-03-11T15:37:17", "upload_time_iso_8601": "2020-03-11T15:37:17.828706Z", "url": "https://files.pythonhosted.org/packages/73/e3/0f0dbc50537b5014e352b3a18462ebad99706baece51ef8e0f52e62f9e47/secml-0.12.zip", "yanked": false, "yanked_reason": null } ], "0.12rc1": [ { "comment_text": "", "digests": { "md5": "56b01b66090979696d2179829d577ea7", "sha256": "2f37f3bea381f4dade4b4384a08cdcfc0571a849af789f4a43ef71832a0423dc" }, "downloads": -1, "filename": "secml-0.12rc1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "56b01b66090979696d2179829d577ea7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.5.*, <4", "size": 417435, "upload_time": "2020-03-10T17:22:53", "upload_time_iso_8601": "2020-03-10T17:22:53.643294Z", "url": "https://files.pythonhosted.org/packages/df/d2/9cd3bc3de18ac721b9b449664d8dddbe26de697333b3278b6e956360dfee/secml-0.12rc1-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "fc659824bf451d709ac0d1791efa3e2c", "sha256": "5d4cbec2adbd9478bb5b2dc41143d286b6f24527df653d159e054ff48a67a4ce" }, "downloads": -1, "filename": "secml-0.12rc1.zip", "has_sig": false, "md5_digest": "fc659824bf451d709ac0d1791efa3e2c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.*, <4", "size": 430484, "upload_time": "2020-03-10T17:22:54", "upload_time_iso_8601": "2020-03-10T17:22:54.975761Z", "url": "https://files.pythonhosted.org/packages/79/4a/616e6bd861a69c524cc3465b40ad1ac437b8f4b790347ce02127a659efac/secml-0.12rc1.zip", "yanked": false, "yanked_reason": null } ], "0.13": [ { "comment_text": "", "digests": { "md5": "f3438f630660b5cd9e8053af38653a81", "sha256": "9bc568a7ead42d1350346ab8425011fbf6d89c0d916da25fd8a64a4b14cdba65" }, "downloads": -1, "filename": "secml-0.13-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f3438f630660b5cd9e8053af38653a81", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.5.*, <4", "size": 430894, "upload_time": "2020-07-24T14:22:00", "upload_time_iso_8601": "2020-07-24T14:22:00.546385Z", "url": "https://files.pythonhosted.org/packages/42/98/a6b2c7aa59c9ee54f29f13a6e4cb82a00ffd5725141bf1e7f511f57287d6/secml-0.13-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "e2441675bb7fcbaa51afa8aa8742da9a", "sha256": "79567c27faa266cbf59dad985a5f3ab958411cc558ad768c0cb7b4b0065d9b26" }, "downloads": -1, "filename": "secml-0.13.zip", "has_sig": false, "md5_digest": "e2441675bb7fcbaa51afa8aa8742da9a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.*, <4", "size": 447207, "upload_time": "2020-07-24T14:22:01", "upload_time_iso_8601": "2020-07-24T14:22:01.911945Z", "url": "https://files.pythonhosted.org/packages/9e/72/f69b4bc5c5fe0015e79ecf29663a9f4931c3b54a1c5b9c0f8cf3982b575b/secml-0.13.zip", "yanked": false, "yanked_reason": null } ], "0.13.post1": [ { "comment_text": "", "digests": { "md5": "12927ecb839a3c5a6e3c5d0d0ffb8e7f", "sha256": "65e934d3132207700260965cb6c98d5a96de99eef169b1da7cd0e52acdbe61bf" }, "downloads": -1, "filename": "secml-0.13.post1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "12927ecb839a3c5a6e3c5d0d0ffb8e7f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.5.*, <4", "size": 430966, "upload_time": "2020-08-06T14:11:27", "upload_time_iso_8601": "2020-08-06T14:11:27.782786Z", "url": "https://files.pythonhosted.org/packages/8a/d0/a33b3f7c73ed1eba0718205496c9b81a5c679404883609f83a8ecc90b593/secml-0.13.post1-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "ffd4b6383a71309fa559096083470f16", "sha256": "c7695865a776845535d7e8f3f69fbb755865b5bd8c9e0c4bf10f3d905db31b79" }, "downloads": -1, "filename": "secml-0.13.post1.zip", "has_sig": false, "md5_digest": "ffd4b6383a71309fa559096083470f16", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.*, <4", "size": 450060, "upload_time": "2020-08-06T14:11:29", "upload_time_iso_8601": "2020-08-06T14:11:29.081509Z", "url": "https://files.pythonhosted.org/packages/15/54/7512a7b6fe967c9ca66b42e63a96f003a4ff40195b9f2145a22ad1c8ce95/secml-0.13.post1.zip", "yanked": false, "yanked_reason": null } ], "0.13rc2": [ { "comment_text": "", "digests": { "md5": "ce0a63af0eb8c81adf8a598ba645c4a9", "sha256": "a779baa79a41260d0b091318f7704221150c5486479a1c28b866916fd701ee52" }, "downloads": -1, "filename": "secml-0.13rc2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ce0a63af0eb8c81adf8a598ba645c4a9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.5.*, <4", "size": 430935, "upload_time": "2020-07-24T11:54:38", "upload_time_iso_8601": "2020-07-24T11:54:38.390106Z", "url": "https://files.pythonhosted.org/packages/19/6c/dc8c211b6776b82066a84c85d93779bec1e7903ef5a3ed2b4ade2330bd2e/secml-0.13rc2-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "8c9f6457023c0598a107b40e9a566bf1", "sha256": "6bc867fe282570735fb1a51fa6b474c9732df6d67761effb92a79bb955faf994" }, "downloads": -1, "filename": "secml-0.13rc2.zip", "has_sig": false, "md5_digest": "8c9f6457023c0598a107b40e9a566bf1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.*, <4", "size": 446378, "upload_time": "2020-07-24T11:54:39", "upload_time_iso_8601": "2020-07-24T11:54:39.691673Z", "url": "https://files.pythonhosted.org/packages/20/55/398654761357ea22fe206dc44f1e5cba68cf81aaa6b579b636aff96a74e2/secml-0.13rc2.zip", "yanked": false, "yanked_reason": null } ], "0.14": [ { "comment_text": "", "digests": { "md5": "6d3f9a5ce958db3db236adaa9cf4856f", "sha256": "ba8e1653ede90b7cf1d788292cef1b6ba5e7492b6856ca1379e0d057361677d0" }, "downloads": -1, "filename": "secml-0.14-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6d3f9a5ce958db3db236adaa9cf4856f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.5, <3.9", "size": 459901, "upload_time": "2021-03-23T14:17:40", "upload_time_iso_8601": "2021-03-23T14:17:40.559073Z", "url": "https://files.pythonhosted.org/packages/42/2c/ca9c04f1fbfda0a411cb04ed271796c341ce3bf527810da33eb89ceaf88d/secml-0.14-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "54327a75a1798d6fd4c0a4cfe543ea53", "sha256": "681b7f0b85a5027442cd66f6f916c016edf29c5b4dd9766b3e27853c589559d5" }, "downloads": -1, "filename": "secml-0.14.zip", "has_sig": false, "md5_digest": "54327a75a1798d6fd4c0a4cfe543ea53", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5, <3.9", "size": 484980, "upload_time": "2021-03-23T14:17:41", "upload_time_iso_8601": "2021-03-23T14:17:41.915491Z", "url": "https://files.pythonhosted.org/packages/ef/08/df24710f8ac39d28f08f4733844f85d79b730cf232125b6383087c0e445e/secml-0.14.zip", "yanked": false, "yanked_reason": null } ], "0.14.1": [ { "comment_text": "", "digests": { "md5": "0f823b40b3a12804b607c28d0ab22a2b", "sha256": "fe253cb7fcb62f60c77f8efae053a95b3ea2bd513a79c3eacb82cbc32974f46f" }, "downloads": -1, "filename": "secml-0.14.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0f823b40b3a12804b607c28d0ab22a2b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.5, <3.9", "size": 460711, "upload_time": "2021-04-22T16:58:02", "upload_time_iso_8601": "2021-04-22T16:58:02.778652Z", "url": "https://files.pythonhosted.org/packages/e5/2c/3d375c7f59f683d634e77ee025ee0f633c6c08eeee1ac376856b3ada5e0d/secml-0.14.1-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "9a9735ca6578106ff21093dd73922fcd", "sha256": "5aafb1ef5fa80ecb60d72f588e582442d59aa966cc22b98f1c092d04297898fd" }, "downloads": -1, "filename": "secml-0.14.1.zip", "has_sig": false, "md5_digest": "9a9735ca6578106ff21093dd73922fcd", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5, <3.9", "size": 487270, "upload_time": "2021-04-22T16:58:04", "upload_time_iso_8601": "2021-04-22T16:58:04.306630Z", "url": "https://files.pythonhosted.org/packages/7f/1c/6794af88c930302739b9eb2ea1b373c501fdea6a1310868cd6dde4ad3fe0/secml-0.14.1.zip", "yanked": false, "yanked_reason": null } ], "0.14.1rc1": [ { "comment_text": "", "digests": { "md5": "c3212a5ee7a7b21b82e1ee71daa4a503", "sha256": "26114f518d9452959bcbcce809dc44a08bfb77e30cb115135dee2aa2f05e7019" }, "downloads": -1, "filename": "secml-0.14.1rc1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c3212a5ee7a7b21b82e1ee71daa4a503", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.5, <3.9", "size": 460749, "upload_time": "2021-04-22T15:34:55", "upload_time_iso_8601": "2021-04-22T15:34:55.889129Z", "url": "https://files.pythonhosted.org/packages/b2/b9/a75030c65c4c704d6b2dd56b8f8f0bf49445c6f069745534e8d7fe4abf13/secml-0.14.1rc1-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "b806836d3804749a778f32025c18b511", "sha256": "8bfec7c3712eb09e510f230a2ce6564e1b8f7aae24b4e4c3ab8c105918e978cf" }, "downloads": -1, "filename": "secml-0.14.1rc1.zip", "has_sig": false, "md5_digest": "b806836d3804749a778f32025c18b511", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5, <3.9", "size": 488871, "upload_time": "2021-04-22T15:34:57", "upload_time_iso_8601": "2021-04-22T15:34:57.025455Z", "url": "https://files.pythonhosted.org/packages/c4/76/f2fa62fa9aa92b09061c23da0e06fd250c83c4abd702b742ffba2a98ae3a/secml-0.14.1rc1.zip", "yanked": false, "yanked_reason": null } ], "0.14rc1": [ { "comment_text": "", "digests": { "md5": "998ee4eaebd7826d64e219e1cd45110e", "sha256": "d867c1df41e6eb8ce8dc02045455222c625ef39f7d270af39634660bf5f185b4" }, "downloads": -1, "filename": "secml-0.14rc1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "998ee4eaebd7826d64e219e1cd45110e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.5, <3.9", "size": 459949, "upload_time": "2021-03-22T16:23:15", "upload_time_iso_8601": "2021-03-22T16:23:15.786784Z", "url": "https://files.pythonhosted.org/packages/f5/15/007de78b4b96ef2d14142b7b38550a9c7cb7fae8223ea41574e091bf37d9/secml-0.14rc1-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "13197af2c6bf905cc109631f2ed8cea5", "sha256": "ef2e2d58d7360a6d0ecb9770cef0f4842654d18e1109f04dd12ad7fcdeb23834" }, "downloads": -1, "filename": "secml-0.14rc1.zip", "has_sig": false, "md5_digest": "13197af2c6bf905cc109631f2ed8cea5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5, <3.9", "size": 485494, "upload_time": "2021-03-22T16:23:17", "upload_time_iso_8601": "2021-03-22T16:23:17.167569Z", "url": "https://files.pythonhosted.org/packages/ff/9f/6edcdfd7a154ce891df3a8ae7c9a423854e759b8443cca4f7e0852c22172/secml-0.14rc1.zip", "yanked": false, "yanked_reason": null } ], "0.14rc2": [ { "comment_text": "", "digests": { "md5": "83cd52dd9ec941b6a6c3613ebc6248fe", "sha256": "85226ce910a2dbe2178bd607e835c4ece432b3c2c089f27c3af385e54e11dadd" }, "downloads": -1, "filename": "secml-0.14rc2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "83cd52dd9ec941b6a6c3613ebc6248fe", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.5, <3.9", "size": 459939, "upload_time": "2021-03-23T10:18:59", "upload_time_iso_8601": "2021-03-23T10:18:59.844906Z", "url": "https://files.pythonhosted.org/packages/6b/0b/5f421e79c51414d6a1aeb503290ed03617d7cbf59b0ce580cac86f0ec4fd/secml-0.14rc2-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "c552a3a2a37c219750c6df32af001b3b", "sha256": "317b900d4a04e1ec005c11735455d55813e062293da2528058713e2782163599" }, "downloads": -1, "filename": "secml-0.14rc2.zip", "has_sig": false, "md5_digest": "c552a3a2a37c219750c6df32af001b3b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5, <3.9", "size": 485467, "upload_time": "2021-03-23T10:19:01", "upload_time_iso_8601": "2021-03-23T10:19:01.119727Z", "url": "https://files.pythonhosted.org/packages/e2/5f/0198f15cf87c0630489b1ad99e80587b606a0ef045747cf74bab92c75769/secml-0.14rc2.zip", "yanked": false, "yanked_reason": null } ], "0.15": [ { "comment_text": "", "digests": { "md5": "9375180bbb3af58c0712eaa1c50b2a8b", "sha256": "f9915fdcfd8cb88e2cb9eade0256a1ba78724cccdc71e8d66bbb5d8f260a3ab0" }, "downloads": -1, "filename": "secml-0.15-py3-none-any.whl", "has_sig": false, "md5_digest": "9375180bbb3af58c0712eaa1c50b2a8b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5, <3.10", "size": 463347, "upload_time": "2021-11-26T15:40:54", "upload_time_iso_8601": "2021-11-26T15:40:54.687859Z", "url": "https://files.pythonhosted.org/packages/2b/66/1077a0fefe3b11dd7c14c2e1fdcf9e2f84f00c155b3c876de29015ced11b/secml-0.15-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "74f9f848036f21bcfd68c4706e1500a3", "sha256": "f900940454504aca5ff518912318286de9b07d587ebf9991fd47aa2a95e0519b" }, "downloads": -1, "filename": "secml-0.15.tar.gz", "has_sig": false, "md5_digest": "74f9f848036f21bcfd68c4706e1500a3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5, <3.10", "size": 318040, "upload_time": "2021-11-26T15:40:56", "upload_time_iso_8601": "2021-11-26T15:40:56.970880Z", "url": "https://files.pythonhosted.org/packages/43/63/c15c6d4a4db3b66e2b96cab536f9752ac19ec1e4166e74dc39024731aa27/secml-0.15.tar.gz", "yanked": false, "yanked_reason": null } ], "0.8": [ { "comment_text": "", "digests": { "md5": "de8f700b112194ccd4bd6962c9fab39e", "sha256": "f2f8fe55fd3953ba0550e05703404bab027880da5dc2eab711fcfe27d1fbfbb6" }, "downloads": -1, "filename": "secml-0.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "de8f700b112194ccd4bd6962c9fab39e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 383123, "upload_time": "2019-08-06T13:07:52", "upload_time_iso_8601": "2019-08-06T13:07:52.099760Z", "url": "https://files.pythonhosted.org/packages/5d/54/4e0f9e0f5f6c74886cf5f1234aae63105e6a501ca5575fd02959bcd414a2/secml-0.8-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "fec7ff53c60e1e486a57fca9ae683340", "sha256": "dece60ceefc6c6ac30c4eb44d482ac8c3a0b27f58df791399a7f6bca4381f314" }, "downloads": -1, "filename": "secml-0.8.zip", "has_sig": false, "md5_digest": "fec7ff53c60e1e486a57fca9ae683340", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 389888, "upload_time": "2019-08-06T13:07:54", "upload_time_iso_8601": "2019-08-06T13:07:54.585821Z", "url": "https://files.pythonhosted.org/packages/ba/00/3764d4fb582d43b7ba40d85d7e9c3a67b97aa1722d701fdd17389a903057/secml-0.8.zip", "yanked": false, "yanked_reason": null } ], "0.8.1": [ { "comment_text": "", "digests": { "md5": "8909e0e1660428745864f8164f4a7eda", "sha256": "1e8cd38a47f6e4827fdbb5e62fe014a12018f6866d1bfbd80896298fbadd67a7" }, "downloads": -1, "filename": "secml-0.8.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8909e0e1660428745864f8164f4a7eda", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 383459, "upload_time": "2019-09-05T17:57:54", "upload_time_iso_8601": "2019-09-05T17:57:54.110122Z", "url": "https://files.pythonhosted.org/packages/1f/ca/11040049c7371d284ca1064e10e0f5476f82c3c069a736db68bba32a35ae/secml-0.8.1-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "4c4b2f9e71f9f627ba00585af9494e96", "sha256": "d9ae0ffd0d014349317828605f704c3eaeccc18c43c105f2868e78a6163b9f17" }, "downloads": -1, "filename": "secml-0.8.1.zip", "has_sig": false, "md5_digest": "4c4b2f9e71f9f627ba00585af9494e96", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 391183, "upload_time": "2019-09-05T17:57:57", "upload_time_iso_8601": "2019-09-05T17:57:57.918781Z", "url": "https://files.pythonhosted.org/packages/6d/0b/318509e84c7f7081f91c57f1a6dd58ddee51beeb5b0f25bcbb27e171db4b/secml-0.8.1.zip", "yanked": false, "yanked_reason": null } ], "0.8.1rc1": [ { "comment_text": "", "digests": { "md5": "af8a06df4dc91a16c7aeb0b82dbf806e", "sha256": "2713df6d589cf5e9428fe643149e481f44b41e211c72e93bec50571d7a049a65" }, "downloads": -1, "filename": "secml-0.8.1rc1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "af8a06df4dc91a16c7aeb0b82dbf806e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 383495, "upload_time": "2019-09-05T16:50:10", "upload_time_iso_8601": "2019-09-05T16:50:10.905406Z", "url": "https://files.pythonhosted.org/packages/e8/d3/66b1dee5770734e0f3759bd3e8d73d0f1d1d9979d5aee1722005f3de84a2/secml-0.8.1rc1-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "668b9de0a642401895275667f9092109", "sha256": "7ce794d672997ee9c485c904c370da9b844f22e63101deb036311a30afbde5ed" }, "downloads": -1, "filename": "secml-0.8.1rc1.zip", "has_sig": false, "md5_digest": "668b9de0a642401895275667f9092109", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 392313, "upload_time": "2019-09-05T16:50:13", "upload_time_iso_8601": "2019-09-05T16:50:13.889664Z", "url": "https://files.pythonhosted.org/packages/c2/6e/a6da2291fbc1da683049c5c4989bdb3ac9a5f63dcf9510cd68ecc84d44ab/secml-0.8.1rc1.zip", "yanked": false, "yanked_reason": null } ], "0.8rc1": [ { "comment_text": "", "digests": { "md5": "281e817b1e769094cd971fced7b7aba2", "sha256": "2a93beec3294808670a8a6ab065f3de006f0a2e3590e50aa8c227997fac21eff" }, "downloads": -1, "filename": "secml-0.8rc1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "281e817b1e769094cd971fced7b7aba2", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 381457, "upload_time": "2019-08-05T21:21:07", "upload_time_iso_8601": "2019-08-05T21:21:07.014790Z", "url": "https://files.pythonhosted.org/packages/30/1c/a0de879eb172470d9870ed496caeacf3b66c092403b8b1a08780e7b265b5/secml-0.8rc1-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "2c7882dd3af19413da627e64782a6dc2", "sha256": "5ec26985119cabc26a9dc18df09eb5352951fb76ea8d535e37dd59c5146d7bde" }, "downloads": -1, "filename": "secml-0.8rc1.zip", "has_sig": false, "md5_digest": "2c7882dd3af19413da627e64782a6dc2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 390809, "upload_time": "2019-08-05T21:21:10", "upload_time_iso_8601": "2019-08-05T21:21:10.398329Z", "url": "https://files.pythonhosted.org/packages/d5/cb/5a8d96d6a30a8227220dfe3ac650ef5dec63b0bf8ad57df075677dcd0909/secml-0.8rc1.zip", "yanked": false, "yanked_reason": null } ], "0.8rc2": [ { "comment_text": "", "digests": { "md5": "947e4b3dcab6080075a094d8896b2e08", "sha256": "3dbc2f0058be708c86dedfc80f000a3a15079f160fc02acbfa28b1d456d194fe" }, "downloads": -1, "filename": "secml-0.8rc2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "947e4b3dcab6080075a094d8896b2e08", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 383164, "upload_time": "2019-08-06T12:08:06", "upload_time_iso_8601": "2019-08-06T12:08:06.131947Z", "url": "https://files.pythonhosted.org/packages/95/77/bcd98c72be70aee49bbf64ad7874fd1a37370dd864f9c64bf4e5522d1538/secml-0.8rc2-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "6889a6ca32a4d13f2abe13385280461e", "sha256": "52a3311af8ccec503d7d6a8c2dea7309b42fc38284ab62829f96ea737b6bc07f" }, "downloads": -1, "filename": "secml-0.8rc2.zip", "has_sig": false, "md5_digest": "6889a6ca32a4d13f2abe13385280461e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 391114, "upload_time": "2019-08-06T12:08:08", "upload_time_iso_8601": "2019-08-06T12:08:08.937304Z", "url": "https://files.pythonhosted.org/packages/a5/62/b2865b98a1f9d83f71c7369e0c37fb0232c3299c2258a7e5083531e4fcfe/secml-0.8rc2.zip", "yanked": false, "yanked_reason": null } ], "0.9": [ { "comment_text": "", "digests": { "md5": "64c05d356d53e7f78728c44213673115", "sha256": "ef56f506befcc6d0583935a37fc657495586ba6742158cc628993565c2146f34" }, "downloads": -1, "filename": "secml-0.9-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "64c05d356d53e7f78728c44213673115", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 393555, "upload_time": "2019-10-11T18:40:55", "upload_time_iso_8601": "2019-10-11T18:40:55.735884Z", "url": "https://files.pythonhosted.org/packages/1f/a3/483834bf04693e5f61062ed9a6bab9cdaaa4b1e5cda26932ac8d06800d34/secml-0.9-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "f322ac3f519942e2977ddd17b036bdab", "sha256": "99eee87c2098b9a417c893d7ad752dab1acfda348ef38ec135b04011af895acf" }, "downloads": -1, "filename": "secml-0.9.zip", "has_sig": false, "md5_digest": "f322ac3f519942e2977ddd17b036bdab", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 401755, "upload_time": "2019-10-11T18:40:57", "upload_time_iso_8601": "2019-10-11T18:40:57.701825Z", "url": "https://files.pythonhosted.org/packages/b0/0b/2ff6c96d71aa270e42f247827ac074a407cf1d623d247b7cb5c24d665b76/secml-0.9.zip", "yanked": false, "yanked_reason": null } ], "0.9rc2": [ { "comment_text": "", "digests": { "md5": "85c12bef3f3175cb7f70f9bf5c4f4a3d", "sha256": "dada89cbccdeb43537544f437749ed4efd57de54912626996b236646a7106f30" }, "downloads": -1, "filename": "secml-0.9rc2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "85c12bef3f3175cb7f70f9bf5c4f4a3d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 393594, "upload_time": "2019-10-11T16:22:22", "upload_time_iso_8601": "2019-10-11T16:22:22.594254Z", "url": "https://files.pythonhosted.org/packages/31/df/5745b6b33b1ee765337e2b2d2ea17e120539b8dfe6f633fed64f13cacd6c/secml-0.9rc2-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "4c98093c8d282a029820c908a97c60a4", "sha256": "52711e370e5d51ce3869328e1249d441e002cee3c34aa7cd9b85cc6cd8c31108" }, "downloads": -1, "filename": "secml-0.9rc2.zip", "has_sig": false, "md5_digest": "4c98093c8d282a029820c908a97c60a4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4", "size": 402647, "upload_time": "2019-10-11T16:22:24", "upload_time_iso_8601": "2019-10-11T16:22:24.734945Z", "url": "https://files.pythonhosted.org/packages/96/b3/5deac191270ead524f53a1601892b3bc768d25cc882c3adb5c508d851df6/secml-0.9rc2.zip", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9375180bbb3af58c0712eaa1c50b2a8b", "sha256": "f9915fdcfd8cb88e2cb9eade0256a1ba78724cccdc71e8d66bbb5d8f260a3ab0" }, "downloads": -1, "filename": "secml-0.15-py3-none-any.whl", "has_sig": false, "md5_digest": "9375180bbb3af58c0712eaa1c50b2a8b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5, <3.10", "size": 463347, "upload_time": "2021-11-26T15:40:54", "upload_time_iso_8601": "2021-11-26T15:40:54.687859Z", "url": "https://files.pythonhosted.org/packages/2b/66/1077a0fefe3b11dd7c14c2e1fdcf9e2f84f00c155b3c876de29015ced11b/secml-0.15-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "74f9f848036f21bcfd68c4706e1500a3", "sha256": "f900940454504aca5ff518912318286de9b07d587ebf9991fd47aa2a95e0519b" }, "downloads": -1, "filename": "secml-0.15.tar.gz", "has_sig": false, "md5_digest": "74f9f848036f21bcfd68c4706e1500a3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5, <3.10", "size": 318040, "upload_time": "2021-11-26T15:40:56", "upload_time_iso_8601": "2021-11-26T15:40:56.970880Z", "url": "https://files.pythonhosted.org/packages/43/63/c15c6d4a4db3b66e2b96cab536f9752ac19ec1e4166e74dc39024731aa27/secml-0.15.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }