{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":158998202,"defaultBranch":"main","name":"anyvar","ownerLogin":"biocommons","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2018-11-25T04:39:17.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/10083184?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1714421026.0","currentOid":""},"activityList":{"items":[{"before":"66cd4463133ae6701690df6501042de36e75ebd3","after":null,"ref":"refs/heads/issue-87-db-conn-pool","pushedAt":"2024-04-29T20:03:46.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"ehclark","name":"Eugene Clark","path":"/ehclark","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5367470?s=80&v=4"}},{"before":"e1981fea622f857cdc38f91b56891e8a83d75c64","after":"454504fbc73ad1860776bbd01ab3f3d856c7699c","ref":"refs/heads/main","pushedAt":"2024-04-29T20:03:45.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ehclark","name":"Eugene Clark","path":"/ehclark","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5367470?s=80&v=4"},"commit":{"message":"Integrate SQLAlchemy for db conn management and introduce new SqlStorage abstraction (#93)\n\n* Update expected VRS IDs for VCF tests\r\n\r\n* Update VRS IDs for variation tests\r\n\r\n* Added new SqlStorage implementation as an abstract base class for all RDBMS storage implementations\r\n\r\nThe base class utilizes SqlAlchemy for connection management and SQL statement execution because it is the only connection pooling library that works with the Snowflake connector.\r\n\r\nThe base class includes the background db write capabilities from the Snowflake implementation and actual SQL statement execution where standard SQL is used. Abstract methods are defined for queries where the SQL or database APIs are not standard.\r\n\r\n* Switch to snowflake-sqlalchemy package\r\n\r\n* Update the Postgres storage implementation to be a subclass of the new SqlStorage base class\r\n\r\nPrimarily removed code that was included in the base class and reorganized remaining code into the base class API shape.\r\n\r\nBecause the Snowflake connector only supports SqlAlchemy 1.4 which in turn only supports psycopg2, had to modify the batch insert logic to use a different API.\r\n\r\n* Update Snowflake storage implementation to be a subclass of new SqlStorage base class\r\n\r\nRemoved code that is now included in base class and reorganized remaining code into base class API shape.\r\n\r\n* Updated unit tests to cover the use of background writes in Postgres storage implementation\r\n\r\nRefactored mocks for SqlAlchemy based testing into separate module\r\n\r\n* Rename test file and replace unused var names with underscore\r\n\r\n* Add storage option to always fully flush on batch context exit\r\n\r\n* When storage construction does not complete, the batch_thread and conn_pool are sometimes not created leading to spurious errors on close(). Check for these attributes before attempting to clean them up.\r\n\r\n* Depending on the underlying database, the returned column value can be a string or a dict\r\n\r\n* Add batch add mode settings to control what type of SQL statement to use when adding new VRS objects to the database\r\n\r\n* Update variation test data to match VRS 2.0 changes\r\n\r\n* Comment out response model to return full VRS objects instead of serialized version\r\n\r\n* Make get location/variation behave consistently even when the object store does not throw a KeyError on missing key\r\n\r\n* Remove code added to make debugging easier\r\n\r\n* Uupdate queries to use specified table name\r\n\r\n* Fix bug in detecting column value type on fetch\r\n\r\n* Batch add mode only makes sense for Snowflake because in Postgres the vrs_objects table has a primary key and uses \"ON CONFLICT\" on inserts\r\n\r\n* Switch to using question mark bind variables for Snowflake because named parameters were not working\r\nPick up table name from environment in unit tests\r\n\r\n* Update to batch insert to play nicely with Snowflake quirks\r\n\r\n* Update example URL to be SQLAlchemy friendly\r\n\r\n* Use super() to invoke __init__()\r\n\r\n* Add support for Snowflake private key auth\r\n\r\n* Add monkey patch workaround for bug in Snowflake SQLAlchemy\r\n\r\n* Update collation in temp loading table\r\n\r\n* Storage implementations should be consistent with MutableMapping API and throw KeyError when an item is not found\r\n\r\n* Remove VRS model classes from response objects because the serialization used internally is not correct for API responses\r\n\r\n* Corrected path used for missing allele id test\r\n\r\n* Get location and get variation should be consistent in behavior when id is not found\r\n\r\n* Revert unecessary change\r\n\r\n* Throw KeyError when id is not found\r\n\r\n* Add missing argument to _get_connect_args\r\n\r\n* Code formatting\r\n\r\n* Suppress SQL injection warning as elsewhere\r\n\r\n* Code formatting\r\n\r\n* Adding missing SQL injection warning suppressions\r\n\r\n* Update README to reflect changes\r\n\r\n* Address \"Incomplete URL substring sanitization\" warning","shortMessageHtmlLink":"Integrate SQLAlchemy for db conn management and introduce new SqlStor…"}},{"before":null,"after":"74d6a834551eff2d0ffc41c4846e98c3890ea07a","ref":"refs/heads/cicd","pushedAt":"2024-04-26T15:00:28.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"jsstevenson","name":"James Stevenson","path":"/jsstevenson","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/12942397?s=80&v=4"},"commit":{"message":"cicd: run pytest in github actions","shortMessageHtmlLink":"cicd: run pytest in github actions"}},{"before":"c46a54ba83fd4c6f71f7963240ce243e2edb07d6","after":"66cd4463133ae6701690df6501042de36e75ebd3","ref":"refs/heads/issue-87-db-conn-pool","pushedAt":"2024-04-26T13:55:34.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"ehclark","name":"Eugene Clark","path":"/ehclark","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5367470?s=80&v=4"},"commit":{"message":"Merge branch 'main' into issue-87-db-conn-pool","shortMessageHtmlLink":"Merge branch 'main' into issue-87-db-conn-pool"}},{"before":"277e8861305c9b4a0f431c129bb69db16b9ceb6e","after":null,"ref":"refs/heads/issue-85","pushedAt":"2024-04-26T13:47:24.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"ehclark","name":"Eugene Clark","path":"/ehclark","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5367470?s=80&v=4"}},{"before":"04ea7cf0070bacdaa70ac5c192f29ac27589d114","after":"e1981fea622f857cdc38f91b56891e8a83d75c64","ref":"refs/heads/main","pushedAt":"2024-04-26T13:47:23.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ehclark","name":"Eugene Clark","path":"/ehclark","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5367470?s=80&v=4"},"commit":{"message":"Update unit tests to match the new VRS 2.0 digests (#92)\n\n* Update expected VRS IDs for VCF tests\r\n\r\n* Update VRS IDs for variation tests\r\n\r\n* Update variation test data to match VRS 2.0 changes\r\n\r\n* Comment out response model to return full VRS objects instead of serialized version\r\n\r\n* Make get location/variation behave consistently even when the object store does not throw a KeyError on missing key\r\n\r\n* Remove code added to make debugging easier\r\n\r\n* Storage implementations should be consistent with MutableMapping API and throw KeyError when an item is not found\r\n\r\n* Remove VRS model classes from response objects because the serialization used internally is not correct for API responses\r\n\r\n* Corrected path used for missing allele id test\r\n\r\n* Get location and get variation should be consistent in behavior when id is not found\r\n\r\n* Revert unecessary change","shortMessageHtmlLink":"Update unit tests to match the new VRS 2.0 digests (#92)"}},{"before":"68701b82f6686951ebbafd553f212881763ead06","after":"c46a54ba83fd4c6f71f7963240ce243e2edb07d6","ref":"refs/heads/issue-87-db-conn-pool","pushedAt":"2024-04-23T19:44:51.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ehclark","name":"Eugene Clark","path":"/ehclark","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5367470?s=80&v=4"},"commit":{"message":"Address \"Incomplete URL substring sanitization\" warning","shortMessageHtmlLink":"Address \"Incomplete URL substring sanitization\" warning"}},{"before":"5f452875ca59c5b0c1b1b4c936b2931a09f97819","after":"68701b82f6686951ebbafd553f212881763ead06","ref":"refs/heads/issue-87-db-conn-pool","pushedAt":"2024-04-23T17:49:07.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"ehclark","name":"Eugene Clark","path":"/ehclark","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5367470?s=80&v=4"},"commit":{"message":"Merge branch 'issue-85' into issue-87-db-conn-pool","shortMessageHtmlLink":"Merge branch 'issue-85' into issue-87-db-conn-pool"}},{"before":"54d4102415f95d4bf11cd2e36440155b8b020fac","after":"5f452875ca59c5b0c1b1b4c936b2931a09f97819","ref":"refs/heads/issue-87-db-conn-pool","pushedAt":"2024-04-19T20:16:21.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ehclark","name":"Eugene Clark","path":"/ehclark","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5367470?s=80&v=4"},"commit":{"message":"Update README to reflect changes","shortMessageHtmlLink":"Update README to reflect changes"}},{"before":"770b8d64220f60ccfe5519fa7fa193141ae80506","after":"54d4102415f95d4bf11cd2e36440155b8b020fac","ref":"refs/heads/issue-87-db-conn-pool","pushedAt":"2024-04-18T21:42:48.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ehclark","name":"Eugene Clark","path":"/ehclark","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5367470?s=80&v=4"},"commit":{"message":"Adding missing SQL injection warning suppressions","shortMessageHtmlLink":"Adding missing SQL injection warning suppressions"}},{"before":"202e752575214ca1ed18566af65f3fa621027b2f","after":"770b8d64220f60ccfe5519fa7fa193141ae80506","ref":"refs/heads/issue-87-db-conn-pool","pushedAt":"2024-04-18T21:34:31.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ehclark","name":"Eugene Clark","path":"/ehclark","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5367470?s=80&v=4"},"commit":{"message":"Code formatting","shortMessageHtmlLink":"Code formatting"}},{"before":"977e052fbf408fddbaa44256d3c4d79dd07e5db2","after":"202e752575214ca1ed18566af65f3fa621027b2f","ref":"refs/heads/issue-87-db-conn-pool","pushedAt":"2024-04-18T21:32:39.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ehclark","name":"Eugene Clark","path":"/ehclark","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5367470?s=80&v=4"},"commit":{"message":"Suppress SQL injection warning as elsewhere","shortMessageHtmlLink":"Suppress SQL injection warning as elsewhere"}},{"before":"157a46a2d1ec1d2252047083bd73875ee4f74e7d","after":"977e052fbf408fddbaa44256d3c4d79dd07e5db2","ref":"refs/heads/issue-87-db-conn-pool","pushedAt":"2024-04-18T21:29:09.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"ehclark","name":"Eugene Clark","path":"/ehclark","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5367470?s=80&v=4"},"commit":{"message":"Merge branch 'main' into issue-87-db-conn-pool","shortMessageHtmlLink":"Merge branch 'main' into issue-87-db-conn-pool"}},{"before":"003d9d1794a23222f35eb9ea9694d956186081f1","after":"277e8861305c9b4a0f431c129bb69db16b9ceb6e","ref":"refs/heads/issue-85","pushedAt":"2024-04-18T21:26:45.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"ehclark","name":"Eugene Clark","path":"/ehclark","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5367470?s=80&v=4"},"commit":{"message":"Merge branch 'main' into issue-85","shortMessageHtmlLink":"Merge branch 'main' into issue-85"}},{"before":"d818d5c55893edf4c675de94aa1a96c769c88b36","after":"157a46a2d1ec1d2252047083bd73875ee4f74e7d","ref":"refs/heads/issue-87-db-conn-pool","pushedAt":"2024-04-18T21:25:08.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ehclark","name":"Eugene Clark","path":"/ehclark","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5367470?s=80&v=4"},"commit":{"message":"Code formatting","shortMessageHtmlLink":"Code formatting"}},{"before":"5dee8f1513edb0fa63b0b9edf6bb3727cf975bab","after":"d818d5c55893edf4c675de94aa1a96c769c88b36","ref":"refs/heads/issue-87-db-conn-pool","pushedAt":"2024-04-18T21:22:19.000Z","pushType":"push","commitsCount":7,"pusher":{"login":"ehclark","name":"Eugene Clark","path":"/ehclark","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5367470?s=80&v=4"},"commit":{"message":"Add missing argument to _get_connect_args","shortMessageHtmlLink":"Add missing argument to _get_connect_args"}},{"before":"e64455b7d39952f3b0a8de752cf693d6a82e46c9","after":"5dee8f1513edb0fa63b0b9edf6bb3727cf975bab","ref":"refs/heads/issue-87-db-conn-pool","pushedAt":"2024-04-18T21:07:29.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ehclark","name":"Eugene Clark","path":"/ehclark","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5367470?s=80&v=4"},"commit":{"message":"Throw KeyError when id is not found","shortMessageHtmlLink":"Throw KeyError when id is not found"}},{"before":"2e28e95d52d59357d73440137b8b33bded44f63e","after":"003d9d1794a23222f35eb9ea9694d956186081f1","ref":"refs/heads/issue-85","pushedAt":"2024-04-18T21:01:09.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ehclark","name":"Eugene Clark","path":"/ehclark","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5367470?s=80&v=4"},"commit":{"message":"Revert unecessary change","shortMessageHtmlLink":"Revert unecessary change"}},{"before":"cf63bf2763481d0aec6112dc193f0e39ade1618e","after":"2e28e95d52d59357d73440137b8b33bded44f63e","ref":"refs/heads/issue-85","pushedAt":"2024-04-18T20:53:04.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"ehclark","name":"Eugene Clark","path":"/ehclark","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5367470?s=80&v=4"},"commit":{"message":"Get location and get variation should be consistent in behavior when id is not found","shortMessageHtmlLink":"Get location and get variation should be consistent in behavior when …"}},{"before":"7a3e99efdc2ecfd63a6e98a35742c62333c7a3cb","after":"e64455b7d39952f3b0a8de752cf693d6a82e46c9","ref":"refs/heads/issue-87-db-conn-pool","pushedAt":"2024-04-18T20:07:04.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ehclark","name":"Eugene Clark","path":"/ehclark","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5367470?s=80&v=4"},"commit":{"message":"Update collation in temp loading table","shortMessageHtmlLink":"Update collation in temp loading table"}},{"before":"ab96430665cbaa1697e3d69ea3a0b1ffb407ff95","after":"7a3e99efdc2ecfd63a6e98a35742c62333c7a3cb","ref":"refs/heads/issue-87-db-conn-pool","pushedAt":"2024-04-18T14:44:26.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"ehclark","name":"Eugene Clark","path":"/ehclark","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5367470?s=80&v=4"},"commit":{"message":"Add monkey patch workaround for bug in Snowflake SQLAlchemy","shortMessageHtmlLink":"Add monkey patch workaround for bug in Snowflake SQLAlchemy"}},{"before":"daefc3c96b5065eba99e680a687b823a5705f078","after":"ab96430665cbaa1697e3d69ea3a0b1ffb407ff95","ref":"refs/heads/issue-87-db-conn-pool","pushedAt":"2024-04-17T19:30:29.000Z","pushType":"push","commitsCount":12,"pusher":{"login":"ehclark","name":"Eugene Clark","path":"/ehclark","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5367470?s=80&v=4"},"commit":{"message":"Update to batch insert to play nicely with Snowflake quirks","shortMessageHtmlLink":"Update to batch insert to play nicely with Snowflake quirks"}},{"before":"daefc3c96b5065eba99e680a687b823a5705f078","after":null,"ref":"refs/heads/issue-85-db-conn-pool","pushedAt":"2024-04-17T14:20:59.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"ehclark","name":"Eugene Clark","path":"/ehclark","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5367470?s=80&v=4"}},{"before":null,"after":"daefc3c96b5065eba99e680a687b823a5705f078","ref":"refs/heads/issue-87-db-conn-pool","pushedAt":"2024-04-17T14:20:58.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"ehclark","name":"Eugene Clark","path":"/ehclark","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5367470?s=80&v=4"},"commit":{"message":"Add batch add mode settings to control what type of SQL statement to use when adding new VRS objects to the database","shortMessageHtmlLink":"Add batch add mode settings to control what type of SQL statement to …"}},{"before":"15514da61937ee42da53ce4c7078d191b8f399fc","after":"cf63bf2763481d0aec6112dc193f0e39ade1618e","ref":"refs/heads/issue-85","pushedAt":"2024-04-17T14:17:28.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ehclark","name":"Eugene Clark","path":"/ehclark","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5367470?s=80&v=4"},"commit":{"message":"Remove code added to make debugging easier","shortMessageHtmlLink":"Remove code added to make debugging easier"}},{"before":"3b8df697358d6d46bf1ba810fcd86fd2e58a4a62","after":"15514da61937ee42da53ce4c7078d191b8f399fc","ref":"refs/heads/issue-85","pushedAt":"2024-04-17T14:16:11.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"ehclark","name":"Eugene Clark","path":"/ehclark","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5367470?s=80&v=4"},"commit":{"message":"Make get location/variation behave consistently even when the object store does not throw a KeyError on missing key","shortMessageHtmlLink":"Make get location/variation behave consistently even when the object …"}},{"before":"92195def12808b4acdefd2a93203fe4447fecfab","after":"daefc3c96b5065eba99e680a687b823a5705f078","ref":"refs/heads/issue-85-db-conn-pool","pushedAt":"2024-04-16T15:39:24.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"ehclark","name":"Eugene Clark","path":"/ehclark","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5367470?s=80&v=4"},"commit":{"message":"Add batch add mode settings to control what type of SQL statement to use when adding new VRS objects to the database","shortMessageHtmlLink":"Add batch add mode settings to control what type of SQL statement to …"}},{"before":"94358af9f992fd86b26f5e759f1f6334366d47c5","after":null,"ref":"refs/heads/issue-88-89","pushedAt":"2024-03-20T11:48:08.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"ehclark","name":"Eugene Clark","path":"/ehclark","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5367470?s=80&v=4"}},{"before":"e7e7996c55c353c6766b33920a44a1e388a0e8b3","after":"04ea7cf0070bacdaa70ac5c192f29ac27589d114","ref":"refs/heads/main","pushedAt":"2024-03-20T11:48:07.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ehclark","name":"Eugene Clark","path":"/ehclark","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5367470?s=80&v=4"},"commit":{"message":"Snowflake storage integration updates for collation and private key auth (#90)\n\n* Added explicit collation for table creation statements\r\nUpdated documentation and unit tests\r\n\r\n* Added code to pre-process the private_key connection parameter\r\nUpdated documentation to cover private_key parameter options","shortMessageHtmlLink":"Snowflake storage integration updates for collation and private key a…"}},{"before":null,"after":"94358af9f992fd86b26f5e759f1f6334366d47c5","ref":"refs/heads/issue-88-89","pushedAt":"2024-03-19T18:47:13.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"ehclark","name":"Eugene Clark","path":"/ehclark","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5367470?s=80&v=4"},"commit":{"message":"Added code to pre-process the private_key connection parameter\nUpdated documentation to cover private_key parameter options","shortMessageHtmlLink":"Added code to pre-process the private_key connection parameter"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEPVitDwA","startCursor":null,"endCursor":null}},"title":"Activity · biocommons/anyvar"}