Last state of work from some time ago
This commit is contained in:
parent
ec610ab3b3
commit
ae59979d0d
1
Pipfile
1
Pipfile
|
@ -12,6 +12,7 @@ pytest_pylint = "*"
|
||||||
pytest-pep8 = "*"
|
pytest-pep8 = "*"
|
||||||
pylint = "*"
|
pylint = "*"
|
||||||
coverage = "*"
|
coverage = "*"
|
||||||
|
pipenv-setup = "*"
|
||||||
|
|
||||||
[packages]
|
[packages]
|
||||||
jsonschema = "*"
|
jsonschema = "*"
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"_meta": {
|
"_meta": {
|
||||||
"hash": {
|
"hash": {
|
||||||
"sha256": "4be395776086a6418e10dd27cb606a4dd9d5dcc15f3b875692880a7873c647db"
|
"sha256": "477547462b9a9238e5ce43174e1816564c491d9d1f4b146aca3242149adfa962"
|
||||||
},
|
},
|
||||||
"pipfile-spec": 6,
|
"pipfile-spec": 6,
|
||||||
"requires": {
|
"requires": {
|
||||||
|
@ -33,9 +33,9 @@
|
||||||
},
|
},
|
||||||
"pyrsistent": {
|
"pyrsistent": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:f3b280d030afb652f79d67c5586157c5c1355c9a58dfc7940566e28d28f3df1b"
|
"sha256:cdc7b5e3ed77bed61270a47d35434a30617b9becdf2478af76ad2c6ade307280"
|
||||||
],
|
],
|
||||||
"version": "==0.15.6"
|
"version": "==0.15.7"
|
||||||
},
|
},
|
||||||
"ruamel.yaml": {
|
"ruamel.yaml": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -61,6 +61,13 @@
|
||||||
],
|
],
|
||||||
"version": "==1.5"
|
"version": "==1.5"
|
||||||
},
|
},
|
||||||
|
"appdirs": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:9e5896d1372858f8dd3344faf4e5014d21849c756c8d5701f78f8a103b372d92",
|
||||||
|
"sha256:d8b24664561d0d34ddfaec54636d502d7cea6e29c3eaf68f3df6180863e2166e"
|
||||||
|
],
|
||||||
|
"version": "==1.4.3"
|
||||||
|
},
|
||||||
"astroid": {
|
"astroid": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:71ea07f44df9568a75d0f354c49143a4575d90645e9fead6dfb52c26a85ed13a",
|
"sha256:71ea07f44df9568a75d0f354c49143a4575d90645e9fead6dfb52c26a85ed13a",
|
||||||
|
@ -75,42 +82,98 @@
|
||||||
],
|
],
|
||||||
"version": "==19.3.0"
|
"version": "==19.3.0"
|
||||||
},
|
},
|
||||||
|
"black": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:1b30e59be925fafc1ee4565e5e08abef6b03fe455102883820fe5ee2e4734e0b",
|
||||||
|
"sha256:c2edb73a08e9e0e6f65a0e6af18b059b8b1cdd5bef997d7a0b181df93dc81539"
|
||||||
|
],
|
||||||
|
"markers": "python_version >= '3.6'",
|
||||||
|
"version": "==19.10b0"
|
||||||
|
},
|
||||||
|
"cached-property": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:3a026f1a54135677e7da5ce819b0c690f156f37976f3e30c5430740725203d7f",
|
||||||
|
"sha256:9217a59f14a5682da7c4b8829deadbfc194ac22e9908ccf7c8820234e80a1504"
|
||||||
|
],
|
||||||
|
"version": "==1.5.1"
|
||||||
|
},
|
||||||
|
"cerberus": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:302e6694f206dd85cb63f13fd5025b31ab6d38c99c50c6d769f8fa0b0f299589",
|
||||||
|
"sha256:bf6a40d83411737c12681befb37d73f0657ab5fa088a2d18805dfdaf267b6f6e"
|
||||||
|
],
|
||||||
|
"version": "==1.3.2"
|
||||||
|
},
|
||||||
|
"certifi": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:017c25db2a153ce562900032d5bc68e9f191e44e9a0f762f373977de9df1fbb3",
|
||||||
|
"sha256:25b64c7da4cd7479594d035c08c2d809eb4aab3a26e5a990ea98cc450c320f1f"
|
||||||
|
],
|
||||||
|
"version": "==2019.11.28"
|
||||||
|
},
|
||||||
|
"chardet": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae",
|
||||||
|
"sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"
|
||||||
|
],
|
||||||
|
"version": "==3.0.4"
|
||||||
|
},
|
||||||
|
"click": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:2335065e6395b9e67ca716de5f7526736bfa6ceead690adf616d925bdc622b13",
|
||||||
|
"sha256:5b94b49521f6456670fdb30cd82a4eca9412788a93fa6dd6df72c94d5a8ff2d7"
|
||||||
|
],
|
||||||
|
"version": "==7.0"
|
||||||
|
},
|
||||||
|
"colorama": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:05eed71e2e327246ad6b38c540c4a3117230b19679b875190486ddd2d721422d",
|
||||||
|
"sha256:f8ac84de7840f5b9c4e3347b3c1eaa50f7e49c2b07596221daec5edaabbd7c48"
|
||||||
|
],
|
||||||
|
"version": "==0.4.1"
|
||||||
|
},
|
||||||
"coverage": {
|
"coverage": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:0101888bd1592a20ccadae081ba10e8b204d20235d18d05c6f7d5e904a38fc10",
|
"sha256:189aac76d6e0d7af15572c51892e7326ee451c076c5a50a9d266406cd6c49708",
|
||||||
"sha256:04b961862334687549eb91cd5178a6fbe977ad365bddc7c60f2227f2f9880cf4",
|
"sha256:1bf7ba2af1d373a1750888724f84cffdfc697738f29a353c98195f98fc011509",
|
||||||
"sha256:1ca43dbd739c0fc30b0a3637a003a0d2c7edc1dd618359d58cc1e211742f8bd1",
|
"sha256:1f4ee8e2e4243971618bc16fcc4478317405205f135e95226c2496e2a3b8dbbf",
|
||||||
"sha256:1cbb88b34187bdb841f2599770b7e6ff8e259dc3bb64fc7893acf44998acf5f8",
|
"sha256:225e79a5d485bc1642cb7ba02281419c633c216cdc6b26c26494ba959f09e69f",
|
||||||
"sha256:232f0b52a5b978288f0bbc282a6c03fe48cd19a04202df44309919c142b3bb9c",
|
"sha256:23688ff75adfa8bfa2a67254d889f9bdf9302c27241d746e17547c42c732d3f4",
|
||||||
"sha256:24bcfa86fd9ce86b73a8368383c39d919c497a06eebb888b6f0c12f13e920b1a",
|
"sha256:28f7f73b34a05e23758e860a89a7f649b85c6749e252eff60ebb05532d180e86",
|
||||||
"sha256:25b8f60b5c7da71e64c18888f3067d5b6f1334b9681876b2fb41eea26de881ae",
|
"sha256:2d0cb9b1fe6ad0d915d45ad3d87f03a38e979093a98597e755930db1f897afae",
|
||||||
"sha256:2714160a63da18aed9340c70ed514973971ee7e665e6b336917ff4cca81a25b1",
|
"sha256:47874b4711c5aeb295c31b228a758ce3d096be83dc37bd56da48ed99efb8813b",
|
||||||
"sha256:2ca2cd5264e84b2cafc73f0045437f70c6378c0d7dbcddc9ee3fe192c1e29e5d",
|
"sha256:511ec0c00840e12fb4e852e4db58fa6a01ca4da72f36a9766fae344c3d502033",
|
||||||
"sha256:2cc707fc9aad2592fc686d63ef72dc0031fc98b6fb921d2f5395d9ab84fbc3ef",
|
"sha256:53e7438fef0c97bc248f88ba1edd10268cd94d5609970aaf87abbe493691af87",
|
||||||
"sha256:348630edea485f4228233c2f310a598abf8afa5f8c716c02a9698089687b6085",
|
"sha256:569f9ee3025682afda6e9b0f5bb14897c0db03f1a1dc088b083dd36e743f92bb",
|
||||||
"sha256:40fbfd6b044c9db13aeec1daf5887d322c710d811f944011757526ef6e323fd9",
|
"sha256:593853aa1ac6dcc6405324d877544c596c9d948ef20d2e9512a0f5d2d3202356",
|
||||||
"sha256:46c9c6a1d1190c0b75ec7c0f339088309952b82ae8d67a79ff1319eb4e749b96",
|
"sha256:5b0a07158360d22492f9abd02a0f2ee7981b33f0646bf796598b7673f6bbab14",
|
||||||
"sha256:591506e088901bdc25620c37aec885e82cc896528f28c57e113751e3471fc314",
|
"sha256:7ca3db38a61f3655a2613ee2c190d63639215a7a736d3c64cc7bbdb002ce6310",
|
||||||
"sha256:5ac71bba1e07eab403b082c4428f868c1c9e26a21041436b4905c4c3d4e49b08",
|
"sha256:7d1cc7acc9ce55179616cf72154f9e648136ea55987edf84addbcd9886ffeba2",
|
||||||
"sha256:5f622f19abda4e934938e24f1d67599249abc201844933a6f01aaa8663094489",
|
"sha256:88b51153657612aea68fa684a5b88037597925260392b7bb4509d4f9b0bdd889",
|
||||||
"sha256:65bead1ac8c8930cf92a1ccaedcce19a57298547d5d1db5c9d4d068a0675c38b",
|
"sha256:955ec084f549128fa2702f0b2dc696392001d986b71acd8fd47424f28289a9c3",
|
||||||
"sha256:7362a7f829feda10c7265b553455de596b83d1623b3d436b6d3c51c688c57bf6",
|
"sha256:b251c7092cbb6d789d62dc9c9e7c4fb448c9138b51285c36aeb72462cad3600e",
|
||||||
"sha256:7f2675750c50151f806070ec11258edf4c328340916c53bac0adbc465abd6b1e",
|
"sha256:bd82b684bb498c60ef47bb1541a50e6d006dde8579934dcbdbc61d67d1ea70d9",
|
||||||
"sha256:960d7f42277391e8b1c0b0ae427a214e1b31a1278de6b73f8807b20c2e913bba",
|
"sha256:bfe102659e2ec13b86c7f3b1db6c9a4e7beea4255058d006351339e6b342d5d2",
|
||||||
"sha256:a50b0888d8a021a3342d36a6086501e30de7d840ab68fca44913e97d14487dc1",
|
"sha256:c1e4e39e43057396a5e9d069bfbb6ffeee892e40c5d2effbd8cd71f34ee66c4d",
|
||||||
"sha256:b7dbc5e8c39ea3ad3db22715f1b5401cd698a621218680c6daf42c2f9d36e205",
|
"sha256:cb2b74c123f65e8166f7e1265829a6c8ed755c3cd16d7f50e75a83456a5f3fd7",
|
||||||
"sha256:bb3d29df5d07d5399d58a394d0ef50adf303ab4fbf66dfd25b9ef258effcb692",
|
"sha256:cca38ded59105f7705ef6ffe1e960b8db6c7d8279c1e71654a4775ab4454ca15",
|
||||||
"sha256:c0fff2733f7c2950f58a4fd09b5db257b00c6fec57bf3f68c5bae004d804b407",
|
"sha256:cf908840896f7aa62d0ec693beb53264b154f972eb8226fb864ac38975590c4f",
|
||||||
"sha256:c792d3707a86c01c02607ae74364854220fb3e82735f631cd0a345dea6b4cee5",
|
"sha256:d095a7b473f8a95f7efe821f92058c8a2ecfb18f8db6677ae3819e15dc11aaae",
|
||||||
"sha256:c90bda74e16bcd03861b09b1d37c0a4158feda5d5a036bb2d6e58de6ff65793e",
|
"sha256:d22b4297e7e4225ccf01f1aa55e7a96412ea0796b532dd614c3fcbafa341128e",
|
||||||
"sha256:cfce79ce41cc1a1dc7fc85bb41eeeb32d34a4cf39a645c717c0550287e30ff06",
|
"sha256:d4a2b578a7a70e0c71f662705262f87a456f1e6c1e40ada7ea699abaf070a76d",
|
||||||
"sha256:eeafb646f374988c22c8e6da5ab9fb81367ecfe81c70c292623373d2a021b1a1",
|
"sha256:ddeb42a3d5419434742bf4cc71c9eaa22df3b76808e23a82bd0b0bd360f1a9f1",
|
||||||
"sha256:f425f50a6dd807cb9043d15a4fcfba3b5874a54d9587ccbb748899f70dc18c47",
|
"sha256:e65a5aa1670db6263f19fdc03daee1d7dbbadb5cb67fd0a1f16033659db13c1d",
|
||||||
"sha256:fcd4459fe35a400b8f416bc57906862693c9f88b66dc925e7f2a933e77f6b18b",
|
"sha256:eaad65bd20955131bcdb3967a4dea66b4e4d4ca488efed7c00d91ee0173387e8",
|
||||||
"sha256:ff3936dd5feaefb4f91c8c1f50a06c588b5dc69fba4f7d9c79a6617ad80bb7df"
|
"sha256:f45fba420b94165c17896861bb0e8b27fb7abdcedfeb154895d8553df90b7b00"
|
||||||
],
|
],
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"version": "==5.0.1"
|
"version": "==5.0.2"
|
||||||
|
},
|
||||||
|
"distlib": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:2e166e231a26b36d6dfe35a48c4464346620f8645ed0ace01ee31822b288de21"
|
||||||
|
],
|
||||||
|
"version": "==0.3.0"
|
||||||
},
|
},
|
||||||
"execnet": {
|
"execnet": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
|
@ -119,6 +182,20 @@
|
||||||
],
|
],
|
||||||
"version": "==1.7.1"
|
"version": "==1.7.1"
|
||||||
},
|
},
|
||||||
|
"first": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:8d8e46e115ea8ac652c76123c0865e3ff18372aef6f03c22809ceefcea9dec86",
|
||||||
|
"sha256:ff285b08c55f8c97ce4ea7012743af2495c9f1291785f163722bd36f6af6d3bf"
|
||||||
|
],
|
||||||
|
"version": "==2.0.2"
|
||||||
|
},
|
||||||
|
"idna": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:c357b3f628cf53ae2c4c05627ecc484553142ca23264e593d327bcde5e9c3407",
|
||||||
|
"sha256:ea8b7f6188e6fa117537c3df7da9fc686d485087abf6ac197f9c46432f7e4a3c"
|
||||||
|
],
|
||||||
|
"version": "==2.8"
|
||||||
|
},
|
||||||
"isort": {
|
"isort": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:54da7e92468955c4fceacd0c86bd0ec997b0e1ee80d97f67c35a78b719dccab1",
|
"sha256:54da7e92468955c4fceacd0c86bd0ec997b0e1ee80d97f67c35a78b719dccab1",
|
||||||
|
@ -166,6 +243,13 @@
|
||||||
],
|
],
|
||||||
"version": "==8.0.2"
|
"version": "==8.0.2"
|
||||||
},
|
},
|
||||||
|
"orderedmultidict": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:04070bbb5e87291cc9bfa51df413677faf2141c73c61d2a5f7b26bea3cd882ad",
|
||||||
|
"sha256:43c839a17ee3cdd62234c47deca1a8508a3f2ca1d0678a3bf791c87cf84adbf3"
|
||||||
|
],
|
||||||
|
"version": "==1.0.1"
|
||||||
|
},
|
||||||
"packaging": {
|
"packaging": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:28b924174df7a2fa32c1953825ff29c61e2f5e082343165438812f00d3a7fc47",
|
"sha256:28b924174df7a2fa32c1953825ff29c61e2f5e082343165438812f00d3a7fc47",
|
||||||
|
@ -173,6 +257,20 @@
|
||||||
],
|
],
|
||||||
"version": "==19.2"
|
"version": "==19.2"
|
||||||
},
|
},
|
||||||
|
"pathspec": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:163b0632d4e31cef212976cf57b43d9fd6b0bac6e67c26015d611a647d5e7424",
|
||||||
|
"sha256:562aa70af2e0d434367d9790ad37aed893de47f1693e4201fd1d3dca15d19b96"
|
||||||
|
],
|
||||||
|
"version": "==0.7.0"
|
||||||
|
},
|
||||||
|
"pep517": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:5ce351f3be71d01bb094d63253854b6139931fcaba8e2f380c02102136c51e40",
|
||||||
|
"sha256:882e2eeeffe39ccd6be6122d98300df18d80950cb5f449766d64149c94c5614a"
|
||||||
|
],
|
||||||
|
"version": "==0.8.1"
|
||||||
|
},
|
||||||
"pep8": {
|
"pep8": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:b22cfae5db09833bb9bd7c8463b53e1a9c9b39f12e304a8d0bba729c501827ee",
|
"sha256:b22cfae5db09833bb9bd7c8463b53e1a9c9b39f12e304a8d0bba729c501827ee",
|
||||||
|
@ -180,6 +278,37 @@
|
||||||
],
|
],
|
||||||
"version": "==1.7.1"
|
"version": "==1.7.1"
|
||||||
},
|
},
|
||||||
|
"pip-shims": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:383e054386d15f7a33d619a9fc19d670575cdf88e05a4dab93f0a254696ce836",
|
||||||
|
"sha256:d4b720d85a8cbd81f72ea22e273ac72415f1e0b49cade597b815c63b351d9637"
|
||||||
|
],
|
||||||
|
"version": "==0.4.0"
|
||||||
|
},
|
||||||
|
"pipenv-setup": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:0dc26686d8e2ea21bdff6c2ed7a8dfd7e21f141eeb413b6db05598d18d9e4bc0",
|
||||||
|
"sha256:6159cd4131292b3e02004ea02cf28121f32e15949cd056a377ce06df81eac790"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==2.2.5"
|
||||||
|
},
|
||||||
|
"pipfile": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:f7d9f15de8b660986557eb3cc5391aa1a16207ac41bc378d03f414762d36c984"
|
||||||
|
],
|
||||||
|
"version": "==0.0.2"
|
||||||
|
},
|
||||||
|
"plette": {
|
||||||
|
"extras": [
|
||||||
|
"validation"
|
||||||
|
],
|
||||||
|
"hashes": [
|
||||||
|
"sha256:46402c03e36d6eadddad2a5125990e322dd74f98160c8f2dcd832b2291858a26",
|
||||||
|
"sha256:d6c9b96981b347bddd333910b753b6091a2c1eb2ef85bb373b4a67c9d91dca16"
|
||||||
|
],
|
||||||
|
"version": "==0.2.3"
|
||||||
|
},
|
||||||
"pluggy": {
|
"pluggy": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0",
|
"sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0",
|
||||||
|
@ -255,6 +384,46 @@
|
||||||
"index": "pypi",
|
"index": "pypi",
|
||||||
"version": "==5.2"
|
"version": "==5.2"
|
||||||
},
|
},
|
||||||
|
"regex": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:08047f4b31254489316b489c24983d72c0b9d520da084b8c624f45891a9c6da2",
|
||||||
|
"sha256:08d042155592c24cbdb81158a99aeeded4493381a1aba5eba9def6d29961042c",
|
||||||
|
"sha256:13901ac914de7a7e58a92f99c71415e268e88ac4be8b389d8360c38e64b2f1c5",
|
||||||
|
"sha256:15b6f7e10f764c5162242a7db89da51218a38299415ba5e70f235a6a83c53b94",
|
||||||
|
"sha256:46d01bb4139e7051470037f8b9a5b90c48cb77a3d307c2621bf3791bfae4d9d8",
|
||||||
|
"sha256:52814a8423d52a7e0f070dbb79f7bdfce5221992b881f83bad69f8daf4b831c3",
|
||||||
|
"sha256:6d999447f77b1b638ea620bde466b958144af90ac2e9b1f23b98a79ced14ce3f",
|
||||||
|
"sha256:7391eeee49bb3ce895ca43479eaca810f0c2608556711fa02a82075768f81a37",
|
||||||
|
"sha256:79530d60a8644f72f78834c01a2d70a60be110e2f4a0a612b78da23ef60c2730",
|
||||||
|
"sha256:841056961d441f05b949d9003e7f2b5d51a11dd52d8bd7c0a5325943b6a0ea6b",
|
||||||
|
"sha256:895f95344182b4ecb84044910e62ad33ca63a7e7b447c7ba858d24e9f1aad939",
|
||||||
|
"sha256:93e797cf16e07b315413d1157b5ce7a7c2b28b2b95768e25c0ccd290443661ad",
|
||||||
|
"sha256:a4677dc8245f1127b70fa79fb7f15a61eae0fee36ae15cbbe017207485fe9a5c",
|
||||||
|
"sha256:b2faf1dce478c0ca1c92575bdc48b7afdce3a887a02afb6342fae476af41bbe2",
|
||||||
|
"sha256:bcd9bcba67ae8d1e1b21426ea7995f7ca08260bea601ba15e13e5ca8588208ef",
|
||||||
|
"sha256:d47a89e6029852c88fff859dbc9a11dcec820413b4c2510e80ced1c99c3e79ea",
|
||||||
|
"sha256:dd69d165bee099b02d122d1e0dd55a85ebf9a65493dcd17124b628db9edfc833",
|
||||||
|
"sha256:e77f64a3ae8b9a555e170a3908748b4e2ccd0c58f8385f328baf8fc70f9ea497",
|
||||||
|
"sha256:ec75e8baa576aed6065b615a8f8e91a05e42b492b24ffd16cbb075ad62fb9185",
|
||||||
|
"sha256:ed75b64c6694bbe840b3340191b2039f633fd1ec6fc567454e47d7326eda557f",
|
||||||
|
"sha256:ef85a6a15342559bed737dc16dfb1545dc043ca5bf5bce6bff4830f0e7a74395"
|
||||||
|
],
|
||||||
|
"version": "==2020.1.7"
|
||||||
|
},
|
||||||
|
"requests": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:11e007a8a2aa0323f5a921e9e6a2d7e4e67d9877e85773fba9ba6419025cbeb4",
|
||||||
|
"sha256:9cf5292fcd0f598c671cfc1e0d7d1a7f13bb8085e9a590f48c010551dc6c4b31"
|
||||||
|
],
|
||||||
|
"version": "==2.22.0"
|
||||||
|
},
|
||||||
|
"requirementslib": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:50731ac1052473e4c7df59a44a1f3aa20f32e687110bc05d73c3b4109eebc23d",
|
||||||
|
"sha256:8b594ab8b6280ee97cffd68fc766333345de150124d5b76061dd575c3a21fe5a"
|
||||||
|
],
|
||||||
|
"version": "==1.5.3"
|
||||||
|
},
|
||||||
"six": {
|
"six": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:1f1b7d42e254082a9db6279deae68afb421ceba6158efa6131de7b3003ee93fd",
|
"sha256:1f1b7d42e254082a9db6279deae68afb421ceba6158efa6131de7b3003ee93fd",
|
||||||
|
@ -262,6 +431,67 @@
|
||||||
],
|
],
|
||||||
"version": "==1.13.0"
|
"version": "==1.13.0"
|
||||||
},
|
},
|
||||||
|
"toml": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:229f81c57791a41d65e399fc06bf0848bab550a9dfd5ed66df18ce5f05e73d5c",
|
||||||
|
"sha256:235682dd292d5899d361a811df37e04a8828a5b1da3115886b73cf81ebc9100e"
|
||||||
|
],
|
||||||
|
"version": "==0.10.0"
|
||||||
|
},
|
||||||
|
"tomlkit": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:32c10cc16ded7e4101c79f269910658cc2a0be5913f1252121c3cd603051c269",
|
||||||
|
"sha256:96e6369288571799a3052c1ef93b9de440e1ab751aa045f435b55e9d3bcd0690"
|
||||||
|
],
|
||||||
|
"version": "==0.5.8"
|
||||||
|
},
|
||||||
|
"typed-ast": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:1170afa46a3799e18b4c977777ce137bb53c7485379d9706af8a59f2ea1aa161",
|
||||||
|
"sha256:18511a0b3e7922276346bcb47e2ef9f38fb90fd31cb9223eed42c85d1312344e",
|
||||||
|
"sha256:262c247a82d005e43b5b7f69aff746370538e176131c32dda9cb0f324d27141e",
|
||||||
|
"sha256:2b907eb046d049bcd9892e3076c7a6456c93a25bebfe554e931620c90e6a25b0",
|
||||||
|
"sha256:354c16e5babd09f5cb0ee000d54cfa38401d8b8891eefa878ac772f827181a3c",
|
||||||
|
"sha256:48e5b1e71f25cfdef98b013263a88d7145879fbb2d5185f2a0c79fa7ebbeae47",
|
||||||
|
"sha256:4e0b70c6fc4d010f8107726af5fd37921b666f5b31d9331f0bd24ad9a088e631",
|
||||||
|
"sha256:630968c5cdee51a11c05a30453f8cd65e0cc1d2ad0d9192819df9978984529f4",
|
||||||
|
"sha256:66480f95b8167c9c5c5c87f32cf437d585937970f3fc24386f313a4c97b44e34",
|
||||||
|
"sha256:71211d26ffd12d63a83e079ff258ac9d56a1376a25bc80b1cdcdf601b855b90b",
|
||||||
|
"sha256:7954560051331d003b4e2b3eb822d9dd2e376fa4f6d98fee32f452f52dd6ebb2",
|
||||||
|
"sha256:838997f4310012cf2e1ad3803bce2f3402e9ffb71ded61b5ee22617b3a7f6b6e",
|
||||||
|
"sha256:95bd11af7eafc16e829af2d3df510cecfd4387f6453355188342c3e79a2ec87a",
|
||||||
|
"sha256:bc6c7d3fa1325a0c6613512a093bc2a2a15aeec350451cbdf9e1d4bffe3e3233",
|
||||||
|
"sha256:cc34a6f5b426748a507dd5d1de4c1978f2eb5626d51326e43280941206c209e1",
|
||||||
|
"sha256:d755f03c1e4a51e9b24d899561fec4ccaf51f210d52abdf8c07ee2849b212a36",
|
||||||
|
"sha256:d7c45933b1bdfaf9f36c579671fec15d25b06c8398f113dab64c18ed1adda01d",
|
||||||
|
"sha256:d896919306dd0aa22d0132f62a1b78d11aaf4c9fc5b3410d3c666b818191630a",
|
||||||
|
"sha256:fdc1c9bbf79510b76408840e009ed65958feba92a88833cdceecff93ae8fff66",
|
||||||
|
"sha256:ffde2fbfad571af120fcbfbbc61c72469e72f550d676c3342492a9dfdefb8f12"
|
||||||
|
],
|
||||||
|
"version": "==1.4.0"
|
||||||
|
},
|
||||||
|
"typing": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:91dfe6f3f706ee8cc32d38edbbf304e9b7583fb37108fef38229617f8b3eba23",
|
||||||
|
"sha256:c8cabb5ab8945cd2f54917be357d134db9cc1eb039e59d1606dc1e60cb1d9d36",
|
||||||
|
"sha256:f38d83c5a7a7086543a0f649564d661859c5146a85775ab90c0d2f93ffaa9714"
|
||||||
|
],
|
||||||
|
"version": "==3.7.4.1"
|
||||||
|
},
|
||||||
|
"urllib3": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:a8a318824cc77d1fd4b2bec2ded92646630d7fe8619497b142c84a9e6f5a7293",
|
||||||
|
"sha256:f3c5fd51747d450d4dcf6f923c81f78f811aab8205fda64b0aba34a4e48b0745"
|
||||||
|
],
|
||||||
|
"version": "==1.25.7"
|
||||||
|
},
|
||||||
|
"vistir": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:2166e3148a67c438c9e3edbba0cde153d42dec6e3bf5d8f4624feb27686c0990",
|
||||||
|
"sha256:3a0529b4b6c2e842fd19b5ceaa95b6c9201321314825c110406d4af3331a0709"
|
||||||
|
],
|
||||||
|
"version": "==0.4.3"
|
||||||
|
},
|
||||||
"wcwidth": {
|
"wcwidth": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:8fd29383f539be45b20bd4df0dc29c20ba48654a41e661925e612311e9f3c603",
|
"sha256:8fd29383f539be45b20bd4df0dc29c20ba48654a41e661925e612311e9f3c603",
|
||||||
|
@ -269,6 +499,13 @@
|
||||||
],
|
],
|
||||||
"version": "==0.1.8"
|
"version": "==0.1.8"
|
||||||
},
|
},
|
||||||
|
"wheel": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:10c9da68765315ed98850f8e048347c3eb06dd81822dc2ab1d4fde9dc9702646",
|
||||||
|
"sha256:f4da1763d3becf2e2cd92a14a7c920f0f00eca30fdde9ea992c836685b9faf28"
|
||||||
|
],
|
||||||
|
"version": "==0.33.6"
|
||||||
|
},
|
||||||
"wrapt": {
|
"wrapt": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
"sha256:565a021fd19419476b9362b05eeaa094178de64f8361e44468f9e9d7843901e1"
|
"sha256:565a021fd19419476b9362b05eeaa094178de64f8361e44468f9e9d7843901e1"
|
||||||
|
|
|
@ -13,12 +13,13 @@ from backive.core.scheduler import Scheduler
|
||||||
from backive.config.config import Config
|
from backive.config.config import Config
|
||||||
|
|
||||||
|
|
||||||
|
logging.basicConfig(level=logging.DEBUG)
|
||||||
rootlogger = logging.getLogger()
|
rootlogger = logging.getLogger()
|
||||||
rootlogger.setLevel(logging.DEBUG)
|
rootlogger.setLevel(logging.DEBUG)
|
||||||
consoleHandler = logging.StreamHandler(sys.stdout)
|
consoleHandler = logging.StreamHandler(sys.stdout)
|
||||||
fileHandler = logging.FileHandler("backive.log")
|
fileHandler = logging.FileHandler("backive.log")
|
||||||
rootlogger.addHandler(consoleHandler)
|
|
||||||
rootlogger.addHandler(fileHandler)
|
rootlogger.addHandler(fileHandler)
|
||||||
|
#rootlogger.addHandler(consoleHandler)
|
||||||
|
|
||||||
logging.info("Backive starting.")
|
logging.info("Backive starting.")
|
||||||
|
|
||||||
|
@ -31,11 +32,15 @@ class Backive:
|
||||||
async def callback(self, data=None):
|
async def callback(self, data=None):
|
||||||
data_dict = json.loads(data)
|
data_dict = json.loads(data)
|
||||||
uuid = data_dict.get("ID_FS_UUID", None)
|
uuid = data_dict.get("ID_FS_UUID", None)
|
||||||
print("UUID: %s" % uuid)
|
logging.info("UUID: %s", uuid)
|
||||||
if uuid:
|
logging.debug(json.dumps(data_dict, indent=4))
|
||||||
backups = self._config.get_backups_by_device(uuid)
|
|
||||||
|
if uuid and data_dict.get("ACTION") == "add":
|
||||||
|
backups = await self._config.get_backups_by_device(uuid)
|
||||||
for backup in backups:
|
for backup in backups:
|
||||||
backup.run()
|
logging.info("Running backup '%s'", backup.name)
|
||||||
|
result = await backup.run()
|
||||||
|
logging.debug("Result: %s", str(result))
|
||||||
|
|
||||||
|
|
||||||
def serve(self):
|
def serve(self):
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import pwd
|
import pwd
|
||||||
|
import json
|
||||||
from ruamel.yaml import YAML
|
from ruamel.yaml import YAML
|
||||||
import logging
|
import logging
|
||||||
import jsonschema
|
import jsonschema
|
||||||
|
@ -29,12 +30,14 @@ class Config:
|
||||||
)
|
)
|
||||||
with open(schema_path, "r") as stream:
|
with open(schema_path, "r") as stream:
|
||||||
self._schema = YAML().load(stream)
|
self._schema = YAML().load(stream)
|
||||||
|
self.find_config()
|
||||||
|
|
||||||
def find_config(self):
|
def find_config(self):
|
||||||
# who are we?
|
# who are we?
|
||||||
uid = os.getuid()
|
uid = os.getuid()
|
||||||
# name?
|
# name?
|
||||||
user = pwd.getpwuid(uid).pw_name
|
user = pwd.getpwuid(uid).pw_name
|
||||||
|
logging.debug("Trying to find the configuration")
|
||||||
try:
|
try:
|
||||||
if uid == 0:
|
if uid == 0:
|
||||||
config_file = "/etc/backive.yml"
|
config_file = "/etc/backive.yml"
|
||||||
|
@ -48,6 +51,7 @@ class Config:
|
||||||
|
|
||||||
with open(config_file, "r") as cfg:
|
with open(config_file, "r") as cfg:
|
||||||
self._config = YAML().load(cfg)
|
self._config = YAML().load(cfg)
|
||||||
|
logging.debug("Found config: %s", json.dumps(self._config, indent=4))
|
||||||
jsonschema.validate(self._config, self._schema)
|
jsonschema.validate(self._config, self._schema)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logging.error(e)
|
logging.error(e)
|
||||||
|
@ -76,8 +80,10 @@ class Config:
|
||||||
)
|
)
|
||||||
return self._backups
|
return self._backups
|
||||||
|
|
||||||
def get_backups_by_device(self, uuid):
|
async def get_backups_by_device(self, uuid):
|
||||||
name = None
|
name = None
|
||||||
|
if not self._config.get("devices"):
|
||||||
|
return None
|
||||||
for k, v in self._config.get("devices").items():
|
for k, v in self._config.get("devices").items():
|
||||||
if v.get("uuid") == uuid:
|
if v.get("uuid") == uuid:
|
||||||
name = k
|
name = k
|
||||||
|
@ -88,7 +94,7 @@ class Config:
|
||||||
def get_device_backups(self, name):
|
def get_device_backups(self, name):
|
||||||
backups = list()
|
backups = list()
|
||||||
for backup in self.get_backups():
|
for backup in self.get_backups():
|
||||||
if backup.target == name:
|
if backup.config.get("target_device") == name:
|
||||||
backups.append(backup)
|
backups.append(backup)
|
||||||
return backups
|
return backups
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
### backive config schema
|
### backive config schema
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
|
|
||||||
definitions:
|
definitions:
|
||||||
device_section:
|
device_section:
|
||||||
type: object
|
type: object
|
||||||
|
@ -67,8 +68,6 @@ definitions:
|
||||||
# tool:
|
# tool:
|
||||||
# type: object
|
# type: object
|
||||||
required:
|
required:
|
||||||
- from
|
|
||||||
- to
|
|
||||||
- target_device
|
- target_device
|
||||||
- script
|
- script
|
||||||
- frequency
|
- frequency
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
import os
|
import os
|
||||||
import logging
|
import logging
|
||||||
|
from subprocess import Popen
|
||||||
|
import asyncio
|
||||||
|
|
||||||
|
|
||||||
class Backup:
|
class Backup:
|
||||||
|
@ -15,7 +17,15 @@ class Backup:
|
||||||
def get_frequency(self):
|
def get_frequency(self):
|
||||||
return self.config.get("frequency", None)
|
return self.config.get("frequency", None)
|
||||||
|
|
||||||
def run(self):
|
async def run(self):
|
||||||
if self.config.get("scripts", None):
|
logging.debug("Running backup %s", self.name)
|
||||||
pass
|
if self.config.get("scripts", None) is not None:
|
||||||
|
logging.debug("Executing script..")
|
||||||
|
proc = await asyncio.create_subprocess_shell(
|
||||||
|
self.config.get("script"),
|
||||||
|
stdout=asyncio.subprocess.PIPE,
|
||||||
|
stderr=asyncio.subprocess.PIPE
|
||||||
|
)
|
||||||
|
stdout, stderr = await proc.communicate()
|
||||||
|
logging.debug("stdout: %s", stdout)
|
||||||
|
return stdout
|
||||||
|
|
Loading…
Reference in New Issue