diff --git a/.gitignore b/.gitignore index 2eea525d885d5148108f6f3a9a8613863f783d36..50888c086fb33538c9f18b6b76e4103d6bf6e512 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ -.env \ No newline at end of file +.env +*.egg-info +*.pyc \ No newline at end of file diff --git a/README.md b/README.md index 0c5e160e1199428023afc615cb65e274bc7bfb12..670d61a7253ce7ea2a885566b97f2599cf48b1c2 100644 --- a/README.md +++ b/README.md @@ -5,16 +5,8 @@ Generates csv input files for the `atdb_load_tasks_from_table` script. ### Installation ```bash -# Using pipenv (update python version if necessary) -cd atdb_csv_gen -pipenv install - -# or using pip (optional, use a virtual env) -cd atdb_csv_gen -pip install -r requirements.txt - -# or using docker -docker-build -t ldv-atdb-csv-gen csv_gen/ +# Using pip install (requires valid ssh key, until the repo is set to public) +pip install pip install -e "git+https://git.astron.nl/ldv/ldv_utils.git#egg=atdb-csv-gen&subdirectory=atdb_csv_gen" ``` ### Running @@ -22,21 +14,12 @@ docker-build -t ldv-atdb-csv-gen csv_gen/ # copy .env.example to .env and fill in the environment vars (DB credentials) cp ./atdb_csv_gen/.env.example ./atdb_csv_gen/.env -# run using pipenv -cd atdb_csv_gen -pipenv shell # this will use the .env file to set environment variables -./csv_gen.py -v -o out.csv 650273 - -# run using python (note) -cd atdb_csv_gen +# run using python export $(cat .env | xargs) # or export env vars elsewhere -./csv_gen.py -v -o out.csv 650273 - -# run in docker (creates out.csv in outdir) -docker run -it --rm --env-file atdb_csv_gen/.env -v $PWD/outdir:/outdir ldv-atdb-csv-gen /app/csv_gen.py -v -o /outdir/out.csv 650273 +atdb_csv_gen -v -o out.csv 650273 -# more info and flags -docker run -it --rm ldv-atdb-csv-gen +# More info and flags +atdb_csv_gen -h ``` ### Caveats diff --git a/atdb_csv_gen/.env.example b/atdb_csv_gen/.env.example index 194c3b2227682891ced96414df30291f65ecb33d..6563cfa65afa3f3178a04bb4933678a661e20a26 100644 --- a/atdb_csv_gen/.env.example +++ b/atdb_csv_gen/.env.example @@ -1,4 +1,4 @@ DB_USERNAME= DB_PASSWORD= DB_DATABASE= -DB_HOST=sdc-db.astron.nl \ No newline at end of file +DB_HOST= \ No newline at end of file diff --git a/atdb_csv_gen/Dockerfile b/atdb_csv_gen/Dockerfile deleted file mode 100644 index 5a2351b03643c9562ec69e0067bee1281188a27b..0000000000000000000000000000000000000000 --- a/atdb_csv_gen/Dockerfile +++ /dev/null @@ -1,10 +0,0 @@ -FROM python:3.10-slim - -RUN pip --no-cache-dir install pipenv - -WORKDIR /app -COPY Pipfile* /app/ -RUN pipenv lock -r > requirements.txt && pip install -r requirements.txt - -COPY csv_gen.py /app/ -CMD [ "/app/csv_gen.py", "-h" ] \ No newline at end of file diff --git a/atdb_csv_gen/Pipfile b/atdb_csv_gen/Pipfile deleted file mode 100644 index fdcc203c34d6efb3c1c3e9cadc7960146269bf81..0000000000000000000000000000000000000000 --- a/atdb_csv_gen/Pipfile +++ /dev/null @@ -1,18 +0,0 @@ -[[source]] -url = "https://pypi.org/simple" -verify_ssl = true -name = "pypi" - -[packages] -psycopg2-binary = "*" -sqlalchemy = "*" - -[dev-packages] -flake8 = "*" -black = "*" - -[requires] -python_version = "3.10" - -[pipenv] -allow_prereleases = true diff --git a/atdb_csv_gen/Pipfile.lock b/atdb_csv_gen/Pipfile.lock deleted file mode 100644 index 98a2927925f5dd99b70e1769907f15b56ca46f5e..0000000000000000000000000000000000000000 --- a/atdb_csv_gen/Pipfile.lock +++ /dev/null @@ -1,286 +0,0 @@ -{ - "_meta": { - "hash": { - "sha256": "6f0f652bc369fdd2d56890d91ca935b9973a50f4d398ca19d1d456010eb804f8" - }, - "pipfile-spec": 6, - "requires": { - "python_version": "3.10" - }, - "sources": [ - { - "name": "pypi", - "url": "https://pypi.org/simple", - "verify_ssl": true - } - ] - }, - "default": { - "greenlet": { - "hashes": [ - "sha256:00e44c8afdbe5467e4f7b5851be223be68adb4272f44696ee71fe46b7036a711", - "sha256:013d61294b6cd8fe3242932c1c5e36e5d1db2c8afb58606c5a67efce62c1f5fd", - "sha256:049fe7579230e44daef03a259faa24511d10ebfa44f69411d99e6a184fe68073", - "sha256:14d4f3cd4e8b524ae9b8aa567858beed70c392fdec26dbdb0a8a418392e71708", - "sha256:166eac03e48784a6a6e0e5f041cfebb1ab400b394db188c48b3a84737f505b67", - "sha256:17ff94e7a83aa8671a25bf5b59326ec26da379ace2ebc4411d690d80a7fbcf23", - "sha256:1e12bdc622676ce47ae9abbf455c189e442afdde8818d9da983085df6312e7a1", - "sha256:21915eb821a6b3d9d8eefdaf57d6c345b970ad722f856cd71739493ce003ad08", - "sha256:288c6a76705dc54fba69fbcb59904ae4ad768b4c768839b8ca5fdadec6dd8cfd", - "sha256:32ca72bbc673adbcfecb935bb3fb1b74e663d10a4b241aaa2f5a75fe1d1f90aa", - "sha256:356b3576ad078c89a6107caa9c50cc14e98e3a6c4874a37c3e0273e4baf33de8", - "sha256:40b951f601af999a8bf2ce8c71e8aaa4e8c6f78ff8afae7b808aae2dc50d4c40", - "sha256:572e1787d1460da79590bf44304abbc0a2da944ea64ec549188fa84d89bba7ab", - "sha256:58df5c2a0e293bf665a51f8a100d3e9956febfbf1d9aaf8c0677cf70218910c6", - "sha256:64e6175c2e53195278d7388c454e0b30997573f3f4bd63697f88d855f7a6a1fc", - "sha256:7227b47e73dedaa513cdebb98469705ef0d66eb5a1250144468e9c3097d6b59b", - "sha256:7418b6bfc7fe3331541b84bb2141c9baf1ec7132a7ecd9f375912eca810e714e", - "sha256:7cbd7574ce8e138bda9df4efc6bf2ab8572c9aff640d8ecfece1b006b68da963", - "sha256:7ff61ff178250f9bb3cd89752df0f1dd0e27316a8bd1465351652b1b4a4cdfd3", - "sha256:833e1551925ed51e6b44c800e71e77dacd7e49181fdc9ac9a0bf3714d515785d", - "sha256:8639cadfda96737427330a094476d4c7a56ac03de7265622fcf4cfe57c8ae18d", - "sha256:8c790abda465726cfb8bb08bd4ca9a5d0a7bd77c7ac1ca1b839ad823b948ea28", - "sha256:8d2f1fb53a421b410751887eb4ff21386d119ef9cde3797bf5e7ed49fb51a3b3", - "sha256:903bbd302a2378f984aef528f76d4c9b1748f318fe1294961c072bdc7f2ffa3e", - "sha256:93f81b134a165cc17123626ab8da2e30c0455441d4ab5576eed73a64c025b25c", - "sha256:95e69877983ea39b7303570fa6760f81a3eec23d0e3ab2021b7144b94d06202d", - "sha256:9633b3034d3d901f0a46b7939f8c4d64427dfba6bbc5a36b1a67364cf148a1b0", - "sha256:97e5306482182170ade15c4b0d8386ded995a07d7cc2ca8f27958d34d6736497", - "sha256:9f3cba480d3deb69f6ee2c1825060177a22c7826431458c697df88e6aeb3caee", - "sha256:aa5b467f15e78b82257319aebc78dd2915e4c1436c3c0d1ad6f53e47ba6e2713", - "sha256:abb7a75ed8b968f3061327c433a0fbd17b729947b400747c334a9c29a9af6c58", - "sha256:aec52725173bd3a7b56fe91bc56eccb26fbdff1386ef123abb63c84c5b43b63a", - "sha256:b11548073a2213d950c3f671aa88e6f83cda6e2fb97a8b6317b1b5b33d850e06", - "sha256:b1692f7d6bc45e3200844be0dba153612103db241691088626a33ff1f24a0d88", - "sha256:b92e29e58bef6d9cfd340c72b04d74c4b4e9f70c9fa7c78b674d1fec18896dc4", - "sha256:be5f425ff1f5f4b3c1e33ad64ab994eed12fc284a6ea71c5243fd564502ecbe5", - "sha256:dd0b1e9e891f69e7675ba5c92e28b90eaa045f6ab134ffe70b52e948aa175b3c", - "sha256:e30f5ea4ae2346e62cedde8794a56858a67b878dd79f7df76a0767e356b1744a", - "sha256:e6a36bb9474218c7a5b27ae476035497a6990e21d04c279884eb10d9b290f1b1", - "sha256:e859fcb4cbe93504ea18008d1df98dee4f7766db66c435e4882ab35cf70cac43", - "sha256:eb6ea6da4c787111adf40f697b4e58732ee0942b5d3bd8f435277643329ba627", - "sha256:ec8c433b3ab0419100bd45b47c9c8551248a5aee30ca5e9d399a0b57ac04651b", - "sha256:eff9d20417ff9dcb0d25e2defc2574d10b491bf2e693b4e491914738b7908168", - "sha256:f0214eb2a23b85528310dad848ad2ac58e735612929c8072f6093f3585fd342d", - "sha256:f276df9830dba7a333544bd41070e8175762a7ac20350786b322b714b0e654f5", - "sha256:f3acda1924472472ddd60c29e5b9db0cec629fbe3c5c5accb74d6d6d14773478", - "sha256:f70a9e237bb792c7cc7e44c531fd48f5897961701cdaa06cf22fc14965c496cf", - "sha256:f9d29ca8a77117315101425ec7ec2a47a22ccf59f5593378fc4077ac5b754fce", - "sha256:fa877ca7f6b48054f847b61d6fa7bed5cebb663ebc55e018fda12db09dcc664c", - "sha256:fdcec0b8399108577ec290f55551d926d9a1fa6cad45882093a7a07ac5ec147b" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==1.1.2" - }, - "psycopg2-binary": { - "hashes": [ - "sha256:0b7dae87f0b729922e06f85f667de7bf16455d411971b2043bbd9577af9d1975", - "sha256:0f2e04bd2a2ab54fa44ee67fe2d002bb90cee1c0f1cc0ebc3148af7b02034cbd", - "sha256:123c3fb684e9abfc47218d3784c7b4c47c8587951ea4dd5bc38b6636ac57f616", - "sha256:1473c0215b0613dd938db54a653f68251a45a78b05f6fc21af4326f40e8360a2", - "sha256:14db1752acdd2187d99cb2ca0a1a6dfe57fc65c3281e0f20e597aac8d2a5bd90", - "sha256:1e3a362790edc0a365385b1ac4cc0acc429a0c0d662d829a50b6ce743ae61b5a", - "sha256:1e85b74cbbb3056e3656f1cc4781294df03383127a8114cbc6531e8b8367bf1e", - "sha256:20f1ab44d8c352074e2d7ca67dc00843067788791be373e67a0911998787ce7d", - "sha256:24b0b6688b9f31a911f2361fe818492650795c9e5d3a1bc647acbd7440142a4f", - "sha256:2f62c207d1740b0bde5c4e949f857b044818f734a3d57f1d0d0edc65050532ed", - "sha256:3242b9619de955ab44581a03a64bdd7d5e470cc4183e8fcadd85ab9d3756ce7a", - "sha256:35c4310f8febe41f442d3c65066ca93cccefd75013df3d8c736c5b93ec288140", - "sha256:4235f9d5ddcab0b8dbd723dca56ea2922b485ea00e1dafacf33b0c7e840b3d32", - "sha256:542875f62bc56e91c6eac05a0deadeae20e1730be4c6334d8f04c944fcd99759", - "sha256:5ced67f1e34e1a450cdb48eb53ca73b60aa0af21c46b9b35ac3e581cf9f00e31", - "sha256:661509f51531ec125e52357a489ea3806640d0ca37d9dada461ffc69ee1e7b6e", - "sha256:7360647ea04db2e7dff1648d1da825c8cf68dc5fbd80b8fb5b3ee9f068dcd21a", - "sha256:736b8797b58febabb85494142c627bd182b50d2a7ec65322983e71065ad3034c", - "sha256:8c13d72ed6af7fd2c8acbd95661cf9477f94e381fce0792c04981a8283b52917", - "sha256:988b47ac70d204aed01589ed342303da7c4d84b56c2f4c4b8b00deda123372bf", - "sha256:995fc41ebda5a7a663a254a1dcac52638c3e847f48307b5416ee373da15075d7", - "sha256:a36c7eb6152ba5467fb264d73844877be8b0847874d4822b7cf2d3c0cb8cdcb0", - "sha256:aed4a9a7e3221b3e252c39d0bf794c438dc5453bc2963e8befe9d4cd324dff72", - "sha256:aef9aee84ec78af51107181d02fe8773b100b01c5dfde351184ad9223eab3698", - "sha256:b0221ca5a9837e040ebf61f48899926b5783668b7807419e4adae8175a31f773", - "sha256:b4d7679a08fea64573c969f6994a2631908bb2c0e69a7235648642f3d2e39a68", - "sha256:c250a7ec489b652c892e4f0a5d122cc14c3780f9f643e1a326754aedf82d9a76", - "sha256:ca86db5b561b894f9e5f115d6a159fff2a2570a652e07889d8a383b5fae66eb4", - "sha256:cfc523edecddaef56f6740d7de1ce24a2fdf94fd5e704091856a201872e37f9f", - "sha256:d92272c7c16e105788efe2cfa5d680f07e34e0c29b03c1908f8636f55d5f915a", - "sha256:da113b70f6ec40e7d81b43d1b139b9db6a05727ab8be1ee559f3a69854a69d34", - "sha256:f6fac64a38f6768e7bc7b035b9e10d8a538a9fadce06b983fb3e6fa55ac5f5ce", - "sha256:f8559617b1fcf59a9aedba2c9838b5b6aa211ffedecabca412b92a1ff75aac1a", - "sha256:fbb42a541b1093385a2d8c7eec94d26d30437d0e77c1d25dae1dcc46741a385e" - ], - "index": "pypi", - "version": "==2.9.1" - }, - "sqlalchemy": { - "hashes": [ - "sha256:07ac4461a1116b317519ddf6f34bcb00b011b5c1370ebeaaf56595504ffc7e84", - "sha256:090536fd23bf49077ee94ff97142bc5ee8bad24294c3d7c8d5284267c885dde7", - "sha256:1dee515578d04bc80c4f9a8c8cfe93f455db725059e885f1b1da174d91c4d077", - "sha256:1ef37c9ec2015ce2f0dc1084514e197f2f199d3dc3514190db7620b78e6004c8", - "sha256:295b90efef1278f27fe27d94a45460ae3c17f5c5c2b32c163e29c359740a1599", - "sha256:2ce42ad1f59eb85c55c44fb505f8854081ee23748f76b62a7f569cfa9b6d0604", - "sha256:2feb028dc75e13ba93456a42ac042b255bf94dbd692bf80b47b22653bb25ccf8", - "sha256:31f4426cfad19b5a50d07153146b2bcb372a279975d5fa39f98883c0ef0f3313", - "sha256:3c0c5f54560a92691d54b0768d67b4d3159e514b426cfcb1258af8c195577e8f", - "sha256:463ef692259ff8189be42223e433542347ae17e33f91c1013e9c5c64e2798088", - "sha256:4a882dedb9dfa6f33524953c3e3d72bcf518a5defd6d5863150a821928b19ad3", - "sha256:4c185c928e2638af9bae13acc3f70e0096eac76471a1101a10f96b80666b8270", - "sha256:5039faa365e7522a8eb4736a54afd24a7e75dcc33b81ab2f0e6c456140f1ad64", - "sha256:5c6774b34782116ad9bdec61c2dbce9faaca4b166a0bc8e7b03c2b870b121d94", - "sha256:6bc7f9d7d90ef55e8c6db1308a8619cd8f40e24a34f759119b95e7284dca351a", - "sha256:7e8ef103eaa72a857746fd57dda5b8b5961e8e82a528a3f8b7e2884d8506f0b7", - "sha256:7ef421c3887b39c6f352e5022a53ac18de8387de331130481cb956b2d029cad6", - "sha256:908fad32c53b17aad12d722379150c3c5317c422437e44032256a77df1746292", - "sha256:91efbda4e6d311812f23996242bad7665c1392209554f8a31ec6db757456db5c", - "sha256:a6506c17b0b6016656783232d0bdd03fd333f1f654d51a14d93223f953903646", - "sha256:a95bf9c725012dcd7ea3cac16bf647054e0d62b31d67467d228338e6a163e4ff", - "sha256:ad7e403fc1e3cb76e802872694e30d6ca6129b9bc6ad4e7caa48ca35f8a144f8", - "sha256:b86f762cee3709722ab4691981958cbec475ea43406a6916a7ec375db9cbd9e9", - "sha256:ba84026e84379326bbf2f0c50792f2ae56ab9c01937df5597b6893810b8ca369", - "sha256:bca660b76672e15d70a7dba5e703e1ce451a0257b6bd2028e62b0487885e8ae9", - "sha256:c24c01dcd03426a5fe5ee7af735906bec6084977b9027a3605d11d949a565c01", - "sha256:c2f2114b0968a280f94deeeaa31cfbac9175e6ac7bd3058b3ce6e054ecd762b3", - "sha256:c46f013ff31b80cbe36410281675e1fb4eaf3e25c284fd8a69981c73f6fa4cb4", - "sha256:c757ba1279b85b3460e72e8b92239dae6f8b060a75fb24b3d9be984dd78cfa55", - "sha256:cc6b21f19bc9d4cd77cbcba5f3b260436ce033f1053cea225b6efea2603d201e", - "sha256:dbf588ab09e522ac2cbd010919a592c6aae2f15ccc3cd9a96d01c42fbc13f63e", - "sha256:de996756d894a2d52c132742e3b6d64ecd37e0919ddadf4dc3981818777c7e67", - "sha256:e700d48056475d077f867e6a36e58546de71bdb6fdc3d34b879e3240827fefab", - "sha256:f1e97c5f36b94542f72917b62f3a2f92be914b2cf33b80fa69cede7529241d2a", - "sha256:fb2aa74a6e3c2cebea38dd21633671841fbe70ea486053cba33d68e3e22ccc0a", - "sha256:ff8f91a7b1c4a1c7772caa9efe640f2768828897044748f2458b708f1026e2d4" - ], - "index": "pypi", - "version": "==1.4.26" - } - }, - "develop": { - "black": { - "hashes": [ - "sha256:380f1b5da05e5a1429225676655dddb96f5ae8c75bdf91e53d798871b902a115", - "sha256:7de4cfc7eb6b710de325712d40125689101d21d25283eed7e9998722cf10eb91" - ], - "index": "pypi", - "version": "==21.9b0" - }, - "click": { - "hashes": [ - "sha256:353f466495adaeb40b6b5f592f9f91cb22372351c84caeb068132442a4518ef3", - "sha256:410e932b050f5eed773c4cda94de75971c89cdb3155a72a0831139a79e5ecb5b" - ], - "markers": "python_version >= '3.6'", - "version": "==8.0.3" - }, - "flake8": { - "hashes": [ - "sha256:479b1304f72536a55948cb40a32dce8bb0ffe3501e26eaf292c7e60eb5e0428d", - "sha256:806e034dda44114815e23c16ef92f95c91e4c71100ff52813adf7132a6ad870d" - ], - "index": "pypi", - "version": "==4.0.1" - }, - "mccabe": { - "hashes": [ - "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42", - "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f" - ], - "version": "==0.6.1" - }, - "mypy-extensions": { - "hashes": [ - "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d", - "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8" - ], - "version": "==0.4.3" - }, - "pathspec": { - "hashes": [ - "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a", - "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1" - ], - "version": "==0.9.0" - }, - "platformdirs": { - "hashes": [ - "sha256:367a5e80b3d04d2428ffa76d33f124cf11e8fff2acdaa9b43d545f5c7d661ef2", - "sha256:8868bbe3c3c80d42f20156f22e7131d2fb321f5bc86a2a345375c6481a67021d" - ], - "markers": "python_version >= '3.6'", - "version": "==2.4.0" - }, - "pycodestyle": { - "hashes": [ - "sha256:720f8b39dde8b293825e7ff02c475f3077124006db4f440dcbc9a20b76548a20", - "sha256:eddd5847ef438ea1c7870ca7eb78a9d47ce0cdb4851a5523949f2601d0cbbe7f" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==2.8.0" - }, - "pyflakes": { - "hashes": [ - "sha256:05a85c2872edf37a4ed30b0cce2f6093e1d0581f8c19d7393122da7e25b2b24c", - "sha256:3bb3a3f256f4b7968c9c788781e4ff07dce46bdf12339dcda61053375426ee2e" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==2.4.0" - }, - "regex": { - "hashes": [ - "sha256:0c186691a7995ef1db61205e00545bf161fb7b59cdb8c1201c89b333141c438a", - "sha256:0dcc0e71118be8c69252c207630faf13ca5e1b8583d57012aae191e7d6d28b84", - "sha256:0f7552429dd39f70057ac5d0e897e5bfe211629652399a21671e53f2a9693a4e", - "sha256:129472cd06062fb13e7b4670a102951a3e655e9b91634432cfbdb7810af9d710", - "sha256:13ec99df95003f56edcd307db44f06fbeb708c4ccdcf940478067dd62353181e", - "sha256:1f2b59c28afc53973d22e7bc18428721ee8ca6079becf1b36571c42627321c65", - "sha256:2b20f544cbbeffe171911f6ce90388ad36fe3fad26b7c7a35d4762817e9ea69c", - "sha256:2fb698037c35109d3c2e30f2beb499e5ebae6e4bb8ff2e60c50b9a805a716f79", - "sha256:34d870f9f27f2161709054d73646fc9aca49480617a65533fc2b4611c518e455", - "sha256:391703a2abf8013d95bae39145d26b4e21531ab82e22f26cd3a181ee2644c234", - "sha256:450dc27483548214314640c89a0f275dbc557968ed088da40bde7ef8fb52829e", - "sha256:45b65d6a275a478ac2cbd7fdbf7cc93c1982d613de4574b56fd6972ceadb8395", - "sha256:5095a411c8479e715784a0c9236568ae72509450ee2226b649083730f3fadfc6", - "sha256:530fc2bbb3dc1ebb17f70f7b234f90a1dd43b1b489ea38cea7be95fb21cdb5c7", - "sha256:56f0c81c44638dfd0e2367df1a331b4ddf2e771366c4b9c5d9a473de75e3e1c7", - "sha256:5e9c9e0ce92f27cef79e28e877c6b6988c48b16942258f3bc55d39b5f911df4f", - "sha256:6d7722136c6ed75caf84e1788df36397efdc5dbadab95e59c2bba82d4d808a4c", - "sha256:74d071dbe4b53c602edd87a7476ab23015a991374ddb228d941929ad7c8c922e", - "sha256:7b568809dca44cb75c8ebb260844ea98252c8c88396f9d203f5094e50a70355f", - "sha256:80bb5d2e92b2258188e7dcae5b188c7bf868eafdf800ea6edd0fbfc029984a88", - "sha256:8d1cdcda6bd16268316d5db1038965acf948f2a6f43acc2e0b1641ceab443623", - "sha256:9f665677e46c5a4d288ece12fdedf4f4204a422bb28ff05f0e6b08b7447796d1", - "sha256:a30513828180264294953cecd942202dfda64e85195ae36c265daf4052af0464", - "sha256:a7a986c45d1099a5de766a15de7bee3840b1e0e1a344430926af08e5297cf666", - "sha256:a940ca7e7189d23da2bfbb38973832813eab6bd83f3bf89a977668c2f813deae", - "sha256:ab7c5684ff3538b67df3f93d66bd3369b749087871ae3786e70ef39e601345b0", - "sha256:be04739a27be55631069b348dda0c81d8ea9822b5da10b8019b789e42d1fe452", - "sha256:c0938ddd60cc04e8f1faf7a14a166ac939aac703745bfcd8e8f20322a7373019", - "sha256:cb46b542133999580ffb691baf67410306833ee1e4f58ed06b6a7aaf4e046952", - "sha256:d134757a37d8640f3c0abb41f5e68b7cf66c644f54ef1cb0573b7ea1c63e1509", - "sha256:de557502c3bec8e634246588a94e82f1ee1b9dfcfdc453267c4fb652ff531570", - "sha256:ded0c4a3eee56b57fcb2315e40812b173cafe79d2f992d50015f4387445737fa", - "sha256:e1dae12321b31059a1a72aaa0e6ba30156fe7e633355e445451e4021b8e122b6", - "sha256:eb672217f7bd640411cfc69756ce721d00ae600814708d35c930930f18e8029f", - "sha256:ee684f139c91e69fe09b8e83d18b4d63bf87d9440c1eb2eeb52ee851883b1b29", - "sha256:f3f9a91d3cc5e5b0ddf1043c0ae5fa4852f18a1c0050318baf5fc7930ecc1f9c" - ], - "version": "==2021.10.23" - }, - "tomli": { - "hashes": [ - "sha256:c6ce0015eb38820eaf32b5db832dbc26deb3dd427bd5f6556cf0acac2c214fee", - "sha256:f04066f68f5554911363063a30b108d2b5a5b1a010aa8b6132af78489fe3aade" - ], - "markers": "python_version >= '3.6'", - "version": "==1.2.2" - }, - "typing-extensions": { - "hashes": [ - "sha256:49f75d16ff11f1cd258e1b988ccff82a3ca5570217d7ad8c5f48205dd99a677e", - "sha256:d8226d10bc02a29bcc81df19a26e56a9647f8b0a6d4a83924139f4a8b01f17b7", - "sha256:f1d25edafde516b146ecd0613dabcc61409817af4766fbbcfb8d1ad4ec441a34" - ], - "version": "==3.10.0.2" - } - } -} diff --git a/atdb_csv_gen/atdb_csv_gen/__init__.py b/atdb_csv_gen/atdb_csv_gen/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..81aab313eddd2f4cfe046e7c331f1968a8f8e2c7 --- /dev/null +++ b/atdb_csv_gen/atdb_csv_gen/__init__.py @@ -0,0 +1 @@ +from .csv_gen import gen_csv, main \ No newline at end of file diff --git a/atdb_csv_gen/atdb_csv_gen.py b/atdb_csv_gen/atdb_csv_gen/csv_gen.py similarity index 71% rename from atdb_csv_gen/atdb_csv_gen.py rename to atdb_csv_gen/atdb_csv_gen/csv_gen.py index 627ad3a109d7b453b1676c505f2ff3f8065a297e..8a1ad36c252e2301dfd48c0c21d0c7f125b7727b 100755 --- a/atdb_csv_gen/atdb_csv_gen.py +++ b/atdb_csv_gen/atdb_csv_gen/csv_gen.py @@ -3,6 +3,7 @@ import logging import os +import sys from argparse import ArgumentParser, Namespace from sys import version from typing import Iterator, List, Optional, Tuple @@ -22,10 +23,15 @@ logger = logging.getLogger(__name__) def parse_args() -> Namespace: """ Parse CLI arguments """ - parser = ArgumentParser(description="Generates CSV for atdb_load_tasks_from_table") - parser.add_argument("obs_id", help="Observation ID (SAS ID)") - parser.add_argument("-o", help="Output file") - parser.add_argument("--save-missing", help="Directory to store csc with missing files") + + parser = ArgumentParser(description="Generates CSV for atdb_load_tasks_from_table\n" + "Requires the following env vars:\n" + "\tDB_USERNAME, DB_PASSWORD, DB_DATABASE and optionally:\n" + "\tDB_HOST (localhost by default) and DB_PORT (5432, postgres default)" + ) + parser.add_argument("obs_id", type=str, help="Observation ID (SAS ID)") + parser.add_argument("-o", type=str, help="Output file") + parser.add_argument("--save-missing", type=str, help="Directory to store csv with missing files") parser.add_argument("-v", action="store_true", help="Verbose logging") parser.add_argument("-q", action="store_true", help="Quiet logging (only errors)") return parser.parse_args() @@ -64,7 +70,23 @@ def write_output(csv_data: str, output: Optional[str]): else: print(csv_data) -def main(obs_id: str, o_file: Optional[str]): +def gen_csv(obs_id: str, o_file: Optional[str] = None, save_missing:Optional[str] = None): + """ Generate CSV file for ATDB + + Parameters + ---------- + obs_id : string + observation id + o_file : string, optional + File to write the output to (by default to stdout) + save_missing : string, optional + Directory to write missing files output to (by default only shows warnings!) + """ + + if not all([USER, PASSWORD, DATABASE, HOST, PORT]): + raise RuntimeError("Missing DB credentials in env vars.\n" + "Did you export the .env file?") + engine = create_engine(f"postgresql://{USER}:{PASSWORD}@{HOST}:{PORT}/{DATABASE}") logger.debug("Connected to %s:%s", HOST, PORT) @@ -86,6 +108,8 @@ def main(obs_id: str, o_file: Optional[str]): logger.warning("Observation contains %i registered files which are not present on disk", len(reg_no_file)) for row in reg_no_file: logger.warning(row) + if save_missing: + write_output("\n".join(reg_no_file), os.path.join(save_missing, "reg_no_file.csv")) # File found, not registered file_no_reg = cra_data.difference(reg_data) @@ -93,6 +117,8 @@ def main(obs_id: str, o_file: Optional[str]): logger.warning("Observation contains %i files on disk which are not registered in the LTA", len(file_no_reg)) for row in file_no_reg: logger.warning(row) + if save_missing: + write_output("\n".join(file_no_reg), os.path.join(save_missing, "file_no_reg.csv")) inter = reg_data.intersection(cra_data) @@ -102,7 +128,7 @@ def main(obs_id: str, o_file: Optional[str]): logger.info("Done") -if __name__ == "__main__": +def main(): args = parse_args() if args.v: @@ -112,4 +138,7 @@ if __name__ == "__main__": else: logging.basicConfig(level=logging.INFO) - main(obs_id=args.obs_id,o_file=args.o) + gen_csv(obs_id=args.obs_id,o_file=args.o, save_missing=args.save_missing) + +if __name__ == "__main__": + main() diff --git a/atdb_csv_gen/bin/atdb_csv_gen b/atdb_csv_gen/bin/atdb_csv_gen new file mode 100644 index 0000000000000000000000000000000000000000..3d2351126093b50220d348354a42249817526087 --- /dev/null +++ b/atdb_csv_gen/bin/atdb_csv_gen @@ -0,0 +1,4 @@ +#!/usr/bin/env python3 + +import atdb_csv_gen +atdb_csv_gen.main() \ No newline at end of file diff --git a/atdb_csv_gen/requirements.txt b/atdb_csv_gen/requirements.txt index 4e812e590066faf3b9840aeb6bae5701f48a065d..41d60dfb716af2546848fa88f99d90c4a543682e 100644 --- a/atdb_csv_gen/requirements.txt +++ b/atdb_csv_gen/requirements.txt @@ -1,11 +1,2 @@ -# -# These requirements were autogenerated by pipenv -# To regenerate from the project's Pipfile, run: -# -# pipenv lock --requirements -# - --i https://pypi.org/simple -greenlet==1.1.2; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' -psycopg2-binary==2.9.1 -sqlalchemy==1.4.26 +psycopg2-binary>=2.9.1 +sqlalchemy>=1.4.26 diff --git a/atdb_csv_gen/setup.py b/atdb_csv_gen/setup.py new file mode 100644 index 0000000000000000000000000000000000000000..07cc9eb3fa5f9f718ea953707cd5cf407e532ce0 --- /dev/null +++ b/atdb_csv_gen/setup.py @@ -0,0 +1,21 @@ +# SPDX-License-Identifier: Apache-2.0 + +from setuptools import setup + + +def get_requirements() -> str: + with open("requirements.txt") as reqs: + return reqs.read().split("\n") + +setup( + name="atdb-csv-gen", + version="1.0.0", + description="Tool to generate csv files for ATDB", + author="ASTRON", + packages=["atdb_csv_gen"], + install_requires=get_requirements(), + scripts=["bin/atdb_csv_gen"], + license="Apache License, Version 2.0", + zip=False, + python_requires=">=3.7" +)