{ "info": { "author": "Aaron Graubert - Broad Institute - Cancer Genome Computational Analysis", "author_email": "aarong@broadinstitute.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Science/Research", "Programming Language :: Python :: 3", "Topic :: Scientific/Engineering :: Bio-Informatics", "Topic :: Scientific/Engineering :: Interface Engine/Protocol Translator" ], "description": "# Hound\nA FireCloud database extension\n\n## Purpose\n\nThis repository contains the source code for the Hound database extension system.\nThis system aims to provide a low-latency system for logging changes to a FireCloud\nworkspace.\n\nThis allows for attribute provenance to be reconstructed by querying the database\nhistory, and for external tools to log changes as well.\n\n## Usage\n1) Users with hound-enabled software automatically generate logs as they continue\nto do their work\n2) Hound can recreate attribute value histories from logs to produce provenance\n\n## Format\n\nHound logs data in a bucket folder. Entries are organized based on the list below.\n`snowflake` refers to an auto-generated ID from Hound's snowflake implementation.\nSnowflakes are almost guaranteed to be unique (see below)\n\n* hound/: Root folder for hound data in bucket\n * (samples|pairs|participants|sets)/: Folder for entity-metadata change logs\n * (entity-id)/: Folder for entity data\n * (attribute)/: Folder for attribute data on each entity\n * (snowflake): Serial numbered files containing **update objects**\n * workspace/: Folder for workspace-level metadata\n * (attribute)/: Folder for attribute data on the workspace\n * (snowflake): Serial numbered files containing **update objects**\n * logs/: Folder for event-logs\n * (job|upload|meta|other)/: Folder for specific event entries\n * (snowflake): Files containing **log entries**\n\n### Snowflake spec\nEncode 22-byte snowflake into 44 byte (hex encoded) object name\n* 64-bit (8 byte) unix timestamp (8 byte floating-point number)\n* 64-bit (8 byte) machine id (based on nodename) Only 6 bytes used\n* 16-bit (2 byte) random client id (generated during init of Snowflake object)\n* 16-bit (2 byte) sequence identifier (starts at 0 per client, increments from there)\n* 8-bit (1 byte) Zero field (reserved)\n* 8-bit (1 byte) checksum field (sum of remaining fields)\n\n#### Uniqueness\n\nSnowflakes are structured to almost guarantee uniqueness. If two clients from the\nsame machine (or from machines with identical MAC addresses) create a snowflake\nat **exactly** the same time (within their system clocks' precisions) **AND** the\nclients have generated the same number of snowflakes so far (clients have the same\n sequence id), there is a 1/65536 chance that the snowflakes will collide (based on\n client id).\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/broadinstitute/hound", "keywords": "", "license": "BSD3", "maintainer": "", "maintainer_email": "", "name": "hound", "package_url": "https://pypi.org/project/hound/", "platform": "", "project_url": "https://pypi.org/project/hound/", "project_urls": { "Homepage": "https://github.com/broadinstitute/hound" }, "release_url": "https://pypi.org/project/hound/1.0.0/", "requires_dist": [ "google-cloud-storage (>=1.20.0)", "google-auth (>=1.6.3)" ], "requires_python": "", "summary": "A FireCloud database extension", "version": "1.0.0" }, "last_serial": 5946560, "releases": { "0.0.1a0": [ { "comment_text": "", "digests": { "md5": "8c2e140f9bc652270932248065e037ac", "sha256": "4ab36ed3b3ebdf31e11ef10047a29689fa19140bee934eb5807b546045bb0ca9" }, "downloads": -1, "filename": "hound-0.0.1a0-py3-none-any.whl", "has_sig": false, "md5_digest": "8c2e140f9bc652270932248065e037ac", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 1392, "upload_time": "2019-04-26T16:00:00", "url": "https://files.pythonhosted.org/packages/b4/75/39072462380256287513229af60e0614c00d7b70d5a2d467480848cd1b6c/hound-0.0.1a0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cb3e6256b0f8785b55555e2f8f77faec", "sha256": "c8d9517ebd2f4f84a647638a8965ee4f0794af0996f5a89333aa763cecf0b439" }, "downloads": -1, "filename": "hound-0.0.1a0.tar.gz", "has_sig": false, "md5_digest": "cb3e6256b0f8785b55555e2f8f77faec", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1097, "upload_time": "2019-04-26T16:00:13", "url": "https://files.pythonhosted.org/packages/b0/30/81d60c4f45a92c11c4c14a2fcb88c35dcb2d4a466b60e9c357e1885b4aac/hound-0.0.1a0.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "0d0cb4fdce81b1da7f4e482d94962c02", "sha256": "81da542f62b34bbb092a5d2456be3f551fe1ffc11eed626d9f35016914631149" }, "downloads": -1, "filename": "hound-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "0d0cb4fdce81b1da7f4e482d94962c02", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7385, "upload_time": "2019-05-13T21:49:23", "url": "https://files.pythonhosted.org/packages/f3/65/12bd9438da981c82a8f17d15b4688ddb9b43b19ec5615704ff1a78109fc4/hound-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "16621551cdaf98a273d94914e93fd818", "sha256": "e94dba94c89a8f1977a33596a5d44fb0a48edde958f79cb0820aaeacedd7b349" }, "downloads": -1, "filename": "hound-0.1.0.tar.gz", "has_sig": false, "md5_digest": "16621551cdaf98a273d94914e93fd818", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6667, "upload_time": "2019-05-13T21:49:24", "url": "https://files.pythonhosted.org/packages/3d/44/97d50cc1a1ced6f66ed13ca0552cc318607763e631ec7929ee3f62d5d956/hound-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "b594518c2ede443e2c70d80f5fc1966b", "sha256": "9210c31566b78c80c24b5afd5f5011cd946e9b71d592f0ca1f0285a81185f002" }, "downloads": -1, "filename": "hound-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "b594518c2ede443e2c70d80f5fc1966b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7504, "upload_time": "2019-05-14T13:57:48", "url": "https://files.pythonhosted.org/packages/15/c1/7289c861df99d1ab63d78b3d4f45675ee5f1c0f54424822cb51f978bfdb0/hound-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "377a148ab6e82e5416d90e36b684dc35", "sha256": "55b78b04ee821d1ddfa9ce2b50d50cc75bd0bea042b5185573842e52ad28080c" }, "downloads": -1, "filename": "hound-0.1.1.tar.gz", "has_sig": false, "md5_digest": "377a148ab6e82e5416d90e36b684dc35", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7014, "upload_time": "2019-05-14T13:57:49", "url": "https://files.pythonhosted.org/packages/6c/56/79ee0a69ac8292d869f9b5de18462691c9f7b4a1f212e57d418ace97ae5f/hound-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "c57281edc2e6c3797e94e58dd598751a", "sha256": "0856de2cca7045b69a0e5a52588c05be0e7444c2e556568e72bfcd973272a6d0" }, "downloads": -1, "filename": "hound-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "c57281edc2e6c3797e94e58dd598751a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8022, "upload_time": "2019-05-14T16:56:16", "url": "https://files.pythonhosted.org/packages/45/db/7a3b1d62c1967a245a36f32e0e5f59021b298f47698e1e13aec557caaf42/hound-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f8fc9ee533ce19209cf0a9891e2ee077", "sha256": "3b703fae6441647a107c969ee24f97c7e8229d0d473b7c7b663529fb8414f236" }, "downloads": -1, "filename": "hound-0.1.2.tar.gz", "has_sig": false, "md5_digest": "f8fc9ee533ce19209cf0a9891e2ee077", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7535, "upload_time": "2019-05-14T16:56:17", "url": "https://files.pythonhosted.org/packages/05/c6/97830439059295e300e872d001fbf6ef94cb7079a99730c7a04455a1c2f7/hound-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "1438af9566ba29ec88b9928340771850", "sha256": "0127b70967252845e6c5d412db349604ef8aea3e0577fd5c82332b8e764667ea" }, "downloads": -1, "filename": "hound-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "1438af9566ba29ec88b9928340771850", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8171, "upload_time": "2019-05-14T20:21:08", "url": "https://files.pythonhosted.org/packages/eb/e2/06b38907ad16a39905d8631160e7730a792d6e6cf731d5c8b6adb1d9f76d/hound-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4da33fcdf7c11f0fdd0f8f8d278a51c4", "sha256": "7054a5c3a1577b048bd32f658ad4dff739523c6bf9b2c5f5f8f2b93a7e9f53a8" }, "downloads": -1, "filename": "hound-0.1.3.tar.gz", "has_sig": false, "md5_digest": "4da33fcdf7c11f0fdd0f8f8d278a51c4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7333, "upload_time": "2019-05-14T20:21:09", "url": "https://files.pythonhosted.org/packages/ed/ed/d94232bd07bd8cac06580cf6c202a385a163734c0cc312e65ac8f191ffcf/hound-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "67903e6fc837692ef7c866bb67ad9b27", "sha256": "8aaf40581e7ccc30367bc1eda6a6be35dccffe911e5b50cb2976f11ecd0be794" }, "downloads": -1, "filename": "hound-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "67903e6fc837692ef7c866bb67ad9b27", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9749, "upload_time": "2019-05-15T19:50:22", "url": "https://files.pythonhosted.org/packages/7d/fa/a633ff19329e95d36f43006e99628e55daedc89cb67950507d281f44cbdb/hound-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b989c450857b5e5ba7ee71242560fe22", "sha256": "787685b9c1035e1d47901d2be08c32a7f9a42afdf2d9132271049fe0a578fde2" }, "downloads": -1, "filename": "hound-0.1.4.tar.gz", "has_sig": false, "md5_digest": "b989c450857b5e5ba7ee71242560fe22", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8514, "upload_time": "2019-05-15T19:50:23", "url": "https://files.pythonhosted.org/packages/d0/eb/cfc35dc7b6019961ffd3017bda678e92025e75899aac31c408bffcc079b1/hound-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "ac94f19434d54ed6a34a2524c70f2a4b", "sha256": "d1b12bcd410eed6ea97091eb4738ebf0242c2aaefbb8a777acca6f16bd810221" }, "downloads": -1, "filename": "hound-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "ac94f19434d54ed6a34a2524c70f2a4b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9885, "upload_time": "2019-05-15T20:42:32", "url": "https://files.pythonhosted.org/packages/0c/15/b772dafe52f8de6fb5278989440d3d56ceadb5c044c17b78df5d4375c7b1/hound-0.1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "aeefe6e9cab4e7f9e3fba0ac82ed5c81", "sha256": "23b1c80fdfb60ecba3dde9b2be299d808e0c7120de4237e639ded7c052412e19" }, "downloads": -1, "filename": "hound-0.1.5.tar.gz", "has_sig": false, "md5_digest": "aeefe6e9cab4e7f9e3fba0ac82ed5c81", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8658, "upload_time": "2019-05-15T20:42:33", "url": "https://files.pythonhosted.org/packages/52/11/746b72b030d20ee59f359d98659a0e6fda27119991a77ea489726e05e0dc/hound-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "339008ea964308a19dabb07fffe0c538", "sha256": "66f813eed5f2e6877f20f875f522503cff1be8e088d43bf895e01b4f3f865ad6" }, "downloads": -1, "filename": "hound-0.1.6-py3-none-any.whl", "has_sig": false, "md5_digest": "339008ea964308a19dabb07fffe0c538", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9915, "upload_time": "2019-05-16T18:28:16", "url": "https://files.pythonhosted.org/packages/ba/9d/acde9afaff6d37e6e11e41d6e4e558849aff1912a37c4a04f30857760378/hound-0.1.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "59b30b1e63d7b95f0cb6a02f859f5fc6", "sha256": "c54e087c7eaf6942d677e6f016580b614bc6cce65b7e258439bc330514c33855" }, "downloads": -1, "filename": "hound-0.1.6.tar.gz", "has_sig": false, "md5_digest": "59b30b1e63d7b95f0cb6a02f859f5fc6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8686, "upload_time": "2019-05-16T18:28:17", "url": "https://files.pythonhosted.org/packages/6a/30/0dd2fd830721ee5d7f470f86cf04425c474dd24ad34bc1dcb27cd2cab62b/hound-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "a138fd7befbf1102b6e8e240f48ee5ff", "sha256": "7e11fec8f22e30ce2bfd4a38e199060d412302e87fa1dce95c7997317f7073cf" }, "downloads": -1, "filename": "hound-0.1.7-py3-none-any.whl", "has_sig": false, "md5_digest": "a138fd7befbf1102b6e8e240f48ee5ff", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10257, "upload_time": "2019-05-16T20:02:35", "url": "https://files.pythonhosted.org/packages/6c/46/b414516f4c972de56db12571995043508277078953203babecb2cd32d9dc/hound-0.1.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ae2288914e91519d93ba3cbe468ad8d1", "sha256": "6d3a5649e4ef9aadfb6bc36796cc3ca19b90f6de82673ec8d5bda17cc1fc2d58" }, "downloads": -1, "filename": "hound-0.1.7.tar.gz", "has_sig": false, "md5_digest": "ae2288914e91519d93ba3cbe468ad8d1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9674, "upload_time": "2019-05-16T20:02:36", "url": "https://files.pythonhosted.org/packages/53/ec/2a174a6fb193ea9b828e337999b838cec176abea6b917a65e6277156ce2b/hound-0.1.7.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "6265d066b8bf8e4a72bc19c9199ee450", "sha256": "b649fa0e387c8e5c68c97e892064e019b0ec9129889da5530e133d19262d34ca" }, "downloads": -1, "filename": "hound-0.1.8-py3-none-any.whl", "has_sig": false, "md5_digest": "6265d066b8bf8e4a72bc19c9199ee450", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10232, "upload_time": "2019-05-16T22:42:17", "url": "https://files.pythonhosted.org/packages/d5/ef/d2e9e210a6aa13e3c813fe0d6a0c6a223f4fef6086bb934f554728e4bd7f/hound-0.1.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "062729f6e00bf042579a7b25f72589fc", "sha256": "0eeaa9270a2f19ca3b710aae9f4ee94c08447a88c70ee6f5fd9b109fa3bada19" }, "downloads": -1, "filename": "hound-0.1.8.tar.gz", "has_sig": false, "md5_digest": "062729f6e00bf042579a7b25f72589fc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9656, "upload_time": "2019-05-16T22:42:19", "url": "https://files.pythonhosted.org/packages/a8/13/42d889c5c451feeee23b247af6450be037bcce6158b73585087561f1bce7/hound-0.1.8.tar.gz" } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "2f860639288e331c4a09fa41e72fdd8f", "sha256": "f0eaf7c3e53325a0cc19aeb89d0c89b739594bf90bf66099304053f46cb0d79c" }, "downloads": -1, "filename": "hound-0.1.9-py3-none-any.whl", "has_sig": false, "md5_digest": "2f860639288e331c4a09fa41e72fdd8f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10155, "upload_time": "2019-06-26T13:51:24", "url": "https://files.pythonhosted.org/packages/09/91/834ed12bbc1e484dc079682b187151e2f2b0312c879a49d67a01635fae89/hound-0.1.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "eed31b937b63988b7cceb2afecdbed2b", "sha256": "db2cd81018bcce68b2874fc8042c6ba22b3312e8e3787e33b341c68602cdeb83" }, "downloads": -1, "filename": "hound-0.1.9.tar.gz", "has_sig": false, "md5_digest": "eed31b937b63988b7cceb2afecdbed2b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9428, "upload_time": "2019-06-26T13:51:25", "url": "https://files.pythonhosted.org/packages/3e/61/f7b9644162c1ec880d11905cd75b3e71dd5f2d73fdeb968ffb0e5d1da337/hound-0.1.9.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "580049d73c5cdb9cef8c8869a409d2b4", "sha256": "0fa901913d90e602bd4ceaa012d6b57f3bca5bf56353677aee2f2d08047b1104" }, "downloads": -1, "filename": "hound-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "580049d73c5cdb9cef8c8869a409d2b4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10333, "upload_time": "2019-08-06T18:23:23", "url": "https://files.pythonhosted.org/packages/ff/f8/09d9f51730b6f9d3dbafbd3e59fd31cfdc1de11950ad4a69328afea793b9/hound-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "206ec4731cf93a758ccc4761635000ad", "sha256": "c6c2e6ea5f230b980dab93bf9150d3a78e4e3f83fa7ac276fa804a1941fd5b29" }, "downloads": -1, "filename": "hound-0.2.0.tar.gz", "has_sig": false, "md5_digest": "206ec4731cf93a758ccc4761635000ad", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9625, "upload_time": "2019-08-06T18:23:24", "url": "https://files.pythonhosted.org/packages/c1/b4/3a6a2f813ba23257988af426e7774321bb72878856358006eaf6de18157c/hound-0.2.0.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "2d0125e76754404abf48e3675bd57ff2", "sha256": "6aedfbe6c66f5df3f5aabf175d6c1a3f028f7af751449d860f074e0b19b74cc4" }, "downloads": -1, "filename": "hound-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "2d0125e76754404abf48e3675bd57ff2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10308, "upload_time": "2019-10-08T20:37:02", "url": "https://files.pythonhosted.org/packages/21/08/198e39f133012cd522e75333cb9a7ef80a05ebda542b109abd8b29393448/hound-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "38c50abc1d40eb90789370c53f355a7b", "sha256": "ac4ebbbc1c43aaadd02a8c7e06d45bf167f165068ea14435936569ac4f00cda5" }, "downloads": -1, "filename": "hound-1.0.0.tar.gz", "has_sig": false, "md5_digest": "38c50abc1d40eb90789370c53f355a7b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9576, "upload_time": "2019-10-08T20:37:04", "url": "https://files.pythonhosted.org/packages/f5/ba/d0f65ac514003cbe66ae5ade2db96146602dcaa0286b795ad5eac4991ed3/hound-1.0.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "2d0125e76754404abf48e3675bd57ff2", "sha256": "6aedfbe6c66f5df3f5aabf175d6c1a3f028f7af751449d860f074e0b19b74cc4" }, "downloads": -1, "filename": "hound-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "2d0125e76754404abf48e3675bd57ff2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10308, "upload_time": "2019-10-08T20:37:02", "url": "https://files.pythonhosted.org/packages/21/08/198e39f133012cd522e75333cb9a7ef80a05ebda542b109abd8b29393448/hound-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "38c50abc1d40eb90789370c53f355a7b", "sha256": "ac4ebbbc1c43aaadd02a8c7e06d45bf167f165068ea14435936569ac4f00cda5" }, "downloads": -1, "filename": "hound-1.0.0.tar.gz", "has_sig": false, "md5_digest": "38c50abc1d40eb90789370c53f355a7b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9576, "upload_time": "2019-10-08T20:37:04", "url": "https://files.pythonhosted.org/packages/f5/ba/d0f65ac514003cbe66ae5ade2db96146602dcaa0286b795ad5eac4991ed3/hound-1.0.0.tar.gz" } ] }