{ "info": { "author": "Gigas64", "author_email": "gigas64@opengrass.net", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Science/Research", "License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)", "Programming Language :: Python :: 3.6", "Topic :: Scientific/Engineering :: Artificial Intelligence", "Topic :: Scientific/Engineering :: Visualization", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "Discovery Behavioral Tools\n#############################\n\nThis project looks to help in the building of tools that require data that has behavioral\ncharacteristics.\n\n.. class:: no-web no-pdf\n\n|pypi| |rdt| |license| |wheel|\n\n\n.. contents::\n\n.. section-numbering::\n\nMain features\n=============\n\n* Probability Waiting\n* Correlation and Association\n* Behavioral Analytics\n\nInstallation\n============\n\npackage install\n---------------\n\nThe best way to install this package is directly from the Python Package Index repository using pip\n\n.. code-block:: bash\n\n $ pip install discovery-behavioral-utils\n\nif you want to upgrade your current version then using pip\n\n.. code-block:: bash\n\n $ pip install --upgrade discovery-behavioral-utils\n\nenv setup\n---------\nOther than the dependant python packages indicated in the ``requirements.txt`` there are\nno special environment setup needs to use the package. The package should sit as an extension to\nyour current data science and discovery packages.\n\nOverview\n========\n\nTechniques and Methods\n----------------------\nThe Behavioral Syntenic Data Generator was developed as a solution to the current challenges of data accessibility\nand the early mobilization of machine learning discovery and model build. This product tool takes on, what is, a\nsceptically viewed and challenging problem area of the generation of data that is synthetic but is still representative\nof its intended real-life counterpart. In short, The project needed to develop rich data sets to demonstrate the\ncapabilities of its machine learning offerings so users could see and test what the synthetic data could do.\n\nTo achieve this, the project identified in three constructs;\n\n1. Probability Waiting - Is an algorithm based on breadth and depth weighting patterns fulfilled through multivariate\ncontinuous distributions using monotonic splines and copulas. Working with Aryan Pedawi, a Ph.D research scientist\nspecializing in Bayesian probability theory, this Probability Waiting algorithm is one of the key differentiators\nfrom other synthetic data models, allowing fine grain and complex behavioral characteristics to be added to the\ndistribution of data points within a data set.\n\n2. Correlation and Association \u2013 Through advanced programming techniques and a deep knowledge of component modelling\nand code reuse, the project developed a finite set of data point generation tooling that implements method chaining\nand rules-based association against action techniques. This approach and its techniques provide the ability to capture\nmachine learning and business intent and generate specialized output against those requirements.\n\n3. Behavioral Analytics \u2013 In addition to the data point generators, the tooling provides data analytics and behavioral\nextraction, against existing data sets, that can be replayed to quickly create behavioral patterns within existing\ndata sets, without compromising or disclosing sensitive, or protected information. This is particularly valuable\nwith today\u2019s concerns of data protection and disclosure mitigation strategies.\n\nValue Proposition\n-----------------\nWithin the Machine learning discipline, and as a broader challenge, the accessibility of data and its relevance to the\nsuccess of early engagement and customer success is an industry problem with many variants available on the market.\nThough competent in their delivery, their ability to flex and enrich across multiple examples of need and particularly\nthe high demands of pattern and associative recognition, pertaining to machine learning, is limited and cynically\nconsidered within the machine learning community. The Behavioral Synthetic Data Generator improves representation of\ndata appropriate to ML modelling, test train data sets and the disclosure mitigation through targeted and customized\nmodelling of data that removes the personal DNA and leaves one with representative data that retains its behavioural\nDNA allowing true representation of the problem scope.\n\nThe ability to engage with the customer before the availability of or access to organisational data sets is a vital\npart of an organisations ability to prove value add early and build customer success. The Behavioural Synthetic Data\nGenerator is currently being used for stress, volume and boundary testing and presentation enrichment modelling within\nthe Accelerated Machine learning initiative. In addition, it is being used to generate highly sophisticated machine\nlearning focused behavioural data that allows for early validation of customer success while data access remains\nrestrictive and inaccessible.\n\n\nUsing the Behavioral Synthetic Data Generator\n=============================================\n\nPackage Structure\n-----------------\n\nWithin the Discovery Transitioning Utils are a set\nof\\ ``simulator package`` that contains the DataBuilder,\nDataBuilderPropertyManager and the DataBuilderTools class\n\nDataBuilder\n~~~~~~~~~~~\n\n- is a Data Builder management instance that allows the building of\n datasets to be repeatable by saving a configuration of the build\n definition\n\nDataBuilderPropertyManager\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n- manages the configuration property values and saves the build\n templates to regenerate the synthetic data\n\nDataBuilderTools:\n~~~~~~~~~~~~~~~~~\n\n- is a set of static methods that generate the different data types\n ``int``, ``float``, ``string``, ``category`` and ``date``. and define\n the randomness and patterns of the values.\n\nFirstly we need to import the ``DataBuilder`` class and create a\n**named** instance to identify this instance from other instances we\nmight create. Normally the name would be representative of the dataset\nyou are trying to create such as ``customer``, ``accounts`` or\n``transactions`` as an example\n\n.. code:: python\n\n from ds_behavioral import DataBuilder\n\n.. code:: python\n\n builder = DataBuilder('SimpleExample')\n\nBuilding a basic dataset\n------------------------\n\nwith this example we will firstly look at the tools that are avaialbe\nand produce a ``Pandas DataFrame`` on the fly\n\n.. code:: python\n\n builder.tool_dir\n\n.. parsed-literal::\n\n ['associate_analysis',\n 'associate_custom',\n 'associate_dataset',\n 'correlate_categories',\n 'correlate_dates',\n 'correlate_numbers',\n 'get_category',\n 'get_custom',\n 'get_datetime',\n 'get_distribution',\n 'get_file_column',\n 'get_intervals',\n 'get_number',\n 'get_profiles',\n 'get_reference',\n 'get_string_pattern',\n 'unique_date_seq',\n 'unique_identifiers',\n 'unique_numbers',\n 'unique_str_tokens']\n\nHere we can see the methods are broken down into four categories:\n``get``, ``unique``, ``correlate``, ``associate``.\n\nWe can also look at the contextual help for each of the methods calling\nthe ``tools`` property and using the ``help`` build-in\n\n.. code:: python\n\n help(builder.tools.get_number)\n\n.. parsed-literal::\n\n Help on function get_number in module ds_discovery.simulators.data_builder:\n\n get_number(to_value: , from_value: = None, weight_pattern: list = None, precision: int = None, size: int = None,\n quantity: float = None, seed: int = None)\n returns a number in the range from_value to to_value. if only to_value given from_value is zero\n\n **:param to_value:** highest integer value, if from_value provided must be one above this value\n **:param from_value:** optional, (signed) integer to start from. Default is zero (0)\n **:param weight_pattern:** a weighting pattern or probability that does not have to add to 1\n **:param precision:** the precision of the returned number. if None then assumes int value else float\n **:param size:** the size of the sample\n **:param quantity:** a number between 0 and 1 representing data that isn't null\n **:param seed:** a seed value for the random function: default to None\n **:return:** a random number\n\nFrom here we can now play with some of the ``get`` methods\n\n.. code:: python\n\n # get an integer between 0 and 9\n builder.tools.get_number(10, size=5)\n\n.. parsed-literal::\n\n **$>** [6, 5, 3, 2, 3]\n\n.. code:: python\n\n # get a float between -1 and 1, notice by passing an float it assumes the output to be a float\n builder.tools.get_number(from_value=-1.0, to_value=1.0, precision=3, size=5)\n\n.. parsed-literal::\n\n **$>** [0.283, 0.296, -0.958, 0.185, 0.831]\n\n.. code:: python\n\n # get a currency by setting the 'currency' parameter to a currency symbol.\n # Note this returns a list of strings\n builder.tools.get_number(from_value=1000.0, to_value=2000.0, size=5, currency='$', precision=2)\n\n.. parsed-literal::\n\n **$>** ['$1,286.00', '$1,858.00', '$1,038.00', '$1,944.00', '$1,250.00']\n\n.. code:: python\n\n # get a timestamp between two dates\n builder.tools.get_datetime(start='01/01/2017', until='31/12/2018')\n\n.. parsed-literal::\n\n **$>** [Timestamp('2018-02-11 02:23:32.733296768')]\n\n.. code:: python\n\n # get a formated date string between two numbers\n builder.tools.get_datetime(start='01/01/2017', until='31/12/2018', size=4, date_format='%d-%m-%Y')\n\n.. parsed-literal::\n\n **$>** ['06-06-2017', '05-11-2017', '28-09-2018', '04-11-2017']\n\n.. code:: python\n\n # get categories from a selection\n builder.tools.get_category(['Red', 'Blue', 'Green', 'Black', 'White'], size=4)\n\n.. parsed-literal::\n\n **$>** ['Green', 'Blue', 'Blue', 'White']\n\n.. code:: python\n\n # get unique categories from a selection\n builder.tools.get_category(['Red', 'Blue', 'Green', 'Black', 'White'], size=4, replace=False)\n\n.. parsed-literal::\n\n **$>** ['Blue', 'White', 'Green', 'Black']\n\n\nBuilding a DataFrame\n--------------------\n\nWith these lets build a quick Synthetic DataFrame. For ease of code we\nwill redefine the 'builder.tools' call\n\n.. code:: python\n\n tools = builder.tools\n\n.. code:: python\n\n # the dataframe has a unique id, a float value between 0.0 and 1.0and a date formtted as a text string\n df = pd.DataFrame()\n df['id'] = tools.unique_numbers(start=10, until=100, size=10)\n df['values'] = tools.get_number(to_value=1.0, size=10)\n df['date'] = tools.get_datetime(start='12/05/2018', until='30/11/2018', date_format='%d-%m-%Y %H:%M:%S', size=10)\n\n\nData quantity\n~~~~~~~~~~~~~\n\nto show representative data we can adjust the quality of the data we\nproduce. Here we only get about 50% of the telephone numbers\n\n.. code:: python\n\n # using the get string pattern we can create part random and part static data elements. see the inline docs for help on customising choices\n df['mobile'] = tools.get_string_pattern(\"(07ddd) ddd ddd\", choice_only=False, size=10, quantity=0.5)\n df\n\n.. image:: https://raw.githubusercontent.com/Gigas64/discovery-behavioral-utils/master/docs/img/output_26_0.png\n\nWeighted Patterns\n-----------------\n\nNow we can get a bit more controlled in how we want the random numbers\nto be generated by using the weighted patterns. Weighted patterns are\nsimilar to probability but don't need to add to 1 and also don't need to\nbe the same size as the selection. Lets see how this works through an\nexample.\n\nlets generate an array of 100 and then see how many times each category\nis selected\n\n.. code:: python\n\n selection = ['M', 'F', 'U']\n gender = tools.get_category(selection, weight_pattern=[5,4,1], size=100)\n dist = [0]*3\n for g in gender:\n dist[selection.index(g)] += 1\n\n print(dist)\n\n.. parsed-literal::\n\n **$>** [51, 40, 9]\n\n.. code:: python\n\n fig = plt.figure(figsize=(8,3))\n sns.set(style=\"whitegrid\")\n g = sns.barplot(selection, dist)\n\n.. image:: https://raw.githubusercontent.com/Gigas64/discovery-behavioral-utils/master/docs/img/output_25_0.png\n\n\nIt can also be used to create more complex distribution. In this example\nwe want an age distribution that has peaks around 35-40 and 55-60 with a\nsignificant tail off after 60 but don't want a probability for every\nage.\n\n.. code:: python\n\n # break the pattern into every 5 years\n pattern = [3,5,6,10,6,5,7,15,5,2,1,0.5,0.2,0.1]\n age = tools.get_number(20, 90, weight_pattern=pattern, size=1000)\n\n fig = plt.figure(figsize=(10,4))\n _ = sns.set(style=\"whitegrid\")\n _ = sns.kdeplot(age, shade=True)\n\n.. image:: https://raw.githubusercontent.com/Gigas64/discovery-behavioral-utils/master/docs/img/output_27_0.png\n\n\nComplex Weighting patterns\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nWeighting patterns acn be multi dimensial representing controlling\ndistribution over time.\n\nIn this example we don't want there to be any values below 50 in the\nfirst half then only values below 50 in the second\n\n.. code:: python\n\n split_pattern = [[0,1],[1,0]]\n numbers = tools.get_number(100, weight_pattern=split_pattern, size=100)\n\n fig = plt.figure(figsize=(8,4))\n plt.style.use('seaborn-whitegrid')\n plt.plot(list(range(100)), numbers);\n _ = plt.axhline(y=50, linewidth=0.75, color='red')\n _ = plt.axvline(x=50, linewidth=0.75, color='red')\n\n.. image:: https://raw.githubusercontent.com/Gigas64/discovery-behavioral-utils/master/docs/img/output_29_1.png\n\n\nwe can even build more complex numbering where we always get numbers\naround the middle but first 3rd and last 3rd additionally high and low\nnumbers respectively\n\n.. code:: python\n\n mid_pattern = [[0,0,1],1,[1,0,0]]\n numbers = tools.get_number(100, weight_pattern=mid_pattern, size=100)\n fig = plt.figure(figsize=(8,4))\n _ = plt.plot(list(range(100)), numbers);\n _ = plt.axhline(y=33, linewidth=0.75, color='red')\n _ = plt.axhline(y=67, linewidth=0.75, color='red')\n _ = plt.axvline(x=33, linewidth=0.75, color='red')\n _ = plt.axvline(x=67, linewidth=0.75, color='red')\n\n\n.. image:: https://raw.githubusercontent.com/Gigas64/discovery-behavioral-utils/master/docs/img/output_31_0.png\n\n\nRandom Seed\n~~~~~~~~~~~\n\nin this example we are using seeding to fix predictability of the\nrandomness of both the weighted pattern and the numbers generated. We\ncan then look for a good set of seeds to generate different spike\npatterns we can predict.\n\n.. code:: python\n\n fig = plt.figure(figsize=(12,15))\n right=False\n for i in range(0,10): \n ax = plt.subplot2grid((5,2),(int(i/2), int(right)))\n result = tools.get_number(100, weight_pattern=np.sin(range(10)), size=100, seed=i+10)\n g = plt.plot(list(range(100)), result);\n t = plt.title(\"seed={}\".format(i+10))\n right = not right\n plt.tight_layout()\n plt.show()\n\n.. image:: https://raw.githubusercontent.com/Gigas64/discovery-behavioral-utils/master/docs/img/output_33_0.png\n\n\nDates\n-----\n\nDates are an important part of most datasets and need flexibility in all\ntheri multidimensional elements\n\n.. code:: python\n\n # creating a set of randome dates and a set of unique dates\n df = pd.DataFrame()\n df['dates'] = tools.get_datetime('01/01/2017', '21/01/2017', size=20, date_format='%d-%m-%Y')\n df['seq'] = tools.unique_date_seq('01/01/2017', '21/01/2017', size=20, date_format='%d-%m-%Y')\n print(\"{}/20 dates and {}/20 unique date sequence\".format(df.dates.nunique(), df.seq.nunique()))\n\n.. parsed-literal::\n\n **$>** 11/20 dates and 20/20 unique date sequence\n\n\nDate patterns\n~~~~~~~~~~~~~\n\nGet Data has a number of different weighting patterns that can be\napplied - accross the daterange - by year - by month - by weekday - by\nhour - by minutes\n\nOr by a combination of any of them.\n\n.. code:: python\n\n from ds_discovery.transition.discovery import Visualisation as visual\n\n.. code:: python\n\n # Create a month pattern that has no data in every other month\n pattern = [1,0]*6\n selection = ['Rigs', 'Office']\n\n df_rota = pd.DataFrame()\n df_rota['rota'] = tools.get_category(selection, size=300)\n df_rota['dates'] = tools.get_datetime('01/01/2017', '01/01/2018', size=300, month_pattern=pattern)\n\n df_rota = cleaner.to_date_type(df_rota, headers='dates')\n df_rota = cleaner.to_category_type(df_rota, headers='rota')\n\n.. code:: python\n\n visual.show_cat_time_index(df_rota, 'dates', 'rota')\n\n.. image:: https://raw.githubusercontent.com/Gigas64/discovery-behavioral-utils/master/docs/img/output_39_0.png\n\n\nQuite often dates need to have specific pattern to represent real\nworking times, in this example we only want dates that occur in the\nworking week.\n\n.. code:: python\n\n # create dates that are only during the working week\n pattern = [1,1,1,1,1,0,0]\n selection = ['Management', 'Staff']\n\n df_seating = pd.DataFrame()\n df_seating['position'] = tools.get_category(selection, weight_pattern=[7,3], size=100)\n df_seating['dates'] = tools.get_datetime('14/01/2019', '22/01/2019', size=100, weekday_pattern=pattern)\n\n df_seating = cleaner.to_date_type(df_seating, headers='dates')\n df_seating = cleaner.to_category_type(df_seating, headers='position')\n\n.. code:: python\n\n visual.show_cat_time_index(df_seating, 'dates', 'position')\n\n.. image:: https://raw.githubusercontent.com/Gigas64/discovery-behavioral-utils/master/docs/img/output_36_0.png\n\nWhat Next\n~~~~~~~~~\nThese are only the starter building blocks that give the foundation to more comple rule\nand behaviour. Have a play with:\n\n :correlate:\n creates data that correlates to another set of values giving an offset value\n based on the original. This applies to Dates, numbers and categories\n :associate:\n allows the construction of complex rule based actions nd behavior\n :builder instance:\n explore the ability to configure and save a template so you can repeat the build\n\nbut the library is being built out all the time so keep it updated.\n\n\nPython version\n--------------\n\nPython 2.6 and 2.7 are not supported. Although Python 3.x is supported, it is recommended to install\n``discovery-behavioral-utils`` against the latest Python 3.6.x whenever possible.\nPython 3 is the default for Homebrew installations starting with version 0.9.4.\n\nGitHub Project\n--------------\nDiscovery-Behavioral-Utils: ``_.\n\nChange log\n----------\n\nSee `CHANGELOG `_.\n\n\nLicence\n-------\n\nBSD-3-Clause: `LICENSE `_.\n\n\nAuthors\n-------\n\n`Gigas64`_ (`@gigas64`_) created discovery-behavioral-utils.\n\n\n.. _pip: https://pip.pypa.io/en/stable/installing/\n.. _Github API: http://developer.github.com/v3/issues/comments/#create-a-comment\n.. _Gigas64: http://opengrass.io\n.. _@gigas64: https://twitter.com/gigas64\n\n\n.. |pypi| image:: https://img.shields.io/pypi/pyversions/Django.svg\n :alt: PyPI - Python Version\n\n.. |rdt| image:: https://readthedocs.org/projects/discovery-behavioral-utils/badge/?version=latest\n :target: http://discovery-behavioral-utils.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n\n.. |license| image:: https://img.shields.io/pypi/l/Django.svg\n :target: https://github.com/Gigas64/discovery-behavioral-utils/blob/master/LICENSE.txt\n :alt: PyPI - License\n\n.. |wheel| image:: https://img.shields.io/pypi/wheel/Django.svg\n :alt: PyPI - Wheel\n\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/gigas64/discovery-behavioral-utils", "keywords": "Synthetic data simulator generator", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "discovery-behavioral-utils", "package_url": "https://pypi.org/project/discovery-behavioral-utils/", "platform": "", "project_url": "https://pypi.org/project/discovery-behavioral-utils/", "project_urls": { "Homepage": "http://github.com/gigas64/discovery-behavioral-utils" }, "release_url": "https://pypi.org/project/discovery-behavioral-utils/1.2.15/", "requires_dist": [ "pandas", "discovery-foundation", "discovery-connectors", "matplotlib", "numpy" ], "requires_python": "", "summary": "Advanced behavioral synthetic data generation and simulation tools for ML and Data engineers", "version": "1.2.15" }, "last_serial": 6001180, "releases": { "1.0.10": [ { "comment_text": "", "digests": { "md5": "a83afa8c0d1fe4dda2790fbdc40da46f", "sha256": "5142dd7159f2f0f9125adbe24f61bbc70862aeffdad7a759da77ca274978a7d2" }, "downloads": -1, "filename": "discovery_behavioral_utils-1.0.10-py36-none-any.whl", "has_sig": false, "md5_digest": "a83afa8c0d1fe4dda2790fbdc40da46f", "packagetype": "bdist_wheel", "python_version": "py36", "requires_python": null, "size": 1716924, "upload_time": "2019-03-19T09:53:57", "url": "https://files.pythonhosted.org/packages/88/8c/90bb3649dd034c43995d20a26fd9cfb243b760d91df6c144740c0550b572/discovery_behavioral_utils-1.0.10-py36-none-any.whl" }, { "comment_text": "", "digests": { "md5": "34d984e012a10b2a72043316b8e0a0c1", "sha256": "ddfaf6ba799090ab37528152cf693b79da63de4d6f68f48c46c1d23434607478" }, "downloads": -1, "filename": "discovery-behavioral-utils-1.0.10.tar.gz", "has_sig": false, "md5_digest": "34d984e012a10b2a72043316b8e0a0c1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 68098, "upload_time": "2019-03-19T09:53:59", "url": "https://files.pythonhosted.org/packages/90/93/4a56cacd0dcdd7041faa90f1642f409cdd82c324a00e6cf9070ddc72b7e6/discovery-behavioral-utils-1.0.10.tar.gz" } ], "1.0.15": [ { "comment_text": "", "digests": { "md5": "005d03ed5acb973240d10f5b1bcbda41", "sha256": "7ca5cb0c521264b3c63a4cb2332f1096df51a3ee8e908044f58a91fcdb6dc7cc" }, "downloads": -1, "filename": "discovery_behavioral_utils-1.0.15-py36-none-any.whl", "has_sig": false, "md5_digest": "005d03ed5acb973240d10f5b1bcbda41", "packagetype": "bdist_wheel", "python_version": "py36", "requires_python": null, "size": 1717047, "upload_time": "2019-03-22T20:17:20", "url": "https://files.pythonhosted.org/packages/0b/6f/0e8ecc6166497965dfc4ab5c2b44bab1aa17846f03c696f54b4b49c5d610/discovery_behavioral_utils-1.0.15-py36-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dd8fc9bc9161f33cf8eb87a798dd4076", "sha256": "db0431944d423bbdccdc59b930046d2c160b41a76f012b55d1ea5ca3ed302f53" }, "downloads": -1, "filename": "discovery-behavioral-utils-1.0.15.tar.gz", "has_sig": false, "md5_digest": "dd8fc9bc9161f33cf8eb87a798dd4076", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 68385, "upload_time": "2019-03-22T20:17:22", "url": "https://files.pythonhosted.org/packages/a5/e1/d89a5f3181a1bd8de3832fdeadbd75694f8eceed7ced0828f608b971117e/discovery-behavioral-utils-1.0.15.tar.gz" } ], "1.0.17": [ { "comment_text": "", "digests": { "md5": "c222ca87b554749889a2c9cadfa99860", "sha256": "7575fd519ffeac3807627dc8cca34d4ad08eed41b8ffa8530d96c4a5d17d2290" }, "downloads": -1, "filename": "discovery_behavioral_utils-1.0.17-py36-none-any.whl", "has_sig": false, "md5_digest": "c222ca87b554749889a2c9cadfa99860", "packagetype": "bdist_wheel", "python_version": "py36", "requires_python": null, "size": 1717072, "upload_time": "2019-03-23T12:03:02", "url": "https://files.pythonhosted.org/packages/f9/13/0043a1da6c3aaa27954770563affa2c2ca93d2c794a93da977a647e126a9/discovery_behavioral_utils-1.0.17-py36-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4448fc18abb74502282e9aee6f43f80f", "sha256": "7ef688f0794c62e5efae0c5ca8819621d6ca5294056c4bf5bc7f6f6f62b000be" }, "downloads": -1, "filename": "discovery-behavioral-utils-1.0.17.tar.gz", "has_sig": false, "md5_digest": "4448fc18abb74502282e9aee6f43f80f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 68445, "upload_time": "2019-03-23T12:03:04", "url": "https://files.pythonhosted.org/packages/34/b3/ec387d0e13e49157a0609bbb8105fdc1d6e3ff4cc00a003f4f43b7f30a1b/discovery-behavioral-utils-1.0.17.tar.gz" } ], "1.0.19": [ { "comment_text": "", "digests": { "md5": "bd160cf1ffaadb43c3b88d93393ca089", "sha256": "7145aae922a384c53f0b36d0a6879c86d5d6d85b6c96138f4a31cec411f7153f" }, "downloads": -1, "filename": "discovery_behavioral_utils-1.0.19-py36-none-any.whl", "has_sig": false, "md5_digest": "bd160cf1ffaadb43c3b88d93393ca089", "packagetype": "bdist_wheel", "python_version": "py36", "requires_python": null, "size": 1717061, "upload_time": "2019-04-01T03:17:46", "url": "https://files.pythonhosted.org/packages/eb/22/dc6e355a2e6f892af34f3369f3c01b31ebf9150075e5aca193aa272f4c16/discovery_behavioral_utils-1.0.19-py36-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dfb57c3082e83e566db88ba48ae5c537", "sha256": "e1446835f9aa11b2673580ce2aad1d864fbf681aa8f01b7675a46be45e509167" }, "downloads": -1, "filename": "discovery-behavioral-utils-1.0.19.tar.gz", "has_sig": false, "md5_digest": "dfb57c3082e83e566db88ba48ae5c537", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 68440, "upload_time": "2019-04-01T03:17:48", "url": "https://files.pythonhosted.org/packages/19/f2/8829657ef3d6a34d3e4eecea9e0a0da7e4e1c9b5f86f28ad8cc2580dd238/discovery-behavioral-utils-1.0.19.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "119e123f8e2d474daa6c9080b231039c", "sha256": "270c1541e03b87b0fe0e4b9309ffba0411c8b39a3bbe789edbe6836aae102e19" }, "downloads": -1, "filename": "discovery_behavioral_utils-1.0.2-py36-none-any.whl", "has_sig": false, "md5_digest": "119e123f8e2d474daa6c9080b231039c", "packagetype": "bdist_wheel", "python_version": "py36", "requires_python": null, "size": 1721950, "upload_time": "2019-02-27T02:51:49", "url": "https://files.pythonhosted.org/packages/43/9c/489451236df25092a34ee289096b5ca85cd72209908100b130c4c500fbe1/discovery_behavioral_utils-1.0.2-py36-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2461c544152de366e529fa9027526948", "sha256": "447e8763d1490d09dd71d380504aacb4d8dc39ac1379a2086a019ba947d51dcb" }, "downloads": -1, "filename": "discovery-behavioral-utils-1.0.2.tar.gz", "has_sig": false, "md5_digest": "2461c544152de366e529fa9027526948", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 65017, "upload_time": "2019-02-27T02:51:52", "url": "https://files.pythonhosted.org/packages/57/60/a286bc7687527b3c8452d66075d2133559b3d5e4581b867a852ead1b0c41/discovery-behavioral-utils-1.0.2.tar.gz" } ], "1.0.22": [ { "comment_text": "", "digests": { "md5": "5195685d3d3b4702f61877b4fc7b80fc", "sha256": "76a5e77ec05d9ac76f52995f3516153491255942e3b73b84f560842ab3833e51" }, "downloads": -1, "filename": "discovery_behavioral_utils-1.0.22-py36-none-any.whl", "has_sig": false, "md5_digest": "5195685d3d3b4702f61877b4fc7b80fc", "packagetype": "bdist_wheel", "python_version": "py36", "requires_python": null, "size": 2893478, "upload_time": "2019-04-08T03:09:44", "url": "https://files.pythonhosted.org/packages/48/4e/b76f5b1a44961dfc52e2e14065109238fb79514fe29ee09badc0be963b0a/discovery_behavioral_utils-1.0.22-py36-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c0df20aa8204410cdbdc062ef4dcce8a", "sha256": "b6bd1a284a45bd49b6c7e6ed71599717d382f939286c4038dee18a4c0f5197f1" }, "downloads": -1, "filename": "discovery-behavioral-utils-1.0.22.tar.gz", "has_sig": false, "md5_digest": "c0df20aa8204410cdbdc062ef4dcce8a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 66438, "upload_time": "2019-04-08T03:09:46", "url": "https://files.pythonhosted.org/packages/2a/c6/bd741a275528b747b5a5dab385c060df87bec2dc0ea993d85b2200aee0e6/discovery-behavioral-utils-1.0.22.tar.gz" } ], "1.0.26": [ { "comment_text": "", "digests": { "md5": "a592f08ccadbc72ad4e8a3abd3e9ffaf", "sha256": "74af379c892f833b4eaa459686da536cf7dbbc8bcea4c24e6d694369dee205bb" }, "downloads": -1, "filename": "discovery_behavioral_utils-1.0.26-py36-none-any.whl", "has_sig": false, "md5_digest": "a592f08ccadbc72ad4e8a3abd3e9ffaf", "packagetype": "bdist_wheel", "python_version": "py36", "requires_python": null, "size": 3010954, "upload_time": "2019-04-22T20:35:34", "url": "https://files.pythonhosted.org/packages/25/9c/8ceaf66dc35d1a9dfd03047190ae9cca63fc678f2d189e8857c404a2e553/discovery_behavioral_utils-1.0.26-py36-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c7bb36a3ef9560f7f60007bb1528ad89", "sha256": "f69f2e3f0bd202954bb66f036fda0c3e45c4435f20bbbd522de3b33fddb87da0" }, "downloads": -1, "filename": "discovery-behavioral-utils-1.0.26.tar.gz", "has_sig": false, "md5_digest": "c7bb36a3ef9560f7f60007bb1528ad89", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 66628, "upload_time": "2019-04-22T20:35:36", "url": "https://files.pythonhosted.org/packages/33/26/ba8d24bfd2e5a863f8577d452d23a72aa223378a23f11564cfe969932005/discovery-behavioral-utils-1.0.26.tar.gz" } ], "1.0.29": [ { "comment_text": "", "digests": { "md5": "f7b7c80c0d7087352c259ea4f66032ea", "sha256": "fb01a092a05f46a109737af77dcef5d50bb4ff189847cf9959b844250812d793" }, "downloads": -1, "filename": "discovery_behavioral_utils-1.0.29-py36-none-any.whl", "has_sig": false, "md5_digest": "f7b7c80c0d7087352c259ea4f66032ea", "packagetype": "bdist_wheel", "python_version": "py36", "requires_python": null, "size": 3010965, "upload_time": "2019-04-22T20:52:50", "url": "https://files.pythonhosted.org/packages/f8/e6/5f37ad8e6a42ab1231fe068e1b9f3cd4bedc39457785cfa2de7b4b1a96f7/discovery_behavioral_utils-1.0.29-py36-none-any.whl" }, { "comment_text": "", "digests": { "md5": "26137c6200df66bd48eb0bb2b9b914ef", "sha256": "83747de716aebf82c670e650b67269aa37075c048dabcd582160e076f512ad40" }, "downloads": -1, "filename": "discovery-behavioral-utils-1.0.29.tar.gz", "has_sig": false, "md5_digest": "26137c6200df66bd48eb0bb2b9b914ef", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 66628, "upload_time": "2019-04-22T20:52:52", "url": "https://files.pythonhosted.org/packages/fe/80/070a84e420d3d72f2b17c19c32347a1250808c9588dd8faa2fcf230ad006/discovery-behavioral-utils-1.0.29.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "d9e6a91a2b5d3750c865b758772f350d", "sha256": "21a9d189ee4b4202d89baf21da82421ccef5420d366c936cc85aa4ea18957e5f" }, "downloads": -1, "filename": "discovery_behavioral_utils-1.0.3-py36-none-any.whl", "has_sig": false, "md5_digest": "d9e6a91a2b5d3750c865b758772f350d", "packagetype": "bdist_wheel", "python_version": "py36", "requires_python": null, "size": 1721950, "upload_time": "2019-02-27T03:51:09", "url": "https://files.pythonhosted.org/packages/30/e8/123dbe51e00fb407e6bea299bb1d0afc39e6a368876593fb543cdbdb6819/discovery_behavioral_utils-1.0.3-py36-none-any.whl" }, { "comment_text": "", "digests": { "md5": "64569e3657a91f9d7e7392335cd0ce73", "sha256": "3d279fd2d1ce74cd52fe5599e08934de5d4acedfe8a94e251001d34ad98c19f0" }, "downloads": -1, "filename": "discovery-behavioral-utils-1.0.3.tar.gz", "has_sig": false, "md5_digest": "64569e3657a91f9d7e7392335cd0ce73", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 65010, "upload_time": "2019-02-27T03:51:17", "url": "https://files.pythonhosted.org/packages/c9/b6/716ee18619b7ca8be822864ed38406885299ab9eed51c59085fea3cb9727/discovery-behavioral-utils-1.0.3.tar.gz" } ], "1.0.30": [ { "comment_text": "", "digests": { "md5": "b388c47d96dbaf12b0a65ae72653f319", "sha256": "f8a8720bc5b0a47a3e8e38b020d4fb2d81da9da052ae0771e90bfb55ade1e155" }, "downloads": -1, "filename": "discovery_behavioral_utils-1.0.30-py36-none-any.whl", "has_sig": false, "md5_digest": "b388c47d96dbaf12b0a65ae72653f319", "packagetype": "bdist_wheel", "python_version": "py36", "requires_python": null, "size": 3012595, "upload_time": "2019-05-01T11:01:57", "url": "https://files.pythonhosted.org/packages/37/4b/c99f7ae3ed8e43c81ed1229f0bece9daed31bc695766c86a4b9bf67d2a82/discovery_behavioral_utils-1.0.30-py36-none-any.whl" }, { "comment_text": "", "digests": { "md5": "41403d9bf5a9add90d98fb862fee4996", "sha256": "06c7b2eaa3ff4a03ac22dc0bbec4ccb78beaa3ce4dd76e48244cc6a3429e6cdc" }, "downloads": -1, "filename": "discovery-behavioral-utils-1.0.30.tar.gz", "has_sig": false, "md5_digest": "41403d9bf5a9add90d98fb862fee4996", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 68029, "upload_time": "2019-05-01T11:02:00", "url": "https://files.pythonhosted.org/packages/20/7f/cd19973261236b6f38fe184df6963c7fa79cfa8f1cbd34302fa840b19d32/discovery-behavioral-utils-1.0.30.tar.gz" } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "a8f8d7bdc9fda628250728fa45bfb70c", "sha256": "7223167c90e448a63af37200c0104fc358a75fbf6ed41bbc335dce7d5b23d0ca" }, "downloads": -1, "filename": "discovery_behavioral_utils-1.0.5-py36-none-any.whl", "has_sig": false, "md5_digest": "a8f8d7bdc9fda628250728fa45bfb70c", "packagetype": "bdist_wheel", "python_version": "py36", "requires_python": null, "size": 1716497, "upload_time": "2019-03-10T18:04:04", "url": "https://files.pythonhosted.org/packages/5e/ce/2be076634f55ff83f78d6a2877becb80f998ad753395a824fad7b75d9afd/discovery_behavioral_utils-1.0.5-py36-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9f6a6e508bb7e2a7b0cf32cef4de6c12", "sha256": "aee624ed26f0739d6a47ab426d2d7400a0b42d854b18d3bf518c02437b287fee" }, "downloads": -1, "filename": "discovery-behavioral-utils-1.0.5.tar.gz", "has_sig": false, "md5_digest": "9f6a6e508bb7e2a7b0cf32cef4de6c12", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 67599, "upload_time": "2019-03-10T18:04:06", "url": "https://files.pythonhosted.org/packages/5f/4b/9aa798c042a16c87379d03890e3190e1b605ff0372ab4c57c7d8ad6fc275/discovery-behavioral-utils-1.0.5.tar.gz" } ], "1.0.7": [ { "comment_text": "", "digests": { "md5": "4020e4609a654b7c06203c574f180331", "sha256": "74832aec061669c0e8ebe8640ec2f662dae6f968801228faf97e07e87a141c12" }, "downloads": -1, "filename": "discovery_behavioral_utils-1.0.7-py36-none-any.whl", "has_sig": false, "md5_digest": "4020e4609a654b7c06203c574f180331", "packagetype": "bdist_wheel", "python_version": "py36", "requires_python": null, "size": 1716663, "upload_time": "2019-03-12T21:50:30", "url": "https://files.pythonhosted.org/packages/66/2c/c30b2d9067a1b46769f6c0389bc2e8223278e52718183f6c5842da2ea0d1/discovery_behavioral_utils-1.0.7-py36-none-any.whl" }, { "comment_text": "", "digests": { "md5": "38115696ffd895ded248d5a725e64391", "sha256": "8ebe7f40c2185fa7bacfbc83a370dc1f0b8aee20136adf90103f4c0505b30791" }, "downloads": -1, "filename": "discovery-behavioral-utils-1.0.7.tar.gz", "has_sig": false, "md5_digest": "38115696ffd895ded248d5a725e64391", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 67784, "upload_time": "2019-03-12T21:50:33", "url": "https://files.pythonhosted.org/packages/eb/a6/0fdb439890efda67e38f9b961f4e76ed9e7f73373e91c691c2079ce37816/discovery-behavioral-utils-1.0.7.tar.gz" } ], "1.0.8": [ { "comment_text": "", "digests": { "md5": "7f671cfd110188f9177ec616df5fe4c4", "sha256": "627bf2c01733e9800c7ceac55b803a839c5a32bc6e95bf7ef85dac66a2026a4e" }, "downloads": -1, "filename": "discovery_behavioral_utils-1.0.8-py36-none-any.whl", "has_sig": false, "md5_digest": "7f671cfd110188f9177ec616df5fe4c4", "packagetype": "bdist_wheel", "python_version": "py36", "requires_python": null, "size": 1716666, "upload_time": "2019-03-12T22:05:15", "url": "https://files.pythonhosted.org/packages/0d/28/3067ce14d3a3060b45bd1fe52407dc38d0bffa744bc5c60e5d2b60317fc9/discovery_behavioral_utils-1.0.8-py36-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c8d100d353deef118f6c9f42b4256b76", "sha256": "2ba302f423296260841e0f66aedb4877fef1a65c8c979801e30c54c629d2660f" }, "downloads": -1, "filename": "discovery-behavioral-utils-1.0.8.tar.gz", "has_sig": false, "md5_digest": "c8d100d353deef118f6c9f42b4256b76", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 67784, "upload_time": "2019-03-12T22:05:19", "url": "https://files.pythonhosted.org/packages/bc/ab/ff5eb15ce889aed72cda661ab881d3c3e8d5ca330f5eb7d7ac65a40aa8d3/discovery-behavioral-utils-1.0.8.tar.gz" } ], "1.0.9": [ { "comment_text": "", "digests": { "md5": "2619640193cbcc94e43365cc97bceeb5", "sha256": "ca8b59afba45bf22913bf7723781026430bd581d8f94798cceb214175e40a985" }, "downloads": -1, "filename": "discovery_behavioral_utils-1.0.9-py36-none-any.whl", "has_sig": false, "md5_digest": "2619640193cbcc94e43365cc97bceeb5", "packagetype": "bdist_wheel", "python_version": "py36", "requires_python": null, "size": 1716785, "upload_time": "2019-03-15T13:32:08", "url": "https://files.pythonhosted.org/packages/bc/5c/f174276528a5d3ced63c94174785357212fe3e7589e1f502f390bd86ca39/discovery_behavioral_utils-1.0.9-py36-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bcb2d814e3a2a49fd3bbb3f7e7ce6df4", "sha256": "a14fe4f8ca0a13eb650811cbc9dfbf05a18950f59e9003ba153bcc5888369202" }, "downloads": -1, "filename": "discovery-behavioral-utils-1.0.9.tar.gz", "has_sig": false, "md5_digest": "bcb2d814e3a2a49fd3bbb3f7e7ce6df4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 67913, "upload_time": "2019-03-15T13:32:09", "url": "https://files.pythonhosted.org/packages/fe/48/91480bcd2dc014ac31ca642f4d56f557e8acd014c6044ec7236c0ba374e8/discovery-behavioral-utils-1.0.9.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "dd81bd044adb30920045e450fe5ba6d7", "sha256": "667660e2b209a78262b21ba887565bebdf364684d28875e02b412499d56ebc18" }, "downloads": -1, "filename": "discovery_behavioral_utils-1.1.1-py36-none-any.whl", "has_sig": false, "md5_digest": "dd81bd044adb30920045e450fe5ba6d7", "packagetype": "bdist_wheel", "python_version": "py36", "requires_python": null, "size": 1900380, "upload_time": "2019-05-06T10:54:18", "url": "https://files.pythonhosted.org/packages/cc/ce/69646cc36ffd2907b34af415f16fc842015c4347445356b26c557d398928/discovery_behavioral_utils-1.1.1-py36-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1ac7b5ae1d54254e8c608a00eddbee80", "sha256": "90785ee4038fdede5b946e8ab113333434cd59a072c9fd78612c863c41292b6d" }, "downloads": -1, "filename": "discovery-behavioral-utils-1.1.1.tar.gz", "has_sig": false, "md5_digest": "1ac7b5ae1d54254e8c608a00eddbee80", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 68375, "upload_time": "2019-05-06T10:54:20", "url": "https://files.pythonhosted.org/packages/5c/65/03d15afab044e3048c53a38b3783afe8b7b74792d43a52af51864a4734da/discovery-behavioral-utils-1.1.1.tar.gz" } ], "1.1.10": [ { "comment_text": "", "digests": { "md5": "de65249c9778ba6f4f2a4dd32dab5deb", "sha256": "7dd2cbdfb6d4dde303131de924ea9d1f4c2772127921c848e7f2168d0a8e31df" }, "downloads": -1, "filename": "discovery_behavioral_utils-1.1.10-py36-none-any.whl", "has_sig": false, "md5_digest": "de65249c9778ba6f4f2a4dd32dab5deb", "packagetype": "bdist_wheel", "python_version": "py36", "requires_python": null, "size": 1901067, "upload_time": "2019-06-04T17:03:00", "url": "https://files.pythonhosted.org/packages/1a/19/82c1b5992bf8c0d931b8e3d99a929018f57697ae37af115a8f11d0fcab4b/discovery_behavioral_utils-1.1.10-py36-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ffec8ee19553d9b53dcab62f952ed3c9", "sha256": "d609bd6bf30cb79dde24132e115bf8e1e1118aefd3dd83b3903ad3fbe64e1bd2" }, "downloads": -1, "filename": "discovery-behavioral-utils-1.1.10.tar.gz", "has_sig": false, "md5_digest": "ffec8ee19553d9b53dcab62f952ed3c9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 68796, "upload_time": "2019-06-04T17:03:02", "url": "https://files.pythonhosted.org/packages/ce/68/b0679ac5c55f443f3b949517be20201bbcdc6c086a9104a8f8dc1f3dc6ff/discovery-behavioral-utils-1.1.10.tar.gz" } ], "1.1.11": [ { "comment_text": "", "digests": { "md5": "2f94988d3edd26cf92816faeef7b6b27", "sha256": "4e205b1d0ed889a4ec3019263c3ac9e0fac767bd21714d33da7e3a1ba4b235ad" }, "downloads": -1, "filename": "discovery_behavioral_utils-1.1.11-py36-none-any.whl", "has_sig": false, "md5_digest": "2f94988d3edd26cf92816faeef7b6b27", "packagetype": "bdist_wheel", "python_version": "py36", "requires_python": null, "size": 1900961, "upload_time": "2019-06-13T11:55:20", "url": "https://files.pythonhosted.org/packages/08/86/ac6d9908510511ef22968a832e4165d2473a57bcf78b84ec1a743a74f8b0/discovery_behavioral_utils-1.1.11-py36-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f3f06b1a6b5acdc1c703820fd44561f8", "sha256": "fb5b291e639a0cd029e77be3d5d3e0389df3ec925e5f974d4d6e58874f92cbff" }, "downloads": -1, "filename": "discovery-behavioral-utils-1.1.11.tar.gz", "has_sig": false, "md5_digest": "f3f06b1a6b5acdc1c703820fd44561f8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 68716, "upload_time": "2019-06-13T11:55:23", "url": "https://files.pythonhosted.org/packages/90/84/0d3844b444075351e4b9c79f1fc2643c89a24817403f0d3f394ee7d0c03c/discovery-behavioral-utils-1.1.11.tar.gz" } ], "1.1.14": [ { "comment_text": "", "digests": { "md5": "4227fc6dc734221b2b6efcd5e2fa738d", "sha256": "694c8c2fa0111095a0e0ec471b6355a745a2fe19f09a2d702cf9b3e1f8ee3d8c" }, "downloads": -1, "filename": "discovery_behavioral_utils-1.1.14-py36-none-any.whl", "has_sig": false, "md5_digest": "4227fc6dc734221b2b6efcd5e2fa738d", "packagetype": "bdist_wheel", "python_version": "py36", "requires_python": null, "size": 1902372, "upload_time": "2019-06-16T14:06:34", "url": "https://files.pythonhosted.org/packages/c6/d8/0a9009b255a1b7c9154e22c6b0082bc4c3bf5ad5d5babefad30aa345cfba/discovery_behavioral_utils-1.1.14-py36-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5a02011d840c8789b0c3fdb8c8b07ab9", "sha256": "ebe1706515632cce1183361d73f281fa07716437529a283e573bb436f37ae47e" }, "downloads": -1, "filename": "discovery-behavioral-utils-1.1.14.tar.gz", "has_sig": false, "md5_digest": "5a02011d840c8789b0c3fdb8c8b07ab9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 72985, "upload_time": "2019-06-16T14:06:38", "url": "https://files.pythonhosted.org/packages/5f/0e/9fb53587ca9e4ff7940a3510e53b9e050e59858053fb440cab3f63f17392/discovery-behavioral-utils-1.1.14.tar.gz" } ], "1.1.15": [ { "comment_text": "", "digests": { "md5": "f1abf299d2ef6533a37d5644338a2f6d", "sha256": "8b2c21835ffe1930ba16d670ff710484e65007c82123cb46a36ef591c6d6c63d" }, "downloads": -1, "filename": "discovery_behavioral_utils-1.1.15-py36-none-any.whl", "has_sig": false, "md5_digest": "f1abf299d2ef6533a37d5644338a2f6d", "packagetype": "bdist_wheel", "python_version": "py36", "requires_python": null, "size": 1902378, "upload_time": "2019-06-17T20:10:20", "url": "https://files.pythonhosted.org/packages/b3/1a/4771450a631c90657f64347d80d3dfad695c2031c48b554a35b3f7475f5d/discovery_behavioral_utils-1.1.15-py36-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f57f4544ef43b1cf8189e4ac1adcf979", "sha256": "45a9fa96a0c5e4279e55b70bfe4baa8c9857be30ec4ab4ac8873906ca1472e8e" }, "downloads": -1, "filename": "discovery-behavioral-utils-1.1.15.tar.gz", "has_sig": false, "md5_digest": "f57f4544ef43b1cf8189e4ac1adcf979", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 72990, "upload_time": "2019-06-17T20:10:23", "url": "https://files.pythonhosted.org/packages/ff/08/e033eb7eb2174e1a90dab9fcc07e467907053e42b6dad0037b29cd7b1faa/discovery-behavioral-utils-1.1.15.tar.gz" } ], "1.1.8": [ { "comment_text": "", "digests": { "md5": "35a1d4cfe95383a9142ed75011df9ce9", "sha256": "6969b801fca60cb5cc0d2d96f93211e179b6ee4981a3ef942a7c4b0d96394053" }, "downloads": -1, "filename": "discovery_behavioral_utils-1.1.8-py36-none-any.whl", "has_sig": false, "md5_digest": "35a1d4cfe95383a9142ed75011df9ce9", "packagetype": "bdist_wheel", "python_version": "py36", "requires_python": null, "size": 1901021, "upload_time": "2019-05-26T15:24:02", "url": "https://files.pythonhosted.org/packages/35/7f/e0e9e409d99d6f6f9fe59546fb2498bc167b22ec33bb3da114d38cc27320/discovery_behavioral_utils-1.1.8-py36-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cc0a32124664a84e4029952b8f54ed05", "sha256": "5e9f224c90a852b779cd7a773c2f415fdbf88f098586084f9a0483c179e1a4d2" }, "downloads": -1, "filename": "discovery-behavioral-utils-1.1.8.tar.gz", "has_sig": false, "md5_digest": "cc0a32124664a84e4029952b8f54ed05", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 68750, "upload_time": "2019-05-26T15:24:05", "url": "https://files.pythonhosted.org/packages/3e/7d/c5c064fb507a4b6fe88d35b8792af516da2ddc7d485d3937302ccc9c5310/discovery-behavioral-utils-1.1.8.tar.gz" } ], "1.1.9": [ { "comment_text": "", "digests": { "md5": "4c68f473a89647655f042ef1c8cb4c18", "sha256": "d616a80185e7297ec7aa816748e7e871429d82af52016b1b9a8a20d0b3cbf9bf" }, "downloads": -1, "filename": "discovery_behavioral_utils-1.1.9-py36-none-any.whl", "has_sig": false, "md5_digest": "4c68f473a89647655f042ef1c8cb4c18", "packagetype": "bdist_wheel", "python_version": "py36", "requires_python": null, "size": 1901022, "upload_time": "2019-05-27T11:08:32", "url": "https://files.pythonhosted.org/packages/99/d2/969b22719d4ab74ad99d74b608a17abaf31ad8fc0b4416369fe1b835ceee/discovery_behavioral_utils-1.1.9-py36-none-any.whl" }, { "comment_text": "", "digests": { "md5": "81ce05034d53758e7cd212d01cc5cd85", "sha256": "6a873957c42528659ff886d9497785bb36c19306969b27797469fc56e5b9547e" }, "downloads": -1, "filename": "discovery-behavioral-utils-1.1.9.tar.gz", "has_sig": false, "md5_digest": "81ce05034d53758e7cd212d01cc5cd85", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 68757, "upload_time": "2019-05-27T11:08:35", "url": "https://files.pythonhosted.org/packages/af/75/e0141a2d99a237a790b1d12bcbe9df81edb3cf0972c8f8d02c44ad99612e/discovery-behavioral-utils-1.1.9.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "7e46ee9b277bc880b790677e78422f74", "sha256": "fd0103497bf2961d0f01035d1799383673ec95ff51fcb79a5502ae3d7af58b0e" }, "downloads": -1, "filename": "discovery_behavioral_utils-1.2.1-py36-none-any.whl", "has_sig": false, "md5_digest": "7e46ee9b277bc880b790677e78422f74", "packagetype": "bdist_wheel", "python_version": "py36", "requires_python": null, "size": 1903176, "upload_time": "2019-07-20T09:49:06", "url": "https://files.pythonhosted.org/packages/8d/4a/42efd62fd3d6504a3d7f3726e57891989461f0d15c22936279c4e4db051d/discovery_behavioral_utils-1.2.1-py36-none-any.whl" }, { "comment_text": "", "digests": { "md5": "04f274a87d6f57d77b329f5a4a5a1754", "sha256": "31eda454acde743b5191ad06b040c81b114ff7a3f244207e6608a9a701be8a73" }, "downloads": -1, "filename": "discovery-behavioral-utils-1.2.1.tar.gz", "has_sig": false, "md5_digest": "04f274a87d6f57d77b329f5a4a5a1754", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 73435, "upload_time": "2019-07-20T09:49:08", "url": "https://files.pythonhosted.org/packages/de/22/571b4d79a46d5000a7a0ed0f989a41e62d4e06a5982cbd7eafd03846a722/discovery-behavioral-utils-1.2.1.tar.gz" } ], "1.2.10": [ { "comment_text": "", "digests": { "md5": "a36d902e6ae1c8af4bc9255e22bf725a", "sha256": "627d0817d7c087eb456f5b654a3d3a1ffc9e557b51beac86a39da8ab37fa638e" }, "downloads": -1, "filename": "discovery_behavioral_utils-1.2.10-py36-none-any.whl", "has_sig": false, "md5_digest": "a36d902e6ae1c8af4bc9255e22bf725a", "packagetype": "bdist_wheel", "python_version": "py36", "requires_python": null, "size": 1905621, "upload_time": "2019-09-30T21:38:22", "url": "https://files.pythonhosted.org/packages/31/55/f02ddc204730890bf720a074342462b97dacf31fc8189a91159ef24d6d16/discovery_behavioral_utils-1.2.10-py36-none-any.whl" }, { "comment_text": "", "digests": { "md5": "247725d6b1cf4aaf5c47b64b6239cddf", "sha256": "410242f761d220f21057614918cccadbf548f06328e0b2f432fe8ae7d8867323" }, "downloads": -1, "filename": "discovery-behavioral-utils-1.2.10.tar.gz", "has_sig": false, "md5_digest": "247725d6b1cf4aaf5c47b64b6239cddf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 75757, "upload_time": "2019-09-30T21:38:25", "url": "https://files.pythonhosted.org/packages/10/6b/c901cd70d07799b65dc1c4c2cce7b136ecca2614093831bb4a170cb909db/discovery-behavioral-utils-1.2.10.tar.gz" } ], "1.2.11": [ { "comment_text": "", "digests": { "md5": "0f23f69c405e95678ffbe72b877e2b05", "sha256": "df2d32be6439274ec90ef2c002860f79a72180705fe3c0510d7211acdd543e58" }, "downloads": -1, "filename": "discovery_behavioral_utils-1.2.11-py36-none-any.whl", "has_sig": false, "md5_digest": "0f23f69c405e95678ffbe72b877e2b05", "packagetype": "bdist_wheel", "python_version": "py36", "requires_python": null, "size": 1905809, "upload_time": "2019-10-02T19:56:04", "url": "https://files.pythonhosted.org/packages/36/65/38132bd50b90b7b799d6925fc7ea72468b7695d22be3ab67a4fb3bbfa2f5/discovery_behavioral_utils-1.2.11-py36-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b1214024badb171e8fae1648c8f70b7b", "sha256": "e85f41ad79fe5dd3f137387347c907ede79b866de0acca89cfc669c31bc4c0c5" }, "downloads": -1, "filename": "discovery-behavioral-utils-1.2.11.tar.gz", "has_sig": false, "md5_digest": "b1214024badb171e8fae1648c8f70b7b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 75823, "upload_time": "2019-10-02T19:56:07", "url": "https://files.pythonhosted.org/packages/17/dc/f21642636109678d83ca4ea08e0c197a66d3fc4e611a79feffcca406b066/discovery-behavioral-utils-1.2.11.tar.gz" } ], "1.2.12": [ { "comment_text": "", "digests": { "md5": "2e31d2071716842b0cd68ae0e58954ce", "sha256": "e53929cb53eebc8c6fe3c16b6e9ea0244ca6808f704099241c2f445318bc2b09" }, "downloads": -1, "filename": "discovery_behavioral_utils-1.2.12-py36-none-any.whl", "has_sig": false, "md5_digest": "2e31d2071716842b0cd68ae0e58954ce", "packagetype": "bdist_wheel", "python_version": "py36", "requires_python": null, "size": 1906234, "upload_time": "2019-10-09T08:03:34", "url": "https://files.pythonhosted.org/packages/e8/65/b54a18763cb6d6563183fb8b617fa8b569dba1e631cd07af4f22fa1f12a6/discovery_behavioral_utils-1.2.12-py36-none-any.whl" }, { "comment_text": "", "digests": { "md5": "721f92b5851a24c8081075dc95519671", "sha256": "e2ab7a2987e5b1745a2078e0e80a137c1c62ae86c91e8ec27386862c9dd6f321" }, "downloads": -1, "filename": "discovery-behavioral-utils-1.2.12.tar.gz", "has_sig": false, "md5_digest": "721f92b5851a24c8081075dc95519671", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 76277, "upload_time": "2019-10-09T08:03:37", "url": "https://files.pythonhosted.org/packages/d5/62/a414ec61a46c7bf8be4b1064af810043f6e944d6bd8e043a8fc331a7f70f/discovery-behavioral-utils-1.2.12.tar.gz" } ], "1.2.13": [ { "comment_text": "", "digests": { "md5": "a247c5ec8d4458d4902a9cc91ad24e8b", "sha256": "75a5505749a1f5c4156974d8c2d8f058e256cadd7aad2034647f5bbe7fb1d30d" }, "downloads": -1, "filename": "discovery_behavioral_utils-1.2.13-py36-none-any.whl", "has_sig": false, "md5_digest": "a247c5ec8d4458d4902a9cc91ad24e8b", "packagetype": "bdist_wheel", "python_version": "py36", "requires_python": null, "size": 1923398, "upload_time": "2019-10-09T17:52:43", "url": "https://files.pythonhosted.org/packages/67/6f/1bc51ffc0d7f24bd383585d628ddacdb8edefe3df622eda28320b8e8ee78/discovery_behavioral_utils-1.2.13-py36-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3f0bcf2019d547209fcfe499c5d8bcaa", "sha256": "e4601300bddb5ee78f665313af4ccadc5087a15302f6ab75ba72a526d33047cd" }, "downloads": -1, "filename": "discovery-behavioral-utils-1.2.13.tar.gz", "has_sig": false, "md5_digest": "3f0bcf2019d547209fcfe499c5d8bcaa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 76287, "upload_time": "2019-10-09T17:52:46", "url": "https://files.pythonhosted.org/packages/62/e4/93478eadce2bbb1a82eb8d825aed725b82494a38e6204ab051d5dfac830f/discovery-behavioral-utils-1.2.13.tar.gz" } ], "1.2.14": [ { "comment_text": "", "digests": { "md5": "6fbc36765a25a298c6484bf11eefc62a", "sha256": "f8a22b2b75f54f6081c969ada9dd6d65186ac4870f399aff4c596926cb98ebd2" }, "downloads": -1, "filename": "discovery_behavioral_utils-1.2.14-py36-none-any.whl", "has_sig": false, "md5_digest": "6fbc36765a25a298c6484bf11eefc62a", "packagetype": "bdist_wheel", "python_version": "py36", "requires_python": null, "size": 1906553, "upload_time": "2019-10-14T00:14:55", "url": "https://files.pythonhosted.org/packages/21/63/a351fa3b14fde86f1ec0a3fce4c6e36ba9de0885545b376f9b6fdbf668c4/discovery_behavioral_utils-1.2.14-py36-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d5a06df187525f738d00184dffecabd0", "sha256": "9746eaa28ab9fe9820bc3b97dcb9f6f083881d822d9cf4f0c35fd72db5861d33" }, "downloads": -1, "filename": "discovery-behavioral-utils-1.2.14.tar.gz", "has_sig": false, "md5_digest": "d5a06df187525f738d00184dffecabd0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 76257, "upload_time": "2019-10-14T00:14:59", "url": "https://files.pythonhosted.org/packages/ab/0c/2e2d5ec0c41aec4efbf3d69fd84b03ede204c8eac2b9016617e76369c5e6/discovery-behavioral-utils-1.2.14.tar.gz" } ], "1.2.15": [ { "comment_text": "", "digests": { "md5": "7bf3c534fd5d1507763216662b960b68", "sha256": "5e53d07191cb796ebd384667b7777a37aad5fd3bb5d7fe46b47dd9bcdb1bd98d" }, "downloads": -1, "filename": "discovery_behavioral_utils-1.2.15-py36-none-any.whl", "has_sig": false, "md5_digest": "7bf3c534fd5d1507763216662b960b68", "packagetype": "bdist_wheel", "python_version": "py36", "requires_python": null, "size": 1904330, "upload_time": "2019-10-19T22:03:18", "url": "https://files.pythonhosted.org/packages/27/56/4c79e3915c72b62c296ab1af1ce369d8882fdebf4b0b17fe3b1053b78fa2/discovery_behavioral_utils-1.2.15-py36-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f9d3df12ab68440c39b062b134cab14f", "sha256": "28666b7779dfc711889d4f3f30c2cff4ae6553fc042bded663474bb2dc8c21f7" }, "downloads": -1, "filename": "discovery-behavioral-utils-1.2.15.tar.gz", "has_sig": false, "md5_digest": "f9d3df12ab68440c39b062b134cab14f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 74241, "upload_time": "2019-10-19T22:03:21", "url": "https://files.pythonhosted.org/packages/19/4b/c13f4e51f5483a5d552cdb6e9cfed7bf1ab34a4e3660ffba9f44ccc57569/discovery-behavioral-utils-1.2.15.tar.gz" } ], "1.2.2": [ { "comment_text": "", "digests": { "md5": "e0b5270683b423e5cdfa95bc2b64e1e1", "sha256": "4569d38b7499ed568ae90fe178e900106402ebe671cbe2dc6305d2f097d7f93b" }, "downloads": -1, "filename": "discovery_behavioral_utils-1.2.2-py36-none-any.whl", "has_sig": false, "md5_digest": "e0b5270683b423e5cdfa95bc2b64e1e1", "packagetype": "bdist_wheel", "python_version": "py36", "requires_python": null, "size": 1902385, "upload_time": "2019-07-22T13:47:00", "url": "https://files.pythonhosted.org/packages/2d/1b/10bdf5f1e4032c3f2818db6f57e38b749513b0287c97ca224a7a6588988a/discovery_behavioral_utils-1.2.2-py36-none-any.whl" }, { "comment_text": "", "digests": { "md5": "56d6f714fc6782eef2dc9744ddbafeef", "sha256": "51c203fd5fbeeea37c306fd89ac9c0a5a6c16492d10a762f53d272c4b9475940" }, "downloads": -1, "filename": "discovery-behavioral-utils-1.2.2.tar.gz", "has_sig": false, "md5_digest": "56d6f714fc6782eef2dc9744ddbafeef", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 73378, "upload_time": "2019-07-22T13:47:04", "url": "https://files.pythonhosted.org/packages/70/ec/492ccf344ca87e093e78e5bdffb6c7f277e0a8a37cf15bc4fbb0d05be53e/discovery-behavioral-utils-1.2.2.tar.gz" } ], "1.2.3": [ { "comment_text": "", "digests": { "md5": "8fe6705e49c32dd21904a6635e20b255", "sha256": "c49f17363fd902c257f41068cd1b03cdd5cc9e03a11c67223373c53efb00162a" }, "downloads": -1, "filename": "discovery_behavioral_utils-1.2.3-py36-none-any.whl", "has_sig": false, "md5_digest": "8fe6705e49c32dd21904a6635e20b255", "packagetype": "bdist_wheel", "python_version": "py36", "requires_python": null, "size": 1902383, "upload_time": "2019-08-18T10:37:11", "url": "https://files.pythonhosted.org/packages/45/26/b9cb06d0c769fce2f4ccfc8fa631a7005fdb98e3fc3758ca9184018416c2/discovery_behavioral_utils-1.2.3-py36-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1a696906ed0a9c84f2f1651e205ddb06", "sha256": "7d56b8df463fb7b260b246a376a5d099fe394a4a73df49c8a6268374fdbd679d" }, "downloads": -1, "filename": "discovery-behavioral-utils-1.2.3.tar.gz", "has_sig": false, "md5_digest": "1a696906ed0a9c84f2f1651e205ddb06", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 73342, "upload_time": "2019-08-18T10:37:14", "url": "https://files.pythonhosted.org/packages/a8/f7/f4a37f6145cc812ca9a07778e30ba5ef7aed8374cdbafacf362f02ccc65b/discovery-behavioral-utils-1.2.3.tar.gz" } ], "1.2.4": [ { "comment_text": "", "digests": { "md5": "14f9dec9950dc560723b2f8c0524a389", "sha256": "5a1c4013eb3a86cce08d70b6608f51181a8b0db8b0c9e47f55e1ae0563bd02b2" }, "downloads": -1, "filename": "discovery_behavioral_utils-1.2.4-py36-none-any.whl", "has_sig": false, "md5_digest": "14f9dec9950dc560723b2f8c0524a389", "packagetype": "bdist_wheel", "python_version": "py36", "requires_python": null, "size": 1902670, "upload_time": "2019-08-23T09:20:02", "url": "https://files.pythonhosted.org/packages/5f/f1/a4d933f7147a479963fc4abc3adec5283daffb63953b901fd6b2a1dae54b/discovery_behavioral_utils-1.2.4-py36-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8b87a3e058527d06807769547ffa7950", "sha256": "ef17d550d57c372b254b4e2f6c0a013fa3db1f7bc43c7d3db410c4966e2def4c" }, "downloads": -1, "filename": "discovery-behavioral-utils-1.2.4.tar.gz", "has_sig": false, "md5_digest": "8b87a3e058527d06807769547ffa7950", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 73583, "upload_time": "2019-08-23T09:20:05", "url": "https://files.pythonhosted.org/packages/5b/73/4ae379d24ec2936882471a534b7728eca53be613e505e955f86e4f373c48/discovery-behavioral-utils-1.2.4.tar.gz" } ], "1.2.5": [ { "comment_text": "", "digests": { "md5": "610d7c4a3f9b37a233e5eadbdddde93e", "sha256": "6eddcc93a172a4be10a914a99cdd023d103b512b55d6111535d43fc3b858e744" }, "downloads": -1, "filename": "discovery_behavioral_utils-1.2.5-py36-none-any.whl", "has_sig": false, "md5_digest": "610d7c4a3f9b37a233e5eadbdddde93e", "packagetype": "bdist_wheel", "python_version": "py36", "requires_python": null, "size": 1902905, "upload_time": "2019-08-26T10:19:04", "url": "https://files.pythonhosted.org/packages/1b/ae/a8b1d010eb851745a0289b24d63440faa42886e5a39a955e17c56d244afc/discovery_behavioral_utils-1.2.5-py36-none-any.whl" }, { "comment_text": "", "digests": { "md5": "16ddf9fdc6c3207b0ab148a58acba324", "sha256": "422e3227ea40c5ddfe16bb6b5822de4961e81f7ab2b8bb539d07e1ed9341870b" }, "downloads": -1, "filename": "discovery-behavioral-utils-1.2.5.tar.gz", "has_sig": false, "md5_digest": "16ddf9fdc6c3207b0ab148a58acba324", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 73825, "upload_time": "2019-08-26T10:19:08", "url": "https://files.pythonhosted.org/packages/93/3f/cc4950f76e99619f9e581dd093f6c97023f2ee4869c61ea1710e4af4406a/discovery-behavioral-utils-1.2.5.tar.gz" } ], "1.2.9": [ { "comment_text": "", "digests": { "md5": "248f6dd53e2cf8d02676df37da05a47b", "sha256": "4df2f60602babba16755d641974c8d2a78a2951ac992c11b7fa7f5041c2d6d1c" }, "downloads": -1, "filename": "discovery_behavioral_utils-1.2.9-py36-none-any.whl", "has_sig": false, "md5_digest": "248f6dd53e2cf8d02676df37da05a47b", "packagetype": "bdist_wheel", "python_version": "py36", "requires_python": null, "size": 1905599, "upload_time": "2019-09-30T21:33:58", "url": "https://files.pythonhosted.org/packages/f7/eb/ebc33fd645f0b41d9caf758f713e0ffa1208d52ae1ca06d9bb2c0bdcd812/discovery_behavioral_utils-1.2.9-py36-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ae35ca30fb58d78e305db730be5f874e", "sha256": "e1b49911fc358ac469d0a80ae0a14536a47d3de1325e20a66fcdc46afe2316bb" }, "downloads": -1, "filename": "discovery-behavioral-utils-1.2.9.tar.gz", "has_sig": false, "md5_digest": "ae35ca30fb58d78e305db730be5f874e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 75752, "upload_time": "2019-09-30T21:34:02", "url": "https://files.pythonhosted.org/packages/8d/08/7a14a034cfba31b035c1b5bfc8115faf1d617d204c2bca5ac5ec8b7a433c/discovery-behavioral-utils-1.2.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "7bf3c534fd5d1507763216662b960b68", "sha256": "5e53d07191cb796ebd384667b7777a37aad5fd3bb5d7fe46b47dd9bcdb1bd98d" }, "downloads": -1, "filename": "discovery_behavioral_utils-1.2.15-py36-none-any.whl", "has_sig": false, "md5_digest": "7bf3c534fd5d1507763216662b960b68", "packagetype": "bdist_wheel", "python_version": "py36", "requires_python": null, "size": 1904330, "upload_time": "2019-10-19T22:03:18", "url": "https://files.pythonhosted.org/packages/27/56/4c79e3915c72b62c296ab1af1ce369d8882fdebf4b0b17fe3b1053b78fa2/discovery_behavioral_utils-1.2.15-py36-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f9d3df12ab68440c39b062b134cab14f", "sha256": "28666b7779dfc711889d4f3f30c2cff4ae6553fc042bded663474bb2dc8c21f7" }, "downloads": -1, "filename": "discovery-behavioral-utils-1.2.15.tar.gz", "has_sig": false, "md5_digest": "f9d3df12ab68440c39b062b134cab14f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 74241, "upload_time": "2019-10-19T22:03:21", "url": "https://files.pythonhosted.org/packages/19/4b/c13f4e51f5483a5d552cdb6e9cfed7bf1ab34a4e3660ffba9f44ccc57569/discovery-behavioral-utils-1.2.15.tar.gz" } ] }