diff --git a/Pipfile b/Pipfile index 8cee31a..837f930 100644 --- a/Pipfile +++ b/Pipfile @@ -7,7 +7,7 @@ name = "pypi" grpcio-tools = "*" googleapis-common-protos = "*" pylint = "*" -black = "*" +black = "==19.3b0" twine = "*" [packages] diff --git a/Pipfile.lock b/Pipfile.lock index d84f7f9..df78937 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "cf4ecae0fc2249bc93e08828c21430586445a96dd66954def4f6749910bc8598" + "sha256": "f658c89aa2637313349ac771cceea3c1da1b6ed9c2372a7cea8f3d93dec07506" }, "pipfile-spec": 6, "requires": { @@ -18,66 +18,72 @@ "default": { "grpcio": { "hashes": [ - "sha256:002f9170d8c0c10c33f643240c2332ce6eb8c8cc8c2b08d6a8f3172ef574751b", - "sha256:0f80b28033105e99e08d84361b899c45bd6eb31d2765ff2ed7cb66b8b1d12820", - "sha256:1012969abbec9a6c5d7b09ac829df296cb0a2ddebe70dd314abb881fa62cbcc9", - "sha256:19af04506fec213de9a889343d4b090e9d0b675e1d9b8397ea6fc6521f939a48", - "sha256:37cdffc26987ae2a077cc80fc0d87273e0e01ba15df40ec0a20d107e635700cf", - "sha256:4e72b30a276e519d687dc53d86ecf9d65edf31dad473f3bbd041542bbf9df12f", - "sha256:564499d84c2e90eb87819f7a299eaa2aee32db8208a8e8d00e8941a0c66413c0", - "sha256:6324581e215157f0fbe335dff2e21a65b4406db98ac7cca05f1e23b4f510b426", - "sha256:64758d2718f14792286b32d31560edb10c3726ce5d5875c3472c95908b658aeb", - "sha256:67b36c6b0070ef858e5438e82d3a3fb19db33a174572019744d7b965c95fa9b0", - "sha256:83766cdfc3492a693902eff193648b3cc9710e4a131815cd0cc60e30e9b7cf8f", - "sha256:935a0b328b79e03a47d87960836513bab1150d0faab44aff7968f8623ed48d62", - "sha256:9c79eaca4b0b8fb973c6e0c4c6cd4be44e76dfd09d56cfc7b2a959289fda6682", - "sha256:a24a37e441c36d6605029cfb035806ef4f888a37d757e64fb0488d03c3fff806", - "sha256:ab33b5965df89fd6e4ea7846cb9a28ece4e6d9ded23434d3321b992051a62de0", - "sha256:ad6c12e9ab809fd4f8891a085a7655ca2690a5753bb6258d9d602084f610a223", - "sha256:b1e4c83209bce5548029ed7df2af6a94415bb7dd37a2203183919d1d5a5249c9", - "sha256:b87cdf8c4291875bda4b2a0f6747cab008fd9ea6c682a43d0869d308a16d0956", - "sha256:b9e3793e0d1498e5c72993ba91f14e617e06e945d6562716bfbbbc6a9e7ab7de", - "sha256:ba388412f64d6ac02098fcb77c409896297b058a8942d946bd1999699d35c123", - "sha256:baaf1a0d5a5d9af67ec3ff0d9dfc1d642e7aba38e59ae60de1c6d1bd46406177", - "sha256:be0d79c3253f7d23facc4dab96ada086e9b17048a36843041a5fac3bad9415e7", - "sha256:ce3c23b1110238c1f440cdbceefd0c5fc7fcf3022c82c8a349514038aa69ac3d", - "sha256:d9b9d309e7db3a988df0d12ba3c1ca4a7059c502c10ce34d4d65779bebbb6949", - "sha256:ddd489b4730d7eccf9b836216d7137f85b3e68258a292a618a12e9ce5a7bcfb0", - "sha256:dee025675506fc84f475b9fb0c8ce2cc9b663f9d7c7a22281ba878538be78fe8", - "sha256:e6ac3198f4174c1b58e3a6b765d0b9cdcead231ba8bf4ddd30709320960b6e39", - "sha256:e738782d0216087cb7ee9acc54305db9a30bf9a784bff7a407b748a91dd8c942", - "sha256:f136b98861f27e2628f824c7c7e8d4bce47c9e18953fd00a0aca1d1c9cfd1b6c" + "sha256:0232add03144dd3cf9b660e2718244cb8e175370dca4d3855cb4e489a7811b53", + "sha256:0f20e6dcb1b8662cdca033bb97c0a8116a5343e3ebc7f71c5fe7f89039978350", + "sha256:10b07a623d33d4966f45c85d410bc6a79c5ac6341f06c3beda6c22be12cbfe07", + "sha256:10c0476d5a52d21f402fc073745dc43b87cc8e080a1f49bbff4e1059019310fb", + "sha256:289dae0b35c59d191c524e976dd0a6f8c995d2062e72621eb866ad0f4472a635", + "sha256:2be726f16142d358a0df1e81d583d6820ee561a7856a79cca2fbe49989308be7", + "sha256:4338d2a81f5b4ca022e085040b3cfce19419a5ce44aa7e6810ac1df05365bed7", + "sha256:4c535b46f20e66bee3097583231977e721acdfcb1671d1490c99b7be8902ce18", + "sha256:557154aef70a0e979700cc9528bc8b606b668084a29a0d57dbc4b06b078a2f1c", + "sha256:5bfdd7e6647498f979dc46583723c852d97b25afe995d55aa1c76a5f9816bc1f", + "sha256:87d8943ae7aa6ca5bbad732867d7f17d2550e4966a0c15b52088e8b579422e47", + "sha256:89d8719d8de4d137678f7caa979e1b0a6fd4026f8096ceef8c2d164bbabefaf2", + "sha256:9c3f4af989ce860710ac1864dc2e867dd87e6cee51a2368df1b253596868e52f", + "sha256:9da52c3c728883aee429bb7c315049f50b2139f680cd86bb1165418e4f93a982", + "sha256:9e9736659987beab42d18525ed10d21f80a1ba8389eac03425fbfd5684e6bbf0", + "sha256:9ebcbb1a054cab362d29d3be571d43d6b9b23302d9fc4b43e5327000da1680a9", + "sha256:a93e08636623e24c939851e2e0c0140b14f524b2980c9cdc4ea52b70a871c7e0", + "sha256:ac322d86d1a079e0a118d544443ee16f320af0062c191b4754c0c6ec2fc79310", + "sha256:b1fb101459868f52df6b61e7bb13375e50badf17a160e39fe1d51ae19e53f461", + "sha256:b39aac96cceac624a23d540473835086a3ffa77c91030189988c073488434493", + "sha256:b65507bc273c6dbf539175a786a344cc0ac78d50e5584f72c6599733f8a3301f", + "sha256:be5bb6e47417e537c884a2e2ff2e1a8b2c064a998fcfdfcc67528d4e63e7ebaf", + "sha256:c92de6a28a909c4f460dc1bbbcb50d676cf0b1f40224b222761f73fdd851b522", + "sha256:c9f5962eb7fa7607b20eb0e4f59ed35829bd600fc0eacb626a6db83229a3e445", + "sha256:d00bdf9c546ed6e649f785c55b05288e8b2dbb6bf2eb74b6c579fa0d591d35bd", + "sha256:da804b1dd8293bd9d61b1e6ea989c887ba042a808a4fbdd80001cfa059aafed2", + "sha256:ead6c5aa3e807345913649c3be395aaca2bbb2d225f18b8f31f37eab225508f6", + "sha256:eb4d81550ce6f826af4ec6e8d98be347fe96291d718bf115c3f254621ae8d98d", + "sha256:ef6a18ec8fd32ec81748fe720544ea2fb2d2dc50fd6d06739d5e2eb8f0626a1c", + "sha256:fad42835656e0b6d3b7ffc900598e776722e30f43b7234a48f2576ca30f31a47", + "sha256:fb98dbfee0d963b49ae5754554028cf62e6bd695f22de16d242ba9d2f0b7339b", + "sha256:fb9cd9bb8d26dc17c2dd715a46bca3a879ec8283879b164e85863110dc6e3b2a" ], "index": "pypi", - "version": "==1.13.0" + "version": "==1.21.1" }, "protobuf": { "hashes": [ - "sha256:12985d9f40c104da2f44ec089449214876809b40fdc5d9e43b93b512b9e74056", - "sha256:12c97fe27af12fc5d66b23f905ab09dd4fb0c68d5a74a419d914580e6d2e71e3", - "sha256:327fb9d8a8247bc780b9ea7ed03c0643bc0d22c139b761c9ec1efc7cc3f0923e", - "sha256:3895319db04c0b3baed74fb66be7ba9f4cd8e88a432b8e71032cdf08b2dfee23", - "sha256:695072063e256d32335d48b9484451f7c7948edc3dbd419469d6a778602682fc", - "sha256:7d786f3ef5b33a04e6538089674f244a3b0f588155016559d950989010af97d0", - "sha256:8bf82bb7a466a54be7272dcb492f71d55a2453a58d862fb74c3f2083f2768543", - "sha256:9bbc1ae1c33c1bd3a2fc05a3aec328544d2b039ff0ce6f000063628a32fad777", - "sha256:9e992c68103ab5635728d29fcf132c669cb4e2db24d012685210276185009d17", - "sha256:9f1087abb67b34e55108bc610936b34363a7aac692023bcbb17e065c253a1f80", - "sha256:9fefcb92a3784b446abf3641d9a14dad815bee88e0edd10b9a9e0e144d01a991", - "sha256:a37836aa47d1b81c2db1a6b7a5e79926062b5d76bd962115a0e615551be2b48d", - "sha256:cca22955443c55cf86f963a4ad7057bca95e4dcde84d6a493066d380cfab3bb0", - "sha256:d7ac50bc06d31deb07ace6de85556c1d7330e5c0958f3b2af85037d6d1182abf", - "sha256:dfe6899304b898538f4dc94fa0b281b56b70e40f58afa4c6f807805261cbe2e8" + "sha256:03f43eac9d5b651f976e91cf46a25b75e5779d98f0f4114b0abfed83376d75f8", + "sha256:0c94b21e6de01362f91a86b372555d22a60b59708599ca9d5032ae9fdf8e3538", + "sha256:2d2a9f30f61f4063fadd7fb68a2510a6939b43c0d6ceeec5c4704f22225da28e", + "sha256:34a0b05fca061e4abb77dd180209f68d8637115ff319f51e28a6a9382d69853a", + "sha256:358710fd0db25372edcf1150fa691f48376a134a6c69ce29f38f185eea7699e6", + "sha256:41e47198b94c27ba05a08b4a95160656105745c462af574e4bcb0807164065c0", + "sha256:8c61cc8a76e9d381c665aecc5105fa0f1878cf7db8b5cd17202603bcb386d0fc", + "sha256:a6eebc4db759e58fdac02efcd3028b811effac881d8a5bad1996e4e8ee6acb47", + "sha256:a9c12f7c98093da0a46ba76ec40ace725daa1ac4038c41e4b1466afb5c45bb01", + "sha256:cb95068492ba0859b8c9e61fa8ba206a83c64e5d0916fb4543700b2e2b214115", + "sha256:cd98476ce7bb4dcd6a7b101f5eecdc073dafea19f311e36eb8fba1a349346277", + "sha256:ce64cfbea18c535176bdaa10ba740c0fc4c6d998a3f511c17bedb0ae4b3b167c", + "sha256:dcbb59eac73fd454e8f2c5fba9e3d3320fd4707ed6a9d3ea3717924a6f0903ea", + "sha256:dd67f34458ae716029e2a71ede998e9092493b62a519236ca52e3c5202096c87", + "sha256:e3c96056eb5b7284a20e256cb0bf783c8f36ad82a4ae5434a7b7cd02384144a7", + "sha256:f612d584d7a27e2f39e7b17878430a959c1bc09a74ba09db096b468558e5e126", + "sha256:f6de8a7d6122297b81566e5bd4df37fd5d62bec14f8f90ebff8ede1c9726cd0a", + "sha256:fa529d9261682b24c2aaa683667253175c9acebe0a31105394b221090da75832" ], "index": "pypi", - "version": "==3.6.0" + "version": "==3.8.0" }, "six": { "hashes": [ - "sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9", - "sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb" + "sha256:3350809f0555b11f552448330d0b52d5f24c91a322ea4a15ef22629740f3761c", + "sha256:d16a0141ec1a18405cd4ce8b4613101da75da0e9a7aec5bdd4fa804d0e0eba73" ], - "version": "==1.11.0" + "version": "==1.12.0" } }, "develop": { @@ -90,32 +96,39 @@ }, "astroid": { "hashes": [ - "sha256:a8d8c7fe34e34e868426b9bafce852c355a3951eef60bc831b2ed541558f8d37", - "sha256:e722228b5259ce8c7cbf75f3b0ee8b483cfbd4df01167474a84087d1aeade22c" + "sha256:6560e1e1749f68c64a4b5dee4e091fce798d2f0d84ebe638cf0e0585a343acf4", + "sha256:b65db1bbaac9f9f4d190199bb8680af6f6f84fd3769a5ea883df8a91fe68b4c4" ], - "version": "==2.0.0.dev4" + "version": "==2.2.5" }, "attrs": { "hashes": [ - "sha256:4b90b09eeeb9b88c35bc642cbac057e45a5fd85367b985bd2809c62b7b939265", - "sha256:e0d0eb91441a3b53dab4d9b743eafc1ac44476296a2053b6ca3af0b139faf87b" + "sha256:69c0dbf2ed392de1cb5ec704444b08a5ef81680a61cb899dc08127123af36a79", + "sha256:f0b870f674851ecbfbbbd364d6b5cbdff9dcedbc7f3f5e18a6891057f21fe399" ], - "version": "==18.1.0" + "version": "==19.1.0" }, "black": { "hashes": [ - "sha256:22158b89c1a6b4eb333a1e65e791a3f8b998cf3b11ae094adb2570f31f769a44", - "sha256:4b475bbd528acce094c503a3d2dbc2d05a4075f6d0ef7d9e7514518e14cc5191" + "sha256:09a9dcb7c46ed496a9850b76e4e825d6049ecd38b611f1224857a79bd985a8cf", + "sha256:68950ffd4d9169716bcb8719a56c07a2f4485354fec061cdd5910aa07369731c" ], "index": "pypi", - "version": "==18.6b4" + "version": "==19.3b0" + }, + "bleach": { + "hashes": [ + "sha256:213336e49e102af26d9cde77dd2d0397afabc5a6bf2fed985dc35b5d1e285a16", + "sha256:3fdf7f77adcf649c9911387df51254b813185e32b2c6619f690b593a617e19fa" + ], + "version": "==3.1.0" }, "certifi": { "hashes": [ - "sha256:13e698f54293db9f89122b0581843a782ad0934a4fe0172d2a980ba77fc61bb7", - "sha256:9fa520c1bacfb634fa7af20a76bcbd3d5fb390481724c597da32c719a7dca4b0" + "sha256:59b7658e26ca9c7339e00f8f4636cdfe59d34fa37b9b04f6f9e9926b3cece1a5", + "sha256:b26104d6835d1f5e49452a26eb2ff87fe7090b89dfcaee5ea2212697e1e1d7ae" ], - "version": "==2018.4.16" + "version": "==2019.3.9" }, "chardet": { "hashes": [ @@ -126,136 +139,138 @@ }, "click": { "hashes": [ - "sha256:29f99fc6125fbc931b758dc053b3114e55c77a6e4c6c3a2674a2dc986016381d", - "sha256:f15516df478d5a56180fbf80e68f206010e6d160fc39fa508b65e035fd75130b" + "sha256:2335065e6395b9e67ca716de5f7526736bfa6ceead690adf616d925bdc622b13", + "sha256:5b94b49521f6456670fdb30cd82a4eca9412788a93fa6dd6df72c94d5a8ff2d7" ], - "version": "==6.7" + "version": "==7.0" + }, + "docutils": { + "hashes": [ + "sha256:02aec4bd92ab067f6ff27a38a38a41173bf01bed8f89157768c1573f53e474a6", + "sha256:51e64ef2ebfb29cae1faa133b3710143496eca21c530f3f71424d77687764274", + "sha256:7a4bd47eaf6596e1295ecb11361139febe29b084a87bf005bf899f9a42edc3c6" + ], + "version": "==0.14" }, "googleapis-common-protos": { "hashes": [ - "sha256:9c794be2e858cb3e915a6139a90b0bd906eacac53798ecc6954df8c8999c2619" + "sha256:e61b8ed5e36b976b487c6e7b15f31bb10c7a0ca7bd5c0e837f4afab64b53a0c6" ], "index": "pypi", - "version": "==1.6.0b3" + "version": "==1.6.0" }, "grpcio": { "hashes": [ - "sha256:002f9170d8c0c10c33f643240c2332ce6eb8c8cc8c2b08d6a8f3172ef574751b", - "sha256:0f80b28033105e99e08d84361b899c45bd6eb31d2765ff2ed7cb66b8b1d12820", - "sha256:1012969abbec9a6c5d7b09ac829df296cb0a2ddebe70dd314abb881fa62cbcc9", - "sha256:19af04506fec213de9a889343d4b090e9d0b675e1d9b8397ea6fc6521f939a48", - "sha256:37cdffc26987ae2a077cc80fc0d87273e0e01ba15df40ec0a20d107e635700cf", - "sha256:4e72b30a276e519d687dc53d86ecf9d65edf31dad473f3bbd041542bbf9df12f", - "sha256:564499d84c2e90eb87819f7a299eaa2aee32db8208a8e8d00e8941a0c66413c0", - "sha256:6324581e215157f0fbe335dff2e21a65b4406db98ac7cca05f1e23b4f510b426", - "sha256:64758d2718f14792286b32d31560edb10c3726ce5d5875c3472c95908b658aeb", - "sha256:67b36c6b0070ef858e5438e82d3a3fb19db33a174572019744d7b965c95fa9b0", - "sha256:83766cdfc3492a693902eff193648b3cc9710e4a131815cd0cc60e30e9b7cf8f", - "sha256:935a0b328b79e03a47d87960836513bab1150d0faab44aff7968f8623ed48d62", - "sha256:9c79eaca4b0b8fb973c6e0c4c6cd4be44e76dfd09d56cfc7b2a959289fda6682", - "sha256:a24a37e441c36d6605029cfb035806ef4f888a37d757e64fb0488d03c3fff806", - "sha256:ab33b5965df89fd6e4ea7846cb9a28ece4e6d9ded23434d3321b992051a62de0", - "sha256:ad6c12e9ab809fd4f8891a085a7655ca2690a5753bb6258d9d602084f610a223", - "sha256:b1e4c83209bce5548029ed7df2af6a94415bb7dd37a2203183919d1d5a5249c9", - "sha256:b87cdf8c4291875bda4b2a0f6747cab008fd9ea6c682a43d0869d308a16d0956", - "sha256:b9e3793e0d1498e5c72993ba91f14e617e06e945d6562716bfbbbc6a9e7ab7de", - "sha256:ba388412f64d6ac02098fcb77c409896297b058a8942d946bd1999699d35c123", - "sha256:baaf1a0d5a5d9af67ec3ff0d9dfc1d642e7aba38e59ae60de1c6d1bd46406177", - "sha256:be0d79c3253f7d23facc4dab96ada086e9b17048a36843041a5fac3bad9415e7", - "sha256:ce3c23b1110238c1f440cdbceefd0c5fc7fcf3022c82c8a349514038aa69ac3d", - "sha256:d9b9d309e7db3a988df0d12ba3c1ca4a7059c502c10ce34d4d65779bebbb6949", - "sha256:ddd489b4730d7eccf9b836216d7137f85b3e68258a292a618a12e9ce5a7bcfb0", - "sha256:dee025675506fc84f475b9fb0c8ce2cc9b663f9d7c7a22281ba878538be78fe8", - "sha256:e6ac3198f4174c1b58e3a6b765d0b9cdcead231ba8bf4ddd30709320960b6e39", - "sha256:e738782d0216087cb7ee9acc54305db9a30bf9a784bff7a407b748a91dd8c942", - "sha256:f136b98861f27e2628f824c7c7e8d4bce47c9e18953fd00a0aca1d1c9cfd1b6c" + "sha256:0232add03144dd3cf9b660e2718244cb8e175370dca4d3855cb4e489a7811b53", + "sha256:0f20e6dcb1b8662cdca033bb97c0a8116a5343e3ebc7f71c5fe7f89039978350", + "sha256:10b07a623d33d4966f45c85d410bc6a79c5ac6341f06c3beda6c22be12cbfe07", + "sha256:10c0476d5a52d21f402fc073745dc43b87cc8e080a1f49bbff4e1059019310fb", + "sha256:289dae0b35c59d191c524e976dd0a6f8c995d2062e72621eb866ad0f4472a635", + "sha256:2be726f16142d358a0df1e81d583d6820ee561a7856a79cca2fbe49989308be7", + "sha256:4338d2a81f5b4ca022e085040b3cfce19419a5ce44aa7e6810ac1df05365bed7", + "sha256:4c535b46f20e66bee3097583231977e721acdfcb1671d1490c99b7be8902ce18", + "sha256:557154aef70a0e979700cc9528bc8b606b668084a29a0d57dbc4b06b078a2f1c", + "sha256:5bfdd7e6647498f979dc46583723c852d97b25afe995d55aa1c76a5f9816bc1f", + "sha256:87d8943ae7aa6ca5bbad732867d7f17d2550e4966a0c15b52088e8b579422e47", + "sha256:89d8719d8de4d137678f7caa979e1b0a6fd4026f8096ceef8c2d164bbabefaf2", + "sha256:9c3f4af989ce860710ac1864dc2e867dd87e6cee51a2368df1b253596868e52f", + "sha256:9da52c3c728883aee429bb7c315049f50b2139f680cd86bb1165418e4f93a982", + "sha256:9e9736659987beab42d18525ed10d21f80a1ba8389eac03425fbfd5684e6bbf0", + "sha256:9ebcbb1a054cab362d29d3be571d43d6b9b23302d9fc4b43e5327000da1680a9", + "sha256:a93e08636623e24c939851e2e0c0140b14f524b2980c9cdc4ea52b70a871c7e0", + "sha256:ac322d86d1a079e0a118d544443ee16f320af0062c191b4754c0c6ec2fc79310", + "sha256:b1fb101459868f52df6b61e7bb13375e50badf17a160e39fe1d51ae19e53f461", + "sha256:b39aac96cceac624a23d540473835086a3ffa77c91030189988c073488434493", + "sha256:b65507bc273c6dbf539175a786a344cc0ac78d50e5584f72c6599733f8a3301f", + "sha256:be5bb6e47417e537c884a2e2ff2e1a8b2c064a998fcfdfcc67528d4e63e7ebaf", + "sha256:c92de6a28a909c4f460dc1bbbcb50d676cf0b1f40224b222761f73fdd851b522", + "sha256:c9f5962eb7fa7607b20eb0e4f59ed35829bd600fc0eacb626a6db83229a3e445", + "sha256:d00bdf9c546ed6e649f785c55b05288e8b2dbb6bf2eb74b6c579fa0d591d35bd", + "sha256:da804b1dd8293bd9d61b1e6ea989c887ba042a808a4fbdd80001cfa059aafed2", + "sha256:ead6c5aa3e807345913649c3be395aaca2bbb2d225f18b8f31f37eab225508f6", + "sha256:eb4d81550ce6f826af4ec6e8d98be347fe96291d718bf115c3f254621ae8d98d", + "sha256:ef6a18ec8fd32ec81748fe720544ea2fb2d2dc50fd6d06739d5e2eb8f0626a1c", + "sha256:fad42835656e0b6d3b7ffc900598e776722e30f43b7234a48f2576ca30f31a47", + "sha256:fb98dbfee0d963b49ae5754554028cf62e6bd695f22de16d242ba9d2f0b7339b", + "sha256:fb9cd9bb8d26dc17c2dd715a46bca3a879ec8283879b164e85863110dc6e3b2a" ], "index": "pypi", - "version": "==1.13.0" + "version": "==1.21.1" }, "grpcio-tools": { "hashes": [ - "sha256:00a66d398c79ed1ae8490c7f18d912c318b57ce93125e4345460bf40fcd4259f", - "sha256:179ef9c760d7c89c99266fc5e338110a8926d4c8f5a1ed353a9efb589b377139", - "sha256:2d0e9b258e4a2872a747b6d2b21e3397e89102014c711f43e9432ce1ba067afb", - "sha256:318bdd7f758511960e9fbad6d416b3f11f2de117a26b015a3661f77aa0babd24", - "sha256:3d91bd1ea3145dcc76a01adcae31fc75201519b07fccbda8f70ecf081d4a805a", - "sha256:4159c5138527584b05d2509d4b575ead1b52a07172bb3169ad1b04b1c695bca1", - "sha256:41c37c974f493c6c36727d374e762ef1e8d91e3824c6ad69678f05b13f6acea0", - "sha256:43776c1e2bc52fe53735b9738a9e75e9d90abf507409dd1e18d1ac3b21868f0f", - "sha256:45375e8c0edd29f5f398816444ee040a6b46123645f747a17b51b3022a0f3458", - "sha256:4ee85f985fe19aea8ae0354fad035e6e14fe8d4bb7568ddfc32662fc78a138a3", - "sha256:5a24f3be86471a940d68edcb1e0b44fbb713ccd6f63b091d6d9d75e5f08f176b", - "sha256:5ca9a97bcf50c75de23965c8d3450fcc9409dab6c48697eb74d487b6c1cbaf0b", - "sha256:60fbe6988c59fce169a7ef0c45ffb1ed2ce1f048c469dbac2e01843e77d11d31", - "sha256:624dcd1594cfc407abaac8e1e380eded123e3036791790506eb336c008cb32a8", - "sha256:6715b87359c5971360e1614dd9ad484de8a8140946a3930edcbeca3944acad80", - "sha256:81b39bd7bc881d78988090b862a69b47e3bc44220fd354a736cb9235514066b2", - "sha256:86ec833e2b03da631deeb3381c70d592aa2bb02d678b05688fff38ef4313d642", - "sha256:9c4523c45a25dae123fa80c3b4c8a25ad38ae8fe99b603cc6128f6357fd094af", - "sha256:9cf6188594f4b6d9ed1307f9114cd2272c3c49e4f66076ce0d732e89cc84fadb", - "sha256:9d8a096f3f8d5f8713ec5ddd744bead8b67adfd72d36828fa95a1ae9e3161825", - "sha256:a6699f3cc4ab156dccab99e1af2fb8fd8319432c579fcb8d0b02347d8b9efab8", - "sha256:b12caceea93f7dc7342b098aa8f10d57406242e867308be13bc3d6995a9d1cc9", - "sha256:b918ca1195729701f760686dbd8240715b98a68006b9b4376be97ee59976485e", - "sha256:c0b78b0bc372d650da1080582d75c8b5bd6b8464ffde873c350180575c68c464", - "sha256:c64bd4ec0b6c86f1aa7be9f8a5afb147b8c005a61d8a331d7373f97b64181620", - "sha256:e45f8d67590ba0252b68e19ebd07c234a922cd294a81d84cfe018d85606464d5", - "sha256:e64437fb4a3d8d5bdaef83ef8857d9c479291def214c1df9c889483fef2ceabf", - "sha256:ebc3bc51fe73cc0343d1d1053adde78a6cede44bcbb374c57d263acbce91504f", - "sha256:edfc60fafebf60fd4f6fdc9a5706937f5a9cb26025714152819d634d69c70df5" + "sha256:04b642dc43d154d9383e7e8141b0ad5e8427f46e5d9b88a87da9787d3312479c", + "sha256:095762c550363b68320194153feb1a60586cc86cd192190e756a6b003742aca0", + "sha256:14e1d201bbd2084e1f44ab6a8c5d6fec88c5aa94b8af946c89e6043390e88718", + "sha256:2058b5f411578935ef8ec7943458c1d262722de1c1df26fa599b0f54232d0291", + "sha256:20cea46554dc095796b5ed6e93ca9eae4f2865d3d8b69cef3d88738c218eb596", + "sha256:28376d8fea76016d500b3ae8883489ccef783e5f74bb12894fdd7347d5894f6f", + "sha256:30be4d04cae981e0764c9c6a90154de1864350a0ee6f906bb7a3fb6969da9260", + "sha256:314bcd400730f074688570274441193296830f018d9df70902126065e34f9c18", + "sha256:3dc77cce3ed8a99126ab78e077074711b0173238dd7a9214fe92025d42dcb8fb", + "sha256:4328f07818bbcaf3ea3b46380c743fd65392031d3bf3c0c28fd2d3b074ae2a0a", + "sha256:4564241ca8865163ea575187f7160d0957992974cd71bc2a217275690d0e6f18", + "sha256:49557224e68b469d5488690136b8e6e4b0f383d5601cfef964847bb45536c72e", + "sha256:4da4e8f7fc564b0289c4680901bb1642aef646c88f43346b6282d620cfd2a58b", + "sha256:4f2c390ab8d9b3ae1b8ce90f1cb23102b7d28672ce6ee357845af199b31a8de6", + "sha256:4fc02ff19903d3642d3f294a9f38999808c84cf0c12b80f854e063386611640a", + "sha256:50d460c8e172b5b0b0a443c19219f3adf11323d1ff969a23cf4a4d9626bd4c94", + "sha256:711451998edc6ae87e737af0c051d3eb75c3358435d880f4599c6c927ff50ec7", + "sha256:7eed258012119f177342399e049e45652b150c3315a37114ce30ef6e99a13e3a", + "sha256:8340e5bf4a21e45c6a39dd019b2d70691a1181cf1c5545e2ae96eb95cbf9d965", + "sha256:844401a18a6674490657cd5040f20d0a71650d82e8573da82dc6f1d16bbec1ea", + "sha256:87289456f7fba8ce65cfca868e0250945b85bed5b3b28a49e7e373d8a985e1e5", + "sha256:9bbcccee9aadfcfdd063e7ad5c26926dab9a3c8d727823e9028c44641ee1e5dc", + "sha256:aba021c82b936fec8a3fa5c15277fc11c0bf3a8f95a4a7b3f85d9b1225fff729", + "sha256:cf74d4843651cf13afbef8aae472d51aaa500bed130f5bfbaba57ec02068f1a5", + "sha256:d13e36a5936e04321ca703cedf9dfe61f4c837e31dd0330708303dca30aaec94", + "sha256:d4ecf399b09bf8c646414a0385085537614ebdd221ea588d2c29ce71ade5d6f0", + "sha256:d5857c9682ca80cad4dce6e94e9bcc35b77a4d58ec7647e0efeb29fe6183cd43", + "sha256:da18c9ad04d0bacd8c8682b2f81feef9835f2cf27c7f59acb3e664052dacb22a", + "sha256:df73f88859f2f86ebfd6200603be191651443237a3d02e2bd0e0308b833e5497", + "sha256:e9b3e2bc69fbd9910dd5e7d21a1003995e46bc6853032c758eccae3ef5b9de4d", + "sha256:ecdc2369e3f1d6e83029ca4b600aeccaa441976315fa52f518d2f53537addbe6", + "sha256:fe60c48804528aa4c4af7be0d27b025c5494d1716d1fa4fb1a1560aab8320f4c" ], "index": "pypi", - "version": "==1.13.0" + "version": "==1.21.1" }, "idna": { "hashes": [ - "sha256:156a6814fb5ac1fc6850fb002e0852d56c0c8d2531923a51032d1b70760e186e", - "sha256:684a38a6f903c1d71d6d5fac066b58d7768af4de2b832e426ec79c30daa94a16" + "sha256:c357b3f628cf53ae2c4c05627ecc484553142ca23264e593d327bcde5e9c3407", + "sha256:ea8b7f6188e6fa117537c3df7da9fc686d485087abf6ac197f9c46432f7e4a3c" ], - "version": "==2.7" + "version": "==2.8" }, "isort": { "hashes": [ - "sha256:1153601da39a25b14ddc54955dbbacbb6b2d19135386699e2ad58517953b34af", - "sha256:b9c40e9750f3d77e6e4d441d8b0266cf555e7cdabdcff33c4fd06366ca761ef8", - "sha256:ec9ef8f4a9bc6f71eec99e1806bfa2de401650d996c59330782b89a5555c1497" + "sha256:c40744b6bc5162bbb39c1257fe298b7a393861d50978b565f3ccd9cb9de0182a", + "sha256:f57abacd059dc3bd666258d1efb0377510a89777fda3e3274e3c01f7c03ae22d" ], - "version": "==4.3.4" + "version": "==4.3.20" }, "lazy-object-proxy": { "hashes": [ - "sha256:0ce34342b419bd8f018e6666bfef729aec3edf62345a53b537a4dcc115746a33", - "sha256:1b668120716eb7ee21d8a38815e5eb3bb8211117d9a90b0f8e21722c0758cc39", - "sha256:209615b0fe4624d79e50220ce3310ca1a9445fd8e6d3572a896e7f9146bbf019", - "sha256:27bf62cb2b1a2068d443ff7097ee33393f8483b570b475db8ebf7e1cba64f088", - "sha256:27ea6fd1c02dcc78172a82fc37fcc0992a94e4cecf53cb6d73f11749825bd98b", - "sha256:2c1b21b44ac9beb0fc848d3993924147ba45c4ebc24be19825e57aabbe74a99e", - "sha256:2df72ab12046a3496a92476020a1a0abf78b2a7db9ff4dc2036b8dd980203ae6", - "sha256:320ffd3de9699d3892048baee45ebfbbf9388a7d65d832d7e580243ade426d2b", - "sha256:50e3b9a464d5d08cc5227413db0d1c4707b6172e4d4d915c1c70e4de0bbff1f5", - "sha256:5276db7ff62bb7b52f77f1f51ed58850e315154249aceb42e7f4c611f0f847ff", - "sha256:61a6cf00dcb1a7f0c773ed4acc509cb636af2d6337a08f362413c76b2b47a8dd", - "sha256:6ae6c4cb59f199d8827c5a07546b2ab7e85d262acaccaacd49b62f53f7c456f7", - "sha256:7661d401d60d8bf15bb5da39e4dd72f5d764c5aff5a86ef52a042506e3e970ff", - "sha256:7bd527f36a605c914efca5d3d014170b2cb184723e423d26b1fb2fd9108e264d", - "sha256:7cb54db3535c8686ea12e9535eb087d32421184eacc6939ef15ef50f83a5e7e2", - "sha256:7f3a2d740291f7f2c111d86a1c4851b70fb000a6c8883a59660d95ad57b9df35", - "sha256:81304b7d8e9c824d058087dcb89144842c8e0dea6d281c031f59f0acf66963d4", - "sha256:933947e8b4fbe617a51528b09851685138b49d511af0b6c0da2539115d6d4514", - "sha256:94223d7f060301b3a8c09c9b3bc3294b56b2188e7d8179c762a1cda72c979252", - "sha256:ab3ca49afcb47058393b0122428358d2fbe0408cf99f1b58b295cfeb4ed39109", - "sha256:bd6292f565ca46dee4e737ebcc20742e3b5be2b01556dafe169f6c65d088875f", - "sha256:cb924aa3e4a3fb644d0c463cad5bc2572649a6a3f68a7f8e4fbe44aaa6d77e4c", - "sha256:d0fc7a286feac9077ec52a927fc9fe8fe2fabab95426722be4c953c9a8bede92", - "sha256:ddc34786490a6e4ec0a855d401034cbd1242ef186c20d79d2166d6a4bd449577", - "sha256:e34b155e36fa9da7e1b7c738ed7767fc9491a62ec6af70fe9da4a057759edc2d", - "sha256:e5b9e8f6bda48460b7b143c3821b21b452cb3a835e6bbd5dd33aa0c8d3f5137d", - "sha256:e81ebf6c5ee9684be8f2c87563880f93eedd56dd2b6146d8a725b50b7e5adb0f", - "sha256:eb91be369f945f10d3a49f5f9be8b3d0b93a4c2be8f8a5b83b0571b8123e0a7a", - "sha256:f460d1ceb0e4a5dcb2a652db0904224f367c9b3c1470d5a7683c0480e582468b" - ], - "version": "==1.3.1" + "sha256:159a745e61422217881c4de71f9eafd9d703b93af95618635849fe469a283661", + "sha256:23f63c0821cc96a23332e45dfaa83266feff8adc72b9bcaef86c202af765244f", + "sha256:3b11be575475db2e8a6e11215f5aa95b9ec14de658628776e10d96fa0b4dac13", + "sha256:3f447aff8bc61ca8b42b73304f6a44fa0d915487de144652816f950a3f1ab821", + "sha256:4ba73f6089cd9b9478bc0a4fa807b47dbdb8fad1d8f31a0f0a5dbf26a4527a71", + "sha256:4f53eadd9932055eac465bd3ca1bd610e4d7141e1278012bd1f28646aebc1d0e", + "sha256:64483bd7154580158ea90de5b8e5e6fc29a16a9b4db24f10193f0c1ae3f9d1ea", + "sha256:6f72d42b0d04bfee2397aa1862262654b56922c20a9bb66bb76b6f0e5e4f9229", + "sha256:7c7f1ec07b227bdc561299fa2328e85000f90179a2f44ea30579d38e037cb3d4", + "sha256:7c8b1ba1e15c10b13cad4171cfa77f5bb5ec2580abc5a353907780805ebe158e", + "sha256:8559b94b823f85342e10d3d9ca4ba5478168e1ac5658a8a2f18c991ba9c52c20", + "sha256:a262c7dfb046f00e12a2bdd1bafaed2408114a89ac414b0af8755c696eb3fc16", + "sha256:acce4e3267610c4fdb6632b3886fe3f2f7dd641158a843cf6b6a68e4ce81477b", + "sha256:be089bb6b83fac7f29d357b2dc4cf2b8eb8d98fe9d9ff89f9ea6012970a853c7", + "sha256:bfab710d859c779f273cc48fb86af38d6e9210f38287df0069a63e40b45a2f5c", + "sha256:c10d29019927301d524a22ced72706380de7cfc50f767217485a912b4c8bd82a", + "sha256:dd6e2b598849b3d7aee2295ac765a578879830fb8966f70be8cd472e6069932e", + "sha256:e408f1eacc0a68fed0c08da45f31d0ebb38079f043328dce69ff133b95c29dc1" + ], + "version": "==1.4.1" }, "mccabe": { "hashes": [ @@ -266,123 +281,140 @@ }, "pkginfo": { "hashes": [ - "sha256:5878d542a4b3f237e359926384f1dde4e099c9f5525d236b1840cf704fa8d474", - "sha256:a39076cb3eb34c333a0dd390b568e9e1e881c7bf2cc0aee12120636816f55aee" + "sha256:7424f2c8511c186cd5424bbf31045b77435b37a8d604990b79d4e70d741148bb", + "sha256:a6d9e40ca61ad3ebd0b72fbadd4fba16e4c0e4df0428c041e01e06eb6ee71f32" ], - "version": "==1.4.2" + "version": "==1.5.0.1" }, "protobuf": { "hashes": [ - "sha256:12985d9f40c104da2f44ec089449214876809b40fdc5d9e43b93b512b9e74056", - "sha256:12c97fe27af12fc5d66b23f905ab09dd4fb0c68d5a74a419d914580e6d2e71e3", - "sha256:327fb9d8a8247bc780b9ea7ed03c0643bc0d22c139b761c9ec1efc7cc3f0923e", - "sha256:3895319db04c0b3baed74fb66be7ba9f4cd8e88a432b8e71032cdf08b2dfee23", - "sha256:695072063e256d32335d48b9484451f7c7948edc3dbd419469d6a778602682fc", - "sha256:7d786f3ef5b33a04e6538089674f244a3b0f588155016559d950989010af97d0", - "sha256:8bf82bb7a466a54be7272dcb492f71d55a2453a58d862fb74c3f2083f2768543", - "sha256:9bbc1ae1c33c1bd3a2fc05a3aec328544d2b039ff0ce6f000063628a32fad777", - "sha256:9e992c68103ab5635728d29fcf132c669cb4e2db24d012685210276185009d17", - "sha256:9f1087abb67b34e55108bc610936b34363a7aac692023bcbb17e065c253a1f80", - "sha256:9fefcb92a3784b446abf3641d9a14dad815bee88e0edd10b9a9e0e144d01a991", - "sha256:a37836aa47d1b81c2db1a6b7a5e79926062b5d76bd962115a0e615551be2b48d", - "sha256:cca22955443c55cf86f963a4ad7057bca95e4dcde84d6a493066d380cfab3bb0", - "sha256:d7ac50bc06d31deb07ace6de85556c1d7330e5c0958f3b2af85037d6d1182abf", - "sha256:dfe6899304b898538f4dc94fa0b281b56b70e40f58afa4c6f807805261cbe2e8" + "sha256:03f43eac9d5b651f976e91cf46a25b75e5779d98f0f4114b0abfed83376d75f8", + "sha256:0c94b21e6de01362f91a86b372555d22a60b59708599ca9d5032ae9fdf8e3538", + "sha256:2d2a9f30f61f4063fadd7fb68a2510a6939b43c0d6ceeec5c4704f22225da28e", + "sha256:34a0b05fca061e4abb77dd180209f68d8637115ff319f51e28a6a9382d69853a", + "sha256:358710fd0db25372edcf1150fa691f48376a134a6c69ce29f38f185eea7699e6", + "sha256:41e47198b94c27ba05a08b4a95160656105745c462af574e4bcb0807164065c0", + "sha256:8c61cc8a76e9d381c665aecc5105fa0f1878cf7db8b5cd17202603bcb386d0fc", + "sha256:a6eebc4db759e58fdac02efcd3028b811effac881d8a5bad1996e4e8ee6acb47", + "sha256:a9c12f7c98093da0a46ba76ec40ace725daa1ac4038c41e4b1466afb5c45bb01", + "sha256:cb95068492ba0859b8c9e61fa8ba206a83c64e5d0916fb4543700b2e2b214115", + "sha256:cd98476ce7bb4dcd6a7b101f5eecdc073dafea19f311e36eb8fba1a349346277", + "sha256:ce64cfbea18c535176bdaa10ba740c0fc4c6d998a3f511c17bedb0ae4b3b167c", + "sha256:dcbb59eac73fd454e8f2c5fba9e3d3320fd4707ed6a9d3ea3717924a6f0903ea", + "sha256:dd67f34458ae716029e2a71ede998e9092493b62a519236ca52e3c5202096c87", + "sha256:e3c96056eb5b7284a20e256cb0bf783c8f36ad82a4ae5434a7b7cd02384144a7", + "sha256:f612d584d7a27e2f39e7b17878430a959c1bc09a74ba09db096b468558e5e126", + "sha256:f6de8a7d6122297b81566e5bd4df37fd5d62bec14f8f90ebff8ede1c9726cd0a", + "sha256:fa529d9261682b24c2aaa683667253175c9acebe0a31105394b221090da75832" ], "index": "pypi", - "version": "==3.6.0" + "version": "==3.8.0" + }, + "pygments": { + "hashes": [ + "sha256:71e430bc85c88a430f000ac1d9b331d2407f681d6f6aec95e8bcfbc3df5b0127", + "sha256:881c4c157e45f30af185c1ffe8d549d48ac9127433f2c380c24b84572ad66297" + ], + "version": "==2.4.2" }, "pylint": { "hashes": [ - "sha256:285c9ae7255acb584057fe31051a37498985e632b99fc0ec93b7eb38a1b137f9", - "sha256:dd5c0fc4e6a4cb9483a4367699099a7dfc8a13de9ecac4cb16855ffac68d49de" + "sha256:5d77031694a5fb97ea95e828c8d10fc770a1df6eb3906067aaed42201a8a6a09", + "sha256:723e3db49555abaf9bf79dc474c6b9e2935ad82230b10c1138a71ea41ac0fff1" ], "index": "pypi", - "version": "==2.0.0.dev2" + "version": "==2.3.1" + }, + "readme-renderer": { + "hashes": [ + "sha256:bb16f55b259f27f75f640acf5e00cf897845a8b3e4731b5c1a436e4b8529202f", + "sha256:c8532b79afc0375a85f10433eca157d6b50f7d6990f337fa498c96cd4bfc203d" + ], + "version": "==24.0" }, "requests": { "hashes": [ - "sha256:63b52e3c866428a224f97cab011de738c36aec0185aa91cfacd418b5d58911d1", - "sha256:ec22d826a36ed72a7358ff3fe56cbd4ba69dd7a6718ffd450ff0e9df7a47ce6a" + "sha256:11e007a8a2aa0323f5a921e9e6a2d7e4e67d9877e85773fba9ba6419025cbeb4", + "sha256:9cf5292fcd0f598c671cfc1e0d7d1a7f13bb8085e9a590f48c010551dc6c4b31" ], - "version": "==2.19.1" + "version": "==2.22.0" }, "requests-toolbelt": { "hashes": [ - "sha256:42c9c170abc2cacb78b8ab23ac957945c7716249206f90874651971a4acff237", - "sha256:f6a531936c6fa4c6cfce1b9c10d5c4f498d16528d2a54a22ca00011205a187b5" + "sha256:380606e1d10dc85c3bd47bf5a6095f815ec007be7a8b69c878507068df059e6f", + "sha256:968089d4584ad4ad7c171454f0a5c6dac23971e9472521ea3b6d49d610aa6fc0" ], - "version": "==0.8.0" + "version": "==0.9.1" }, "six": { "hashes": [ - "sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9", - "sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb" + "sha256:3350809f0555b11f552448330d0b52d5f24c91a322ea4a15ef22629740f3761c", + "sha256:d16a0141ec1a18405cd4ce8b4613101da75da0e9a7aec5bdd4fa804d0e0eba73" ], - "version": "==1.11.0" + "version": "==1.12.0" }, "toml": { "hashes": [ - "sha256:8e86bd6ce8cc11b9620cb637466453d94f5d57ad86f17e98a98d1f73e3baab2d" + "sha256:229f81c57791a41d65e399fc06bf0848bab550a9dfd5ed66df18ce5f05e73d5c", + "sha256:235682dd292d5899d361a811df37e04a8828a5b1da3115886b73cf81ebc9100e" ], - "version": "==0.9.4" + "version": "==0.10.0" }, "tqdm": { "hashes": [ - "sha256:224291ee0d8c52d91b037fd90806f48c79bcd9994d3b0abc9e44b946a908fccd", - "sha256:77b8424d41b31e68f437c6dd9cd567aebc9a860507cb42fbd880a5f822d966fe" + "sha256:0a860bf2683fdbb4812fe539a6c22ea3f1777843ea985cb8c3807db448a0f7ab", + "sha256:e288416eecd4df19d12407d0c913cbf77aa8009d7fddb18f632aded3bdbdda6b" ], - "version": "==4.23.4" + "version": "==4.32.1" }, "twine": { "hashes": [ - "sha256:08eb132bbaec40c6d25b358f546ec1dc96ebd2638a86eea68769d9e67fe2b129", - "sha256:2fd9a4d9ff0bcacf41fdc40c8cb0cfaef1f1859457c9653fd1b92237cc4e9f25" + "sha256:0fb0bfa3df4f62076cab5def36b1a71a2e4acb4d1fa5c97475b048117b1a6446", + "sha256:d6c29c933ecfc74e9b1d9fa13aa1f87c5d5770e119f5a4ce032092f0ff5b14dc" ], "index": "pypi", - "version": "==1.11.0" + "version": "==1.13.0" }, "typed-ast": { "hashes": [ - "sha256:0948004fa228ae071054f5208840a1e88747a357ec1101c17217bfe99b299d58", - "sha256:10703d3cec8dcd9eef5a630a04056bbc898abc19bac5691612acba7d1325b66d", - "sha256:1f6c4bd0bdc0f14246fd41262df7dfc018d65bb05f6e16390b7ea26ca454a291", - "sha256:25d8feefe27eb0303b73545416b13d108c6067b846b543738a25ff304824ed9a", - "sha256:29464a177d56e4e055b5f7b629935af7f49c196be47528cc94e0a7bf83fbc2b9", - "sha256:2e214b72168ea0275efd6c884b114ab42e316de3ffa125b267e732ed2abda892", - "sha256:3e0d5e48e3a23e9a4d1a9f698e32a542a4a288c871d33ed8df1b092a40f3a0f9", - "sha256:519425deca5c2b2bdac49f77b2c5625781abbaf9a809d727d3a5596b30bb4ded", - "sha256:57fe287f0cdd9ceaf69e7b71a2e94a24b5d268b35df251a88fef5cc241bf73aa", - "sha256:668d0cec391d9aed1c6a388b0d5b97cd22e6073eaa5fbaa6d2946603b4871efe", - "sha256:68ba70684990f59497680ff90d18e756a47bf4863c604098f10de9716b2c0bdd", - "sha256:6de012d2b166fe7a4cdf505eee3aaa12192f7ba365beeefaca4ec10e31241a85", - "sha256:79b91ebe5a28d349b6d0d323023350133e927b4de5b651a8aa2db69c761420c6", - "sha256:8550177fa5d4c1f09b5e5f524411c44633c80ec69b24e0e98906dd761941ca46", - "sha256:898f818399cafcdb93cbbe15fc83a33d05f18e29fb498ddc09b0214cdfc7cd51", - "sha256:94b091dc0f19291adcb279a108f5d38de2430411068b219f41b343c03b28fb1f", - "sha256:a26863198902cda15ab4503991e8cf1ca874219e0118cbf07c126bce7c4db129", - "sha256:a8034021801bc0440f2e027c354b4eafd95891b573e12ff0418dec385c76785c", - "sha256:bc978ac17468fe868ee589c795d06777f75496b1ed576d308002c8a5756fb9ea", - "sha256:c05b41bc1deade9f90ddc5d988fe506208019ebba9f2578c622516fd201f5863", - "sha256:c9b060bd1e5a26ab6e8267fd46fc9e02b54eb15fffb16d112d4c7b1c12987559", - "sha256:edb04bdd45bfd76c8292c4d9654568efaedf76fe78eb246dde69bdb13b2dad87", - "sha256:f19f2a4f547505fe9072e15f6f4ae714af51b5a681a97f187971f50c283193b6" - ], - "markers": "python_version < '3.7' and implementation_name == 'cpython'", - "version": "==1.1.0" + "sha256:18511a0b3e7922276346bcb47e2ef9f38fb90fd31cb9223eed42c85d1312344e", + "sha256:262c247a82d005e43b5b7f69aff746370538e176131c32dda9cb0f324d27141e", + "sha256:2b907eb046d049bcd9892e3076c7a6456c93a25bebfe554e931620c90e6a25b0", + "sha256:354c16e5babd09f5cb0ee000d54cfa38401d8b8891eefa878ac772f827181a3c", + "sha256:4e0b70c6fc4d010f8107726af5fd37921b666f5b31d9331f0bd24ad9a088e631", + "sha256:630968c5cdee51a11c05a30453f8cd65e0cc1d2ad0d9192819df9978984529f4", + "sha256:66480f95b8167c9c5c5c87f32cf437d585937970f3fc24386f313a4c97b44e34", + "sha256:71211d26ffd12d63a83e079ff258ac9d56a1376a25bc80b1cdcdf601b855b90b", + "sha256:95bd11af7eafc16e829af2d3df510cecfd4387f6453355188342c3e79a2ec87a", + "sha256:bc6c7d3fa1325a0c6613512a093bc2a2a15aeec350451cbdf9e1d4bffe3e3233", + "sha256:cc34a6f5b426748a507dd5d1de4c1978f2eb5626d51326e43280941206c209e1", + "sha256:d755f03c1e4a51e9b24d899561fec4ccaf51f210d52abdf8c07ee2849b212a36", + "sha256:d7c45933b1bdfaf9f36c579671fec15d25b06c8398f113dab64c18ed1adda01d", + "sha256:d896919306dd0aa22d0132f62a1b78d11aaf4c9fc5b3410d3c666b818191630a", + "sha256:ffde2fbfad571af120fcbfbbc61c72469e72f550d676c3342492a9dfdefb8f12" + ], + "markers": "implementation_name == 'cpython'", + "version": "==1.4.0" }, "urllib3": { "hashes": [ - "sha256:a68ac5e15e76e7e5dd2b8f94007233e01effe3e50e8daddf69acfd81cb686baf", - "sha256:b5725a0bd4ba422ab0e66e89e030c806576753ea3ee08554382c14e685d117b5" + "sha256:b246607a25ac80bedac05c6f282e3cdaf3afb65420fd024ac94435cabe6e18d1", + "sha256:dbe59173209418ae49d485b87d1681aefa36252ee85884c31346debd19463232" + ], + "version": "==1.25.3" + }, + "webencodings": { + "hashes": [ + "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", + "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923" ], - "version": "==1.23" + "version": "==0.5.1" }, "wrapt": { "hashes": [ - "sha256:d4d560d479f2c21e1b5443bbd15fe7ec4b37fe7e53d335d3b9b0a7b1226fe3c6" + "sha256:4aea003270831cceb8a90ff27c4031da6ead7ec1886023b80ce0dfe0adf61533" ], - "version": "==1.10.11" + "version": "==1.11.1" } } } diff --git a/nxos_grpc/mdt_server.py b/nxos_grpc/mdt_server.py new file mode 100644 index 0000000..c97e0ea --- /dev/null +++ b/nxos_grpc/mdt_server.py @@ -0,0 +1,157 @@ +"""Copyright 2019 Cisco Systems + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +""" + +"""NX-OS gRPC Python MDT dialout server.""" + +from concurrent import futures +from threading import Lock +import grpc +from . import proto + + +def create_mdt_server( + insecure_addresses=["[::]:50051"], secure_addresses=[], max_workers=10 +): + """Utility method to start up a gRPC server receiving NX-OS MDT. + Derived from gRPC Basics - Python documentation. + https://grpc.io/docs/tutorials/basic/python/ + + Parameters + ---------- + insecure_addresses : list, optional + A list of strings which are IP:port(s) to serve without security. + This or secure_addresses must be specified. + secure_addresses : list, optional + A list of tuples which are (address, server_credential) to serve with security. + This or insecure_addresses must be specified. + max_workers : int, optional + The number of concurrent workers to handle RPCs. + + Returns + ------- + grpc_server : gRPC Server + The gRPC server instance spun up for usage. + Used to start/stop server. + mdt_server : MDTServer + The MDTServer instance. + Used to add callbacks to handle messages. + """ + grpc_server = grpc.server(futures.ThreadPoolExecutor(max_workers=max_workers)) + mdt_server = MDTServer() + proto.add_gRPCMdtDialoutServicer_to_server(mdt_server, grpc_server) + for address in insecure_addresses: + grpc_server.add_insecure_port(address) + for address, credential in secure_addresses: + grpc_server.add_secure_port(address, credential) + grpc_server.start() + return grpc_server, mdt_server + + +class MDTServer(proto.gRPCMdtDialoutServicer): + """NX-OS gRPC MDT dialout server implementation. + + Data is propagated to interested parties via callbacks. + + Methods + ------- + add_callback(...) + Add a function signature to be called per message for handling. + + Examples + -------- + >>> from nxos_grpc import create_mdt_server + >>> grpc_server, mdt_server = create_mdt_server() + >>> def nothing_much(message): + ... print(message) + >>> mdt_server.add_callback(nothing_much) + ... + """ + + def __init__(self): + """Initializes the MDTServer object and internal state items. + """ + # Uncertain if we need a lock, but concurrency + self.__chunk_map_lock = Lock() + # Map to store all our chunks + self.__chunk_map = {} + # Callbacks we've been provided + self.__callbacks = [] + + def add_callback(self, func): + """Add a callback to handle each MDT message. + + Parameters + ---------- + func : function + The function signature to be called for callback. + """ + self.__callbacks.append(func) + + def MdtDialout(self, request_iterator, context): + """Services the MDT messages from NX-OS.""" + for message_chunk in request_iterator: + telemetry_pb = self.__assemble_telemetry_pb(message_chunk) + if telemetry_pb is not None: + for callback in self.__callbacks: + callback(telemetry_pb) + yield proto.MdtDialoutArgs(ReqId=message_chunk.ReqId) + + def __assemble_telemetry_pb(self, message_chunk): + """Handles NX-OS telemetry chunking. + Stores chunked messages in self.__chunk_map and returns + fully assembled messages once they match the specified totalSize. + """ + message = None + if len(message_chunk.data) < message_chunk.totalSize: + # Need to begin storing to reassemble + with self.__chunk_map_lock: + if message_chunk.ReqId in self.__chunk_map: + self.__chunk_map[message.ReqId] += message_chunk.data + else: + self.__chunk_map[message.ReqId] = message_chunk.data + if ( + len(self.__chunk_map[message_chunk.ReqId]) + == message_chunk.totalSize + ): + message = proto.Telemetry() + message.ParseFromString(self.__chunk_map.pop(message_chunk.ReqId)) + elif ( + len(self.__chunk_map[message_chunk.ReqId]) > message_chunk.totalSize + ): + raise Exception( + "Message %s assembly (%i) is larger than totalSize (%i)!" + % ( + str(message_chunk.ReqId), + len(self.__chunk_map[message_chunk.ReqId]), + message_chunk.totalSize, + ) + ) + elif ( + message_chunk.totalSize + and len(message_chunk.data) > message_chunk.totalSize + ): + raise Exception( + "Message %s chunk (%i) is larger than totalSize (%i)!" + % ( + str(message_chunk.ReqId), + len(message_chunk.data), + message_chunk.totalSize, + ) + ) + else: + # message_chunk is a complete telemetry message + message = proto.Telemetry() + message.ParseFromString(message_chunk.data) + return message diff --git a/nxos_grpc/proto/__init__.py b/nxos_grpc/proto/__init__.py index 2412a68..818ae91 100644 --- a/nxos_grpc/proto/__init__.py +++ b/nxos_grpc/proto/__init__.py @@ -1,4 +1,4 @@ -from .nxos_grpc_pb2_grpc import gRPCConfigOperStub +from .telemetry_bis_pb2 import Telemetry from .nxos_grpc_pb2 import ( GetOperArgs, GetArgs, @@ -8,3 +8,9 @@ CloseSessionArgs, KillArgs, ) +from .nxos_grpc_pb2_grpc import gRPCConfigOperStub +from .mdt_dialout_pb2 import MdtDialoutArgs +from .mdt_dialout_pb2_grpc import ( + gRPCMdtDialoutServicer, + add_gRPCMdtDialoutServicer_to_server, +) diff --git a/nxos_grpc/proto/mdt_dialout.proto b/nxos_grpc/proto/mdt_dialout.proto new file mode 100644 index 0000000..5178ef1 --- /dev/null +++ b/nxos_grpc/proto/mdt_dialout.proto @@ -0,0 +1,14 @@ +syntax = "proto3"; + +package mdt_dialout; + +service gRPCMdtDialout { + rpc MdtDialout(stream MdtDialoutArgs) returns(stream MdtDialoutArgs) {}; +} + +message MdtDialoutArgs { + int64 ReqId = 1; + bytes data = 2; + string errors = 3; + int32 totalSize = 4; // Set for messages that are chunked, it contains the original message size. +} diff --git a/nxos_grpc/proto/mdt_dialout_pb2.py b/nxos_grpc/proto/mdt_dialout_pb2.py new file mode 100644 index 0000000..46978e0 --- /dev/null +++ b/nxos_grpc/proto/mdt_dialout_pb2.py @@ -0,0 +1,115 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: nxos_grpc/proto/mdt_dialout.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='nxos_grpc/proto/mdt_dialout.proto', + package='mdt_dialout', + syntax='proto3', + serialized_options=None, + serialized_pb=_b('\n!nxos_grpc/proto/mdt_dialout.proto\x12\x0bmdt_dialout\"P\n\x0eMdtDialoutArgs\x12\r\n\x05ReqId\x18\x01 \x01(\x03\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\x12\x0e\n\x06\x65rrors\x18\x03 \x01(\t\x12\x11\n\ttotalSize\x18\x04 \x01(\x05\x32^\n\x0egRPCMdtDialout\x12L\n\nMdtDialout\x12\x1b.mdt_dialout.MdtDialoutArgs\x1a\x1b.mdt_dialout.MdtDialoutArgs\"\x00(\x01\x30\x01\x62\x06proto3') +) + + + + +_MDTDIALOUTARGS = _descriptor.Descriptor( + name='MdtDialoutArgs', + full_name='mdt_dialout.MdtDialoutArgs', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='ReqId', full_name='mdt_dialout.MdtDialoutArgs.ReqId', index=0, + number=1, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='data', full_name='mdt_dialout.MdtDialoutArgs.data', index=1, + number=2, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='errors', full_name='mdt_dialout.MdtDialoutArgs.errors', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='totalSize', full_name='mdt_dialout.MdtDialoutArgs.totalSize', index=3, + number=4, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=50, + serialized_end=130, +) + +DESCRIPTOR.message_types_by_name['MdtDialoutArgs'] = _MDTDIALOUTARGS +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +MdtDialoutArgs = _reflection.GeneratedProtocolMessageType('MdtDialoutArgs', (_message.Message,), dict( + DESCRIPTOR = _MDTDIALOUTARGS, + __module__ = 'nxos_grpc.proto.mdt_dialout_pb2' + # @@protoc_insertion_point(class_scope:mdt_dialout.MdtDialoutArgs) + )) +_sym_db.RegisterMessage(MdtDialoutArgs) + + + +_GRPCMDTDIALOUT = _descriptor.ServiceDescriptor( + name='gRPCMdtDialout', + full_name='mdt_dialout.gRPCMdtDialout', + file=DESCRIPTOR, + index=0, + serialized_options=None, + serialized_start=132, + serialized_end=226, + methods=[ + _descriptor.MethodDescriptor( + name='MdtDialout', + full_name='mdt_dialout.gRPCMdtDialout.MdtDialout', + index=0, + containing_service=None, + input_type=_MDTDIALOUTARGS, + output_type=_MDTDIALOUTARGS, + serialized_options=None, + ), +]) +_sym_db.RegisterServiceDescriptor(_GRPCMDTDIALOUT) + +DESCRIPTOR.services_by_name['gRPCMdtDialout'] = _GRPCMDTDIALOUT + +# @@protoc_insertion_point(module_scope) diff --git a/nxos_grpc/proto/mdt_dialout_pb2_grpc.py b/nxos_grpc/proto/mdt_dialout_pb2_grpc.py new file mode 100644 index 0000000..5631db3 --- /dev/null +++ b/nxos_grpc/proto/mdt_dialout_pb2_grpc.py @@ -0,0 +1,46 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +import grpc + +from nxos_grpc.proto import mdt_dialout_pb2 as nxos__grpc_dot_proto_dot_mdt__dialout__pb2 + + +class gRPCMdtDialoutStub(object): + # missing associated documentation comment in .proto file + pass + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.MdtDialout = channel.stream_stream( + '/mdt_dialout.gRPCMdtDialout/MdtDialout', + request_serializer=nxos__grpc_dot_proto_dot_mdt__dialout__pb2.MdtDialoutArgs.SerializeToString, + response_deserializer=nxos__grpc_dot_proto_dot_mdt__dialout__pb2.MdtDialoutArgs.FromString, + ) + + +class gRPCMdtDialoutServicer(object): + # missing associated documentation comment in .proto file + pass + + def MdtDialout(self, request_iterator, context): + # missing associated documentation comment in .proto file + pass + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_gRPCMdtDialoutServicer_to_server(servicer, server): + rpc_method_handlers = { + 'MdtDialout': grpc.stream_stream_rpc_method_handler( + servicer.MdtDialout, + request_deserializer=nxos__grpc_dot_proto_dot_mdt__dialout__pb2.MdtDialoutArgs.FromString, + response_serializer=nxos__grpc_dot_proto_dot_mdt__dialout__pb2.MdtDialoutArgs.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'mdt_dialout.gRPCMdtDialout', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) diff --git a/nxos_grpc/proto/nxos_grpc_pb2.py b/nxos_grpc/proto/nxos_grpc_pb2.py index 4afc6ec..5d141a3 100644 --- a/nxos_grpc/proto/nxos_grpc_pb2.py +++ b/nxos_grpc/proto/nxos_grpc_pb2.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: nxos_grpc/proto/nxos_grpc.proto @@ -7,7 +8,6 @@ from google.protobuf import message as _message from google.protobuf import reflection as _reflection from google.protobuf import symbol_database as _symbol_database -from google.protobuf import descriptor_pb2 # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -19,6 +19,7 @@ name='nxos_grpc/proto/nxos_grpc.proto', package='NXOSExtensibleManagabilityService', syntax='proto3', + serialized_options=None, serialized_pb=_b('\n\x1fnxos_grpc/proto/nxos_grpc.proto\x12!NXOSExtensibleManagabilityService\"@\n\rGetConfigArgs\x12\x10\n\x08YangPath\x18\x01 \x01(\t\x12\r\n\x05ReqID\x18\x02 \x01(\x03\x12\x0e\n\x06Source\x18\x03 \x01(\t\"A\n\x0eGetConfigReply\x12\r\n\x05ReqID\x18\x01 \x01(\x03\x12\x10\n\x08YangData\x18\x02 \x01(\t\x12\x0e\n\x06\x45rrors\x18\x03 \x01(\t\".\n\x0bGetOperArgs\x12\x10\n\x08YangPath\x18\x01 \x01(\t\x12\r\n\x05ReqID\x18\x02 \x01(\x03\"?\n\x0cGetOperReply\x12\r\n\x05ReqID\x18\x01 \x01(\x03\x12\x10\n\x08YangData\x18\x02 \x01(\t\x12\x0e\n\x06\x45rrors\x18\x03 \x01(\t\"*\n\x07GetArgs\x12\x10\n\x08YangPath\x18\x01 \x01(\t\x12\r\n\x05ReqID\x18\x02 \x01(\x03\";\n\x08GetReply\x12\r\n\x05ReqID\x18\x01 \x01(\x03\x12\x10\n\x08YangData\x18\x02 \x01(\t\x12\x0e\n\x06\x45rrors\x18\x03 \x01(\t\"\x87\x01\n\x0e\x45\x64itConfigArgs\x12\x10\n\x08YangPath\x18\x01 \x01(\t\x12\x11\n\tOperation\x18\x02 \x01(\t\x12\x11\n\tSessionID\x18\x03 \x01(\x03\x12\r\n\x05ReqID\x18\x04 \x01(\x03\x12\x0e\n\x06Target\x18\x05 \x01(\t\x12\r\n\x05\x44\x65\x66Op\x18\x06 \x01(\t\x12\x0f\n\x07\x45rrorOp\x18\x07 \x01(\t\"B\n\x0f\x45\x64itConfigReply\x12\r\n\x05ReqID\x18\x01 \x01(\x03\x12\x10\n\x08YangData\x18\x02 \x01(\t\x12\x0e\n\x06\x45rrors\x18\x03 \x01(\t\"D\n\x10\x44\x65leteConfigArgs\x12\x11\n\tSessionID\x18\x01 \x01(\x03\x12\r\n\x05ReqID\x18\x02 \x01(\x03\x12\x0e\n\x06Target\x18\x03 \x01(\t\"D\n\x11\x44\x65leteConfigReply\x12\r\n\x05ReqID\x18\x01 \x01(\x03\x12\x10\n\x08YangData\x18\x02 \x01(\t\x12\x0e\n\x06\x45rrors\x18\x03 \x01(\t\"R\n\x0e\x43opyConfigArgs\x12\x11\n\tSessionID\x18\x01 \x01(\x03\x12\r\n\x05ReqID\x18\x02 \x01(\x03\x12\x0e\n\x06Source\x18\x03 \x01(\t\x12\x0e\n\x06Target\x18\x04 \x01(\t\"B\n\x0f\x43opyConfigReply\x12\r\n\x05ReqID\x18\x01 \x01(\x03\x12\x10\n\x08YangData\x18\x02 \x01(\t\x12\x0e\n\x06\x45rrors\x18\x03 \x01(\t\"<\n\x08LockArgs\x12\x11\n\tSessionID\x18\x01 \x01(\x03\x12\r\n\x05ReqID\x18\x02 \x01(\x03\x12\x0e\n\x06Target\x18\x03 \x01(\t\"<\n\tLockReply\x12\r\n\x05ReqID\x18\x01 \x01(\x03\x12\x10\n\x08YangData\x18\x02 \x01(\t\x12\x0e\n\x06\x45rrors\x18\x03 \x01(\t\">\n\nUnLockArgs\x12\x11\n\tSessionID\x18\x01 \x01(\x03\x12\r\n\x05ReqID\x18\x02 \x01(\x03\x12\x0e\n\x06Target\x18\x03 \x01(\t\">\n\x0bUnLockReply\x12\r\n\x05ReqID\x18\x01 \x01(\x03\x12\x10\n\x08YangData\x18\x02 \x01(\t\x12\x0e\n\x06\x45rrors\x18\x03 \x01(\t\"\x1c\n\x0bSessionArgs\x12\r\n\x05ReqID\x18\x01 \x01(\x03\"@\n\x0cSessionReply\x12\r\n\x05ReqID\x18\x01 \x01(\x03\x12\x11\n\tSessionID\x18\x02 \x01(\x03\x12\x0e\n\x06\x45rrors\x18\x03 \x01(\t\"4\n\x10\x43loseSessionArgs\x12\r\n\x05ReqID\x18\x01 \x01(\x03\x12\x11\n\tSessionID\x18\x02 \x01(\x03\"D\n\x11\x43loseSessionReply\x12\r\n\x05ReqID\x18\x01 \x01(\x03\x12\x10\n\x08YangData\x18\x02 \x01(\t\x12\x0e\n\x06\x45rrors\x18\x03 \x01(\t\"E\n\x08KillArgs\x12\x11\n\tSessionID\x18\x01 \x01(\x03\x12\x17\n\x0fSessionIDToKill\x18\x02 \x01(\x03\x12\r\n\x05ReqID\x18\x03 \x01(\x03\"<\n\tKillReply\x12\r\n\x05ReqID\x18\x01 \x01(\x03\x12\x10\n\x08YangData\x18\x02 \x01(\t\x12\x0e\n\x06\x45rrors\x18\x03 \x01(\t\"0\n\x0cValidateArgs\x12\x11\n\tSessionID\x18\x01 \x01(\x03\x12\r\n\x05ReqID\x18\x02 \x01(\x03\"@\n\rValidateReply\x12\r\n\x05ReqID\x18\x01 \x01(\x03\x12\x10\n\x08YangData\x18\x02 \x01(\t\x12\x0e\n\x06\x45rrors\x18\x03 \x01(\t\".\n\nCommitArgs\x12\x11\n\tSessionID\x18\x01 \x01(\x03\x12\r\n\x05ReqID\x18\x02 \x01(\x03\">\n\x0b\x43ommitReply\x12\r\n\x05ReqID\x18\x01 \x01(\x03\x12\x10\n\x08YangData\x18\x02 \x01(\t\x12\x0e\n\x06\x45rrors\x18\x03 \x01(\t\"-\n\tAbortArgs\x12\x11\n\tSessionID\x18\x01 \x01(\x03\x12\r\n\x05ReqID\x18\x02 \x01(\x03\"=\n\nAbortReply\x12\r\n\x05ReqID\x18\x01 \x01(\x03\x12\x10\n\x08YangData\x18\x02 \x01(\t\x12\x0e\n\x06\x45rrors\x18\x03 \x01(\t2\xb5\x0c\n\x0egRPCConfigOper\x12t\n\tGetConfig\x12\x30.NXOSExtensibleManagabilityService.GetConfigArgs\x1a\x31.NXOSExtensibleManagabilityService.GetConfigReply\"\x00\x30\x01\x12n\n\x07GetOper\x12..NXOSExtensibleManagabilityService.GetOperArgs\x1a/.NXOSExtensibleManagabilityService.GetOperReply\"\x00\x30\x01\x12\x62\n\x03Get\x12*.NXOSExtensibleManagabilityService.GetArgs\x1a+.NXOSExtensibleManagabilityService.GetReply\"\x00\x30\x01\x12u\n\nEditConfig\x12\x31.NXOSExtensibleManagabilityService.EditConfigArgs\x1a\x32.NXOSExtensibleManagabilityService.EditConfigReply\"\x00\x12q\n\x0cStartSession\x12..NXOSExtensibleManagabilityService.SessionArgs\x1a/.NXOSExtensibleManagabilityService.SessionReply\"\x00\x12{\n\x0c\x43loseSession\x12\x33.NXOSExtensibleManagabilityService.CloseSessionArgs\x1a\x34.NXOSExtensibleManagabilityService.CloseSessionReply\"\x00\x12j\n\x0bKillSession\x12+.NXOSExtensibleManagabilityService.KillArgs\x1a,.NXOSExtensibleManagabilityService.KillReply\"\x00\x12{\n\x0c\x44\x65leteConfig\x12\x33.NXOSExtensibleManagabilityService.DeleteConfigArgs\x1a\x34.NXOSExtensibleManagabilityService.DeleteConfigReply\"\x00\x12u\n\nCopyConfig\x12\x31.NXOSExtensibleManagabilityService.CopyConfigArgs\x1a\x32.NXOSExtensibleManagabilityService.CopyConfigReply\"\x00\x12\x63\n\x04Lock\x12+.NXOSExtensibleManagabilityService.LockArgs\x1a,.NXOSExtensibleManagabilityService.LockReply\"\x00\x12i\n\x06UnLock\x12-.NXOSExtensibleManagabilityService.UnLockArgs\x1a..NXOSExtensibleManagabilityService.UnLockReply\"\x00\x12i\n\x06\x43ommit\x12-.NXOSExtensibleManagabilityService.CommitArgs\x1a..NXOSExtensibleManagabilityService.CommitReply\"\x00\x12o\n\x08Validate\x12/.NXOSExtensibleManagabilityService.ValidateArgs\x1a\x30.NXOSExtensibleManagabilityService.ValidateReply\"\x00\x12\x66\n\x05\x41\x62ort\x12,.NXOSExtensibleManagabilityService.AbortArgs\x1a-.NXOSExtensibleManagabilityService.AbortReply\"\x00\x62\x06proto3') ) @@ -38,28 +39,28 @@ has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='ReqID', full_name='NXOSExtensibleManagabilityService.GetConfigArgs.ReqID', index=1, number=2, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='Source', full_name='NXOSExtensibleManagabilityService.GetConfigArgs.Source', index=2, number=3, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), ], extensions=[ ], nested_types=[], enum_types=[ ], - options=None, + serialized_options=None, is_extendable=False, syntax='proto3', extension_ranges=[], @@ -83,28 +84,28 @@ has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='YangData', full_name='NXOSExtensibleManagabilityService.GetConfigReply.YangData', index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='Errors', full_name='NXOSExtensibleManagabilityService.GetConfigReply.Errors', index=2, number=3, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), ], extensions=[ ], nested_types=[], enum_types=[ ], - options=None, + serialized_options=None, is_extendable=False, syntax='proto3', extension_ranges=[], @@ -128,21 +129,21 @@ has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='ReqID', full_name='NXOSExtensibleManagabilityService.GetOperArgs.ReqID', index=1, number=2, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), ], extensions=[ ], nested_types=[], enum_types=[ ], - options=None, + serialized_options=None, is_extendable=False, syntax='proto3', extension_ranges=[], @@ -166,28 +167,28 @@ has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='YangData', full_name='NXOSExtensibleManagabilityService.GetOperReply.YangData', index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='Errors', full_name='NXOSExtensibleManagabilityService.GetOperReply.Errors', index=2, number=3, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), ], extensions=[ ], nested_types=[], enum_types=[ ], - options=None, + serialized_options=None, is_extendable=False, syntax='proto3', extension_ranges=[], @@ -211,21 +212,21 @@ has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='ReqID', full_name='NXOSExtensibleManagabilityService.GetArgs.ReqID', index=1, number=2, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), ], extensions=[ ], nested_types=[], enum_types=[ ], - options=None, + serialized_options=None, is_extendable=False, syntax='proto3', extension_ranges=[], @@ -249,28 +250,28 @@ has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='YangData', full_name='NXOSExtensibleManagabilityService.GetReply.YangData', index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='Errors', full_name='NXOSExtensibleManagabilityService.GetReply.Errors', index=2, number=3, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), ], extensions=[ ], nested_types=[], enum_types=[ ], - options=None, + serialized_options=None, is_extendable=False, syntax='proto3', extension_ranges=[], @@ -294,56 +295,56 @@ has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='Operation', full_name='NXOSExtensibleManagabilityService.EditConfigArgs.Operation', index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='SessionID', full_name='NXOSExtensibleManagabilityService.EditConfigArgs.SessionID', index=2, number=3, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='ReqID', full_name='NXOSExtensibleManagabilityService.EditConfigArgs.ReqID', index=3, number=4, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='Target', full_name='NXOSExtensibleManagabilityService.EditConfigArgs.Target', index=4, number=5, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='DefOp', full_name='NXOSExtensibleManagabilityService.EditConfigArgs.DefOp', index=5, number=6, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='ErrorOp', full_name='NXOSExtensibleManagabilityService.EditConfigArgs.ErrorOp', index=6, number=7, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), ], extensions=[ ], nested_types=[], enum_types=[ ], - options=None, + serialized_options=None, is_extendable=False, syntax='proto3', extension_ranges=[], @@ -367,28 +368,28 @@ has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='YangData', full_name='NXOSExtensibleManagabilityService.EditConfigReply.YangData', index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='Errors', full_name='NXOSExtensibleManagabilityService.EditConfigReply.Errors', index=2, number=3, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), ], extensions=[ ], nested_types=[], enum_types=[ ], - options=None, + serialized_options=None, is_extendable=False, syntax='proto3', extension_ranges=[], @@ -412,28 +413,28 @@ has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='ReqID', full_name='NXOSExtensibleManagabilityService.DeleteConfigArgs.ReqID', index=1, number=2, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='Target', full_name='NXOSExtensibleManagabilityService.DeleteConfigArgs.Target', index=2, number=3, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), ], extensions=[ ], nested_types=[], enum_types=[ ], - options=None, + serialized_options=None, is_extendable=False, syntax='proto3', extension_ranges=[], @@ -457,28 +458,28 @@ has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='YangData', full_name='NXOSExtensibleManagabilityService.DeleteConfigReply.YangData', index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='Errors', full_name='NXOSExtensibleManagabilityService.DeleteConfigReply.Errors', index=2, number=3, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), ], extensions=[ ], nested_types=[], enum_types=[ ], - options=None, + serialized_options=None, is_extendable=False, syntax='proto3', extension_ranges=[], @@ -502,35 +503,35 @@ has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='ReqID', full_name='NXOSExtensibleManagabilityService.CopyConfigArgs.ReqID', index=1, number=2, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='Source', full_name='NXOSExtensibleManagabilityService.CopyConfigArgs.Source', index=2, number=3, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='Target', full_name='NXOSExtensibleManagabilityService.CopyConfigArgs.Target', index=3, number=4, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), ], extensions=[ ], nested_types=[], enum_types=[ ], - options=None, + serialized_options=None, is_extendable=False, syntax='proto3', extension_ranges=[], @@ -554,28 +555,28 @@ has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='YangData', full_name='NXOSExtensibleManagabilityService.CopyConfigReply.YangData', index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='Errors', full_name='NXOSExtensibleManagabilityService.CopyConfigReply.Errors', index=2, number=3, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), ], extensions=[ ], nested_types=[], enum_types=[ ], - options=None, + serialized_options=None, is_extendable=False, syntax='proto3', extension_ranges=[], @@ -599,28 +600,28 @@ has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='ReqID', full_name='NXOSExtensibleManagabilityService.LockArgs.ReqID', index=1, number=2, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='Target', full_name='NXOSExtensibleManagabilityService.LockArgs.Target', index=2, number=3, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), ], extensions=[ ], nested_types=[], enum_types=[ ], - options=None, + serialized_options=None, is_extendable=False, syntax='proto3', extension_ranges=[], @@ -644,28 +645,28 @@ has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='YangData', full_name='NXOSExtensibleManagabilityService.LockReply.YangData', index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='Errors', full_name='NXOSExtensibleManagabilityService.LockReply.Errors', index=2, number=3, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), ], extensions=[ ], nested_types=[], enum_types=[ ], - options=None, + serialized_options=None, is_extendable=False, syntax='proto3', extension_ranges=[], @@ -689,28 +690,28 @@ has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='ReqID', full_name='NXOSExtensibleManagabilityService.UnLockArgs.ReqID', index=1, number=2, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='Target', full_name='NXOSExtensibleManagabilityService.UnLockArgs.Target', index=2, number=3, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), ], extensions=[ ], nested_types=[], enum_types=[ ], - options=None, + serialized_options=None, is_extendable=False, syntax='proto3', extension_ranges=[], @@ -734,28 +735,28 @@ has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='YangData', full_name='NXOSExtensibleManagabilityService.UnLockReply.YangData', index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='Errors', full_name='NXOSExtensibleManagabilityService.UnLockReply.Errors', index=2, number=3, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), ], extensions=[ ], nested_types=[], enum_types=[ ], - options=None, + serialized_options=None, is_extendable=False, syntax='proto3', extension_ranges=[], @@ -779,14 +780,14 @@ has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), ], extensions=[ ], nested_types=[], enum_types=[ ], - options=None, + serialized_options=None, is_extendable=False, syntax='proto3', extension_ranges=[], @@ -810,28 +811,28 @@ has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='SessionID', full_name='NXOSExtensibleManagabilityService.SessionReply.SessionID', index=1, number=2, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='Errors', full_name='NXOSExtensibleManagabilityService.SessionReply.Errors', index=2, number=3, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), ], extensions=[ ], nested_types=[], enum_types=[ ], - options=None, + serialized_options=None, is_extendable=False, syntax='proto3', extension_ranges=[], @@ -855,21 +856,21 @@ has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='SessionID', full_name='NXOSExtensibleManagabilityService.CloseSessionArgs.SessionID', index=1, number=2, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), ], extensions=[ ], nested_types=[], enum_types=[ ], - options=None, + serialized_options=None, is_extendable=False, syntax='proto3', extension_ranges=[], @@ -893,28 +894,28 @@ has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='YangData', full_name='NXOSExtensibleManagabilityService.CloseSessionReply.YangData', index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='Errors', full_name='NXOSExtensibleManagabilityService.CloseSessionReply.Errors', index=2, number=3, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), ], extensions=[ ], nested_types=[], enum_types=[ ], - options=None, + serialized_options=None, is_extendable=False, syntax='proto3', extension_ranges=[], @@ -938,28 +939,28 @@ has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='SessionIDToKill', full_name='NXOSExtensibleManagabilityService.KillArgs.SessionIDToKill', index=1, number=2, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='ReqID', full_name='NXOSExtensibleManagabilityService.KillArgs.ReqID', index=2, number=3, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), ], extensions=[ ], nested_types=[], enum_types=[ ], - options=None, + serialized_options=None, is_extendable=False, syntax='proto3', extension_ranges=[], @@ -983,28 +984,28 @@ has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='YangData', full_name='NXOSExtensibleManagabilityService.KillReply.YangData', index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='Errors', full_name='NXOSExtensibleManagabilityService.KillReply.Errors', index=2, number=3, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), ], extensions=[ ], nested_types=[], enum_types=[ ], - options=None, + serialized_options=None, is_extendable=False, syntax='proto3', extension_ranges=[], @@ -1028,21 +1029,21 @@ has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='ReqID', full_name='NXOSExtensibleManagabilityService.ValidateArgs.ReqID', index=1, number=2, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), ], extensions=[ ], nested_types=[], enum_types=[ ], - options=None, + serialized_options=None, is_extendable=False, syntax='proto3', extension_ranges=[], @@ -1066,28 +1067,28 @@ has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='YangData', full_name='NXOSExtensibleManagabilityService.ValidateReply.YangData', index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='Errors', full_name='NXOSExtensibleManagabilityService.ValidateReply.Errors', index=2, number=3, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), ], extensions=[ ], nested_types=[], enum_types=[ ], - options=None, + serialized_options=None, is_extendable=False, syntax='proto3', extension_ranges=[], @@ -1111,21 +1112,21 @@ has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='ReqID', full_name='NXOSExtensibleManagabilityService.CommitArgs.ReqID', index=1, number=2, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), ], extensions=[ ], nested_types=[], enum_types=[ ], - options=None, + serialized_options=None, is_extendable=False, syntax='proto3', extension_ranges=[], @@ -1149,28 +1150,28 @@ has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='YangData', full_name='NXOSExtensibleManagabilityService.CommitReply.YangData', index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='Errors', full_name='NXOSExtensibleManagabilityService.CommitReply.Errors', index=2, number=3, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), ], extensions=[ ], nested_types=[], enum_types=[ ], - options=None, + serialized_options=None, is_extendable=False, syntax='proto3', extension_ranges=[], @@ -1194,21 +1195,21 @@ has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='ReqID', full_name='NXOSExtensibleManagabilityService.AbortArgs.ReqID', index=1, number=2, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), ], extensions=[ ], nested_types=[], enum_types=[ ], - options=None, + serialized_options=None, is_extendable=False, syntax='proto3', extension_ranges=[], @@ -1232,28 +1233,28 @@ has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='YangData', full_name='NXOSExtensibleManagabilityService.AbortReply.YangData', index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='Errors', full_name='NXOSExtensibleManagabilityService.AbortReply.Errors', index=2, number=3, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, - options=None, file=DESCRIPTOR), + serialized_options=None, file=DESCRIPTOR), ], extensions=[ ], nested_types=[], enum_types=[ ], - options=None, + serialized_options=None, is_extendable=False, syntax='proto3', extension_ranges=[], @@ -1496,7 +1497,7 @@ full_name='NXOSExtensibleManagabilityService.gRPCConfigOper', file=DESCRIPTOR, index=0, - options=None, + serialized_options=None, serialized_start=1863, serialized_end=3452, methods=[ @@ -1507,7 +1508,7 @@ containing_service=None, input_type=_GETCONFIGARGS, output_type=_GETCONFIGREPLY, - options=None, + serialized_options=None, ), _descriptor.MethodDescriptor( name='GetOper', @@ -1516,7 +1517,7 @@ containing_service=None, input_type=_GETOPERARGS, output_type=_GETOPERREPLY, - options=None, + serialized_options=None, ), _descriptor.MethodDescriptor( name='Get', @@ -1525,7 +1526,7 @@ containing_service=None, input_type=_GETARGS, output_type=_GETREPLY, - options=None, + serialized_options=None, ), _descriptor.MethodDescriptor( name='EditConfig', @@ -1534,7 +1535,7 @@ containing_service=None, input_type=_EDITCONFIGARGS, output_type=_EDITCONFIGREPLY, - options=None, + serialized_options=None, ), _descriptor.MethodDescriptor( name='StartSession', @@ -1543,7 +1544,7 @@ containing_service=None, input_type=_SESSIONARGS, output_type=_SESSIONREPLY, - options=None, + serialized_options=None, ), _descriptor.MethodDescriptor( name='CloseSession', @@ -1552,7 +1553,7 @@ containing_service=None, input_type=_CLOSESESSIONARGS, output_type=_CLOSESESSIONREPLY, - options=None, + serialized_options=None, ), _descriptor.MethodDescriptor( name='KillSession', @@ -1561,7 +1562,7 @@ containing_service=None, input_type=_KILLARGS, output_type=_KILLREPLY, - options=None, + serialized_options=None, ), _descriptor.MethodDescriptor( name='DeleteConfig', @@ -1570,7 +1571,7 @@ containing_service=None, input_type=_DELETECONFIGARGS, output_type=_DELETECONFIGREPLY, - options=None, + serialized_options=None, ), _descriptor.MethodDescriptor( name='CopyConfig', @@ -1579,7 +1580,7 @@ containing_service=None, input_type=_COPYCONFIGARGS, output_type=_COPYCONFIGREPLY, - options=None, + serialized_options=None, ), _descriptor.MethodDescriptor( name='Lock', @@ -1588,7 +1589,7 @@ containing_service=None, input_type=_LOCKARGS, output_type=_LOCKREPLY, - options=None, + serialized_options=None, ), _descriptor.MethodDescriptor( name='UnLock', @@ -1597,7 +1598,7 @@ containing_service=None, input_type=_UNLOCKARGS, output_type=_UNLOCKREPLY, - options=None, + serialized_options=None, ), _descriptor.MethodDescriptor( name='Commit', @@ -1606,7 +1607,7 @@ containing_service=None, input_type=_COMMITARGS, output_type=_COMMITREPLY, - options=None, + serialized_options=None, ), _descriptor.MethodDescriptor( name='Validate', @@ -1615,7 +1616,7 @@ containing_service=None, input_type=_VALIDATEARGS, output_type=_VALIDATEREPLY, - options=None, + serialized_options=None, ), _descriptor.MethodDescriptor( name='Abort', @@ -1624,7 +1625,7 @@ containing_service=None, input_type=_ABORTARGS, output_type=_ABORTREPLY, - options=None, + serialized_options=None, ), ]) _sym_db.RegisterServiceDescriptor(_GRPCCONFIGOPER) diff --git a/nxos_grpc/proto/telemetry_bis.proto b/nxos_grpc/proto/telemetry_bis.proto new file mode 100644 index 0000000..386a6c4 --- /dev/null +++ b/nxos_grpc/proto/telemetry_bis.proto @@ -0,0 +1,92 @@ +/* ---------------------------------------------------------------------------- + * telemetry_bis.proto - Telemetry protobuf definitions + * + * August 2016 + * + * Copyright (c) 2016 by Cisco Systems, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ---------------------------------------------------------------------------- + */ + + syntax = "proto3"; + + option go_package = "telemetry_bis"; + + /* + * Common message used as a header to both compact and self-describing + * telemetry messages. + */ + + message Telemetry { + oneof node_id { + string node_id_str = 1; + // bytes node_id_uuid = 2; // not produced + } + oneof subscription { + string subscription_id_str = 3; + // uint32 subscription_id = 4; // not produced + } + // string sensor_path = 5; // not produced + string encoding_path = 6; + // string model_version = 7; // not produced + uint64 collection_id = 8; + uint64 collection_start_time = 9; + uint64 msg_timestamp = 10; + repeated TelemetryField data_gpbkv = 11; + TelemetryGPBTable data_gpb = 12; + uint64 collection_end_time = 13; + // uint64 heartbeat_sequence_number = 14; // not produced + } + + /* + * Messages used to export content in GPB K/V form. + * + * The set of messages in this .proto are sufficient to decode all + * telemetry messages. + */ + + message TelemetryField { + uint64 timestamp = 1; + string name = 2; + oneof value_by_type { + bytes bytes_value = 4; + string string_value = 5; + bool bool_value = 6; + uint32 uint32_value = 7; + uint64 uint64_value = 8; + sint32 sint32_value = 9; + sint64 sint64_value = 10; + double double_value = 11; + float float_value = 12; + } + repeated TelemetryField fields = 15; + } + + /* + * Messages used to export content in compact GPB form + * + * Per encoding-path .proto files are required to decode keys/content + * pairs below. + */ + + message TelemetryGPBTable { + repeated TelemetryRowGPB row = 1; + } + + message TelemetryRowGPB { + uint64 timestamp = 1; + bytes keys = 10; + bytes content = 11; + } + \ No newline at end of file diff --git a/nxos_grpc/proto/telemetry_bis_pb2.py b/nxos_grpc/proto/telemetry_bis_pb2.py new file mode 100644 index 0000000..2146be5 --- /dev/null +++ b/nxos_grpc/proto/telemetry_bis_pb2.py @@ -0,0 +1,381 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: nxos_grpc/proto/telemetry_bis.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='nxos_grpc/proto/telemetry_bis.proto', + package='', + syntax='proto3', + serialized_options=_b('Z\rtelemetry_bis'), + serialized_pb=_b('\n#nxos_grpc/proto/telemetry_bis.proto\"\xa8\x02\n\tTelemetry\x12\x15\n\x0bnode_id_str\x18\x01 \x01(\tH\x00\x12\x1d\n\x13subscription_id_str\x18\x03 \x01(\tH\x01\x12\x15\n\rencoding_path\x18\x06 \x01(\t\x12\x15\n\rcollection_id\x18\x08 \x01(\x04\x12\x1d\n\x15\x63ollection_start_time\x18\t \x01(\x04\x12\x15\n\rmsg_timestamp\x18\n \x01(\x04\x12#\n\ndata_gpbkv\x18\x0b \x03(\x0b\x32\x0f.TelemetryField\x12$\n\x08\x64\x61ta_gpb\x18\x0c \x01(\x0b\x32\x12.TelemetryGPBTable\x12\x1b\n\x13\x63ollection_end_time\x18\r \x01(\x04\x42\t\n\x07node_idB\x0e\n\x0csubscription\"\xb7\x02\n\x0eTelemetryField\x12\x11\n\ttimestamp\x18\x01 \x01(\x04\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x15\n\x0b\x62ytes_value\x18\x04 \x01(\x0cH\x00\x12\x16\n\x0cstring_value\x18\x05 \x01(\tH\x00\x12\x14\n\nbool_value\x18\x06 \x01(\x08H\x00\x12\x16\n\x0cuint32_value\x18\x07 \x01(\rH\x00\x12\x16\n\x0cuint64_value\x18\x08 \x01(\x04H\x00\x12\x16\n\x0csint32_value\x18\t \x01(\x11H\x00\x12\x16\n\x0csint64_value\x18\n \x01(\x12H\x00\x12\x16\n\x0c\x64ouble_value\x18\x0b \x01(\x01H\x00\x12\x15\n\x0b\x66loat_value\x18\x0c \x01(\x02H\x00\x12\x1f\n\x06\x66ields\x18\x0f \x03(\x0b\x32\x0f.TelemetryFieldB\x0f\n\rvalue_by_type\"2\n\x11TelemetryGPBTable\x12\x1d\n\x03row\x18\x01 \x03(\x0b\x32\x10.TelemetryRowGPB\"C\n\x0fTelemetryRowGPB\x12\x11\n\ttimestamp\x18\x01 \x01(\x04\x12\x0c\n\x04keys\x18\n \x01(\x0c\x12\x0f\n\x07\x63ontent\x18\x0b \x01(\x0c\x42\x0fZ\rtelemetry_bisb\x06proto3') +) + + + + +_TELEMETRY = _descriptor.Descriptor( + name='Telemetry', + full_name='Telemetry', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='node_id_str', full_name='Telemetry.node_id_str', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='subscription_id_str', full_name='Telemetry.subscription_id_str', index=1, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='encoding_path', full_name='Telemetry.encoding_path', index=2, + number=6, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='collection_id', full_name='Telemetry.collection_id', index=3, + number=8, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='collection_start_time', full_name='Telemetry.collection_start_time', index=4, + number=9, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='msg_timestamp', full_name='Telemetry.msg_timestamp', index=5, + number=10, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='data_gpbkv', full_name='Telemetry.data_gpbkv', index=6, + number=11, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='data_gpb', full_name='Telemetry.data_gpb', index=7, + number=12, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='collection_end_time', full_name='Telemetry.collection_end_time', index=8, + number=13, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + _descriptor.OneofDescriptor( + name='node_id', full_name='Telemetry.node_id', + index=0, containing_type=None, fields=[]), + _descriptor.OneofDescriptor( + name='subscription', full_name='Telemetry.subscription', + index=1, containing_type=None, fields=[]), + ], + serialized_start=40, + serialized_end=336, +) + + +_TELEMETRYFIELD = _descriptor.Descriptor( + name='TelemetryField', + full_name='TelemetryField', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='timestamp', full_name='TelemetryField.timestamp', index=0, + number=1, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='name', full_name='TelemetryField.name', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='bytes_value', full_name='TelemetryField.bytes_value', index=2, + number=4, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='string_value', full_name='TelemetryField.string_value', index=3, + number=5, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='bool_value', full_name='TelemetryField.bool_value', index=4, + number=6, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='uint32_value', full_name='TelemetryField.uint32_value', index=5, + number=7, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='uint64_value', full_name='TelemetryField.uint64_value', index=6, + number=8, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='sint32_value', full_name='TelemetryField.sint32_value', index=7, + number=9, type=17, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='sint64_value', full_name='TelemetryField.sint64_value', index=8, + number=10, type=18, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='double_value', full_name='TelemetryField.double_value', index=9, + number=11, type=1, cpp_type=5, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='float_value', full_name='TelemetryField.float_value', index=10, + number=12, type=2, cpp_type=6, label=1, + has_default_value=False, default_value=float(0), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='fields', full_name='TelemetryField.fields', index=11, + number=15, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + _descriptor.OneofDescriptor( + name='value_by_type', full_name='TelemetryField.value_by_type', + index=0, containing_type=None, fields=[]), + ], + serialized_start=339, + serialized_end=650, +) + + +_TELEMETRYGPBTABLE = _descriptor.Descriptor( + name='TelemetryGPBTable', + full_name='TelemetryGPBTable', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='row', full_name='TelemetryGPBTable.row', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=652, + serialized_end=702, +) + + +_TELEMETRYROWGPB = _descriptor.Descriptor( + name='TelemetryRowGPB', + full_name='TelemetryRowGPB', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='timestamp', full_name='TelemetryRowGPB.timestamp', index=0, + number=1, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='keys', full_name='TelemetryRowGPB.keys', index=1, + number=10, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='content', full_name='TelemetryRowGPB.content', index=2, + number=11, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=_b(""), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=704, + serialized_end=771, +) + +_TELEMETRY.fields_by_name['data_gpbkv'].message_type = _TELEMETRYFIELD +_TELEMETRY.fields_by_name['data_gpb'].message_type = _TELEMETRYGPBTABLE +_TELEMETRY.oneofs_by_name['node_id'].fields.append( + _TELEMETRY.fields_by_name['node_id_str']) +_TELEMETRY.fields_by_name['node_id_str'].containing_oneof = _TELEMETRY.oneofs_by_name['node_id'] +_TELEMETRY.oneofs_by_name['subscription'].fields.append( + _TELEMETRY.fields_by_name['subscription_id_str']) +_TELEMETRY.fields_by_name['subscription_id_str'].containing_oneof = _TELEMETRY.oneofs_by_name['subscription'] +_TELEMETRYFIELD.fields_by_name['fields'].message_type = _TELEMETRYFIELD +_TELEMETRYFIELD.oneofs_by_name['value_by_type'].fields.append( + _TELEMETRYFIELD.fields_by_name['bytes_value']) +_TELEMETRYFIELD.fields_by_name['bytes_value'].containing_oneof = _TELEMETRYFIELD.oneofs_by_name['value_by_type'] +_TELEMETRYFIELD.oneofs_by_name['value_by_type'].fields.append( + _TELEMETRYFIELD.fields_by_name['string_value']) +_TELEMETRYFIELD.fields_by_name['string_value'].containing_oneof = _TELEMETRYFIELD.oneofs_by_name['value_by_type'] +_TELEMETRYFIELD.oneofs_by_name['value_by_type'].fields.append( + _TELEMETRYFIELD.fields_by_name['bool_value']) +_TELEMETRYFIELD.fields_by_name['bool_value'].containing_oneof = _TELEMETRYFIELD.oneofs_by_name['value_by_type'] +_TELEMETRYFIELD.oneofs_by_name['value_by_type'].fields.append( + _TELEMETRYFIELD.fields_by_name['uint32_value']) +_TELEMETRYFIELD.fields_by_name['uint32_value'].containing_oneof = _TELEMETRYFIELD.oneofs_by_name['value_by_type'] +_TELEMETRYFIELD.oneofs_by_name['value_by_type'].fields.append( + _TELEMETRYFIELD.fields_by_name['uint64_value']) +_TELEMETRYFIELD.fields_by_name['uint64_value'].containing_oneof = _TELEMETRYFIELD.oneofs_by_name['value_by_type'] +_TELEMETRYFIELD.oneofs_by_name['value_by_type'].fields.append( + _TELEMETRYFIELD.fields_by_name['sint32_value']) +_TELEMETRYFIELD.fields_by_name['sint32_value'].containing_oneof = _TELEMETRYFIELD.oneofs_by_name['value_by_type'] +_TELEMETRYFIELD.oneofs_by_name['value_by_type'].fields.append( + _TELEMETRYFIELD.fields_by_name['sint64_value']) +_TELEMETRYFIELD.fields_by_name['sint64_value'].containing_oneof = _TELEMETRYFIELD.oneofs_by_name['value_by_type'] +_TELEMETRYFIELD.oneofs_by_name['value_by_type'].fields.append( + _TELEMETRYFIELD.fields_by_name['double_value']) +_TELEMETRYFIELD.fields_by_name['double_value'].containing_oneof = _TELEMETRYFIELD.oneofs_by_name['value_by_type'] +_TELEMETRYFIELD.oneofs_by_name['value_by_type'].fields.append( + _TELEMETRYFIELD.fields_by_name['float_value']) +_TELEMETRYFIELD.fields_by_name['float_value'].containing_oneof = _TELEMETRYFIELD.oneofs_by_name['value_by_type'] +_TELEMETRYGPBTABLE.fields_by_name['row'].message_type = _TELEMETRYROWGPB +DESCRIPTOR.message_types_by_name['Telemetry'] = _TELEMETRY +DESCRIPTOR.message_types_by_name['TelemetryField'] = _TELEMETRYFIELD +DESCRIPTOR.message_types_by_name['TelemetryGPBTable'] = _TELEMETRYGPBTABLE +DESCRIPTOR.message_types_by_name['TelemetryRowGPB'] = _TELEMETRYROWGPB +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +Telemetry = _reflection.GeneratedProtocolMessageType('Telemetry', (_message.Message,), dict( + DESCRIPTOR = _TELEMETRY, + __module__ = 'nxos_grpc.proto.telemetry_bis_pb2' + # @@protoc_insertion_point(class_scope:Telemetry) + )) +_sym_db.RegisterMessage(Telemetry) + +TelemetryField = _reflection.GeneratedProtocolMessageType('TelemetryField', (_message.Message,), dict( + DESCRIPTOR = _TELEMETRYFIELD, + __module__ = 'nxos_grpc.proto.telemetry_bis_pb2' + # @@protoc_insertion_point(class_scope:TelemetryField) + )) +_sym_db.RegisterMessage(TelemetryField) + +TelemetryGPBTable = _reflection.GeneratedProtocolMessageType('TelemetryGPBTable', (_message.Message,), dict( + DESCRIPTOR = _TELEMETRYGPBTABLE, + __module__ = 'nxos_grpc.proto.telemetry_bis_pb2' + # @@protoc_insertion_point(class_scope:TelemetryGPBTable) + )) +_sym_db.RegisterMessage(TelemetryGPBTable) + +TelemetryRowGPB = _reflection.GeneratedProtocolMessageType('TelemetryRowGPB', (_message.Message,), dict( + DESCRIPTOR = _TELEMETRYROWGPB, + __module__ = 'nxos_grpc.proto.telemetry_bis_pb2' + # @@protoc_insertion_point(class_scope:TelemetryRowGPB) + )) +_sym_db.RegisterMessage(TelemetryRowGPB) + + +DESCRIPTOR._options = None +# @@protoc_insertion_point(module_scope) diff --git a/nxos_grpc/response.py b/nxos_grpc/response.py index 6f754eb..b4cbfcf 100644 --- a/nxos_grpc/response.py +++ b/nxos_grpc/response.py @@ -55,7 +55,9 @@ def build_response(reqid, response_stream): try: response_obj.finalize() except json.decoder.JSONDecodeError: - logging.exception('Error finalizing response JSON! Returning potentially un-finalized elements.') + logging.exception( + "Error finalizing response JSON! Returning potentially un-finalized elements." + ) return response_obj diff --git a/update_deps.sh b/update_deps.sh deleted file mode 100755 index 0c64973..0000000 --- a/update_deps.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env bash -pipenv lock --pre --clear -pipenv --three install --dev --ignore-pipfile -pipenv run pip freeze > requirements.txt diff --git a/update_protos.sh b/update_protos.sh index 5a25a21..9525bdc 100755 --- a/update_protos.sh +++ b/update_protos.sh @@ -1,2 +1,7 @@ #!/usr/bin/env bash -pipenv run python -m grpc_tools.protoc --proto_path=. --python_out=. --grpc_python_out=. nxos_grpc/proto/nxos_grpc.proto +PROTO_BASE_PATH=nxos_grpc/proto +for PROTO in "$PROTO_BASE_PATH"/*.proto +do + echo "Generating $PROTO" + pipenv run python -m grpc_tools.protoc --proto_path=. --python_out=. --grpc_python_out=. $PROTO +done \ No newline at end of file