aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Mark <[email protected]>2019-12-16 11:16:48 -0800
committerGravatar GitHub <[email protected]>2019-12-16 11:16:48 -0800
commit4d41ba2bbcde47d1304d25c53953e5de62c24d64 (patch)
tree14ccc8d64cc9cfb71f3329a5e4ee7c1e6ea9f2c0
parentMerge pull request #50 from python-discord/python-3.8 (diff)
parentPin external dependencies (diff)
Merge pull request #51 from python-discord/3-external-libs
Add external libraries and update image
-rw-r--r--Pipfile16
-rw-r--r--Pipfile.lock278
-rw-r--r--README.md10
-rw-r--r--azure-pipelines.yml10
-rw-r--r--docker/base.Dockerfile37
-rwxr-xr-xscripts/dev.sh10
6 files changed, 325 insertions, 36 deletions
diff --git a/Pipfile b/Pipfile
index 8ad9be0..afda418 100644
--- a/Pipfile
+++ b/Pipfile
@@ -7,6 +7,22 @@ name = "pypi"
falcon = "~= 2.0.0"
gunicorn = "~= 19.9"
jsonschema = "~= 3.0"
+numpy = "~= 1.17"
+scipy = "~= 1.3"
+pandas = "~= 0.25"
+sympy = "~= 1.5"
+fuzzywuzzy = "~= 0.17"
+python-dateutil = "~= 2.8"
+pendulum = "~= 2.0"
+arrow = "~= 0.15"
+yarl = "~= 1.4"
+attrs = "~= 19.3"
+forbiddenfruit = "~= 0.1"
+more-itertools = "~= 8.0"
+networkx = "~= 2.4"
+beautifulsoup4 = "~= 4.8"
+pyyaml = "~= 5.2"
+toml = "~= 0.10"
[dev-packages]
coverage = ">= 4.4.2, == 4.*"
diff --git a/Pipfile.lock b/Pipfile.lock
index 96987ac..578aec1 100644
--- a/Pipfile.lock
+++ b/Pipfile.lock
@@ -1,7 +1,7 @@
{
"_meta": {
"hash": {
- "sha256": "08bdb1240d05a0befb948a14f6d1a401a8ecf54e7b441d34da49c989956c3c00"
+ "sha256": "abd28ace3bcd59d9ec30c2b4bf9c1b1598f54f33d75e08bb0179fe985946dad5"
},
"pipfile-spec": 6,
"requires": {
@@ -16,13 +16,38 @@
]
},
"default": {
+ "arrow": {
+ "hashes": [
+ "sha256:01a16d8a93eddf86a29237f32ae36b29c27f047e79312eb4df5d55fd5a2b3183",
+ "sha256:e1a318a4c0b787833ae46302c02488b6eeef413c6a13324b3261ad320f21ec1e"
+ ],
+ "index": "pypi",
+ "version": "==0.15.4"
+ },
"attrs": {
"hashes": [
"sha256:08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c",
"sha256:f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72"
],
+ "index": "pypi",
"version": "==19.3.0"
},
+ "beautifulsoup4": {
+ "hashes": [
+ "sha256:5279c36b4b2ec2cb4298d723791467e3000e5384a43ea0cdf5d45207c7e97169",
+ "sha256:6135db2ba678168c07950f9a16c4031822c6f4aec75a65e0a97bc5ca09789931",
+ "sha256:dcdef580e18a76d54002088602eba453eec38ebbcafafeaabd8cab12b6155d57"
+ ],
+ "index": "pypi",
+ "version": "==4.8.1"
+ },
+ "decorator": {
+ "hashes": [
+ "sha256:54c38050039232e1db4ad7375cfce6748d7b41c29e95a081c8a6d2c30364a2ce",
+ "sha256:5d19b92a3c8f7f101c8dd86afd86b0f061a8ce4540ab8cd401fa2542756bce6d"
+ ],
+ "version": "==4.4.1"
+ },
"falcon": {
"hashes": [
"sha256:18157af2a4fc3feedf2b5dcc6196f448639acf01c68bc33d4d5a04c3ef87f494",
@@ -43,6 +68,21 @@
"index": "pypi",
"version": "==2.0.0"
},
+ "forbiddenfruit": {
+ "hashes": [
+ "sha256:1188a07cc24a9bd2c529dad06490b80a6fc88cde968af4d7861da81686b2cc8c"
+ ],
+ "index": "pypi",
+ "version": "==0.1.3"
+ },
+ "fuzzywuzzy": {
+ "hashes": [
+ "sha256:5ac7c0b3f4658d2743aa17da53a55598144edbc5bee3c6863840636e6926f254",
+ "sha256:6f49de47db00e1c71d40ad16da42284ac357936fa9b66bea1df63fed07122d62"
+ ],
+ "index": "pypi",
+ "version": "==0.17.0"
+ },
"gunicorn": {
"hashes": [
"sha256:c3930fe8de6778ab5ea716cab432ae6335fa9f03b3f2c3e02529214c476f4bcb",
@@ -51,6 +91,13 @@
"index": "pypi",
"version": "==19.10.0"
},
+ "idna": {
+ "hashes": [
+ "sha256:c357b3f628cf53ae2c4c05627ecc484553142ca23264e593d327bcde5e9c3407",
+ "sha256:ea8b7f6188e6fa117537c3df7da9fc686d485087abf6ac197f9c46432f7e4a3c"
+ ],
+ "version": "==2.8"
+ },
"jsonschema": {
"hashes": [
"sha256:4e5b3cf8216f577bee9ce139cbe72eca3ea4f292ec60928ff24758ce626cd163",
@@ -59,18 +106,238 @@
"index": "pypi",
"version": "==3.2.0"
},
+ "more-itertools": {
+ "hashes": [
+ "sha256:b84b238cce0d9adad5ed87e745778d20a3f8487d0f0cb8b8a586816c7496458d",
+ "sha256:c833ef592a0324bcc6a60e48440da07645063c453880c9477ceb22490aec1564"
+ ],
+ "index": "pypi",
+ "version": "==8.0.2"
+ },
+ "mpmath": {
+ "hashes": [
+ "sha256:fc17abe05fbab3382b61a123c398508183406fa132e0223874578e20946499f6"
+ ],
+ "version": "==1.1.0"
+ },
+ "multidict": {
+ "hashes": [
+ "sha256:09c19f642e055550c9319d5123221b7e07fc79bda58122aa93910e52f2ab2f29",
+ "sha256:0c1a5d5f7aa7189f7b83c4411c2af8f1d38d69c4360d5de3eea129c65d8d7ce2",
+ "sha256:12f22980e7ed0972a969520fb1e55682c9fca89a68b21b49ec43132e680be812",
+ "sha256:258660e9d6b52de1a75097944e12718d3aa59adc611b703361e3577d69167aaf",
+ "sha256:3374a23e707848f27b3438500db0c69eca82929337656fce556bd70031fbda74",
+ "sha256:503b7fce0054c73aa631cc910a470052df33d599f3401f3b77e54d31182525d5",
+ "sha256:6ce55f2c45ffc90239aab625bb1b4864eef33f73ea88487ef968291fbf09fb3f",
+ "sha256:725496dde5730f4ad0a627e1a58e2620c1bde0ad1c8080aae15d583eb23344ce",
+ "sha256:a3721078beff247d0cd4fb19d915c2c25f90907cf8d6cd49d0413a24915577c6",
+ "sha256:ba566518550f81daca649eded8b5c7dd09210a854637c82351410aa15c49324a",
+ "sha256:c42362750a51a15dc905cb891658f822ee5021bfbea898c03aa1ed833e2248a5",
+ "sha256:cf14aaf2ab067ca10bca0b14d5cbd751dd249e65d371734bc0e47ddd8fafc175",
+ "sha256:cf24e15986762f0e75a622eb19cfe39a042e952b8afba3e7408835b9af2be4fb",
+ "sha256:d7b6da08538302c5245cd3103f333655ba7f274915f1f5121c4f4b5fbdb3febe",
+ "sha256:e27e13b9ff0a914a6b8fb7e4947d4ac6be8e4f61ede17edffabd088817df9e26",
+ "sha256:e53b205f8afd76fc6c942ef39e8ee7c519c775d336291d32874082a87802c67c",
+ "sha256:ec804fc5f68695d91c24d716020278fcffd50890492690a7e1fef2e741f7172c"
+ ],
+ "version": "==4.7.1"
+ },
+ "networkx": {
+ "hashes": [
+ "sha256:cdfbf698749a5014bf2ed9db4a07a5295df1d3a53bf80bf3cbd61edf9df05fa1",
+ "sha256:f8f4ff0b6f96e4f9b16af6b84622597b5334bf9cae8cf9b2e42e7985d5c95c64"
+ ],
+ "index": "pypi",
+ "version": "==2.4"
+ },
+ "numpy": {
+ "hashes": [
+ "sha256:0a7a1dd123aecc9f0076934288ceed7fd9a81ba3919f11a855a7887cbe82a02f",
+ "sha256:0c0763787133dfeec19904c22c7e358b231c87ba3206b211652f8cbe1241deb6",
+ "sha256:3d52298d0be333583739f1aec9026f3b09fdfe3ddf7c7028cb16d9d2af1cca7e",
+ "sha256:43bb4b70585f1c2d153e45323a886839f98af8bfa810f7014b20be714c37c447",
+ "sha256:475963c5b9e116c38ad7347e154e5651d05a2286d86455671f5b1eebba5feb76",
+ "sha256:64874913367f18eb3013b16123c9fed113962e75d809fca5b78ebfbb73ed93ba",
+ "sha256:683828e50c339fc9e68720396f2de14253992c495fdddef77a1e17de55f1decc",
+ "sha256:6ca4000c4a6f95a78c33c7dadbb9495c10880be9c89316aa536eac359ab820ae",
+ "sha256:75fd817b7061f6378e4659dd792c84c0b60533e867f83e0d1e52d5d8e53df88c",
+ "sha256:7d81d784bdbed30137aca242ab307f3e65c8d93f4c7b7d8f322110b2e90177f9",
+ "sha256:8d0af8d3664f142414fd5b15cabfd3b6cc3ef242a3c7a7493257025be5a6955f",
+ "sha256:9679831005fb16c6df3dd35d17aa31dc0d4d7573d84f0b44cc481490a65c7725",
+ "sha256:a8f67ebfae9f575d85fa859b54d3bdecaeece74e3274b0b5c5f804d7ca789fe1",
+ "sha256:acbf5c52db4adb366c064d0b7c7899e3e778d89db585feadd23b06b587d64761",
+ "sha256:ada4805ed51f5bcaa3a06d3dd94939351869c095e30a2b54264f5a5004b52170",
+ "sha256:c7354e8f0eca5c110b7e978034cd86ed98a7a5ffcf69ca97535445a595e07b8e",
+ "sha256:e2e9d8c87120ba2c591f60e32736b82b67f72c37ba88a4c23c81b5b8fa49c018",
+ "sha256:e467c57121fe1b78a8f68dd9255fbb3bb3f4f7547c6b9e109f31d14569f490c3",
+ "sha256:ede47b98de79565fcd7f2decb475e2dcc85ee4097743e551fe26cfc7eb3ff143",
+ "sha256:f58913e9227400f1395c7b800503ebfdb0772f1c33ff8cb4d6451c06cabdf316",
+ "sha256:fe39f5fd4103ec4ca3cb8600b19216cd1ff316b4990f4c0b6057ad982c0a34d5"
+ ],
+ "index": "pypi",
+ "version": "==1.17.4"
+ },
+ "pandas": {
+ "hashes": [
+ "sha256:00dff3a8e337f5ed7ad295d98a31821d3d0fe7792da82d78d7fd79b89c03ea9d",
+ "sha256:22361b1597c8c2ffd697aa9bf85423afa9e1fcfa6b1ea821054a244d5f24d75e",
+ "sha256:255920e63850dc512ce356233081098554d641ba99c3767dde9e9f35630f994b",
+ "sha256:26382aab9c119735908d94d2c5c08020a4a0a82969b7e5eefb92f902b3b30ad7",
+ "sha256:33970f4cacdd9a0ddb8f21e151bfb9f178afb7c36eb7c25b9094c02876f385c2",
+ "sha256:4545467a637e0e1393f7d05d61dace89689ad6d6f66f267f86fff737b702cce9",
+ "sha256:52da74df8a9c9a103af0a72c9d5fdc8e0183a90884278db7f386b5692a2220a4",
+ "sha256:61741f5aeb252f39c3031d11405305b6d10ce663c53bc3112705d7ad66c013d0",
+ "sha256:6a3ac2c87e4e32a969921d1428525f09462770c349147aa8e9ab95f88c71ec71",
+ "sha256:7458c48e3d15b8aaa7d575be60e1e4dd70348efcd9376656b72fecd55c59a4c3",
+ "sha256:78bf638993219311377ce9836b3dc05f627a666d0dbc8cec37c0ff3c9ada673b",
+ "sha256:8153705d6545fd9eb6dd2bc79301bff08825d2e2f716d5dced48daafc2d0b81f",
+ "sha256:975c461accd14e89d71772e89108a050fa824c0b87a67d34cedf245f6681fc17",
+ "sha256:9962957a27bfb70ab64103d0a7b42fa59c642fb4ed4cb75d0227b7bb9228535d",
+ "sha256:adc3d3a3f9e59a38d923e90e20c4922fc62d1e5a03d083440468c6d8f3f1ae0a",
+ "sha256:bbe3eb765a0b1e578833d243e2814b60c825b7fdbf4cdfe8e8aae8a08ed56ecf",
+ "sha256:df8864824b1fe488cf778c3650ee59c3a0d8f42e53707de167ba6b4f7d35f133",
+ "sha256:e45055c30a608076e31a9fcd780a956ed3b1fa20db61561b8d88b79259f526f7",
+ "sha256:ee50c2142cdcf41995655d499a157d0a812fce55c97d9aad13bc1eef837ed36c"
+ ],
+ "index": "pypi",
+ "version": "==0.25.3"
+ },
+ "pendulum": {
+ "hashes": [
+ "sha256:1cde6e3c6310fb882c98f373795f807cb2bd6af01f34d2857e6e283b5ee91e09",
+ "sha256:485aef2089defee88607d37d5bc238934d0b90993d7bf9ceb36e481af41e9c66",
+ "sha256:57801754e05f30e8a7e4d24734c9fad82c6c3ec489151555f0fc66bb32ba6d6d",
+ "sha256:7ee344bc87cb425b04717b90d14ffde14c1dd64eaa73060b3772edcf57f3e866",
+ "sha256:c460f4d8dc41ec3c4377ac1807678cd72fe5e973cc2943c104ffdeaac32dacb7",
+ "sha256:d3078e007315a959989c41cee5cfd63cfeeca21dd3d8295f4bc24199489e9b6c"
+ ],
+ "index": "pypi",
+ "version": "==2.0.5"
+ },
"pyrsistent": {
"hashes": [
"sha256:f3b280d030afb652f79d67c5586157c5c1355c9a58dfc7940566e28d28f3df1b"
],
"version": "==0.15.6"
},
+ "python-dateutil": {
+ "hashes": [
+ "sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c",
+ "sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a"
+ ],
+ "index": "pypi",
+ "version": "==2.8.1"
+ },
+ "pytz": {
+ "hashes": [
+ "sha256:1c557d7d0e871de1f5ccd5833f60fb2550652da6be2693c1e02300743d21500d",
+ "sha256:b02c06db6cf09c12dd25137e563b31700d3b80fcc4ad23abb7a315f2789819be"
+ ],
+ "version": "==2019.3"
+ },
+ "pytzdata": {
+ "hashes": [
+ "sha256:84c52b9a47d097fcd483f047a544979de6c3a86e94c845e3569e9f8acd0fa071",
+ "sha256:fac06f7cdfa903188dc4848c655e4adaee67ee0f2fe08e7daf815cf2a761ee5e"
+ ],
+ "version": "==2019.3"
+ },
+ "pyyaml": {
+ "hashes": [
+ "sha256:0e7f69397d53155e55d10ff68fdfb2cf630a35e6daf65cf0bdeaf04f127c09dc",
+ "sha256:2e9f0b7c5914367b0916c3c104a024bb68f269a486b9d04a2e8ac6f6597b7803",
+ "sha256:35ace9b4147848cafac3db142795ee42deebe9d0dad885ce643928e88daebdcc",
+ "sha256:38a4f0d114101c58c0f3a88aeaa44d63efd588845c5a2df5290b73db8f246d15",
+ "sha256:483eb6a33b671408c8529106df3707270bfacb2447bf8ad856a4b4f57f6e3075",
+ "sha256:4b6be5edb9f6bb73680f5bf4ee08ff25416d1400fbd4535fe0069b2994da07cd",
+ "sha256:7f38e35c00e160db592091751d385cd7b3046d6d51f578b29943225178257b31",
+ "sha256:8100c896ecb361794d8bfdb9c11fce618c7cf83d624d73d5ab38aef3bc82d43f",
+ "sha256:c0ee8eca2c582d29c3c2ec6e2c4f703d1b7f1fb10bc72317355a746057e7346c",
+ "sha256:e4c015484ff0ff197564917b4b4246ca03f411b9bd7f16e02a2f586eb48b6d04",
+ "sha256:ebc4ed52dcc93eeebeae5cf5deb2ae4347b3a81c3fa12b0b8c976544829396a4"
+ ],
+ "index": "pypi",
+ "version": "==5.2"
+ },
+ "scipy": {
+ "hashes": [
+ "sha256:0b8c9dc042b9a47912b18b036b4844029384a5b8d89b64a4901ac3e06876e5f6",
+ "sha256:18ad034be955df046b5a27924cdb3db0e8e1d76aaa22c635403fe7aee17f1482",
+ "sha256:225d0b5e140bb66df23d438c7b535303ce8e533f94454f4e5bde5f8d109103ea",
+ "sha256:2f690ba68ed7caa7c30b6dc48c1deed22c78f3840fa4736083ef4f2bd8baa19e",
+ "sha256:4b8746f4a755bdb2eeb39d6e253a60481e165cfd74fdfb54d27394bd2c9ec8ac",
+ "sha256:4ba2ce1a58fe117e993cf316a149cf9926c7c5000c0cdc4bc7c56ae8325612f6",
+ "sha256:546f0dc020b155b8711159d53c87b36591d31f3327c47974a4fb6b50d91589c2",
+ "sha256:583f2ccd6a112656c9feb2345761d2b19e9213a094cfced4e7d2c1cae4173272",
+ "sha256:64bf4e8ae0db2d42b58477817f648d81e77f0b381d0ea4427385bba3f959380a",
+ "sha256:7be424ee09bed7ced36c9457f99c826ce199fd0c0f5b272cf3d098ff7b29e3ae",
+ "sha256:869465c7ff89fc0a1e2ea1642b0c65f1b3c05030f3a4c0d53d6a57b2dba7c242",
+ "sha256:884e619821f47eccd42979488d10fa1e15dbe9f3b7660b1c8c928d203bd3c1a3",
+ "sha256:a42b0d02150ef4747e225c31c976a304de5dc8202ec35a27111b7bb8176e5f13",
+ "sha256:a70308bb065562afb936c963780deab359966d71ab4f230368b154dde3136ea4",
+ "sha256:b01ea5e4cf95a93dc335089f8fbe97852f56fdb74afff238cbdf09793103b6b7",
+ "sha256:b7b8cf45f9a48f23084f19deb9384a1cccb5e92fbc879b12f97dc4d56fb2eb92",
+ "sha256:bb0899d3f8b9fe8ef95b79210cf0deb6709542889fadaa438eeb3a28001e09e7",
+ "sha256:c008f1b58f99f1d1cc546957b3effe448365e0a217df1f1894e358906e91edad",
+ "sha256:cfee99d085d562a7e3c4afe51ac1fe9b434363489e565a130459307f30077973",
+ "sha256:dfcb0f0a2d8e958611e0b56536285bb435f03746b6feac0e29f045f7c6caf164",
+ "sha256:f5d47351aeb1cb6bda14a8908e56648926a6b2d714f89717c71f7ada41282141"
+ ],
+ "index": "pypi",
+ "version": "==1.3.3"
+ },
"six": {
"hashes": [
"sha256:1f1b7d42e254082a9db6279deae68afb421ceba6158efa6131de7b3003ee93fd",
"sha256:30f610279e8b2578cab6db20741130331735c781b56053c59c4076da27f06b66"
],
"version": "==1.13.0"
+ },
+ "soupsieve": {
+ "hashes": [
+ "sha256:bdb0d917b03a1369ce964056fc195cfdff8819c40de04695a80bc813c3cfa1f5",
+ "sha256:e2c1c5dee4a1c36bcb790e0fabd5492d874b8ebd4617622c4f6a731701060dda"
+ ],
+ "version": "==1.9.5"
+ },
+ "sympy": {
+ "hashes": [
+ "sha256:31567dc010bff0967ef7a87210acf3f938c6ab24481581fc143536fb103e9ce8",
+ "sha256:8ae4a95378304ed4081921767fe46f0adf5921bf471c9f5df425abf2c655d751"
+ ],
+ "index": "pypi",
+ "version": "==1.5"
+ },
+ "toml": {
+ "hashes": [
+ "sha256:229f81c57791a41d65e399fc06bf0848bab550a9dfd5ed66df18ce5f05e73d5c",
+ "sha256:235682dd292d5899d361a811df37e04a8828a5b1da3115886b73cf81ebc9100e"
+ ],
+ "index": "pypi",
+ "version": "==0.10.0"
+ },
+ "yarl": {
+ "hashes": [
+ "sha256:0c2ab325d33f1b824734b3ef51d4d54a54e0e7a23d13b86974507602334c2cce",
+ "sha256:0ca2f395591bbd85ddd50a82eb1fde9c1066fafe888c5c7cc1d810cf03fd3cc6",
+ "sha256:2098a4b4b9d75ee352807a95cdf5f10180db903bc5b7270715c6bbe2551f64ce",
+ "sha256:25e66e5e2007c7a39541ca13b559cd8ebc2ad8fe00ea94a2aad28a9b1e44e5ae",
+ "sha256:26d7c90cb04dee1665282a5d1a998defc1a9e012fdca0f33396f81508f49696d",
+ "sha256:308b98b0c8cd1dfef1a0311dc5e38ae8f9b58349226aa0533f15a16717ad702f",
+ "sha256:3ce3d4f7c6b69c4e4f0704b32eca8123b9c58ae91af740481aa57d7857b5e41b",
+ "sha256:58cd9c469eced558cd81aa3f484b2924e8897049e06889e8ff2510435b7ef74b",
+ "sha256:5b10eb0e7f044cf0b035112446b26a3a2946bca9d7d7edb5e54a2ad2f6652abb",
+ "sha256:6faa19d3824c21bcbfdfce5171e193c8b4ddafdf0ac3f129ccf0cdfcb083e462",
+ "sha256:944494be42fa630134bf907714d40207e646fd5a94423c90d5b514f7b0713fea",
+ "sha256:a161de7e50224e8e3de6e184707476b5a989037dcb24292b391a3d66ff158e70",
+ "sha256:a4844ebb2be14768f7994f2017f70aca39d658a96c786211be5ddbe1c68794c1",
+ "sha256:c2b509ac3d4b988ae8769901c66345425e361d518aecbe4acbfc2567e416626a",
+ "sha256:c9959d49a77b0e07559e579f38b2f3711c2b8716b8410b320bf9713013215a1b",
+ "sha256:d8cdee92bc930d8b09d8bd2043cedd544d9c8bd7436a77678dd602467a993080",
+ "sha256:e15199cdb423316e15f108f51249e44eb156ae5dba232cb73be555324a1d49c2"
+ ],
+ "index": "pypi",
+ "version": "==1.4.2"
}
},
"develop": {
@@ -86,6 +353,7 @@
"sha256:08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c",
"sha256:f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72"
],
+ "index": "pypi",
"version": "==19.3.0"
},
"cfgv": {
@@ -288,6 +556,7 @@
"sha256:e4c015484ff0ff197564917b4b4246ca03f411b9bd7f16e02a2f586eb48b6d04",
"sha256:ebc4ed52dcc93eeebeae5cf5deb2ae4347b3a81c3fa12b0b8c976544829396a4"
],
+ "index": "pypi",
"version": "==5.2"
},
"six": {
@@ -309,6 +578,7 @@
"sha256:229f81c57791a41d65e399fc06bf0848bab550a9dfd5ed66df18ce5f05e73d5c",
"sha256:235682dd292d5899d361a811df37e04a8828a5b1da3115886b73cf81ebc9100e"
],
+ "index": "pypi",
"version": "==0.10.0"
},
"unittest-xml-reporting": {
@@ -321,10 +591,10 @@
},
"virtualenv": {
"hashes": [
- "sha256:116655188441670978117d0ebb6451eb6a7526f9ae0796cc0dee6bd7356909b0",
- "sha256:b57776b44f91511866594e477dd10e76a6eb44439cdd7f06dcd30ba4c5bd854f"
+ "sha256:0d62c70883c0342d59c11d0ddac0d954d0431321a41ab20851facf2b222598f3",
+ "sha256:55059a7a676e4e19498f1aad09b8313a38fcc0cdbe4fdddc0e9b06946d21b4bb"
],
- "version": "==16.7.8"
+ "version": "==16.7.9"
}
}
}
diff --git a/README.md b/README.md
index f58dd9b..f1fcac5 100644
--- a/README.md
+++ b/README.md
@@ -33,7 +33,7 @@ The code is executed in a Python process that is launched through [NsJail](https
The Python process is configured as follows:
-* Version 3.7.4
+* Version 3.8.0
* Isolated mode
* Neither the script's directory nor the user's site packages are in `sys.path`
* All `PYTHON*` environment variables are ignored
@@ -49,7 +49,7 @@ See [`snekapi.py`](snekbox/api/snekapi.py) and [`resources`](snekbox/api/resourc
### Initial Setup
-A Python 3.7 interpreter and the [pipenv](https://docs.pipenv.org/en/latest/) package are required. Once those requirements are satisfied, install the project's dependencies:
+A Python 3.8 interpreter and the [pipenv](https://docs.pipenv.org/en/latest/) package are required. Once those requirements are satisfied, install the project's dependencies:
```
pipenv sync
@@ -122,17 +122,17 @@ The HTML will output to `./htmlcov/` by default
### The `devsh` Helper Script
-This script starts an `ash` shell inside the venv Docker container and attaches to it. Unlike the production image, the venv image that is built by this script contains dev dependencies too. The project directory is mounted inside the container so any filesystem changes made inside the container affect the actual local project.
+This script starts an `bash` shell inside the venv Docker container and attaches to it. Unlike the production image, the venv image that is built by this script contains dev dependencies too. The project directory is mounted inside the container so any filesystem changes made inside the container affect the actual local project.
#### Usage
```
-pipenv run devsh [--build [--clean]] [ash_args ...]
+pipenv run devsh [--build [--clean]] [bash_args ...]
```
* `--build` Build the venv Docker image
* `--clean` Clean up dangling Docker images (only works if `--build` precedes it)
-* `ash_args` Arguments to pass to `/bin/ash` (for example `-c "echo hello"`). An interactive shell is launched if no arguments are given
+* `bash_args` Arguments to pass to `/bin/bash` (for example `-c "echo hello"`). An interactive shell is launched if no arguments are given
#### Invoking NsJail
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 2fa8a1a..f86b388 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -56,12 +56,12 @@ jobs:
-e ENV="${PWD}/scripts/.profile" \
--volume "${PWD}":"${PWD}" \
--workdir "${PWD}"\
- --entrypoint /bin/ash \
+ --entrypoint /bin/bash \
pythondiscord/snekbox-venv:dev
displayName: 'Start Container'
- script: |
- docker exec snekbox_test /bin/ash -c \
+ docker exec snekbox_test /bin/bash -c \
'pipenv run lint --format junit-xml --output-file test-lint.xml'
displayName: 'Run Linter'
@@ -77,7 +77,7 @@ jobs:
displayName: 'Disable Swap Memory'
- script: |
- docker exec snekbox_test /bin/ash -c \
+ docker exec snekbox_test /bin/bash -c \
'pipenv run coverage run -m xmlrunner'
displayName: 'Run Unit Tests'
@@ -90,8 +90,8 @@ jobs:
# Run report too because the XML report doesn't output to stdout.
- script: |
- docker exec snekbox_test /bin/ash -c \
- 'pipenv run /bin/ash -c "coverage report && coverage xml"'
+ docker exec snekbox_test /bin/bash -c \
+ 'pipenv run /bin/bash -c "coverage report && coverage xml"'
displayName: 'Generate Coverage Report'
- task: PublishCodeCoverageResults@1
diff --git a/docker/base.Dockerfile b/docker/base.Dockerfile
index 3c5d7de..6a63b12 100644
--- a/docker/base.Dockerfile
+++ b/docker/base.Dockerfile
@@ -1,15 +1,16 @@
-FROM python:3.8.0-alpine3.10 as builder
-RUN apk add --no-cache --update \
- bison~=3.3 \
- bsd-compat-headers~=0.7 \
- flex~=2.6 \
- g++~=8.3 \
- gcc~=8.3 \
- git~=2.22 \
- libnl3-dev~=3.4 \
- linux-headers~=4.19 \
- make~=4.2 \
- protobuf-dev~=3.6
+FROM python:3.8.0-slim-buster as builder
+RUN apt-get -y update \
+ && apt-get install -y \
+ bison=2:3.3.* \
+ flex=2.6.* \
+ g++=4:8.3.* \
+ gcc=4:8.3.* \
+ git=1:2.20.* \
+ libprotobuf-dev=3.6.* \
+ libnl-route-3-dev=3.4.* \
+ make=4.2.* \
+ pkg-config=0.29-6 \
+ protobuf-compiler=3.6.*
RUN git clone \
-b '2.9' \
--single-branch \
@@ -18,12 +19,14 @@ RUN git clone \
WORKDIR /nsjail
RUN make
-FROM python:3.8.0-alpine3.10
+FROM python:3.8.0-slim-buster
ENV PIP_NO_CACHE_DIR=false
-RUN apk add --no-cache --update \
- libnl3~=3.4 \
- libstdc++~=8.3 \
- protobuf~=3.6
+RUN apt-get -y update \
+ && apt-get install -y \
+ gcc=4:8.3.* \
+ libnl-route-3-200=3.4.* \
+ libprotobuf17=3.6.* \
+ && rm -rf /var/lib/apt/lists/*
RUN pip install pipenv==2018.11.26
COPY --from=builder /nsjail/nsjail /usr/sbin/
RUN chmod +x /usr/sbin/nsjail
diff --git a/scripts/dev.sh b/scripts/dev.sh
index 8f5b24f..6aeb1de 100755
--- a/scripts/dev.sh
+++ b/scripts/dev.sh
@@ -1,7 +1,7 @@
#!/usr/bin/env sh
# Sets up a development environment and runs a shell in a docker container.
-# Usage: dev.sh [--build [--clean]] [ash_args ...]
+# Usage: dev.sh [--build [--clean]] [bash_args ...]
if [ "$1" = "--build" ]; then
shift
@@ -42,15 +42,15 @@ docker run \
--hostname pdsnk-dev \
-e PYTHONDONTWRITEBYTECODE=1 \
-e PIPENV_PIPFILE="/snekbox/Pipfile" \
- -e ENV="${PWD}/scripts/.profile" \
+ -e BASH_ENV="${PWD}/scripts/.profile" \
--volume "${PWD}":"${PWD}" \
--workdir "${PWD}"\
- --entrypoint /bin/ash \
+ --entrypoint /bin/bash \
pythondiscord/snekbox-venv:dev \
>/dev/null \
# Execute the given command(s)
-docker exec -it snekbox_test /bin/ash "$@"
+docker exec -it snekbox_test /bin/bash --rcfile "${PWD}/scripts/.profile" "$@"
# Fix ownership of coverage file
# BusyBox doesn't support --reference for chown
@@ -58,7 +58,7 @@ docker exec \
-it \
-e CWD="${PWD}" \
snekbox_test \
- /bin/ash \
+ /bin/bash \
-c 'chown "$(stat -c "%u:%g" "${CWD}")" "${CWD}/.coverage"'
docker rm -f snekbox_test >/dev/null # Stop and remove the container