{ "info": { "author": "Swen Vermeul \u2022 ID SIS \u2022 ETH Z\u00fcrich", "author_email": "swen@ethz.ch", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# Welcome to pyBIS!\npyBIS is a Python module for interacting with openBIS, designed to be used in Jupyter. It offers some sort of IDE for openBIS, supporting TAB completition and input checks, making the life of a researcher hopefully easier.\n\n## Dependencies and Requirements\n- pyBIS relies the openBIS API v3\n- openBIS version 16.05.2 or newer is required\n- 18.06.2 or later is recommended\n- pyBIS uses Python 3.3 and pandas\n\n## Installation\n\n```\npip install pybis\n```\nThat command will download install pybis and all its dependencies.\n\nIf you haven't done yet, install Jupyter Notebook:\n\n```\npip install jupyter\n```\n\n# Usage\n\n## Tab completition and other hints\nUsed in a Jupyter Notebook environment, pybis helps you to enter the commands. After every dot `.` you might hit the `TAB` key in order to look at the available commands.\n\nIf you are unsure what parameters to add to a , add a question mark right after the method and hit `SHIFT+ENTER`. Jupyter will then look up the signature of the method and show some helpful docstring.\n\nWhen working with properties of entities, they might use a **controlled vocabulary** or are of a specific **property type**. Add an underscore `_` character right after the property and hit `SHIFT+ENTER` to show the valid values. When a property only acceps a controlled vocabulary, you will be shown the valid terms in a nicely formatted table.\n\n## connect to from OpenBIS\n\n```\nfrom pybis import Openbis\no = Openbis('https://example.com', verify_certificates=False)\n\nimport getpass\npassword = getpass.getpass()\n\no.login('username', password, save_token=True) # save the session token in ~/.pybis/example.com.token\n```\n\nCheck whether the session token is still valid and log out:\n\n```\no.token\no.is_session_active()\no.logout()\n```\n\n## browsing masterdata\n```\nsample_types = o.get_sample_types() # get a list of sample types \nsample_types.df # DataFrame object\nst = o.get_sample_types()[3] # get 4th element of that list\nst = o.get_sample_type('YEAST')\nst.code\nst.generatedCodePrefix\nst.attrs.all() # get all attributs as a dict\nst.validationPlugin # returns a plugin object\n\nst.get_property_assignments()\nst.assign_property(\n\tprop='diff_time',\n\tsection = '',\n\tordinal = 5,\n\tmandatory = True,\n\tinitialValueForExistingEntities = 'initial value'\n\tshowInEditView = True,\n\tshowRawValueInForms = True\n)\n\no.get_material_types()\n# etc. \u2014 see above\n\no.get_dataset_types()\n# etc. \u2014 see above\n\no.get_experiment_types()\n# etc. \u2014 see above\n\no.get_property_types()\npt = o.get_property_type('BARCODE_COMPLEXITY_CHECKER')\npt.attrs.all()\n\no.get_plugins()\npl = o.get_plugin('Diff_time')\npl.script # the Jython script that processes this property\n\no.get_vocabularies()\no.get_vocabulary('BACTERIAL_ANTIBIOTIC_RESISTANCE')\no.get_terms(vocabulary='STORAGE')\no.get_tags()\n```\n\n## create plugins and property types\n```\npl = o.new_plugin(\n\tname ='my_new_entry_validation_plugin',\n\tpluginType ='ENTITY_VALIDATION', # or 'DYNAMIC_PROPERTY' or 'MANAGED_PROPERTY',\n\tentityKind = None, # or 'SAMPLE', 'MATERIAL', 'EXPERIMENT', 'DATA_SET'\n\tscript = 'def calculate(): pass' # a JYTHON script\n)\npl.save()\n\npt = o.new_property_type(\n\tcode='MY_NEW_PROPERTY_TYPE', \n\tlabel='yet another property type', \n description='my first property',\n dataType='VARCHAR'\n)\n# dataType can be any of ['INTEGER', 'VARCHAR', 'MULTILINE_VARCHAR', 'REAL', 'TIMESTAMP', 'BOOLEAN', 'CONTROLLEDVOCABULARY', 'MATERIAL', 'HYPERLINK', 'XML']\n\n\n```\n\n## Users, Groups and RoleAssignments\n\n```\no.get_groups()\ngroup = o.new_group(code='group_name', description='...')\ngroup = o.get_group('group_name')\ngroup.save()\ngroup.assign_role(role='ADMIN', space='DEFAULT')\ngroup.get_roles() \ngroup.revoke_role(role='ADMIN', space='DEFAULT')\n\ngroup.add_members(['admin'])\ngroup.get_members()\ngroup.del_members(['admin'])\ngroup.delete()\n\no.get_persons()\nperson = o.new_person(userId='username')\nperson.space = 'USER_SPACE'\nperson.save()\n\nperson.assign_role(role='ADMIN', space='MY_SPACE')\nperson.assign_role(role='OBSERVER')\nperson.get_roles()\nperson.revoke_role(role='ADMIN', space='MY_SPACE')\nperson.revoke_role(role='OBSERVER')\n\no.get_role_assignments()\no.get_role_assignments(space='MY_SPACE')\no.get_role_assignments(group='MY_GROUP')\nra = o.get_role_assignment(techId)\nra.delete()\n```\n\n## Spaces\n\n```\nspace = o.new_space(code='space_name', description='')\nspace.save()\nspace.delete('reason for deletion')\no.get_spaces(\n start_with = 1, # start_with and count\n count = 7, # enable paging\n)\nspace = o.get_space('MY_SPACE')\nspace.code\nspace.description\nspace.registrator\nspace.registrationDate\nspace.modifier\nspace.modificationDate\nspace.attrs.all() # returns a dict containing all attributes\n```\n\n## Projects\n```\nproject = o.new_project(\n space=space, \n code='project_name',\n description='some project description'\n)\nproject = space.new_project( code='project_code', description='project description')\nproject.save()\n\no.get_projects(\n space = 'MY_SPACE', # show only projects in MY_SPACE\n start_with = 1, # start_with and count\n count = 7, # enable paging\n)\no.get_projects(space='MY_SPACE')\nspace.get_projects()\n\nproject.get_experiments()\nproject.get_attachments()\np.add_attachment(fileName='testfile', description= 'another file', title= 'one more attachment')\nproject.download_attachments()\n\nproject.code\nproject.description\n# ... and many more\nproject.attrs.all() # returns a dict containing all attributes\n\nproject.freeze = True\nproject.freezeForExperiments = True\nproject.freezeForSamples = True\n\n```\n\n## Samples\nSamples are nowadays called **Objects** in openBIS. pyBIS is not yet thoroughly supporting this term in all methods where \u00absample\u00bb occurs.\n\nNOTE: In openBIS, `samples` entities have recently been renamed to `objects`. All methods have synonyms using the term `object`, e.g. `get_object`, `new_object`, `get_object_types`.\n\n```\nsample = o.new_sample(\n type = 'YEAST', \n space = 'MY_SPACE',\n experiment = '/MY_SPACE/MY_PROJECT/EXPERIMENT_1',\n parents = [parent_sample, '/MY_SPACE/YEA66'], \n children = [child_sample],\n props = {\"name\": \"some name\", \"description\": \"something interesting\"}\n)\nsample = space.new_sample( type='YEAST' )\nsample.save()\n\nsample = o.get_sample('/MY_SPACE/MY_SAMPLE_CODE')\nsample = o.get_sample('20170518112808649-52')\n\nsample.space\nsample.code\nsample.permId\nsample.identifier\nsample.type # once the sample type is defined, you cannot modify it\n\nsample.space\nsample.space = 'MY_OTHER_SPACE'\n\nsample.experiment # a sample can belong to one experiment only\nsample.experiment = '/MY_SPACE/MY_PROJECT/MY_EXPERIMENT'\n\nsample.project\nsample.project = '/MY_SPACE/MY_PROJECT' # only works if project samples are\nenabled\n\nsample.tags\nsample.tags = ['guten_tag', 'zahl_tag' ]\n\nsample.attrs.all() # returns a dict of all attributes\n\nsample.get_parents()\nsample.set_parents(['/MY_SPACE/PARENT_SAMPLE_NAME')\nsample.add_parents('/MY_SPACE/PARENT_SAMPLE_NAME')\nsample.del_parents('/MY_SPACE/PARENT_SAMPLE_NAME')\n\nsample.get_children()\nsample.set_children('/MY_SPACE/CHILD_SAMPLE_NAME')\nsample.add_children('/MY_SPACE/CHILD_SAMPLE_NAME')\nsample.del_children('/MY_SPACE/CHILD_SAMPLE_NAME')\n\n# A Sample may belong to another Sample, which acts as a container.\n# As opposed to DataSets, a Sample may only belong to one container.\nsample.container # returns a sample object\nsample.container = '/MY_SPACE/CONTAINER_SAMPLE_NAME' # watch out, this will change the identifier of the sample to:\n # /MY_SPACE/CONTAINER_SAMPLE_NAME:SAMPLE_NAME\nsample.container = '' # this will remove the container. \n\n# A Sample may contain other Samples, in order to act like a container (see above)\n# The Sample-objects inside that Sample are called \u00abcomponents\u00bb or \u00abcontained Samples\u00bb\n# You may also use the xxx_contained() functions, which are just aliases.\nsample.get_components()\nsample.set_components('/MY_SPACE/COMPONENT_NAME')\nsample.add_components('/MY_SPACE/COMPONENT_NAME')\nsample.del_components('/MY_SPACE/COMPONENT_NAME')\n\nsample.get_tags()\nsample.set_tags('tag1')\nsample.add_tags(['tag2','tag3'])\nsample.del_tags('tag1')\n\nsample.set_props({ ... })\nsample.p # same thing as .props\nsample.p.my_property = \"some value\" # set the value of a property (value is checked)\nsample.p + TAB # in IPython or Jupyter: show list of available properties\nsample.p.my_property_ + TAB # in IPython or Jupyter: show datatype or controlled vocabulary\nsample.p['my-weird.property-name'] # accessing properties containing a dash or a dot\n\nsample.attrs.all() # returns all attributes as a dict\nsample.props.all() # returns all properties as a dict\n\nsample.get_attachments()\nsample.download_attachments()\nsample.add_attachment('testfile.xls')\n\nsamples = o.get_samples(\n space ='MY_SPACE',\n type ='YEAST',\n tags =['*'], # only sample with existing tags\n start_with = 1, # start_with and count\n count = 7, # enable paging\n NAME = 'some name', # properties are always uppercase \n # to distinguish them from attributes\n **{ \"SOME.WEIRD:PROP\": \"value\"} # property name contains a dot or a\n # colon: cannot be passed as an argument \n props=['NAME', 'MATING_TYPE'] # show these properties in the result\n)\nsamples.df # returns a pandas DataFrame object\nsamples.get_datasets(type='ANALYZED_DATA')\n\nsample.freeze = True\nsample.freezeForComponents = True\nsample.freezeForChildren = True\nsample.freezeForParents = True\nsample.freezeForDataSets = True\n```\n\n## Experiments\n\nNOTE: In openBIS, `experiment` entities have recently been renamed to `collection`. All methods have synonyms using the term `collection`, e.g. `get_collections`, `new_collection`, `get_collection_types`.\n\n```\no.new_experiment\n type='DEFAULT_EXPERIMENT',\n space='MY_SPACE',\n project='YEASTS'\n)\n\no.get_experiments(\n project='YEASTS',\n space='MY_SPACE', \n type='DEFAULT_EXPERIMENT',\n tags='*', \n finished_flag=False,\n props=['name', 'finished_flag']\n)\nproject.get_experiments()\nexp = o.get_experiment('/MY_SPACE/MY_PROJECT/MY_EXPERIMENT')\n\nexp.set_props({ key: value})\nexp.props\nexp.p # same thing as .props\nexp.p.finished_flag=True\nexp.p.my_property = \"some value\" # set the value of a property (value is checked)\nexp.p + TAB # in IPython or Jupyter: show list of available properties\nexp.p.my_property_ + TAB # in IPython or Jupyter: show datatype or controlled vocabulary\nexp.p['my-weird.property-name'] # accessing properties containing a dash or a dot\n\nexp.attrs.all() # returns all attributes as a dict\nexp.props.all() # returns all properties as a dict\n\nexp.attrs.tags = ['some', 'tags']\nexp.tags = ['some', 'tags'] # same thing\nexp.save()\n\nexp.code\nexp.description\nexp.registrator\nexp.registrationDate\nexp.modifier\nexp.modificationDate\n\nexp.freeze = True\nexp.freezeForDataSets = True\nexp.freezeForSamples = True\n```\n\n## Datasets\n\n```\nsample.get_datasets()\nds = o.get_dataset('20160719143426517-259')\nds.get_parents()\nds.get_children()\nds.sample\nds.experiment\nds.physicalData\nds.status # AVAILABLE LOCKED ARCHIVED \n # UNARCHIVE_PENDING ARCHIVE_PENDING BACKUP_PENDING\nds.archive()\nds.unarchive()\n\nds.attrs.all() # returns all attributes as a dict\nds.props.all() # returns all properties as a dict\n\nds.get_files(start_folder=\"/\")\nds.file_list\nds.add_attachment()\nds.get_attachments()\nds.download_attachments()\nds.download(destination='/tmp', wait_until_finished=False)\n\nds_new = o.new_dataset(\n type = 'ANALYZED_DATA', \n experiment = '/SPACE/PROJECT/EXP1', \n sample = '/SPACE/SAMP1',\n files = ['my_analyzed_data.dat'], \n props = {'name': 'some good name', 'description': '...' }\n)\n\n# DataSet CONTAINER (contains other DataSets, but no files)\nds_new = o.new_dataset(\n type = 'ANALYZED_DATA', \n experiment = '/SPACE/PROJECT/EXP1', \n sample = '/SPACE/SAMP1',\n kind = 'CONTAINER',\n props = {'name': 'some good name', 'description': '...' }\n)\nds_new.save()\n\n# get, set, add and remove parent datasets\ndataset.get_parents()\ndataset.set_parents(['20170115220259155-412'])\ndataset.add_parents(['20170115220259155-412'])\ndataset.del_parents(['20170115220259155-412'])\n\n# get, set, add and remove child datasets\ndataset.get_children()\ndataset.set_children(['20170115220259155-412'])\ndataset.add_children(['20170115220259155-412'])\ndataset.del_children(['20170115220259155-412'])\n\n# A DataSet may belong to other DataSets, which must be of kind=CONTAINER\n# As opposed to Samples, DataSets may belong (contained) to more than one DataSet-container\ndataset.get_containers()\ndataset.set_containers(['20170115220259155-412'])\ndataset.add_containers(['20170115220259155-412'])\ndataset.del_containers(['20170115220259155-412'])\n\n# A DataSet of kind=CONTAINER may contain other DataSets, to act like a folder (see above)\n# The DataSet-objects inside that DataSet are called components or contained DataSets\n# You may also use the xxx_contained() functions, which are just aliases.\ndataset.get_components()\ndataset.set_components(['20170115220259155-412'])\ndataset.add_components(['20170115220259155-412'])\ndataset.del_components(['20170115220259155-412'])\n\nds.set_props({ key: value})\nds.props\nds.p # same thing as .props\nds.p.my_property = \"some value\" # set the value of a property\nds.p + TAB # show list of available properties\nds.p.my_property_ + TAB # show datatype or controlled vocabulary\nds.p['my-weird.property-name'] # accessing properties containing a dash or a dot\n\nds.attrs.all() # returns all attributes as a dict\nds.props.all() # returns all properties as a dict\n\n# complex query with chaining.\n# properties must be in UPPERCASE\ndatasets = o.get_experiments(project='YEASTS').get_samples(type='FLY').get_datasets(type='ANALYZED_DATA', props=['MY_PROPERTY'],MY_PROPERTY='some analyzed data')\n\n# another example\ndatasets = o.get_experiment('/MY_NEW_SPACE/VERMEUL_PROJECT/MY_EXPERIMENT4').get_samples(type='UNKNOWN').get_parents().get_datasets(type='RAW_DATA')\n\ndatasets.df # get a pandas dataFrame object\n\n# use it in a for-loop:\nfor dataset in datasets:\n print(dataset.permID)\n dataset.delete('give me a reason')\n\nds.freeze = True\nds.freezeForChildren = True\nds.freezeForParents = True\nds.freezeForComponents = True\nds.freezeForContainers = True\n```\n\n## Semantic Annotations\n```\n# create semantic annotation for sample type 'UNKNOWN'\nsa = o.new_semantic_annotation(\n\tentityType = 'UNKNOWN',\n\tpredicateOntologyId = 'po_id',\n\tpredicateOntologyVersion = 'po_version',\n\tpredicateAccessionId = 'pa_id',\n\tdescriptorOntologyId = 'do_id',\n\tdescriptorOntologyVersion = 'do_version',\n\tdescriptorAccessionId = 'da_id'\n)\nsa.save()\n\n# create semantic annotation for property type \n# (predicate and descriptor values omitted for brevity)\nsa = o.new_semantic_annotation(propertyType = 'DESCRIPTION', ...)\nsa.save()\n\n# create semantic annotation for sample property assignment (predicate and descriptor values omitted for brevity)\nsa = o.new_semantic_annotation(entityType = 'UNKNOWN', propertyType = 'DESCRIPTION', ...)\nsa.save()\n\n# create a semantic annotation directly from a sample type\n# will also create sample property assignment annotations when propertyType is given\nst = o.get_sample_type(\"ORDER\")\nst.new_semantic_annotation(...)\n\n# get all semantic annotations\no.get_semantic_annotations()\n\n# get semantic annotation by perm id\nsa = o.get_semantic_annotation(\"20171015135637955-30\")\n\n# update semantic annotation\nsa.predicateOntologyId = 'new_po_id'\nsa.descriptorOntologyId = 'new_do_id'\nsa.save()\n\n# delete semantic annotation\nsa.delete('reason')\n```\n\n## Tags\n```\nnew_tag = o.new_tag(\n\tcode = 'my_tag', \n\tdescription = 'some descriptive text'\n)\nnew_tag.description = 'some new description'\nnew_tag.save()\no.get_tags()\no.get_tag('/username/TAG_Name')\no.get_tag('TAG_Name')\n\ntag.get_experiments()\ntag.get_samples()\ntag.get_owner() # returns a person object\ntag.delete('why?')\n```\n\n## Vocabulary and VocabularyTerms\n\nAn entity such as Sample (Object), Experiment (Collection), Material or DataSet can be of a specific *entity type*:\n\n* Sample Type\n* Experiment Type\n* DataSet Type\n* Material Type\n\nEvery type defines which **Properties** may be defined. Properties act like **Attributes**, but they are type-specific. Properties can contain all sorts of information, such as free text, XML, Hyperlink, Boolean and also **Controlled Vocabulary**. Such a Controlled Vocabulary consists of many **VocabularyTerms**. These terms are used to only allow certain values entered in a Property field.\n\nSo for example, you want to add a property called **Animal** to a Sample and you want to control which terms are entered in this Property field. For this you need to do a couple of steps:\n\n1. create a new vocabulary *AnimalVocabulary*\n2. add terms to that vocabulary: *Cat, Dog, Mouse*\n3. create a new PropertyType (e.g. *Animal*) of DataType *CONTROLLEDVOCABULARY* and assign the *AnimalVocabulary* to it\n4. create a new SampleType (e.g. *Pet*) and *assign* the created PropertyType to that Sample type.\n5. If you now create a new Sample of type *Pet* you will be able to add a property *Animal* to it which only accepts the terms *Cat, Dog* or *Mouse*.\n\n\n**create new Vocabulary with three VocabularyTerms**\n\n```\nvoc = o.new_vocabulary(\n code = 'BBB',\n description = 'description of vocabulary aaa',\n urlTemplate = 'https://ethz.ch',\n terms = [\n { \"code\": 'term_code1', \"label\": \"term_label1\", \"description\": \"term_description1\"},\n { \"code\": 'term_code2', \"label\": \"term_label2\", \"description\": \"term_description2\"},\n { \"code\": 'term_code3', \"label\": \"term_label3\", \"description\": \"term_description3\"}\n ] \n)\nvoc.save()\n```\n\n**create additional VocabularyTerms**\n\n```\nterm = o.new_term(\n\tcode='TERM_CODE_XXX', \n\tvocabularyCode='BBB', \n\tlabel='here comes a label',\n\tdescription='here might appear a meaningful description'\n)\nterm.save()\n```\n\n**update VocabularyTerms**\n\nTo change the ordinal of a term, it has to be moved either to the top with the `.move_to_top()` method or after another term using the `.move_after_term('TERM_BEFORE')` method.\n\n```\nvoc = o.get_vocabulary('STORAGE')\nterm = voc.get_terms()['RT']\nterm.label = \"Room Temperature\"\nterm.official = True\nterm.move_to_top()\nterm.move_after_term('-40')\nterm.save()\nterm.delete()\n```", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://sissource.ethz.ch/sispub/openbis/tree/master/pybis", "keywords": "", "license": "Apache Software License Version 2.0", "maintainer": "", "maintainer_email": "", "name": "PyBIS", "package_url": "https://pypi.org/project/PyBIS/", "platform": "", "project_url": "https://pypi.org/project/PyBIS/", "project_urls": { "Homepage": "https://sissource.ethz.ch/sispub/openbis/tree/master/pybis" }, "release_url": "https://pypi.org/project/PyBIS/1.9.6/", "requires_dist": null, "requires_python": ">=3.3", "summary": "openBIS connection and interaction, optimized for using with Jupyter", "version": "1.9.6" }, "last_serial": 5912566, "releases": { "1.2.0": [ { "comment_text": "", "digests": { "md5": "bb9a38fb69e44d0c4c892b18aac2492c", "sha256": "55725a28aa4b6ce9955a154f72c503db9fd0b518efeeeb3540f46449c801c1f8" }, "downloads": -1, "filename": "PyBIS-1.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "bb9a38fb69e44d0c4c892b18aac2492c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 32028, "upload_time": "2017-12-20T10:23:57", "url": "https://files.pythonhosted.org/packages/24/41/5db8103c36d3089ce6260b601da82b3d308474103765644a0c37e0fc3d99/PyBIS-1.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f6d7c8a9b9a8eba9838c9334d2258abd", "sha256": "24b114cf2002a9ffcb55ae3e68a3d0ec26d2fb009e1b04e557f7bd76c8ba2043" }, "downloads": -1, "filename": "PyBIS-1.2.0.tar.gz", "has_sig": false, "md5_digest": "f6d7c8a9b9a8eba9838c9334d2258abd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29413, "upload_time": "2017-08-03T09:57:55", "url": "https://files.pythonhosted.org/packages/96/cd/37ee45fbaba643fa8d6d9417cd0ce9024b898d188a7e4e98017c12953daa/PyBIS-1.2.0.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "ba85e512aec750d9da4808a3eb60a540", "sha256": "652fb3775e174b3b15d17703fefdcff33e18edab07ee58717bdf6dd02a0db250" }, "downloads": -1, "filename": "PyBIS-1.2.1.tar.gz", "has_sig": false, "md5_digest": "ba85e512aec750d9da4808a3eb60a540", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31829, "upload_time": "2017-08-03T10:23:42", "url": "https://files.pythonhosted.org/packages/bd/79/3d01e58c908fcb97d712429a9bf7256e89c40089b398b7031473b6e1b130/PyBIS-1.2.1.tar.gz" } ], "1.2.2": [ { "comment_text": "", "digests": { "md5": "87b1396dd300b49f3b3a862f8226c8df", "sha256": "3d8d25b131f5d2d8bd2dcd8b35b1e2b1621e11904a87921f224569405a346902" }, "downloads": -1, "filename": "PyBIS-1.2.2.tar.gz", "has_sig": false, "md5_digest": "87b1396dd300b49f3b3a862f8226c8df", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31865, "upload_time": "2017-08-03T12:00:04", "url": "https://files.pythonhosted.org/packages/70/9d/fb13970de459083a1ddefcccb9d53cb82280146064c2a504d6b3b35e3ecd/PyBIS-1.2.2.tar.gz" } ], "1.2.3": [ { "comment_text": "", "digests": { "md5": "ca7ee83be7f9c1bbd40cf40c2e7e1a68", "sha256": "19fb990d8c44bd806ec53c44ee62f25be61dbfad51f21837476c579b00d90336" }, "downloads": -1, "filename": "PyBIS-1.2.3.tar.gz", "has_sig": false, "md5_digest": "ca7ee83be7f9c1bbd40cf40c2e7e1a68", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31927, "upload_time": "2017-08-22T09:42:16", "url": "https://files.pythonhosted.org/packages/cb/75/bb5e4a72bb5cc4c17dc81e5484c42a53ca5d51aaee2f052547fb2cbce33f/PyBIS-1.2.3.tar.gz" } ], "1.2.4": [ { "comment_text": "", "digests": { "md5": "0c7eafd837dead074ced674b88c7cbbb", "sha256": "30a813184352bff43da4d0e03bfd1a55fe775a46fc15421002e044e4ca6d26f7" }, "downloads": -1, "filename": "PyBIS-1.2.4.tar.gz", "has_sig": false, "md5_digest": "0c7eafd837dead074ced674b88c7cbbb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31946, "upload_time": "2017-08-29T13:35:02", "url": "https://files.pythonhosted.org/packages/9f/f5/9ff1c7af7f3d0bf8ce2b1b8c1beec8518180bbc1a90633fee12212985965/PyBIS-1.2.4.tar.gz" } ], "1.4.2": [ { "comment_text": "", "digests": { "md5": "68cf510331a283f26510eef6bb33712c", "sha256": "387657f8e8fc5491f3c60e38a0258ce7ae19ce84a868b93ab79a014d806cf090" }, "downloads": -1, "filename": "PyBIS-1.4.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "68cf510331a283f26510eef6bb33712c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.3", "size": 34938, "upload_time": "2017-12-20T10:23:58", "url": "https://files.pythonhosted.org/packages/78/c0/8c0d7210d7e7bc4332670ca161000bb919260c08410b6ea66ddfec5f47e9/PyBIS-1.4.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0d6b59c58651e2c1dbefa1d911e9ea6c", "sha256": "6c51dc72d01c339e6698c7e3947e0a6dfa0310f1680b0deca1f1eb99d5488d69" }, "downloads": -1, "filename": "PyBIS-1.4.2-py3-none-any.whl", "has_sig": false, "md5_digest": "0d6b59c58651e2c1dbefa1d911e9ea6c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.3", "size": 34938, "upload_time": "2017-12-20T10:23:59", "url": "https://files.pythonhosted.org/packages/e1/92/eee39c1149804e3abcddaa1f3da80dcd7f01fed635b5b2f0f1f8476f0240/PyBIS-1.4.2-py3-none-any.whl" } ], "1.4.3": [ { "comment_text": "", "digests": { "md5": "5fd7da53e3c2d3afa22dbb0904355aac", "sha256": "6d1f0521f70e7c10eb8ecf221e885260a1c0d113b2cbed00bfbc242c117aaebb" }, "downloads": -1, "filename": "PyBIS-1.4.3-py3-none-any.whl", "has_sig": false, "md5_digest": "5fd7da53e3c2d3afa22dbb0904355aac", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.3", "size": 34942, "upload_time": "2018-01-29T22:10:43", "url": "https://files.pythonhosted.org/packages/d7/db/a44e3460aaca9b0eee08449c38c12ea3d441a6c1d74bb890ee7cb9ac712e/PyBIS-1.4.3-py3-none-any.whl" } ], "1.5.0": [ { "comment_text": "", "digests": { "md5": "b0979a3bec0022aee2aa972d9b47bc07", "sha256": "1a50e0615a0b3ca50691132b8c39ffa412f29b0b2856485e55ef740048d6b207" }, "downloads": -1, "filename": "PyBIS-1.5.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b0979a3bec0022aee2aa972d9b47bc07", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.3", "size": 41546, "upload_time": "2018-02-16T14:32:20", "url": "https://files.pythonhosted.org/packages/18/20/bfc572cb284ccb66546519744f9d83903bf22dc0b12bf053b57e46137f88/PyBIS-1.5.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b05f032376ddcd46d599eab23d7ce023", "sha256": "73f2f6f693ec9b4dd3ed9c607fb960c32fb87f6ba653d8927d8d6b5df545e176" }, "downloads": -1, "filename": "PyBIS-1.5.0.tar.gz", "has_sig": false, "md5_digest": "b05f032376ddcd46d599eab23d7ce023", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 41658, "upload_time": "2018-02-16T14:29:42", "url": "https://files.pythonhosted.org/packages/8e/b7/b530ce7651a635ba153f6ad9d8231435f5c02910edb4b34aa9fe1c376693/PyBIS-1.5.0.tar.gz" } ], "1.6.0": [ { "comment_text": "", "digests": { "md5": "99c334f1ab159c4dd20b010212162810", "sha256": "9ae799f0ce2eb8cf2d99f88c9fa88d9d5aa02bdaa250f6519de887f82b34032f" }, "downloads": -1, "filename": "PyBIS-1.6.0-py3-none-any.whl", "has_sig": false, "md5_digest": "99c334f1ab159c4dd20b010212162810", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.3", "size": 54496, "upload_time": "2018-03-23T15:26:43", "url": "https://files.pythonhosted.org/packages/fa/0d/6d014db8207a79e3d42257c6fa50b6b33066e849a3ce03ba178aa613cc9d/PyBIS-1.6.0-py3-none-any.whl" } ], "1.6.1": [ { "comment_text": "", "digests": { "md5": "e128ac54c0bb1b20ef9a5142f041973f", "sha256": "0b8baf4cf1568b55c70c6d6abfd43eeb555fc6846fb7c6247a53aadd9e8dd269" }, "downloads": -1, "filename": "PyBIS-1.6.1-py3-none-any.whl", "has_sig": false, "md5_digest": "e128ac54c0bb1b20ef9a5142f041973f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.3", "size": 54632, "upload_time": "2018-04-10T15:13:33", "url": "https://files.pythonhosted.org/packages/98/9b/32fb9bd0e16a46aa152259e50634a9ab6a0751444e176d2b56f2931db124/PyBIS-1.6.1-py3-none-any.whl" } ], "1.6.2": [ { "comment_text": "", "digests": { "md5": "bd928dfa45af87870ec01b512c03e5a0", "sha256": "05158e7cb0c4e6bc5edc9368fc820c6a69cdd42281ec3098dbc65c62c624a211" }, "downloads": -1, "filename": "PyBIS-1.6.2-py3-none-any.whl", "has_sig": false, "md5_digest": "bd928dfa45af87870ec01b512c03e5a0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.3", "size": 55011, "upload_time": "2018-04-13T14:29:50", "url": "https://files.pythonhosted.org/packages/63/a1/692379db6ad1517c22d842c41194fb17dbb1479ec047f6d8f623c7fc690d/PyBIS-1.6.2-py3-none-any.whl" } ], "1.6.3": [ { "comment_text": "", "digests": { "md5": "b95756128d55ce19e1b35f8f4261ac53", "sha256": "ab8d81598c0ac8cc659ee19ebdcfa09647c651fa4366ad66fc9933e3bc8c9798" }, "downloads": -1, "filename": "PyBIS-1.6.3-py3-none-any.whl", "has_sig": false, "md5_digest": "b95756128d55ce19e1b35f8f4261ac53", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.3", "size": 55075, "upload_time": "2018-04-19T09:28:38", "url": "https://files.pythonhosted.org/packages/f8/c2/ea22cc7fd0094619e6d06a1a60e25b8cc59aa32ee191d89da82d39a19321/PyBIS-1.6.3-py3-none-any.whl" } ], "1.6.4": [ { "comment_text": "", "digests": { "md5": "ddf9f810e59b6e590b2354646ca461cb", "sha256": "9d2dd983f5bed4b00e5f6651035b3154bd284079f20a19fedb13f7e1a5d80a7d" }, "downloads": -1, "filename": "PyBIS-1.6.4-py3-none-any.whl", "has_sig": false, "md5_digest": "ddf9f810e59b6e590b2354646ca461cb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.3", "size": 58700, "upload_time": "2018-05-16T15:29:59", "url": "https://files.pythonhosted.org/packages/b7/74/a93099319b66273919f0c6770a30eba8e9733cf49e7f2a6bcd99558537cf/PyBIS-1.6.4-py3-none-any.whl" } ], "1.6.5": [ { "comment_text": "", "digests": { "md5": "01a600df46744939638ec79caf99be7e", "sha256": "0f7210951534204486f41926f72c31bcabba0543caa903a85cb8f39d88ba9b9d" }, "downloads": -1, "filename": "PyBIS-1.6.5.tar.gz", "has_sig": false, "md5_digest": "01a600df46744939638ec79caf99be7e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 50124, "upload_time": "2018-08-20T15:47:47", "url": "https://files.pythonhosted.org/packages/38/79/0f358b56a16f1c23c59406d05d7159cbfbdbf330d9059b528f7e146aec56/PyBIS-1.6.5.tar.gz" } ], "1.6.6": [ { "comment_text": "", "digests": { "md5": "dc710597f36d4a9a366459472a73f59e", "sha256": "28261f2aa31f886a05f53ad4007b9d706c8122b74cf32be9daff230537d496df" }, "downloads": -1, "filename": "PyBIS-1.6.6.tar.gz", "has_sig": false, "md5_digest": "dc710597f36d4a9a366459472a73f59e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51376, "upload_time": "2018-08-23T13:32:21", "url": "https://files.pythonhosted.org/packages/d5/a2/c30f57820d0fe3f2896e1865acce851d462e5fe2f9569eef9a6414e93add/PyBIS-1.6.6.tar.gz" } ], "1.6.7": [ { "comment_text": "", "digests": { "md5": "b1105c479bdea1f63e209df3db16dfd0", "sha256": "1b996a5ee61850e16b23d463373aa82b215462bc16c64b149716a25f60c0d643" }, "downloads": -1, "filename": "PyBIS-1.6.7.tar.gz", "has_sig": false, "md5_digest": "b1105c479bdea1f63e209df3db16dfd0", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 51653, "upload_time": "2018-08-31T15:56:00", "url": "https://files.pythonhosted.org/packages/26/af/007b0bc3db4da2bf0e9919e4e03d7fa5567400219d6406b9831a7cb1da14/PyBIS-1.6.7.tar.gz" } ], "1.6.8": [ { "comment_text": "", "digests": { "md5": "00029b02ec8e95e6af2f38a1a6b396ec", "sha256": "ced6baa6bb2bf047463b24ddc884f9bd892ec85b92d7064fb84b5d76f051253d" }, "downloads": -1, "filename": "PyBIS-1.6.8.tar.gz", "has_sig": false, "md5_digest": "00029b02ec8e95e6af2f38a1a6b396ec", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 52566, "upload_time": "2018-09-28T00:12:07", "url": "https://files.pythonhosted.org/packages/1f/d3/aefa519a5a88e44fa94e43d530dbd9512c0c9c50a15e04487036ce70613c/PyBIS-1.6.8.tar.gz" } ], "1.7.0": [ { "comment_text": "", "digests": { "md5": "64eaa98cee0f6a587e6ece62ee7f5b25", "sha256": "6c74f87a555539c0e123c99aafc2b4c12457e50c4f4f8e11b5497d7c61e84ac8" }, "downloads": -1, "filename": "PyBIS-1.7.0.tar.gz", "has_sig": false, "md5_digest": "64eaa98cee0f6a587e6ece62ee7f5b25", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 53826, "upload_time": "2018-10-03T11:31:21", "url": "https://files.pythonhosted.org/packages/06/15/07c43e0a09ac44d4ea59485f364731365fdde6bdd9373e8c2e277f7e339b/PyBIS-1.7.0.tar.gz" } ], "1.7.1": [ { "comment_text": "", "digests": { "md5": "2dc7b7be896830c9980976447db8e041", "sha256": "dfb735ab38bf771349018aac4c38db8cb0165b6bbb1e6945acc4b82075caebdd" }, "downloads": -1, "filename": "PyBIS-1.7.1.tar.gz", "has_sig": false, "md5_digest": "2dc7b7be896830c9980976447db8e041", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 54296, "upload_time": "2018-10-23T11:10:39", "url": "https://files.pythonhosted.org/packages/0e/9e/2edfbd053275953226c2f088e16800ae9b76626a06a0d1141ba0c03c962d/PyBIS-1.7.1.tar.gz" } ], "1.7.3": [ { "comment_text": "", "digests": { "md5": "e67051e027c0eb95ca76ca6aef1aed33", "sha256": "c4a09953fc451d09052ead7dbfa97f46a40137d7a459d246ce31d600c4175e8c" }, "downloads": -1, "filename": "PyBIS-1.7.3.tar.gz", "has_sig": false, "md5_digest": "e67051e027c0eb95ca76ca6aef1aed33", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 70071, "upload_time": "2018-11-13T15:28:56", "url": "https://files.pythonhosted.org/packages/e7/53/fedb73e8ceb0d4d70971c9ae9cc489a185a39a9f7708d001857f8751e252/PyBIS-1.7.3.tar.gz" } ], "1.7.4": [ { "comment_text": "", "digests": { "md5": "880a663fd3bd62d93239aa4b783ff6d7", "sha256": "1248dcac5c66e86173aed34978c58a7bee9ff319f0646184749b2fd685f511c1" }, "downloads": -1, "filename": "PyBIS-1.7.4.tar.gz", "has_sig": false, "md5_digest": "880a663fd3bd62d93239aa4b783ff6d7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 70118, "upload_time": "2018-11-15T02:23:31", "url": "https://files.pythonhosted.org/packages/ac/6f/3639b1de8500a1d1cb6dbdb1a52a41e5fb9542233778e1864f1e4b01b29e/PyBIS-1.7.4.tar.gz" } ], "1.7.5": [ { "comment_text": "", "digests": { "md5": "0cf67e32b3a77149ca1463b59587a661", "sha256": "93805dad2ea09cc6381d769ce83e01977db63f250a703a76c20319a6c722c654" }, "downloads": -1, "filename": "PyBIS-1.7.5.tar.gz", "has_sig": false, "md5_digest": "0cf67e32b3a77149ca1463b59587a661", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 71408, "upload_time": "2018-12-04T01:19:34", "url": "https://files.pythonhosted.org/packages/8d/9c/749fdc47e309e293779ed4ec79cf6bc965165f7330162625c71b9b8e05fc/PyBIS-1.7.5.tar.gz" } ], "1.7.6": [ { "comment_text": "", "digests": { "md5": "52a0f4cc58c0c882056968ae78cdaa38", "sha256": "bd34e282a23f4949da3443d524b5b62f6b1283ab52ff29d0f0e18dd715b42bb6" }, "downloads": -1, "filename": "PyBIS-1.7.6.tar.gz", "has_sig": false, "md5_digest": "52a0f4cc58c0c882056968ae78cdaa38", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 71506, "upload_time": "2018-12-21T14:18:19", "url": "https://files.pythonhosted.org/packages/e7/e8/0d2fc95792354e3a3aa00a5f0aa3b2feadbf5247c6cfa7f8c81947e393cb/PyBIS-1.7.6.tar.gz" } ], "1.8.0": [ { "comment_text": "", "digests": { "md5": "861eba766da49b6b5ee302dd00e994d6", "sha256": "38ee4383a3afc63c996dc0dcc05394adffdff9f7d530ba105e4e358bb183d1a3" }, "downloads": -1, "filename": "PyBIS-1.8.0.tar.gz", "has_sig": false, "md5_digest": "861eba766da49b6b5ee302dd00e994d6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 72152, "upload_time": "2019-03-04T15:24:19", "url": "https://files.pythonhosted.org/packages/3f/fa/802fd9f589b552e447838a74c1e4abb74f8d4a7092c1a89bd0fec4bfa431/PyBIS-1.8.0.tar.gz" } ], "1.8.1": [ { "comment_text": "", "digests": { "md5": "830d0bfe49cfa4aa2395e413b2814eb2", "sha256": "9ba91d3e4542ee83bbd68408dabac0ba43eaf8398fe3a6d97eda7cf852384890" }, "downloads": -1, "filename": "PyBIS-1.8.1.tar.gz", "has_sig": false, "md5_digest": "830d0bfe49cfa4aa2395e413b2814eb2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 73011, "upload_time": "2019-03-14T10:02:34", "url": "https://files.pythonhosted.org/packages/37/b8/0f734bd36c7660b599ecab71124000e586fe83257f411c1394bba7f7a20a/PyBIS-1.8.1.tar.gz" } ], "1.8.2": [ { "comment_text": "", "digests": { "md5": "bb504c456919f44f1005488a25ad9b0d", "sha256": "1f87c9da50145d311d695490de9a886d27af912ca8a209666b2a0c3f2828fa39" }, "downloads": -1, "filename": "PyBIS-1.8.2.tar.gz", "has_sig": false, "md5_digest": "bb504c456919f44f1005488a25ad9b0d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 73767, "upload_time": "2019-03-18T23:07:47", "url": "https://files.pythonhosted.org/packages/34/f6/2c3fbaa234788958988c5228101765a18df7fb068be6b2e633be62684c58/PyBIS-1.8.2.tar.gz" } ], "1.8.3": [ { "comment_text": "", "digests": { "md5": "cbceca0fcceec06ebafc9a270d7701e0", "sha256": "b50f1cf9489b8fed8761ada18e9c70689d235a6274291d5dc358b7f9b4030fbb" }, "downloads": -1, "filename": "PyBIS-1.8.3.tar.gz", "has_sig": false, "md5_digest": "cbceca0fcceec06ebafc9a270d7701e0", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 74635, "upload_time": "2019-03-22T11:14:55", "url": "https://files.pythonhosted.org/packages/c0/f6/d2414f61c3dc0d38a4c8ae0b0f53087250577762a0133d4c56273d838188/PyBIS-1.8.3.tar.gz" } ], "1.8.4": [ { "comment_text": "", "digests": { "md5": "ae4bb68d6cb86908cf0e2796eb909365", "sha256": "129dc95a382583bc36feb0c2623f9e68ad061b8a6ce3eafd0db65d7844ba2933" }, "downloads": -1, "filename": "PyBIS-1.8.4.tar.gz", "has_sig": false, "md5_digest": "ae4bb68d6cb86908cf0e2796eb909365", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 74787, "upload_time": "2019-03-23T21:51:37", "url": "https://files.pythonhosted.org/packages/c5/1b/820cb833d0ec4e442f1239fca2682bf33af7bc0c5513c30a822078960a9d/PyBIS-1.8.4.tar.gz" } ], "1.8.5": [ { "comment_text": "", "digests": { "md5": "1a63c1149cec4928c6a1f6260f6a981c", "sha256": "a8972a8f275367ebe44ba54fecfe28e13dfc90d2e67aa4f82cfed8ce0eabfec9" }, "downloads": -1, "filename": "PyBIS-1.8.5.tar.gz", "has_sig": false, "md5_digest": "1a63c1149cec4928c6a1f6260f6a981c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 76486, "upload_time": "2019-06-28T08:31:48", "url": "https://files.pythonhosted.org/packages/fe/a2/b07b2b4d77dd9420077e5277ab909e6bacd7248103eb07d5d68ef9c6b4f6/PyBIS-1.8.5.tar.gz" } ], "1.9.0": [ { "comment_text": "", "digests": { "md5": "ec6649002c9ec606aa10e2283fb3d94a", "sha256": "c87092edc27448300f0cc84c27a35f99290c4bb2db8ed5de2d8d5340466570e2" }, "downloads": -1, "filename": "PyBIS-1.9.0.tar.gz", "has_sig": false, "md5_digest": "ec6649002c9ec606aa10e2283fb3d94a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 80166, "upload_time": "2019-08-27T10:55:05", "url": "https://files.pythonhosted.org/packages/58/a7/ef78be9ab6fdf5c0ff824eb9d42266d53aaa4ecb012cabcc444447da8764/PyBIS-1.9.0.tar.gz" } ], "1.9.0.dev1": [ { "comment_text": "", "digests": { "md5": "0d263457c55532ca8e24e0fec6ca2e90", "sha256": "f9760026d6c5298a97ec9a8a6ee17f9a47f0412943e02efeccd3279d25e87250" }, "downloads": -1, "filename": "PyBIS-1.9.0.dev1.tar.gz", "has_sig": false, "md5_digest": "0d263457c55532ca8e24e0fec6ca2e90", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 80061, "upload_time": "2019-08-23T10:01:19", "url": "https://files.pythonhosted.org/packages/5f/81/61cceb1283b66cdcb60da52d15fba43a1f1c3189afb2385042996b9eb614/PyBIS-1.9.0.dev1.tar.gz" } ], "1.9.1": [ { "comment_text": "", "digests": { "md5": "ab564045d366e78f9d6857f05ac53f4e", "sha256": "28adc61731f88ef851c45bb2dece0b35db332cf51dec7bf03934e7524a9faa06" }, "downloads": -1, "filename": "PyBIS-1.9.1.tar.gz", "has_sig": false, "md5_digest": "ab564045d366e78f9d6857f05ac53f4e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 80168, "upload_time": "2019-09-03T15:17:31", "url": "https://files.pythonhosted.org/packages/11/0d/98f869c22e12a3d36122effba818dfc6178fd7f15ac6d40195f64a904db3/PyBIS-1.9.1.tar.gz" } ], "1.9.2": [ { "comment_text": "", "digests": { "md5": "2cd4e21812f1829c5e04baa18579c694", "sha256": "a837478c540fd51600e0dbc2b3c40040c7ea205dc2e454fc06c5bd24989d9288" }, "downloads": -1, "filename": "PyBIS-1.9.2.tar.gz", "has_sig": false, "md5_digest": "2cd4e21812f1829c5e04baa18579c694", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 80480, "upload_time": "2019-09-12T09:53:23", "url": "https://files.pythonhosted.org/packages/a9/06/73abe989d6cc059b28388aac5ef479b18842bfe3be8c7f3436d998936f76/PyBIS-1.9.2.tar.gz" } ], "1.9.3": [ { "comment_text": "", "digests": { "md5": "bd003c62a5244e0c3d169f8ee3c6abc4", "sha256": "1dbc57c2eadf833a6bb5c301b0c50ea2d037f9a581f05ad26b5244e749cb8673" }, "downloads": -1, "filename": "PyBIS-1.9.3.tar.gz", "has_sig": false, "md5_digest": "bd003c62a5244e0c3d169f8ee3c6abc4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 80496, "upload_time": "2019-09-13T22:38:33", "url": "https://files.pythonhosted.org/packages/23/21/9b9b37234c9d022fdb00d9e771842445fd1069371528f3ca8203c47225da/PyBIS-1.9.3.tar.gz" } ], "1.9.4": [ { "comment_text": "", "digests": { "md5": "c7c738a1db63ee17224c42550e03a7fe", "sha256": "b9a7092f0845915caf8042003a4561388135197e8c643198432df94d291cfdc0" }, "downloads": -1, "filename": "PyBIS-1.9.4.tar.gz", "has_sig": false, "md5_digest": "c7c738a1db63ee17224c42550e03a7fe", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 80531, "upload_time": "2019-09-17T10:15:03", "url": "https://files.pythonhosted.org/packages/6c/4e/b232d58e941b71d32eb04c6dddabeb03b995f272ed64421f38e9d7307bd2/PyBIS-1.9.4.tar.gz" } ], "1.9.5": [ { "comment_text": "", "digests": { "md5": "5b16268a160144dd464f4e682b4706df", "sha256": "bd69155d499ccb744e7b86ff4211cbc78afdce0cb2b4c5ea684d348dbfc36c03" }, "downloads": -1, "filename": "PyBIS-1.9.5.tar.gz", "has_sig": false, "md5_digest": "5b16268a160144dd464f4e682b4706df", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 80572, "upload_time": "2019-09-17T10:58:13", "url": "https://files.pythonhosted.org/packages/47/e9/04ebe3a00ff03f206a369258116ea868cfd0bf6b70b2bd9756ce428aeb58/PyBIS-1.9.5.tar.gz" } ], "1.9.6": [ { "comment_text": "", "digests": { "md5": "2fcf637ca630ec6ae09e992ee6019f6a", "sha256": "2f017845f1c292e7ac3ba8948d70992841f03adc13fc4a27e4c44607f555cee0" }, "downloads": -1, "filename": "PyBIS-1.9.6.tar.gz", "has_sig": false, "md5_digest": "2fcf637ca630ec6ae09e992ee6019f6a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 80702, "upload_time": "2019-10-01T14:14:53", "url": "https://files.pythonhosted.org/packages/29/59/45ddbdecd12efdb60011f8fbb0d867db7ca402f8978cb29e221ebfcd9156/PyBIS-1.9.6.tar.gz" } ], "1.9.6.dev1": [ { "comment_text": "", "digests": { "md5": "484d843963db783cbdf34a6b29511d1f", "sha256": "3d24b49007c0f63ca9503802f8b8fdefdd47ca80dcf34a005ae80453e58f3705" }, "downloads": -1, "filename": "PyBIS-1.9.6.dev1.tar.gz", "has_sig": false, "md5_digest": "484d843963db783cbdf34a6b29511d1f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 80703, "upload_time": "2019-10-01T12:37:04", "url": "https://files.pythonhosted.org/packages/74/c1/2103eb06729dae4842da7036ccbcd4661246ea1a0084be72d99b46e1fea8/PyBIS-1.9.6.dev1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "2fcf637ca630ec6ae09e992ee6019f6a", "sha256": "2f017845f1c292e7ac3ba8948d70992841f03adc13fc4a27e4c44607f555cee0" }, "downloads": -1, "filename": "PyBIS-1.9.6.tar.gz", "has_sig": false, "md5_digest": "2fcf637ca630ec6ae09e992ee6019f6a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.3", "size": 80702, "upload_time": "2019-10-01T14:14:53", "url": "https://files.pythonhosted.org/packages/29/59/45ddbdecd12efdb60011f8fbb0d867db7ca402f8978cb29e221ebfcd9156/PyBIS-1.9.6.tar.gz" } ] }