{ "info": { "author": "USGS ScienceBase Development Team", "author_email": "sciencebase@usgs.gov", "bugtrack_url": null, "classifiers": [ "License :: Public Domain", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11" ], "description": "Python ScienceBase Utilities\n============================\nThis Python module provides some basic services for interacting with ScienceBase. It requires the \"requests\"\nmodule to be installed, which can be found at\n[http://docs.python-requests.org/en/latest/](http://docs.python-requests.org/en/latest/).\nIf you get security errors also install requests[security]\n\nAs of version 2.0.0, Python 2.x is no longer supported.\n\nQuick Start\n-----------\nsciencebasepy can be installed with pip:\n\n `pip install sciencebasepy`\n\nOtherwise, download the contents of this repository, and install the sciencebasepy libraries into \nyour python installation by running `python setup.py install`. Example usage is contained \nin `demo.py`.\n\nThere are several iPython notebooks in this repository with example code. For more in-depth information and \nexamples on searching, see \n[Searching ScienceBase with ScienceBasePy.ipynb](https://github.com/usgs/sciencebasepy/blob/master/Searching%20ScienceBase%20with%20ScienceBasePy.ipynb).\nFor batch processing, see \n[Batch Processing.ipynb](https://github.com/usgs/sciencebasepy/blob/master/Batch%20Processing.ipynb).\n\nModule Contents\n---------------\nThe SbSession class provides the following methods:\n\n### Login\n* `login(username, password)`\nLog into ScienceBase using the username and password. This causes a cookie to be added to the session\nto be used by subsequent calls.\n\n* `loginc(username)`\nLog into ScienceBase using the given username, and prompt for the password. The password is not\nechoed to the console. Provided as a convenience for interactive scripts.\n\n* `is_logged_in()`\nReturn whether the SbSession is logged in and active in ScienceBase\n\n* `get_session_info()`\nReturn ScienceBase Josso session info\n\n* `ping()`\nPing ScienceBase. A very low-cost operation to determine whether ScienceBase is available.\n\n* `logout()`\nLog out of ScienceBase\n\n### Create\nNote: When uploading associated files, such as the various files making up a shapefile, or a \nraster and its associated SLD, be sure to upload them with a single call to \n`upload_files_and_create_item`. Otherwise, ScienceBase will not create the appropriate facets, \nand services will not be created.\n\n* `create_item(item_dict)`\nCreate a new ScienceBase item. Documentation on the sbJSON format can be found at\nhttps://my.usgs.gov/confluence/display/sciencebase/ScienceBase+Item+Core+Model\n\n* `create_items(item_dict_list)`\nCreate multiple new Items in ScienceBase. item_dict_list: list of item_dict objects representing the ScienceBase Catalog items to create.\n\n* `create_hidden_property(item_id, item_dict)`\nCreate a new Hidden Property for a Sciencebase item : POST /catalog/item//hiddenProperties\nDocumentation of the json can be found at https://code.chs.usgs.gov/sciencebase/dev-docs/wikis/APIs/Catalog/Item-Hidden-Properties\n\n* `upload_file_and_create_item(parent_id, filename)`\nUpload a file and create a ScienceBase item. Add the parameter `scrape_file=False` to bypass ScienceBase metadata\nprocessing.\n\n* `upload_files_and_create_item(parent_id, [filename,...])`\nUpload a set of files and create a ScienceBase item. Add the parameter `scrape_file=False` to bypass ScienceBase\nmetadata processing.\n\n### Read\n* `get_item(id, params)`\nGet the JSON for the ScienceBase item with the given ID. \nparams argument is optional and allows you to specify query params, so params={'fields':'title,ancestors'} is for ?fields=title,ancestors \nsimilar to find_items.\n\n* `get_my_items_id()`\nGet the ID of the logged in user's \"My Items\"\n\n* `get_hidden_properties(item_id)`\nList All Hidden Properties for a given Item: GET /catalog/item//hiddenProperties\n\n* `get_hidden_property(item_id, hiddenpropertyid)`\nGet a specific Hidden Property for a given Item : GET /catalog/item//hiddenProperties/\n\n* `get_item_ids_by_hidden_property(hidden_property)`\nGet the ScienceBase IDs of Items associated with the given hidden property. Hidden property JSON\n(for the hidden_property parameter) contains two fields, \"type\" and \"value\" both of which are\noptional.\n\n* `get_child_ids(parent_id)`\nGet the IDs of all immediate children of the ScienceBase item with the given ID (does not follow shortcuts).\n\n* `get_ancestor_ids(parent_id)`\nGet IDs of all descendants of given item excluding those which are linked in (short-cutted). \n(That is, this finds items by ancestorsExcludingLinks= and builds a list of their IDs).\n\n* `get(url)`\nGet the text response of the given URL.\n\n* `get_json(url)`\nGet the JSON response of the given URL.\n\n* `get_item_files_zip(item_dict, destination)`\nGet a zip of all files attached to the ScienceBase item and place it in the destination\nfolder. Destination defaults to the current directory. If specified, the destination folder\nmust exist. This creates the zip file server-side and then streams it to the client.\n\n* `get_item_files(item_dict, destination)`\nDownload all files attached to the ScienceBase item and place them in the destination folder.\nDestination defaults to the current directory. If specified, the destination folder must\nexist. The files are streamed individually.\n\n* `get_item_file_info(item_dict)`\nGet information about all files attached to a ScienceBase item. Returns a list of\ndictionaries containing url, name and size of each file.\n\n* `download_file(url, local_filename, destination)`\nDownload an individual file. Destination defaults to the current directory. If specified,\nthe destination folder must exist.\n\n* `generate_S3_download_links(itemid, filenames)`\nGenerates a list of tokenized S3 download links for files in the ScienceBase S3 standard bucket or public bucket (does not work for on-premise files).\n\n* `download_cloud_files(filenames, download_links, destination)`\nDownloads a list of ScienceBase S3 files using tokenized S3 download links. Destination defaults to the current directory. If specified, the destination folder must exist.\n\n### Update\nNote: When uploading associated files, such as the various files making up a shapefile, or a \nraster and its associated SLD, be sure to upload them with a single call to one of the `upload_files*` methods.\nOtherwise, ScienceBase will not create the appropriate facets, and services will not be created.\n\n* `update_item(item_dict)`\nUpdates an existing ScienceBase item.\n\n* `update_items(item_dict_list)`\nUpdate multiple Items in ScienceBase. item_dict_list: list of item_dict objects representing the ScienceBase Catalog items to update.\n\n* `update_hidden_property(item_id, hiddenpropertyid, item_dict)`\nUpdates an existing ScienceBase Item's Hidden Property.\n\n* `upload_file_to_item(item_dict, filename)`\nUpload a file to an existing ScienceBase item. Add the parameter `scrape_file=False` to bypass ScienceBase \nmetadata processing.\n\n* `upload_cloud_file_to_item(item_id, filename)`\nUpload a file to cloud storage on an existing Item in ScienceBase. NOTE: While the Item JSON is returned by this method, it\ndoes take some time to process files uploaded to cloud storage, so the return JSON may not include the new file.\nAdditionally, automatic processing of shapefiles, TIFFs, XML metadata etc. does not currently occur on cloud files \nat this time. In order to utilize those features, use `upload_file_to_item()`.\n\n* `upload_files_and_update_item(item_dict, [filename,...])`\nUpload a set of files and update an existing ScienceBase item. Add the parameter `scrape_file=False` to bypass\nScienceBase metadata processing.\n\n* `upload_files_and_upsert_item(item_dict, [filename,...])`\nUpload multiple files and create or update a ScienceBase item. Add the parameter `scrape_file=False` to bypass\nScienceBase metadata processing.\n\n* `replace_file(filename, item_dict)`\nReplace a file on a ScienceBase Item. This method will replace all files named the same as the new file,\nwhether they are in the files list or in a facet.\n\n* `upload_file(filename, mimetype)`\n(Advanced usage) Upload a file to ScienceBase. The file will be staged in a temporary area. In order\nto attach it to an Item, the pathOnDisk must be added to an Item files entry, or one of a facet's file entries.\n\n* `add_extent(item_id, feature_geojson)`\nAdd features to the item footprint from Feature or FeatureCollection geojson.\n\n### Item Permissions\n* `get_permissions(item_id)`\nGet permission JSON for the item identified by item_id.\n\n* `set_permissions(item_id, acls)`\nSet permissions for the item identified by item_id. WARNING: Advanced use only. ACL JSON must be created properly. \nUse one of the ACL helper methods if possible (below).\n\n* `add_acl_user_read(user_name, item_id)`\nAdd a READ ACL for the given user on the specified item.\n\n* `remove_acl_user_read(user_name, item_id)`\nRemove the READ ACL for the given user on the specified item.\n\n* `add_acl_user_write(user_name, item_id)`\nAdd a WRITE ACL for the given user on the specified item.\n\n* `remove_acl_user_write(user_name, item_id)`\nRemove a WRITE ACL for the given user on the specified item.\n\n* `add_acl_role_read(role_name, item_id)`\nAdd a READ ACL for the given role on the specified item.\n\n* `remove_acl_role_read(role_name, item_id)`\nRemove a READ ACL for the given role on the specified item.\n\n* `add_acl_role_write(role_name, item_id)`\nAdd a WRITE ACL for the given role on the specified item.\n\n* `remove_acl_role_write(role_name, item_id)`\nRemove a WRITE ACL for the given role on the specified item.\n\n* `set_acls_inherit(read_write, item_id)`\nSet the item to inherit ACLs from its parent item.\n\n* `set_acls_inherit_read(item_id)`\nSet the item to inherit READ ACLs from its parent item.\n\n* `set_acls_inherit_write(item_id)`\nSet the item to inherit WRITE ACLs from its parent item.\n\n* `publish_item(item_id)`\nPublish the item, adding PUBLIC read permisisons. User must be USGS or in the publisher role.\n\n* `unpublish_item(item_id)`\nUnpublish the item, removing PUBLIC read permisisons.\n\n* `has_public_read(acls)`\nReturn whether the given ACLs include public READ permissions.\n\n* `print_acls(acls)`\nPretty print the given ACL JSON.\n\n### Delete\n* `delete_item(item_dict)`\nDelete an existing ScienceBase item.\n\n* `delete_items(item_ids)`\nDelete multiple ScienceBase Items. This is much more efficient than using delete_item() for multiple deletions, as it\nperforms the action server-side in one call to ScienceBase.\n\n* `delete_file(sb_filename, item_dict)`\nDelete a file on a ScienceBase Item. This method will delete all files with \nthe provided name, whether they are in the files list or on a facet.\n\n* `delete_hidden_property(item_id, hiddenpropertyid)`\nDelete an existing Item's specific Hidden Property item.\n\n* `undelete_item(item_id)`\nUndelete a ScienceBase item.\n\n### Move\n* `move_item(item_id, parent_id)`\nMove the ScienceBase Item with the given item_id under the ScienceBase Item with the given parent_id.\n\n* `move_items(item_ids, parent_id)`\nMove all of the ScienceBase Items with the given item_ids under the ScienceBase Item with the given parent_id.\n\n### Search\nFor more in-depth search examples, see the `Searching ScienceBase with sciencebasepy.ipynb` notebook in this repo.\n\n* `find_items_by_any_text(text)`\nFind items containing the given text somewhere in the item.\n\n* `find_items_by_title(text)`\nFind items containing the given text in the title of the item.\n\n* `find_items(params)`\nFind items meeting the criteria in the specified search parameters. These are the same parameters that you pass\nto ScienceBase in an advanced search.\n\n* `find_hidden_property(hidden_property)`\nFind ScienceBase Items by hidden property value. hidden_property: ScienceBase Item Hidden Property JSON: \n`{\"type\": ..., \"value\": ...}`. Returns Item Hidden Property JSON containing the first page of matching \nScienceBase Items. Use the next() method for subsequent pages.\n\n* `find_items_by_filter_and_hidden_property(params, hidden_property)`\nFind items meeting the criteria in the specified search parameters and hidden property JSON. Hidden property JSON contains\ntwo fields, \"type\" and \"value\" both of which are optional. **Warning**: Because of the way hidden property results must be \njoined to ScienceBase Catalog search results, this method returns all matching items. Queries returning too many items may \nbe blocked by ScienceBase.\n\n* `next(results)`\nGet the next page of results, where *results* is the current search results.\n\n* `previous(results)`\nGet the previous page of results, where *results* is the current search results.\n\n### Shortcuts\n* `get_shortcut_ids(item_id)`\nGet the IDs of all ScienceBase Items shortcutted from a given item.\n\n* `create_shortcut(item_id, parent_id)`\nCreate a shortcut on the ScienceBase Item with the id parent_id to another Item with id item_id.\n\n* `remove_shortcut(item_id, parent_id)`\nRemove a shortcut from the ScienceBase Item with the id parent_id to another Item with id item_id.\n\n### Relationships (ItemLinks)\n* `get_item_link_types()`\nGet ItemLink type JSON list from the vocabulary server.\n\n* `get_item_link_type_by_name(link_type_name)`\nGet ItemLink type JSON object from the vocabulary server for the given type.\n\n* `get_item_links(item_id)`\nGet ItemLink (relationship) JSON describing relationships involving the Item with the given ID.\n\n* `create_item_link(from_item_id, to_item_id, link_type_id, reverse=False)`\nCreate an ItemLink between the two items of the specified type.\n\n* `create_related_item_link(from_item_id, to_item_id)`\nCreate a 'related' ItemLink between the two items.\n\n### Helpers\n* `get_directory_contact(party_id)`\nGet the Directory Contact JSON for the contact with the given party ID.\n\n* `get_sbcontact_from_directory_contact(directory_contact, sbcontact_type)`\nConvert the given Directory Contact JSON into valid ScienceBase Item contact JSON.\n\nExample Usage\n-------------\n\n````python\n import sciencebasepy\n import os\n\n sb = sciencebasepy.SbSession()\n\n # Get a public item. No need to log in.\n item_json = sb.get_item('505bc673e4b08c986b32bf81')\n print \"Public Item: \" + str(item_json)\n\n # Get a private item. Need to log in first.\n username = raw_input(\"Username: \")\n sb.loginc(str(username))\n # Need to wait a bit after the login or errors can occur\n time.sleep(5)\n item_json = sb.get_item(sb.get_my_items_id())\n print \"My Items: \" + str(item_json)\n\n # Create a new item. The minimum required is a title for the new item, and the parent ID\n new_item = {'title': 'This is a new test item',\n 'parentId': sb.get_my_items_id(),\n 'provenance': {'annotation': 'Python ScienceBase REST test script'}}\n new_item = sb.create_item(new_item)\n print \"NEW ITEM: \" + str(new_item)\n\n # Upload a file to the newly created item\n new_item = sb.upload_file_to_item(new_item, 'sciencebasepy.py')\n print \"FILE UPDATE: \" + str(new_item)\n\n # List file info from the newly created item\n ret = sb.get_item_file_info(new_item)\n for fileinfo in ret:\n print \"File \" + fileinfo[\"name\"] + \", \" + str(fileinfo[\"size\"]) + \"bytes, download URL \" + fileinfo[\"url\"]\n\n # Download zip of files from the newly created item\n ret = sb.get_item_files_zip(new_item)\n print \"Downloaded zip file \" + str(ret)\n\n # Download all files attached to the item as individual files, and place them in the\n # tmp directory under the current directory.\n path = \"./tmp\"\n if not os.path.exists(path):\n os.makedirs(path)\n ret = sb.get_item_files(new_item, path)\n print \"Downloaded files \" + str(ret)\n\n # Delete the newly created item\n ret = sb.delete_item(new_item)\n print \"DELETE: \" + str(ret)\n\n # Upload multiple files to create a new item\n ret = sb.upload_files_and_create_item(sb.get_my_items_id(), ['sciencebasepy.py','readme.md'])\n print str(ret)\n\n # Search\n items = sb.find_items_by_any_text(username)\n while items and 'items' in items:\n for item in items['items']:\n print item['title']\n items = sb.next(items)\n\n # Logout\n sb.logout()\n````\n\n# Developer Notes\n\nTo publish to pypi, follow the instructions [here](https://packaging.python.org/tutorials/packaging-projects/)\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/usgs/sciencebasepy", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "sciencebasepy", "package_url": "https://pypi.org/project/sciencebasepy/", "platform": null, "project_url": "https://pypi.org/project/sciencebasepy/", "project_urls": { "Homepage": "https://github.com/usgs/sciencebasepy" }, "release_url": "https://pypi.org/project/sciencebasepy/2.0.2/", "requires_dist": [ "requests", "progress" ], "requires_python": "", "summary": "Python ScienceBase Utilities", "version": "2.0.2", "yanked": false, "yanked_reason": null }, "last_serial": 13693848, "releases": { "1.6.1": [ { "comment_text": "", "digests": { "md5": "b536dc9680f8b8f07c3b3ba543173986", "sha256": "f5c38b914b09163fb9bd9335466634cba7b54b44323bfbfc4b780811318ba53d" }, "downloads": -1, "filename": "sciencebasepy-1.6.1-py3-none-any.whl", "has_sig": false, "md5_digest": "b536dc9680f8b8f07c3b3ba543173986", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 27230, "upload_time": "2018-08-16T16:19:23", "upload_time_iso_8601": "2018-08-16T16:19:23.966356Z", "url": "https://files.pythonhosted.org/packages/7d/94/8819e7e6acb9882a39637a49ac86dc9e8c46874790d1be12cda020527961/sciencebasepy-1.6.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "1a620dad03cc9466844963f92f4f8e8e", "sha256": "0da895e96e2ab9b2fbd0a932c5741e8f549868ca3ad61e0d2249ae7f002989e0" }, "downloads": -1, "filename": "sciencebasepy-1.6.1.tar.gz", "has_sig": false, "md5_digest": "1a620dad03cc9466844963f92f4f8e8e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18432, "upload_time": "2018-08-16T16:19:25", "upload_time_iso_8601": "2018-08-16T16:19:25.503027Z", "url": "https://files.pythonhosted.org/packages/5b/5e/d3e698c2d8cb8da25641d1b8fa3cf18fce9a337c2893fd68fdf8d590d577/sciencebasepy-1.6.1.tar.gz", "yanked": false, "yanked_reason": null } ], "1.6.10": [ { "comment_text": "", "digests": { "md5": "8199c5a79b102bfcace0028cf901112c", "sha256": "8fa724c6f1336d2c0e830ce71efcdfbf49e954376e0ec980fb1d91578357fcc3" }, "downloads": -1, "filename": "sciencebasepy-1.6.10-py3-none-any.whl", "has_sig": false, "md5_digest": "8199c5a79b102bfcace0028cf901112c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16984, "upload_time": "2021-09-15T14:32:31", "upload_time_iso_8601": "2021-09-15T14:32:31.847791Z", "url": "https://files.pythonhosted.org/packages/a6/15/cc7bf5c459283936f21aa8ca227cf41b7ef2a260249b528f1890dfaeecb6/sciencebasepy-1.6.10-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "5dabd04af306f3a86ad67a8d43e93c4a", "sha256": "722f8634448ed8ddd2ce6601898eb099e4030b91bde427fcdef9bba95f458a64" }, "downloads": -1, "filename": "sciencebasepy-1.6.10.tar.gz", "has_sig": false, "md5_digest": "5dabd04af306f3a86ad67a8d43e93c4a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19289, "upload_time": "2021-09-15T14:32:34", "upload_time_iso_8601": "2021-09-15T14:32:34.626789Z", "url": "https://files.pythonhosted.org/packages/94/54/f018ff34d7694e46bd7ba9b4c86e636494c177a14cd30789f511a5044780/sciencebasepy-1.6.10.tar.gz", "yanked": false, "yanked_reason": null } ], "1.6.2": [ { "comment_text": "", "digests": { "md5": "2274cd3bfbc4de3587e4ed5a0beef4d8", "sha256": "12238347f6496873f50a4760ea0dfeeba96a235b7a5ec8ff884bb0c08ef4e0f7" }, "downloads": -1, "filename": "sciencebasepy-1.6.2-py3-none-any.whl", "has_sig": false, "md5_digest": "2274cd3bfbc4de3587e4ed5a0beef4d8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15033, "upload_time": "2018-08-29T21:17:09", "upload_time_iso_8601": "2018-08-29T21:17:09.133469Z", "url": "https://files.pythonhosted.org/packages/6d/d5/300cbaec486e4db4ce9a5fe797a5002c31cf2d90730e2500e1756cf6c91a/sciencebasepy-1.6.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "7a3a98aac4eb89d890ec61edad6f7861", "sha256": "a343321151a4131cb4137e6682285e0506a9d00b3cae68c34bfc7c523b49188c" }, "downloads": -1, "filename": "sciencebasepy-1.6.2.tar.gz", "has_sig": false, "md5_digest": "7a3a98aac4eb89d890ec61edad6f7861", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18452, "upload_time": "2018-08-29T21:17:10", "upload_time_iso_8601": "2018-08-29T21:17:10.714647Z", "url": "https://files.pythonhosted.org/packages/7c/dc/8a0726176f222525b24cabaf0f8780c99e8c8f767e8e98682c12cda9c845/sciencebasepy-1.6.2.tar.gz", "yanked": false, "yanked_reason": null } ], "1.6.3": [ { "comment_text": "", "digests": { "md5": "93bc28b9def647017181447bddd948bf", "sha256": "635f6dcfc841f1a3ebbe64b73a32da96d26c887dd9db050e7a0ab1b25c1f9f54" }, "downloads": -1, "filename": "sciencebasepy-1.6.3-py3-none-any.whl", "has_sig": false, "md5_digest": "93bc28b9def647017181447bddd948bf", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15595, "upload_time": "2019-01-31T21:44:07", "upload_time_iso_8601": "2019-01-31T21:44:07.709271Z", "url": "https://files.pythonhosted.org/packages/11/dd/d4e7d70a703b9058b4de8a36e7eb6658e2b88bef74972e81a9f2ee0bac0f/sciencebasepy-1.6.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "f574f309764f247cd120e8339e01634a", "sha256": "99cb70d670e62b9ac37656e9fc981741fcd34b2bcaf97c05b0beb880f116e86b" }, "downloads": -1, "filename": "sciencebasepy-1.6.3.tar.gz", "has_sig": false, "md5_digest": "f574f309764f247cd120e8339e01634a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18702, "upload_time": "2019-01-31T21:44:09", "upload_time_iso_8601": "2019-01-31T21:44:09.089858Z", "url": "https://files.pythonhosted.org/packages/5e/60/7a457dcd5102d4fb4568deaed724eaddb75231e27ba2ab9fcde5ab0d4394/sciencebasepy-1.6.3.tar.gz", "yanked": false, "yanked_reason": null } ], "1.6.4": [ { "comment_text": "", "digests": { "md5": "7cca3119b284d18aa033c02574308b50", "sha256": "e03f0e3db3869a4edfdc5cb7e04b24fae270e47a1f58b55c484612a6eb09088e" }, "downloads": -1, "filename": "sciencebasepy-1.6.4-py3-none-any.whl", "has_sig": false, "md5_digest": "7cca3119b284d18aa033c02574308b50", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16651, "upload_time": "2019-05-09T17:03:01", "upload_time_iso_8601": "2019-05-09T17:03:01.460027Z", "url": "https://files.pythonhosted.org/packages/8d/bb/8098ef0bb3ac7e0337eea3dd2d3c0e3864d070448d2e75d06d0c445b48c6/sciencebasepy-1.6.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "e19efcce8208fcb49ecaa1e7d322e1f3", "sha256": "c58292907d52585e45a4be0b9da7ce10de228487d1ae7f8dea873cfad3a6ae50" }, "downloads": -1, "filename": "sciencebasepy-1.6.4.tar.gz", "has_sig": false, "md5_digest": "e19efcce8208fcb49ecaa1e7d322e1f3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20040, "upload_time": "2019-05-09T17:03:02", "upload_time_iso_8601": "2019-05-09T17:03:02.992893Z", "url": "https://files.pythonhosted.org/packages/cc/c1/67dfa3b1406add35d60393acf460d7551b2f3915322064f7fec8b7385705/sciencebasepy-1.6.4.tar.gz", "yanked": false, "yanked_reason": null } ], "1.6.5": [ { "comment_text": "", "digests": { "md5": "95431f1e2eee782037d72ad670141b7b", "sha256": "760fc3f80c673d8888f1f68c5a0dd664216f3fc975adc996a36520f37a41c094" }, "downloads": -1, "filename": "sciencebasepy-1.6.5-py3-none-any.whl", "has_sig": false, "md5_digest": "95431f1e2eee782037d72ad670141b7b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16681, "upload_time": "2019-10-24T21:37:44", "upload_time_iso_8601": "2019-10-24T21:37:44.825733Z", "url": "https://files.pythonhosted.org/packages/87/0a/7ca25ce2d550a25d125c2242e7d8c33019ae283e331678e8b4a89a5fac12/sciencebasepy-1.6.5-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "762312e15ca865f609c4bcda5d1c7779", "sha256": "45900f330d720ac1e72cfa713ab6afc79d19326cbbf9437479c8f11320f0ee9c" }, "downloads": -1, "filename": "sciencebasepy-1.6.5.tar.gz", "has_sig": false, "md5_digest": "762312e15ca865f609c4bcda5d1c7779", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19254, "upload_time": "2019-10-24T21:37:46", "upload_time_iso_8601": "2019-10-24T21:37:46.770466Z", "url": "https://files.pythonhosted.org/packages/e0/54/03cbe1eb5691d6cb4f9a4281e3df5f6427c2b45fd97fc855e392ababdc2a/sciencebasepy-1.6.5.tar.gz", "yanked": false, "yanked_reason": null } ], "1.6.6": [ { "comment_text": "", "digests": { "md5": "07f0d88faf563edc6dba26f48aa6f177", "sha256": "1f5534d96fde8bf05cebc07887ef2c088b5aa9c3cdef57c8b34da7d3bc1af2e6" }, "downloads": -1, "filename": "sciencebasepy-1.6.6-py3-none-any.whl", "has_sig": false, "md5_digest": "07f0d88faf563edc6dba26f48aa6f177", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16695, "upload_time": "2019-12-19T19:22:59", "upload_time_iso_8601": "2019-12-19T19:22:59.270335Z", "url": "https://files.pythonhosted.org/packages/45/21/e14d99150cdf34bb5eb9505344430581e481293c5864e478990c3184f5e8/sciencebasepy-1.6.6-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "8ddef2f7cea58bf2c75d43212c618bfc", "sha256": "7a81e91b186519afda002b5d5c17e39d9d4fdccd8e97cb529de4d23b29d513b8" }, "downloads": -1, "filename": "sciencebasepy-1.6.6.tar.gz", "has_sig": false, "md5_digest": "8ddef2f7cea58bf2c75d43212c618bfc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18961, "upload_time": "2019-12-19T19:23:01", "upload_time_iso_8601": "2019-12-19T19:23:01.181244Z", "url": "https://files.pythonhosted.org/packages/3e/8b/961431c5bb53270f3743624a1f3c956952a0553ca5c6e8c6530693913a5c/sciencebasepy-1.6.6.tar.gz", "yanked": false, "yanked_reason": null } ], "1.6.7": [ { "comment_text": "", "digests": { "md5": "8f04cccb6219f973cead44fde3ad01d8", "sha256": "02d7a31157fc7bbaf4c5673918d679348980cafc29084d972920020b73dbe23e" }, "downloads": -1, "filename": "sciencebasepy-1.6.7-py3-none-any.whl", "has_sig": false, "md5_digest": "8f04cccb6219f973cead44fde3ad01d8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16910, "upload_time": "2020-01-07T20:27:39", "upload_time_iso_8601": "2020-01-07T20:27:39.708178Z", "url": "https://files.pythonhosted.org/packages/1c/f8/fa93e1a03d6436794fad21a05345494672a92c085d0d9c466817ac7a220f/sciencebasepy-1.6.7-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "88de1c76c69d197a59a8653e5f3860fc", "sha256": "7bc1dc2269e54e697830eeb3fc9313647b93f2e1dbcfe4bf1f0a7bbb702a4c45" }, "downloads": -1, "filename": "sciencebasepy-1.6.7.tar.gz", "has_sig": false, "md5_digest": "88de1c76c69d197a59a8653e5f3860fc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19167, "upload_time": "2020-01-07T20:27:41", "upload_time_iso_8601": "2020-01-07T20:27:41.689807Z", "url": "https://files.pythonhosted.org/packages/3f/90/94f7897502796990be1b22f346dc0abe76675dcccef56b666fdc9b81a2ae/sciencebasepy-1.6.7.tar.gz", "yanked": false, "yanked_reason": null } ], "1.6.8": [ { "comment_text": "", "digests": { "md5": "b149264fafd084ff7950a6a599b41eae", "sha256": "d2c03a7e5ecd41dce5c04b98d7e64f74fd33a2c05d3cd8c845fdf90d3b56782d" }, "downloads": -1, "filename": "sciencebasepy-1.6.8-py3-none-any.whl", "has_sig": false, "md5_digest": "b149264fafd084ff7950a6a599b41eae", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16899, "upload_time": "2020-01-08T16:42:58", "upload_time_iso_8601": "2020-01-08T16:42:58.166984Z", "url": "https://files.pythonhosted.org/packages/9b/c5/6386ac5171f81e727d0b383fd62ec7955bd45aab55cf00ed577a30c01e42/sciencebasepy-1.6.8-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "b46af8a21400e2019a6e7710da339aef", "sha256": "13374930004d42cfac116c6e2ba4cf49699ccc435bc349a52ae18fdebf183b78" }, "downloads": -1, "filename": "sciencebasepy-1.6.8.tar.gz", "has_sig": false, "md5_digest": "b46af8a21400e2019a6e7710da339aef", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19155, "upload_time": "2020-01-08T16:43:00", "upload_time_iso_8601": "2020-01-08T16:43:00.174439Z", "url": "https://files.pythonhosted.org/packages/ed/2b/71651ddd06246e76339373417079011b915edb9b4427fa829f2e3be27c49/sciencebasepy-1.6.8.tar.gz", "yanked": false, "yanked_reason": null } ], "1.6.9": [ { "comment_text": "", "digests": { "md5": "3f82991615f38ba0fbf51e67e03e745b", "sha256": "54986ee5a255b6ad0f1f1f5156f84e98ad67a49c6cd3bc9f462c87fc4b97750f" }, "downloads": -1, "filename": "sciencebasepy-1.6.9-py3-none-any.whl", "has_sig": false, "md5_digest": "3f82991615f38ba0fbf51e67e03e745b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16924, "upload_time": "2020-02-26T18:54:50", "upload_time_iso_8601": "2020-02-26T18:54:50.095894Z", "url": "https://files.pythonhosted.org/packages/1a/8b/3aead3f9d3fa3ea29fdb20b563772f82088c96e4522d9b1980871c862fde/sciencebasepy-1.6.9-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "9dba40eb8225bdebb99e3d44e982fba6", "sha256": "9f0f0c43d1211d885220ff932821763f87712dd4cc79754272b17f5e413ecad5" }, "downloads": -1, "filename": "sciencebasepy-1.6.9.tar.gz", "has_sig": false, "md5_digest": "9dba40eb8225bdebb99e3d44e982fba6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19178, "upload_time": "2020-02-26T18:54:51", "upload_time_iso_8601": "2020-02-26T18:54:51.738055Z", "url": "https://files.pythonhosted.org/packages/2d/ca/63ed4f8d559a04f41cf76d9816054937569f1be21b488bb8bb2ab8abc9b1/sciencebasepy-1.6.9.tar.gz", "yanked": false, "yanked_reason": null } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "32c534e1c8d6db25bf17f63b9b21035c", "sha256": "79f108efcb9ae856ef511336511b9a0a5ce2f69af51576a0dee2d588046e2cc4" }, "downloads": -1, "filename": "sciencebasepy-2.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "32c534e1c8d6db25bf17f63b9b21035c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 25705, "upload_time": "2022-03-22T20:17:50", "upload_time_iso_8601": "2022-03-22T20:17:50.234910Z", "url": "https://files.pythonhosted.org/packages/32/34/a3fa4993f1fde6daf1e9ab0f33f362c0033fdf58729c7e859f0e702b9909/sciencebasepy-2.0.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "f4da59753dcdc342b7ce6111c9f5110e", "sha256": "8ae708a325d8fb381a290a4035123ca6bd1ded883c97215af52bc7d73fa0060f" }, "downloads": -1, "filename": "sciencebasepy-2.0.0.tar.gz", "has_sig": false, "md5_digest": "f4da59753dcdc342b7ce6111c9f5110e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28675, "upload_time": "2022-03-22T20:17:52", "upload_time_iso_8601": "2022-03-22T20:17:52.048637Z", "url": "https://files.pythonhosted.org/packages/2c/78/d4bc535eae405f5564be3ef2c54c910ba0ca3236fca871cafc522278184a/sciencebasepy-2.0.0.tar.gz", "yanked": false, "yanked_reason": null } ], "2.0.1": [ { "comment_text": "", "digests": { "md5": "1feea932174687d0b0f439801ddd0c2d", "sha256": "989f82e24f5d516b81949337d213150aa51e9874bd4ccedf4c885eb33cf36ef7" }, "downloads": -1, "filename": "sciencebasepy-2.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "1feea932174687d0b0f439801ddd0c2d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 25706, "upload_time": "2022-03-24T19:41:17", "upload_time_iso_8601": "2022-03-24T19:41:17.817959Z", "url": "https://files.pythonhosted.org/packages/19/cc/787982388c2180cb8ebf926ee3d8923f351c59c05575654b1e6dd97749ff/sciencebasepy-2.0.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "cb0b09ce59b0e132ef2ae6969f50653a", "sha256": "99dd95734ffec06b42d07a967db09c284f683bf099c2de5e1be23af4f62826f8" }, "downloads": -1, "filename": "sciencebasepy-2.0.1.tar.gz", "has_sig": false, "md5_digest": "cb0b09ce59b0e132ef2ae6969f50653a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28707, "upload_time": "2022-03-24T19:41:19", "upload_time_iso_8601": "2022-03-24T19:41:19.696602Z", "url": "https://files.pythonhosted.org/packages/06/55/d95ce5060eb31cc2219ce8d1d2af2074c08a8b2f9e2a1005d9010b9ffa54/sciencebasepy-2.0.1.tar.gz", "yanked": false, "yanked_reason": null } ], "2.0.2": [ { "comment_text": "", "digests": { "md5": "667d04316ed5d860e7265625da6aa5bd", "sha256": "e0ac0b882996c7c8d3651f92eef187725c0e2aa9cdefe5448e3c1c9db0654202" }, "downloads": -1, "filename": "sciencebasepy-2.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "667d04316ed5d860e7265625da6aa5bd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 26632, "upload_time": "2022-05-02T23:47:48", "upload_time_iso_8601": "2022-05-02T23:47:48.647272Z", "url": "https://files.pythonhosted.org/packages/58/b3/1c31a7f2b43b1b64065a45f7a27e26d243aea6026de3ed7b5d3be45ba21c/sciencebasepy-2.0.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "0b5bef0c6888a53b23bd13f52e2d2654", "sha256": "f4f26738c92eedddf6aa66085cb2202d1325b60657e33d058ef7c86ba9c63dcb" }, "downloads": -1, "filename": "sciencebasepy-2.0.2.tar.gz", "has_sig": false, "md5_digest": "0b5bef0c6888a53b23bd13f52e2d2654", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29523, "upload_time": "2022-05-02T23:47:50", "upload_time_iso_8601": "2022-05-02T23:47:50.838271Z", "url": "https://files.pythonhosted.org/packages/39/e5/83b242a468e542e599df620bd698594a7c3b154df8107f667b08565e0502/sciencebasepy-2.0.2.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "667d04316ed5d860e7265625da6aa5bd", "sha256": "e0ac0b882996c7c8d3651f92eef187725c0e2aa9cdefe5448e3c1c9db0654202" }, "downloads": -1, "filename": "sciencebasepy-2.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "667d04316ed5d860e7265625da6aa5bd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 26632, "upload_time": "2022-05-02T23:47:48", "upload_time_iso_8601": "2022-05-02T23:47:48.647272Z", "url": "https://files.pythonhosted.org/packages/58/b3/1c31a7f2b43b1b64065a45f7a27e26d243aea6026de3ed7b5d3be45ba21c/sciencebasepy-2.0.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "0b5bef0c6888a53b23bd13f52e2d2654", "sha256": "f4f26738c92eedddf6aa66085cb2202d1325b60657e33d058ef7c86ba9c63dcb" }, "downloads": -1, "filename": "sciencebasepy-2.0.2.tar.gz", "has_sig": false, "md5_digest": "0b5bef0c6888a53b23bd13f52e2d2654", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29523, "upload_time": "2022-05-02T23:47:50", "upload_time_iso_8601": "2022-05-02T23:47:50.838271Z", "url": "https://files.pythonhosted.org/packages/39/e5/83b242a468e542e599df620bd698594a7c3b154df8107f667b08565e0502/sciencebasepy-2.0.2.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }