diff --git a/.travis.yml b/.travis.yml index c07a20ee..77ea2e4c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,14 +4,14 @@ env: - DOC_REMOTE=git@github.com:mordred-descriptor/documentation.git - secure: IrmS3kBWNvkC/bFObF0jIHUpdFTasEH8QXXK9mh6M+mfdy34qvpnWffzDcuS2ZD1oyLE1YsMxA9MDVmw/PBY27q1wxmQ1ZQFpBoMDsjmczZ4bI/5oiaAekVktAGc4lX3knmQju2nqqb/MZRB9qmpiPFM3xNRDVikSBdOw92SHwGOIsq5r9Rlp0o5vzj0Qo9HREmlAtpbhtdWpWRU94hnDTgwlQJyd4xBq9Y0CLO45KDV6gkq5sEkfiKQnUzElMPEy8NNGKmK3pLD1PCwLt/42dNSEdIXSw9w/pMWk/fGiS2ebsf+Ch/8jTFTdW3Oq3P/NxJuA8t3aYrdcvDy5lmQHrEr+bf4D/xsMtAVS3igIQHKBBp2fSqwIm+KpMyHmA3//jG76+kmE8j1GpBjctdz4ExbCyRlQFhI3r7qQ/tQ9pHHwcZwx8MX/hzslpNhSuBRTIR/4mi3wckYU2kq7UjKbwuHUkcbMwgkKrH1D2cjhQypOnzEBindd+T9mPQYoewdtSQLAbpPsmJbFE/q9SgG/XjmH4k/mlItFLZiOIKTKFGTkXNY1Wqbht95365O4uSbnmzDEwTSISR0qhtjoDVBMowY/1ZBQUM9/Y9aS5KD5uU8FBUbQ3lR641zD14kGBallpCCRTRxgRt19q5R469jKoBA5eWWzRGp86Q19Ywdnbc= matrix: - - PYTHON_VERSION=3.6 COVERAGE=true DOCUMENTATION=true LINT=true + - PYTHON_VERSION=3.6 COVERAGE=true DOCUMENTATION=true - PYTHON_VERSION=3.5 COVERAGE=true - PYTHON_VERSION=2.7 COVERAGE=true os: - linux - osx sudo: false -before_install: "./extra/ci/before_install.sh" -install: "./extra/ci/install.sh" -script: "./extra/ci/test_script.sh" -after_success: "./extra/ci/after_success.sh" +before_install: travis_retry ./extra/ci/before_install.sh +install: travis_retry ./extra/ci/install.sh +script: travis_retry ./extra/ci/test_script.sh +after_success: travis_retry ./extra/ci/after_success.sh diff --git a/Pipfile b/Pipfile new file mode 100644 index 00000000..0450a069 --- /dev/null +++ b/Pipfile @@ -0,0 +1,32 @@ +[[source]] +url = "https://pypi.org/simple" +verify_ssl = true +name = "pypi" + +[packages] +networkx = "*" +six = "*" +numpy = "*" +tqdm = "*" +pandas = "*" +enum34 = {version = "*", markers="python_version < '3.4'"} + +[dev-packages] +pyyaml = "*" +nose = "*" +coverage = "*" +sphinx = "*" +sphinx-rtd-theme = "*" +sphinxcontrib-bibtex = "*" +coveralls = "*" +"pep8" = "*" +isort = "*" +"flake8" = "*" +"flake8-quotes" = "*" +"flake8-print" = "*" +"flake8-commas" = "*" +"flake8-comprehensions" = "*" +"flake8-docstrings" = "*" +"flake8-sorted-keys" = "*" +"flake8-regex" = "*" +"flake8-string-format" = "*" diff --git a/Pipfile.lock b/Pipfile.lock new file mode 100644 index 00000000..8cc10aba --- /dev/null +++ b/Pipfile.lock @@ -0,0 +1,514 @@ +{ + "_meta": { + "hash": { + "sha256": "0279e1672047eba7c826905dabd5713fa7111933b1d6a538697871e4e96ed14c" + }, + "pipfile-spec": 6, + "requires": {}, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.org/simple", + "verify_ssl": true + } + ] + }, + "default": { + "decorator": { + "hashes": [ + "sha256:2c51dff8ef3c447388fe5e4453d24a2bf128d3a4c32af3fabef1f01c6851ab82", + "sha256:c39efa13fbdeb4506c476c9b3babf6a718da943dab7811c206005a4a956c080c" + ], + "version": "==4.3.0" + }, + "enum34": { + "hashes": [ + "sha256:2d81cbbe0e73112bdfe6ef8576f2238f2ba27dd0d55752a776c41d38b7da2850", + "sha256:644837f692e5f550741432dd3f223bbb9852018674981b1664e5dc339387588a", + "sha256:6bd0f6ad48ec2aa117d3d141940d484deccda84d4fcd884f5c3d93c23ecd8c79", + "sha256:8ad8c4783bf61ded74527bffb48ed9b54166685e4230386a9ed9b1279e2df5b1" + ], + "index": "pypi", + "markers": "python_version < '3.4'", + "version": "==1.1.6" + }, + "networkx": { + "hashes": [ + "sha256:64272ca418972b70a196cb15d9c85a5a6041f09a2f32e0d30c0255f25d458bb1" + ], + "index": "pypi", + "version": "==2.1" + }, + "numpy": { + "hashes": [ + "sha256:0074d42e2cc333800bd09996223d40ec52e3b1ec0a5cab05dacc09b662c4c1ae", + "sha256:034717bfef517858abc79324820a702dc6cd063effb9baab86533e8a78670689", + "sha256:0db6301324d0568089663ef2701ad90ebac0e975742c97460e89366692bd0563", + "sha256:1864d005b2eb7598063e35c320787d87730d864f40d6410f768fe4ea20672016", + "sha256:46ce8323ca9384814c7645298b8b627b7d04ce97d6948ef02da357b2389d6972", + "sha256:510863d606c932b41d2209e4de6157ab3fdf52001d3e4ad351103176d33c4b8b", + "sha256:560e23a12e7599be8e8b67621396c5bc687fd54b48b890adbc71bc5a67333f86", + "sha256:57dc6c22d59054542600fce6fae2d1189b9c50bafc1aab32e55f7efcc84a6c46", + "sha256:760550fdf9d8ec7da9c4402a4afe6e25c0f184ae132011676298a6b636660b45", + "sha256:8670067685051b49d1f2f66e396488064299fefca199c7c80b6ba0c639fedc98", + "sha256:9016692c7d390f9d378fc88b7a799dc9caa7eb938163dda5276d3f3d6f75debf", + "sha256:98ff275f1b5907490d26b30b6ff111ecf2de0254f0ab08833d8fe61aa2068a00", + "sha256:9ccf4d5c9139b1e985db915039baa0610a7e4a45090580065f8d8cb801b7422f", + "sha256:a8dbab311d4259de5eeaa5b4e83f5f8545e4808f9144e84c0f424a6ee55a7b98", + "sha256:aaef1bea636b6e552bbc5dae0ada87d4f6046359daaa97a05a013b0169620f27", + "sha256:b8987e30d9a0eb6635df9705a75cf8c4a2835590244baecf210163343bc65176", + "sha256:c3fe23df6fe0898e788581753da453f877350058c5982e85a8972feeecb15309", + "sha256:c5eb7254cfc4bd7a4330ad7e1f65b98343836865338c57b0e25c661e41d5cfd9", + "sha256:c80fcf9b38c7f4df666150069b04abbd2fe42ae640703a6e1f128cda83b552b7", + "sha256:e33baf50f2f6b7153ddb973601a11df852697fba4c08b34a5e0f39f66f8120e1", + "sha256:e8578a62a8eaf552b95d62f630bb5dd071243ba1302bbff3e55ac48588508736", + "sha256:f22b3206f1c561dd9110b93d144c6aaa4a9a354e3b07ad36030df3ea92c5bb5b", + "sha256:f39afab5769b3aaa786634b94b4a23ef3c150bdda044e8a32a3fc16ddafe803b" + ], + "index": "pypi", + "version": "==1.14.3" + }, + "pandas": { + "hashes": [ + "sha256:295cf212054b28f1d111f3ffff932a012601558424ec892f2450d6197f6eeb92", + "sha256:29960ea1783c59fe86b323799b130592149e0f7bb739149e7fc512b0272d9fc3", + "sha256:29dde0874d1efb8a346f8d919b0530a9ae788ad1003752376133e38df09e6fcb", + "sha256:2d6b7b152a6ba44627c60df291f773c4438df01653abcbec7fc556d6039f1705", + "sha256:5de7275fc7222211dcac603ea81f1e143c45f8ec41d2e21df71aad0c95c1097c", + "sha256:7261b3567804a70714cc2591e2f7f1e372379db9e140f9d7ffb4b8884eaa48f7", + "sha256:758b8f6c68bc99b2eb64e57092d3aa07bd68a774e92e7686e473e0d9c86a2309", + "sha256:835c5a2aeaa3cb5ef2a1d771c75ee3a73d6ad1b82cfc54677c8f863c75fa51bd", + "sha256:8398d7a47ae667a639ac4ee6724d7ef98602b5ff2b10b5b4d5e6ab45a8d596d2", + "sha256:84ab1d50590cb2d9554211f164dc1b1a216bc94da2ba922aed2690c83f248fd9", + "sha256:98054c04318ba46bb81433230c2e5fab6a68df916ccb5355d428907bfb16b257", + "sha256:9e5ee41d1550ec36093c95e30644e313df4b57c1cdead545754d9c113aecbbb5", + "sha256:d4495aba61060d87c634fc777ac15aecd1d176987e5ed0585a3ed7e2f4e6c1f7", + "sha256:d5f72c8239e46cfcc363c7e532a474b7ea3d8892b7b6e5ec0da6b3ebae2a07d3", + "sha256:d88f484a25ac212fd720b5f9b9686e83f86df2b091b51f4b7b1d9089bd842f79" + ], + "index": "pypi", + "version": "==0.23.0" + }, + "python-dateutil": { + "hashes": [ + "sha256:1adb80e7a782c12e52ef9a8182bebeb73f1d7e24e374397af06fb4956c8dc5c0", + "sha256:e27001de32f627c22380a688bcc43ce83504a7bc5da472209b4c70f02829f0b8" + ], + "version": "==2.7.3" + }, + "pytz": { + "hashes": [ + "sha256:65ae0c8101309c45772196b21b74c46b2e5d11b6275c45d251b150d5da334555", + "sha256:c06425302f2cf668f1bba7a0a03f3c1d34d4ebeef2c72003da308b3947c7f749" + ], + "version": "==2018.4" + }, + "six": { + "hashes": [ + "sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9", + "sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb" + ], + "index": "pypi", + "version": "==1.11.0" + }, + "tqdm": { + "hashes": [ + "sha256:224291ee0d8c52d91b037fd90806f48c79bcd9994d3b0abc9e44b946a908fccd", + "sha256:77b8424d41b31e68f437c6dd9cd567aebc9a860507cb42fbd880a5f822d966fe" + ], + "index": "pypi", + "version": "==4.23.4" + } + }, + "develop": { + "alabaster": { + "hashes": [ + "sha256:2eef172f44e8d301d25aff8068fddd65f767a3f04b5f15b0f4922f113aa1c732", + "sha256:37cdcb9e9954ed60912ebc1ca12a9d12178c26637abdf124e3cde2341c257fe0" + ], + "version": "==0.7.10" + }, + "babel": { + "hashes": [ + "sha256:6778d85147d5d85345c14a26aada5e478ab04e39b078b0745ee6870c2b5cf669", + "sha256:8cba50f48c529ca3fa18cf81fa9403be176d374ac4d60738b839122dfaaa3d23" + ], + "version": "==2.6.0" + }, + "certifi": { + "hashes": [ + "sha256:13e698f54293db9f89122b0581843a782ad0934a4fe0172d2a980ba77fc61bb7", + "sha256:9fa520c1bacfb634fa7af20a76bcbd3d5fb390481724c597da32c719a7dca4b0" + ], + "version": "==2018.4.16" + }, + "chardet": { + "hashes": [ + "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae", + "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691" + ], + "version": "==3.0.4" + }, + "coverage": { + "hashes": [ + "sha256:03481e81d558d30d230bc12999e3edffe392d244349a90f4ef9b88425fac74ba", + "sha256:0b136648de27201056c1869a6c0d4e23f464750fd9a9ba9750b8336a244429ed", + "sha256:104ab3934abaf5be871a583541e8829d6c19ce7bde2923b2751e0d3ca44db60a", + "sha256:15b111b6a0f46ee1a485414a52a7ad1d703bdf984e9ed3c288a4414d3871dcbd", + "sha256:198626739a79b09fa0a2f06e083ffd12eb55449b5f8bfdbeed1df4910b2ca640", + "sha256:1c383d2ef13ade2acc636556fd544dba6e14fa30755f26812f54300e401f98f2", + "sha256:28b2191e7283f4f3568962e373b47ef7f0392993bb6660d079c62bd50fe9d162", + "sha256:2eb564bbf7816a9d68dd3369a510be3327f1c618d2357fa6b1216994c2e3d508", + "sha256:337ded681dd2ef9ca04ef5d93cfc87e52e09db2594c296b4a0a3662cb1b41249", + "sha256:3a2184c6d797a125dca8367878d3b9a178b6fdd05fdc2d35d758c3006a1cd694", + "sha256:3c79a6f7b95751cdebcd9037e4d06f8d5a9b60e4ed0cd231342aa8ad7124882a", + "sha256:3d72c20bd105022d29b14a7d628462ebdc61de2f303322c0212a054352f3b287", + "sha256:3eb42bf89a6be7deb64116dd1cc4b08171734d721e7a7e57ad64cc4ef29ed2f1", + "sha256:4635a184d0bbe537aa185a34193898eee409332a8ccb27eea36f262566585000", + "sha256:56e448f051a201c5ebbaa86a5efd0ca90d327204d8b059ab25ad0f35fbfd79f1", + "sha256:5a13ea7911ff5e1796b6d5e4fbbf6952381a611209b736d48e675c2756f3f74e", + "sha256:69bf008a06b76619d3c3f3b1983f5145c75a305a0fea513aca094cae5c40a8f5", + "sha256:6bc583dc18d5979dc0f6cec26a8603129de0304d5ae1f17e57a12834e7235062", + "sha256:701cd6093d63e6b8ad7009d8a92425428bc4d6e7ab8d75efbb665c806c1d79ba", + "sha256:7608a3dd5d73cb06c531b8925e0ef8d3de31fed2544a7de6c63960a1e73ea4bc", + "sha256:76ecd006d1d8f739430ec50cc872889af1f9c1b6b8f48e29941814b09b0fd3cc", + "sha256:7aa36d2b844a3e4a4b356708d79fd2c260281a7390d678a10b91ca595ddc9e99", + "sha256:7d3f553904b0c5c016d1dad058a7554c7ac4c91a789fca496e7d8347ad040653", + "sha256:7e1fe19bd6dce69d9fd159d8e4a80a8f52101380d5d3a4d374b6d3eae0e5de9c", + "sha256:8c3cb8c35ec4d9506979b4cf90ee9918bc2e49f84189d9bf5c36c0c1119c6558", + "sha256:9d6dd10d49e01571bf6e147d3b505141ffc093a06756c60b053a859cb2128b1f", + "sha256:9e112fcbe0148a6fa4f0a02e8d58e94470fc6cb82a5481618fea901699bf34c4", + "sha256:ac4fef68da01116a5c117eba4dd46f2e06847a497de5ed1d64bb99a5fda1ef91", + "sha256:b8815995e050764c8610dbc82641807d196927c3dbed207f0a079833ffcf588d", + "sha256:be6cfcd8053d13f5f5eeb284aa8a814220c3da1b0078fa859011c7fffd86dab9", + "sha256:c1bb572fab8208c400adaf06a8133ac0712179a334c09224fb11393e920abcdd", + "sha256:de4418dadaa1c01d497e539210cb6baa015965526ff5afc078c57ca69160108d", + "sha256:e05cb4d9aad6233d67e0541caa7e511fa4047ed7750ec2510d466e806e0255d6", + "sha256:e4d96c07229f58cb686120f168276e434660e4358cc9cf3b0464210b04913e77", + "sha256:f3f501f345f24383c0000395b26b726e46758b71393267aeae0bd36f8b3ade80", + "sha256:f8a923a85cb099422ad5a2e345fe877bbc89a8a8b23235824a93488150e45f6e" + ], + "index": "pypi", + "version": "==4.5.1" + }, + "coveralls": { + "hashes": [ + "sha256:32569a43c9dbc13fa8199247580a4ab182ef439f51f65bb7f8316d377a1340e8", + "sha256:664794748d2e5673e347ec476159a9d87f43e0d2d44950e98ed0e27b98da8346" + ], + "index": "pypi", + "version": "==1.3.0" + }, + "docopt": { + "hashes": [ + "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491" + ], + "version": "==0.6.2" + }, + "docutils": { + "hashes": [ + "sha256:02aec4bd92ab067f6ff27a38a38a41173bf01bed8f89157768c1573f53e474a6", + "sha256:51e64ef2ebfb29cae1faa133b3710143496eca21c530f3f71424d77687764274", + "sha256:7a4bd47eaf6596e1295ecb11361139febe29b084a87bf005bf899f9a42edc3c6" + ], + "version": "==0.14" + }, + "flake8": { + "hashes": [ + "sha256:7253265f7abd8b313e3892944044a365e3f4ac3fcdcfb4298f55ee9ddf188ba0", + "sha256:c7841163e2b576d435799169b78703ad6ac1bbb0f199994fc05f700b2a90ea37" + ], + "index": "pypi", + "version": "==3.5.0" + }, + "flake8-commas": { + "hashes": [ + "sha256:d3005899466f51380387df7151fb59afec666a0f4f4a2c6a8995b975de0f44b7", + "sha256:ee2141a3495ef9789a3894ed8802d03eff1eaaf98ce6d8653a7c573ef101935e" + ], + "index": "pypi", + "version": "==2.0.0" + }, + "flake8-comprehensions": { + "hashes": [ + "sha256:b83891fec0e680b07aa1fd92e53eb6993be29a0f3673a09badbe8da307c445e0", + "sha256:e4ccf1627f75f192eb7fde640f5edb81c98d04b1390df9d4145ffd7710bb1ef2" + ], + "index": "pypi", + "version": "==1.4.1" + }, + "flake8-docstrings": { + "hashes": [ + "sha256:4e0ce1476b64e6291520e5570cf12b05016dd4e8ae454b8a8a9a48bc5f84e1cd", + "sha256:8436396b5ecad51a122a2c99ba26e5b4e623bf6e913b0fea0cb6c2c4050f91eb" + ], + "index": "pypi", + "version": "==1.3.0" + }, + "flake8-polyfill": { + "hashes": [ + "sha256:12be6a34ee3ab795b19ca73505e7b55826d5f6ad7230d31b18e106400169b9e9", + "sha256:e44b087597f6da52ec6393a709e7108b2905317d0c0b744cdca6208e670d8eda" + ], + "version": "==1.0.2" + }, + "flake8-print": { + "hashes": [ + "sha256:5010e6c138b63b62400da4b06afa33becc5e08bd1fcce9af3752445cf3342f54" + ], + "index": "pypi", + "version": "==3.1.0" + }, + "flake8-quotes": { + "hashes": [ + "sha256:fd9127ad8bbcf3b546fa7871a5266fd8623ce765ebe3d5aa5eabb80c01212b26" + ], + "index": "pypi", + "version": "==1.0.0" + }, + "flake8-regex": { + "hashes": [ + "sha256:812e6f9cfc66f3b8ad2bbb93ec0dede2043a16b5f5d04dc1c8f8e3590c7e67bd" + ], + "index": "pypi", + "version": "==0.3" + }, + "flake8-sorted-keys": { + "hashes": [ + "sha256:96a3e9a77a4c72a02b7db5ce3cabcefeefbe8e93302bb2105b1ccb2c4f4a3322", + "sha256:ea61bbd84acca2d86c344eec7700e58e3057a4ccdbb5fab670fbecae2386c3a2" + ], + "index": "pypi", + "version": "==0.2.0" + }, + "flake8-string-format": { + "hashes": [ + "sha256:68ea72a1a5b75e7018cae44d14f32473c798cf73d75cbaed86c6a9a907b770b2", + "sha256:774d56103d9242ed968897455ef49b7d6de272000cfa83de5814273a868832f1" + ], + "index": "pypi", + "version": "==0.2.3" + }, + "idna": { + "hashes": [ + "sha256:2c6a5de3089009e3da7c5dde64a141dbc8551d5b7f6cf4ed7c2568d0cc520a8f", + "sha256:8c7309c718f94b3a625cb648ace320157ad16ff131ae0af362c9f21b80ef6ec4" + ], + "version": "==2.6" + }, + "imagesize": { + "hashes": [ + "sha256:3620cc0cadba3f7475f9940d22431fc4d407269f1be59ec9b8edcca26440cf18", + "sha256:5b326e4678b6925158ccc66a9fa3122b6106d7c876ee32d7de6ce59385b96315" + ], + "version": "==1.0.0" + }, + "isort": { + "hashes": [ + "sha256:1153601da39a25b14ddc54955dbbacbb6b2d19135386699e2ad58517953b34af", + "sha256:b9c40e9750f3d77e6e4d441d8b0266cf555e7cdabdcff33c4fd06366ca761ef8", + "sha256:ec9ef8f4a9bc6f71eec99e1806bfa2de401650d996c59330782b89a5555c1497" + ], + "index": "pypi", + "version": "==4.3.4" + }, + "jinja2": { + "hashes": [ + "sha256:74c935a1b8bb9a3947c50a54766a969d4846290e1e788ea44c1392163723c3bd", + "sha256:f84be1bb0040caca4cea721fcbbbbd61f9be9464ca236387158b0feea01914a4" + ], + "version": "==2.10" + }, + "latexcodec": { + "hashes": [ + "sha256:3abc5cdbe4b6344c04a62db98bf30a2f3bc8f5bb9040296aafa39c8eeb737523", + "sha256:9607d9d260654eb607c54a8b8c991e4406008605c383ded4f4034522dc0bad7d" + ], + "version": "==1.0.5" + }, + "markupsafe": { + "hashes": [ + "sha256:a6be69091dac236ea9c6bc7d012beab42010fa914c459791d627dad4910eb665" + ], + "version": "==1.0" + }, + "mccabe": { + "hashes": [ + "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42", + "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f" + ], + "version": "==0.6.1" + }, + "nose": { + "hashes": [ + "sha256:9ff7c6cc443f8c51994b34a667bbcf45afd6d945be7477b52e97516fd17c53ac", + "sha256:dadcddc0aefbf99eea214e0f1232b94f2fa9bd98fa8353711dacb112bfcbbb2a", + "sha256:f1bffef9cbc82628f6e7d7b40d7e255aefaa1adb6a1b1d26c69a8b79e6208a98" + ], + "index": "pypi", + "version": "==1.3.7" + }, + "oset": { + "hashes": [ + "sha256:4c1fd7dec96eeff9d3260995a8e37f9f415d0bdb79975f57824e68716ac8f904" + ], + "version": "==0.1.3" + }, + "packaging": { + "hashes": [ + "sha256:e9215d2d2535d3ae866c3d6efc77d5b24a0192cce0ff20e42896cc0664f889c0", + "sha256:f019b770dd64e585a99714f1fd5e01c7a8f11b45635aa953fd41c689a657375b" + ], + "version": "==17.1" + }, + "pep8": { + "hashes": [ + "sha256:b22cfae5db09833bb9bd7c8463b53e1a9c9b39f12e304a8d0bba729c501827ee", + "sha256:fe249b52e20498e59e0b5c5256aa52ee99fc295b26ec9eaa85776ffdb9fe6374" + ], + "index": "pypi", + "version": "==1.7.1" + }, + "pybtex": { + "hashes": [ + "sha256:af8a6c7c74954ad305553b118d2757f68bc77c5dd5d5de2cc1fd16db90046000" + ], + "version": "==0.21" + }, + "pybtex-docutils": { + "hashes": [ + "sha256:920ae9850750dd61abe00d9fd88f4a5f9099e40af0b84b2119b8b44a479115d2", + "sha256:e4b075641c1d68a3e98a6d73ad3d029293fcf9e0773512315ef9c8482f251337" + ], + "version": "==0.2.1" + }, + "pycodestyle": { + "hashes": [ + "sha256:682256a5b318149ca0d2a9185d365d8864a768a28db66a84a2ea946bcc426766", + "sha256:6c4245ade1edfad79c3446fadfc96b0de2759662dc29d07d80a6f27ad1ca6ba9" + ], + "version": "==2.3.1" + }, + "pydocstyle": { + "hashes": [ + "sha256:08a870edc94508264ed90510db466c6357c7192e0e866561d740624a8fc7d90c", + "sha256:4d5bcde961107873bae621f3d580c3e35a426d3687ffc6f8fb356f6628da5a97", + "sha256:af9fcccb303899b83bec82dc9a1d56c60fc369973223a5e80c3dfa9bdf984405" + ], + "version": "==2.1.1" + }, + "pyflakes": { + "hashes": [ + "sha256:08bd6a50edf8cffa9fa09a463063c425ecaaf10d1eb0335a7e8b1401aef89e6f", + "sha256:8d616a382f243dbf19b54743f280b80198be0bca3a5396f1d2e1fca6223e8805" + ], + "version": "==1.6.0" + }, + "pygments": { + "hashes": [ + "sha256:78f3f434bcc5d6ee09020f92ba487f95ba50f1e3ef83ae96b9d5ffa1bab25c5d", + "sha256:dbae1046def0efb574852fab9e90209b23f556367b5a320c0bcb871c77c3e8cc" + ], + "version": "==2.2.0" + }, + "pyparsing": { + "hashes": [ + "sha256:0832bcf47acd283788593e7a0f542407bd9550a55a8a8435214a1960e04bcb04", + "sha256:281683241b25fe9b80ec9d66017485f6deff1af5cde372469134b56ca8447a07", + "sha256:8f1e18d3fd36c6795bb7e02a39fd05c611ffc2596c1e0d995d34d67630426c18", + "sha256:9e8143a3e15c13713506886badd96ca4b579a87fbdf49e550dbfc057d6cb218e", + "sha256:b8b3117ed9bdf45e14dcc89345ce638ec7e0e29b2b579fa1ecf32ce45ebac8a5", + "sha256:e4d45427c6e20a59bf4f88c639dcc03ce30d193112047f94012102f235853a58", + "sha256:fee43f17a9c4087e7ed1605bd6df994c6173c1e977d7ade7b651292fab2bd010" + ], + "version": "==2.2.0" + }, + "pytz": { + "hashes": [ + "sha256:65ae0c8101309c45772196b21b74c46b2e5d11b6275c45d251b150d5da334555", + "sha256:c06425302f2cf668f1bba7a0a03f3c1d34d4ebeef2c72003da308b3947c7f749" + ], + "version": "==2018.4" + }, + "pyyaml": { + "hashes": [ + "sha256:0c507b7f74b3d2dd4d1322ec8a94794927305ab4cebbe89cc47fe5e81541e6e8", + "sha256:16b20e970597e051997d90dc2cddc713a2876c47e3d92d59ee198700c5427736", + "sha256:3262c96a1ca437e7e4763e2843746588a965426550f3797a79fca9c6199c431f", + "sha256:326420cbb492172dec84b0f65c80942de6cedb5233c413dd824483989c000608", + "sha256:4474f8ea030b5127225b8894d626bb66c01cda098d47a2b0d3429b6700af9fd8", + "sha256:592766c6303207a20efc445587778322d7f73b161bd994f227adaa341ba212ab", + "sha256:5ac82e411044fb129bae5cfbeb3ba626acb2af31a8d17d175004b70862a741a7", + "sha256:5f84523c076ad14ff5e6c037fe1c89a7f73a3e04cf0377cb4d017014976433f3", + "sha256:827dc04b8fa7d07c44de11fabbc888e627fa8293b695e0f99cb544fdfa1bf0d1", + "sha256:b4c423ab23291d3945ac61346feeb9a0dc4184999ede5e7c43e1ffb975130ae6", + "sha256:bc6bced57f826ca7cb5125a10b23fd0f2fff3b7c4701d64c439a300ce665fff8", + "sha256:c01b880ec30b5a6e6aa67b09a2fe3fb30473008c85cd6a67359a1b15ed6d83a4", + "sha256:ca233c64c6e40eaa6c66ef97058cdc80e8d0157a443655baa1b2966e812807ca", + "sha256:e863072cdf4c72eebf179342c94e6989c67185842d9997960b3e69290b2fa269" + ], + "index": "pypi", + "version": "==3.12" + }, + "requests": { + "hashes": [ + "sha256:6a1b267aa90cac58ac3a765d067950e7dbbf75b1da07e895d1f594193a40a38b", + "sha256:9c443e7324ba5b85070c4a818ade28bfabedf16ea10206da1132edaa6dda237e" + ], + "version": "==2.18.4" + }, + "six": { + "hashes": [ + "sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9", + "sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb" + ], + "index": "pypi", + "version": "==1.11.0" + }, + "snowballstemmer": { + "hashes": [ + "sha256:919f26a68b2c17a7634da993d91339e288964f93c274f1343e3bbbe2096e1128", + "sha256:9f3bcd3c401c3e862ec0ebe6d2c069ebc012ce142cce209c098ccb5b09136e89" + ], + "version": "==1.2.1" + }, + "sphinx": { + "hashes": [ + "sha256:85f7e32c8ef07f4ba5aeca728e0f7717bef0789fba8458b8d9c5c294cad134f3", + "sha256:d45480a229edf70d84ca9fae3784162b1bc75ee47e480ffe04a4b7f21a95d76d" + ], + "index": "pypi", + "version": "==1.7.5" + }, + "sphinx-rtd-theme": { + "hashes": [ + "sha256:32424dac2779f0840b4788fbccb032ba2496c1ca47a439ad2510c8b1e55dfd33", + "sha256:6d0481532b5f441b075127a2d755f430f1f8410a50112b1af6b069518548381d" + ], + "index": "pypi", + "version": "==0.3.1" + }, + "sphinxcontrib-bibtex": { + "hashes": [ + "sha256:935a44e68cf79dbeaff14a3be757b9bfdf5b917e7239a84a165c76a4b2accfd8", + "sha256:cb9fb4526642fc080204fccd5cd8f41e9e95387278e17b1d6969b1e27c2d3e0c" + ], + "index": "pypi", + "version": "==0.4.0" + }, + "sphinxcontrib-websupport": { + "hashes": [ + "sha256:7a85961326aa3a400cd4ad3c816d70ed6f7c740acd7ce5d78cd0a67825072eb9", + "sha256:f4932e95869599b89bf4f80fc3989132d83c9faa5bf633e7b5e0c25dffb75da2" + ], + "version": "==1.0.1" + }, + "urllib3": { + "hashes": [ + "sha256:06330f386d6e4b195fbfc736b297f58c5a892e4440e54d294d7004e3a9bbea1b", + "sha256:cc44da8e1145637334317feebd728bd869a35285b93cbb4cca2577da7e62db4f" + ], + "version": "==1.22" + } + } +} diff --git a/README.rst b/README.rst index 7467c318..ed1c10c3 100644 --- a/README.rst +++ b/README.rst @@ -206,5 +206,5 @@ Documentation - `master `__ - `develop `__ -- `v1.1.0 `__ +- `v1.1.0 `__ - `v1.0.0 `__ diff --git a/appveyor.yml b/appveyor.yml index 117a1f22..5eeb087c 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -14,9 +14,7 @@ environment: MINICONDA: C:\Miniconda35-x64 - PYTHON_VERSION: 2.7 MINICONDA: C:\Miniconda-x64 - - PYTHON_VERSION: 2.7 - MINICONDA: C:\Miniconda -install: '%CYG_ROOT%/bin/bash ./extra/ci/install.sh' -test_script: '%CYG_ROOT%/bin/bash ./extra/ci/test_script.sh' -on_success: '%CYG_ROOT%/bin/bash ./extra/ci/after_success.sh' +install: appveyor-retry %CYG_ROOT%/bin/bash ./extra/ci/install.sh +test_script: appveyor-retry %CYG_ROOT%/bin/bash ./extra/ci/test_script.sh +on_success: appveyor-retry %CYG_ROOT%/bin/bash ./extra/ci/after_success.sh diff --git a/docs/mordred.rst b/docs/mordred.rst index 32529a31..1fc90cd1 100644 --- a/docs/mordred.rst +++ b/docs/mordred.rst @@ -12,8 +12,6 @@ mordred package .. autoclass:: mordred.Calculator :members: -.. autofunction:: all_descriptors - .. autofunction:: get_descriptors_from_module .. toctree:: diff --git a/docs/scripts/gen_default_descs.py b/docs/scripts/gen_default_descs.py index 6991ba4f..a230046b 100644 --- a/docs/scripts/gen_default_descs.py +++ b/docs/scripts/gen_default_descs.py @@ -1,5 +1,7 @@ +import sys import load_path -from mordred import Descriptor, descriptors, get_descriptors_from_module +from mordred import Descriptor, descriptors, get_descriptors_from_module, __version__ +from distutils.version import StrictVersion load_path.nop() @@ -55,10 +57,11 @@ def to_rst(self, hide_module=False): def get_all_descriptors(): + v = StrictVersion(__version__) for mdl in descriptors.all: ds = [] for Desc in get_descriptors_from_module(mdl): - for desc in Desc.preset(): + for desc in Desc.preset(v): ds.append(desc) yield ds diff --git a/extra/ci/after_success.sh b/extra/ci/after_success.sh index 20988dca..41879bb1 100755 --- a/extra/ci/after_success.sh +++ b/extra/ci/after_success.sh @@ -2,46 +2,50 @@ set -e -if [[ ! -f ~/.ssh/id_rsa ]]; then - exit 0 -fi - -source ./extra/ci/conda.sh +source ./extra/ci/common.sh -[[ -n "$COVERAGE" ]] && coveralls +if [[ -n "$COVERAGE" ]]; then + info coveralls +fi if [[ -z "$TRAVIS_TAG" && -z "$APPVEYOR_REPO_TAG_NAME" ]]; then LABEL=dev - echo $(cat mordred/_version.txt).post1.dev1 > mordred/_version.txt + python extra/ci/bump-beta-version.py $(cat mordred/_version.txt) > mordred/_version.txt else LABEL=main fi -conda build . --no-test +info conda build . --no-test OUTPUT=`conda build . --output --python $PYTHON_VERSION` -if [[ -n "$APPVEYOR" ]]; then - cmd /c "anaconda -t $ANACONDA_CLOUD_TOKEN upload --label $LABEL --force $OUTPUT" -else - anaconda -t $ANACONDA_CLOUD_TOKEN upload --label $LABEL --force $OUTPUT +if [[ -n "$ANACONDA_CLOUD_TOKEN" ]]; then + if [[ -n "$APPVEYOR" ]]; then + cmd /c "anaconda -t $ANACONDA_CLOUD_TOKEN upload --label $LABEL --force $OUTPUT" + else + anaconda -t $ANACONDA_CLOUD_TOKEN upload --label $LABEL --force $OUTPUT + fi fi # documentation -if [[ "$TRAVIS_PULL_REQUEST" == false && -n "$DOCUMENTATION" && "$TRAVIS_OS_NAME" == linux ]]; then +if [[ -f ~/.ssh/id_rsa && "$TRAVIS_PULL_REQUEST" == false && -n "$DOCUMENTATION" && "$TRAVIS_OS_NAME" == linux ]]; then eval $(ssh-agent -s) ssh-add ssh-add -l echo "$SSH_AGENT_PID" cd docs - make html + info make html - git clone -b gh-pages $DOC_REMOTE gh-pages - rm -r gh-pages/$TRAVIS_BRANCH || true - cp -r _build/html gh-pages/$TRAVIS_BRANCH + rm -rf gh-pages + info git clone -b gh-pages $DOC_REMOTE gh-pages + if [[ -d gh-pages/$TRAVIS_BRANCH ]]; then + info rm -r gh-pages/$TRAVIS_BRANCH + fi + mkdir -p gh-pages/$(dirname $TRAVIS_BRANCH) + info cp -r _build/html gh-pages/$TRAVIS_BRANCH cd gh-pages - git add . - git commit -m "update documentation to mordred-descriptor/mordred@$TRAVIS_COMMIT" - git push origin gh-pages + info git add . + info git commit -m "update documentation to mordred-descriptor/mordred@$TRAVIS_COMMIT" + info git push origin gh-pages fi diff --git a/extra/ci/bump-beta-version.py b/extra/ci/bump-beta-version.py new file mode 100644 index 00000000..efc07242 --- /dev/null +++ b/extra/ci/bump-beta-version.py @@ -0,0 +1,11 @@ +from distutils.version import StrictVersion +import sys + + +def main(version): + (major, minor, patch) = StrictVersion(version).version + print("{}.{}.{}a1".format(major, minor, patch + 1)) + + +if __name__ == "__main__": + main(sys.argv[1]) diff --git a/extra/ci/conda.sh b/extra/ci/common.sh similarity index 57% rename from extra/ci/conda.sh rename to extra/ci/common.sh index b6cc99f7..c127636b 100755 --- a/extra/ci/conda.sh +++ b/extra/ci/common.sh @@ -5,3 +5,13 @@ if [[ -n "$APPVEYOR" ]]; then else export PATH="$HOME/miniconda/bin:$PATH" fi + +info() { + echo ">>> $@" + "$@" +} + +banner() { + line="==================" + echo "$line $@ $line" +} diff --git a/extra/ci/get-rdkit-version.py b/extra/ci/get-rdkit-version.py new file mode 100644 index 00000000..4c3eb3ec --- /dev/null +++ b/extra/ci/get-rdkit-version.py @@ -0,0 +1,16 @@ +def main(data, os, pyver): + d = { + (os, pyver): ver + for os, pyver, ver + in (line.strip().split() for line in open(data)) + } + + print(d[(os, pyver)]) + + +if __name__ == "__main__": + import sys + import os + + data = os.path.join(os.path.dirname(__file__), "rdkit-versions.txt") + main(data, *sys.argv[1:]) diff --git a/extra/ci/install.sh b/extra/ci/install.sh index 2363db44..335c7f98 100755 --- a/extra/ci/install.sh +++ b/extra/ci/install.sh @@ -1,55 +1,49 @@ #!/bin/bash - set -e -REQUIREMENTS=./extra/requirements -CONDA_REQ_FILE=requirements-conda.txt -PIP_REQ_FILE=requirements-pip.txt +source ./extra/ci/common.sh # install conda - -if [[ "$TRAVIS_OS_NAME" == osx ]]; then - export OS_NAME=MacOSX -elif [[ "$TRAVIS_OS_NAME" == linux ]]; then - export OS_NAME=Linux +if [[ -n "$TRAVIS_OS_NAME" ]]; then + if [[ "$TRAVIS_OS_NAME" == osx ]]; then + export OS_NAME=MacOSX + elif [[ "$TRAVIS_OS_NAME" == linux ]]; then + export OS_NAME=Linux + fi + if [[ ! -f "miniconda.sh" ]]; then + info wget -q https://repo.continuum.io/miniconda/Miniconda3-latest-${OS_NAME}-x86_64.sh -O miniconda.sh + fi + rm -rf $HOME/miniconda + info bash miniconda.sh -b -p $HOME/miniconda elif [[ -n "$APPVEYOR" ]]; then export OS_NAME=Windows fi -if [[ -n "$TRAVIS_OS_NAME" ]]; then - wget https://repo.continuum.io/miniconda/Miniconda3-latest-${OS_NAME}-x86_64.sh -O miniconda.sh - bash miniconda.sh -b -p $HOME/miniconda -fi - -source ./extra/ci/conda.sh - # setup conda - hash -r -conda config --set always_yes yes --set changeps1 no -conda config --add channels rdkit --add channels mordred-descriptor +info conda config --set always_yes yes --set changeps1 no +info conda config --add channels rdkit --add channels mordred-descriptor +info conda update -y --all + +info conda install python=$PYTHON_VERSION # install requirements +info pip install pipenv -cat $REQUIREMENTS/requirements-conda.txt $REQUIREMENTS/requirements.txt > $CONDA_REQ_FILE +pipenv lock -r > requirements.txt +info python ./extra/ci/scrub-requirements.py requirements.txt -if [[ "$PYTHON_VERSION" < 3.4 ]]; then - echo enum34 >> $CONDA_REQ_FILE -fi +banner "requirements.txt start" +cat requirements.txt +banner "requirements.txt end " -[[ "$PYTHON_VERSION" < 3.4 ]] && echo enum34 >> $CONDA_REQ_FILE +RDKIT="rdkit==$(python ./extra/ci/get-rdkit-version.py $OS_NAME $PYTHON_VERSION)" +info conda install $RDKIT --file requirements.txt --file ./extra/ci/requirements-conda.txt -if [[ -n "$LINT" ]]; then - cat $REQUIREMENTS/requirements-flake8.txt >> $PIP_REQ_FILE -fi +pipenv lock -r --dev > requirements.txt +banner "requirements.txt(dev) start" +cat requirements.txt +banner "requirements.txt(dev) end " -if [[ -n "$DOCUMENTATION" ]]; then - cat $REQUIREMENTS/requirements-documentation.txt >> $PIP_REQ_FILE -fi - -conda install python=$PYTHON_VERSION --file $CONDA_REQ_FILE - -if [[ -f $PIP_REQ_FILE ]]; then - pip install -r $PIP_REQ_FILE -fi +info pip install -r requirements.txt diff --git a/extra/ci/rdkit-versions.txt b/extra/ci/rdkit-versions.txt new file mode 100644 index 00000000..6c5bfacf --- /dev/null +++ b/extra/ci/rdkit-versions.txt @@ -0,0 +1,9 @@ +MacOSX 3.6 2018.03.1.0 +MacOSX 3.5 2018.03.1.0 +MacOSX 2.7 2018.03.1.0 +Linux 3.6 2018.03.1.0 +Linux 3.5 2018.03.1.0 +Linux 2.7 2018.03.1.0 +Windows 3.6 2018.03.1.1 +Windows 3.5 2017.09.2.0 +Windows 2.7 2017.09.3.0 diff --git a/extra/requirements/requirements-conda.txt b/extra/ci/requirements-conda.txt similarity index 62% rename from extra/requirements/requirements-conda.txt rename to extra/ci/requirements-conda.txt index 51229223..c5bce6e5 100644 --- a/extra/requirements/requirements-conda.txt +++ b/extra/ci/requirements-conda.txt @@ -1,3 +1,2 @@ -rdkit>=2015.09.2 conda-build anaconda-client diff --git a/extra/ci/scrub-requirements.py b/extra/ci/scrub-requirements.py new file mode 100644 index 00000000..41e898ba --- /dev/null +++ b/extra/ci/scrub-requirements.py @@ -0,0 +1,30 @@ +from __future__ import print_function +import sys +import re + + +def main(path): + contents = [line.rstrip() for line in open(path)] + with open(path, 'w') as dst: + for line in contents: + if '-' == line[0]: + continue + + vs = re.split(r'\s*;\s*', line) + if len(vs) == 1: + print(line, file=dst) + continue + + if len(vs) > 2: + raise ValueError("#field > 2") + + v = sys.version_info + pkg, cond = vs + cond = cond.replace("python_version", '{}.{}'.format(v.major, v.minor)) + cond = re.sub(r"'(\d+\.\d+)'", r'\1', cond) + if eval(cond): + print(pkg, file=dst) + + +if __name__ == "__main__": + main(sys.argv[1]) diff --git a/extra/ci/test_script.sh b/extra/ci/test_script.sh index 747f8228..6e686301 100755 --- a/extra/ci/test_script.sh +++ b/extra/ci/test_script.sh @@ -1,23 +1,25 @@ #!/bin/bash set -e -source ./extra/ci/conda.sh +source ./extra/ci/common.sh + +PYTHON=python + +conda list if [[ -n "$COVERAGE" ]]; then - python -m mordred.tests -q --with-coverage + info $PYTHON -m mordred.tests -q --with-coverage else - python -m mordred.tests -q + info $PYTHON -m mordred.tests -q fi echo "test README.rst" >&2 -python -m doctest README.rst +info $PYTHON -m doctest README.rst for example in `find examples -name '*.py'`; do echo "test $example" >&2 - PYTHONPATH=. python $example > /dev/null + PYTHONPATH=. info $PYTHON $example > /dev/null done -if [[ -n "$LINT" ]]; then - python setup.py flake8 - python setup.py isort -fi +info $PYTHON setup.py flake8 +info $PYTHON setup.py isort diff --git a/extra/requirements/requirements-documentation.txt b/extra/requirements/requirements-documentation.txt deleted file mode 100644 index 5067fcf3..00000000 --- a/extra/requirements/requirements-documentation.txt +++ /dev/null @@ -1,3 +0,0 @@ -sphinx -sphinx_rtd_theme -sphinxcontrib-bibtex diff --git a/extra/requirements/requirements-flake8.txt b/extra/requirements/requirements-flake8.txt deleted file mode 100644 index 034128d7..00000000 --- a/extra/requirements/requirements-flake8.txt +++ /dev/null @@ -1,12 +0,0 @@ -pep8 -isort -flake8 -flake8-quotes -flake8-print -flake8-commas -flake8-comprehensions -flake8-docstrings -flake8-sorted-keys -flake8-regex -flake8-string-format -flake8-bugbear diff --git a/extra/requirements/requirements.txt b/extra/requirements/requirements.txt deleted file mode 100644 index b7e8bc83..00000000 --- a/extra/requirements/requirements.txt +++ /dev/null @@ -1,8 +0,0 @@ -networkx>=1.10 -numpy>=1.10 -six>=1.10 -tqdm>=3.7.1 -pyyaml>=3.11 -nose>=1.3 -coverage>=4.4 -pandas>=0.20 diff --git a/mordred/_matrix_attributes.py b/mordred/_matrix_attributes.py index 4b2e1542..49f95763 100644 --- a/mordred/_matrix_attributes.py +++ b/mordred/_matrix_attributes.py @@ -201,6 +201,7 @@ def calculate(self, matrix): class VE1(MatrixAttributeBase): __slots__ = () + @classmethod def description(cls): return "coefficient sum of the last eigenvector" diff --git a/mordred/_version.txt b/mordred/_version.txt index 9084fa2f..524cb552 100644 --- a/mordred/_version.txt +++ b/mordred/_version.txt @@ -1 +1 @@ -1.1.0 +1.1.1