ソースを参照

ci(compatibility): test on more Python versions and on macOS (#131)

BREAKING CHANGE: on Ubuntu 20.04+, the `texlive-latex-extra` package is needed to generate the PDF output
tags/v0.9.0
Jérôme Deuchnord 3年前
committed by Jérôme Deuchnord
コミット
0b12e71da8
この署名に対応する既知のキーがデータベースに存在しません GPGキーID: 72F9D1A7272D53DD
21個のファイルの変更358行の追加272行の削除
  1. +1
    -0
      .coveragerc
  2. +3
    -0
      .editorconfig
  3. +9
    -6
      .github/workflows/commitlint.yml
  4. +20
    -5
      .github/workflows/e2e.yml
  5. +6
    -2
      .github/workflows/i18n.yml
  6. +9
    -4
      .github/workflows/pylint.yml
  7. +21
    -4
      .github/workflows/unit-tests.yml
  8. +3
    -1
      .pylintrc
  9. +1
    -2
      .scripts/tests-e2e.sh
  10. +2
    -0
      Makefile
  11. +0
    -2
      Pipfile
  12. +165
    -160
      Pipfile.lock
  13. +14
    -23
      README.md
  14. +3
    -2
      config-comlipy.yml
  15. +2
    -1
      kosmorrolib/core.py
  16. +33
    -13
      kosmorrolib/dumper.py
  17. +2
    -2
      kosmorrolib/ephemerides.py
  18. +1
    -1
      kosmorrolib/events.py
  19. +8
    -2
      kosmorrolib/exceptions.py
  20. +48
    -40
      kosmorrolib/locales/messages.pot
  21. +7
    -2
      kosmorrolib/main.py

+ 1
- 0
.coveragerc ファイルの表示

@@ -3,4 +3,5 @@ branch = true
source =
kosmorrolib
omit =
kosmorrolib/main.py
test/*

+ 3
- 0
.editorconfig ファイルの表示

@@ -12,5 +12,8 @@ trim_trailing_whitespace = true
[*.md]
trim_trailing_whitespace = false

[*.yml]
indent_size = 2

[Makefile]
indent_style = tab

+ 9
- 6
.github/workflows/commitlint.yml ファイルの表示

@@ -1,9 +1,13 @@
name: Commit lint

on: [push, pull_request]
on:
push:
branches: [master, features]
pull_request:
branches: [master, features]

jobs:
build:
commitlint:
runs-on: ubuntu-latest

steps:
@@ -11,14 +15,13 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v1
with:
python-version: 3.8
python-version: 3.9
- name: Install dependencies
run: |
pip install --upgrade pip pipenv
pipenv sync -d
pip install --upgrade pip comlipy
- name: Lint
run: |
message="$(git log --format=%B -n 1 HEAD)"
echo $message
pipenv run comlipy -c config-comlipy.yml "$message"
comlipy -c config-comlipy.yml "$message"


+ 20
- 5
.github/workflows/e2e.yml ファイルの表示

@@ -1,18 +1,33 @@
name: E2E tests

on: [push, pull_request]
on:
push:
branches: [master, features]
pull_request:
branches: [master, features]

jobs:
build:
runs-on: ubuntu-latest

e2e-tests:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-18.04
- ubuntu-20.04
python-version:
- '3.7'
- '3.8'
- '3.9'

name: E2E tests (Python ${{ matrix.python-version }} on ${{ matrix.os }})
steps:
- uses: actions/checkout@v1

- name: Set up Python
uses: actions/setup-python@v1
with:
python-version: 3.8
python-version: ${{ matrix.python-version }}

- name: Prepare tests
run: |


+ 6
- 2
.github/workflows/i18n.yml ファイルの表示

@@ -1,9 +1,13 @@
name: Internationalization check

on: [push, pull_request]
on:
push:
branches: [master, features]
pull_request:
branches: [master, features]

jobs:
build:
internationalization:
runs-on: ubuntu-latest

steps:


+ 9
- 4
.github/workflows/pylint.yml ファイルの表示

@@ -1,17 +1,22 @@
name: PyLint
name: Python Lint

on: [push, pull_request]
on:
push:
branches: [master, features]
pull_request:
branches: [master, features]

jobs:
build:
pylint:
runs-on: ubuntu-latest

name: PyLint
steps:
- uses: actions/checkout@v1
- name: Set up Python
uses: actions/setup-python@v1
with:
python-version: 3.8
python-version: 3.9
- name: Install dependencies
run: |
pip install --upgrade pip pipenv


+ 21
- 4
.github/workflows/unit-tests.yml ファイルの表示

@@ -1,17 +1,34 @@
name: Unit tests

on: [push, pull_request]
on:
push:
branches: [master, features]
pull_request:
branches: [master, features]

jobs:
build:
runs-on: ubuntu-latest
unit-tests:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-18.04
- ubuntu-20.04
- macos-10.15
- macos-11.0
python-version:
- '3.7'
- '3.8'
- '3.9'

name: Unit tests (Python ${{ matrix.python-version }} on ${{ matrix.os }})
steps:
- uses: actions/checkout@v1
- name: Set up Python
uses: actions/setup-python@v1
with:
python-version: 3.8
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
pip install --upgrade pip pipenv


+ 3
- 1
.pylintrc ファイルの表示

@@ -147,7 +147,9 @@ disable=print-statement,
too-few-public-methods,
protected-access,
unnecessary-comprehension,
too-many-arguments
too-many-arguments,
unsubscriptable-object,
too-many-return-statements

# Enable the message, report, category or checker with the given id(s). You can
# either give multiple identifier separated by comma (,) or put this option


+ 1
- 2
.scripts/tests-e2e.sh ファイルの表示

@@ -101,8 +101,7 @@ assertSuccess "LATITUDE=50.5876 LONGITUDE=3.0624 TIMEZONE=-1 kosmorro -d 2020-01
# Missing dependencies, should fail
assertFailure "kosmorro --latitude=50.5876 --longitude=3.0624 -d 2020-01-27 --format=pdf -o /tmp/document.pdf"

assertSuccess "sudo apt-get install -y texlive" "CI"
assertSuccess "$PIP_BIN install latex" "CI"
assertSuccess "sudo apt-get install -y texlive texlive-latex-extra" "CI"

# Dependencies installed, should not fail
assertSuccess "kosmorro --latitude=50.5876 --longitude=3.0624 -d 2020-01-27 --format=pdf -o /tmp/document.pdf"


+ 2
- 0
Makefile ファイルの表示

@@ -1,6 +1,8 @@
.PHONY: test

test:
export LC_ALL=C.UTF-8; \
export LANG=C.UTF-8; \
unset KOSMORRO_LATITUDE; \
unset KOSMORRO_LONGITUDE; \
unset KOSMORRO_TIMEZONE; \


+ 0
- 2
Pipfile ファイルの表示

@@ -9,14 +9,12 @@ pylint = "*"
babel = "*"
unittest-data-provider = "*"
coveralls = "*"
comlipy = "*"

[packages]
skyfield = ">=1.32.0,<2.0.0"
tabulate = "*"
numpy = ">=1.17.0,<2.0.0"
termcolor = "*"
latex = "*"
python-dateutil = "*"

[requires]


+ 165
- 160
Pipfile.lock ファイルの表示

@@ -1,7 +1,7 @@
{
"_meta": {
"hash": {
"sha256": "4d15bacd4af8bef236d7323e49b1f426715f0c34b0f083bb78a71062f4b64dd4"
"sha256": "a46d9bde2c8471c29d689d748afa6c04b5f8b96fddaa4eff5406658dc2af3765"
},
"pipfile-spec": 6,
"requires": {
@@ -18,10 +18,10 @@
"default": {
"certifi": {
"hashes": [
"sha256:1f422849db327d534e3d0c5f02a263458c3955ec0aae4ff09b95f195c59f4edd",
"sha256:f05def092c44fbf25834a51509ef6e631dc19765ab8a57b4e7ab85531f0a9cf4"
"sha256:1a4995114262bffbc2413b159f2a1a480c969de6e6eb13ee966d470af86af59c",
"sha256:719a74fb9e33b9bd44cc7f3a8d94bc35e4049deebe19ba7d8e108280cfd59830"
],
"version": "==2020.11.8"
"version": "==2020.12.5"
},
"data": {
"hashes": [
@@ -60,40 +60,47 @@
"hashes": [
"sha256:bf10c3fe27e9f3adccebc12e90ec239c86dcba101b89221f6775918211482a79"
],
"index": "pypi",
"version": "==0.7.0"
"version": "==2.15"
},
"numpy": {
"hashes": [
"sha256:082f8d4dd69b6b688f64f509b91d482362124986d98dc7dc5f5e9f9b9c3bb983",
"sha256:1bc0145999e8cb8aed9d4e65dd8b139adf1919e521177f198529687dbf613065",
"sha256:309cbcfaa103fc9a33ec16d2d62569d541b79f828c382556ff072442226d1968",
"sha256:3673c8b2b29077f1b7b3a848794f8e11f401ba0b71c49fbd26fb40b71788b132",
"sha256:480fdd4dbda4dd6b638d3863da3be82873bba6d32d1fc12ea1b8486ac7b8d129",
"sha256:56ef7f56470c24bb67fb43dae442e946a6ce172f97c69f8d067ff8550cf782ff",
"sha256:5a936fd51049541d86ccdeef2833cc89a18e4d3808fe58a8abeb802665c5af93",
"sha256:5b6885c12784a27e957294b60f97e8b5b4174c7504665333c5e94fbf41ae5d6a",
"sha256:667c07063940e934287993366ad5f56766bc009017b4a0fe91dbd07960d0aba7",
"sha256:7ed448ff4eaffeb01094959b19cbaf998ecdee9ef9932381420d514e446601cd",
"sha256:8343bf67c72e09cfabfab55ad4a43ce3f6bf6e6ced7acf70f45ded9ebb425055",
"sha256:92feb989b47f83ebef246adabc7ff3b9a59ac30601c3f6819f8913458610bdcc",
"sha256:935c27ae2760c21cd7354402546f6be21d3d0c806fffe967f745d5f2de5005a7",
"sha256:aaf42a04b472d12515debc621c31cf16c215e332242e7a9f56403d814c744624",
"sha256:b12e639378c741add21fbffd16ba5ad25c0a1a17cf2b6fe4288feeb65144f35b",
"sha256:b1cca51512299841bf69add3b75361779962f9cee7d9ee3bb446d5982e925b69",
"sha256:b8456987b637232602ceb4d663cb34106f7eb780e247d51a260b84760fd8f491",
"sha256:b9792b0ac0130b277536ab8944e7b754c69560dac0415dd4b2dbd16b902c8954",
"sha256:c9591886fc9cbe5532d5df85cb8e0cc3b44ba8ce4367bd4cf1b93dc19713da72",
"sha256:cf1347450c0b7644ea142712619533553f02ef23f92f781312f6a3553d031fc7",
"sha256:de8b4a9b56255797cbddb93281ed92acbc510fb7b15df3f01bd28f46ebc4edae",
"sha256:e1b1dc0372f530f26a03578ac75d5e51b3868b9b76cd2facba4c9ee0eb252ab1",
"sha256:e45f8e981a0ab47103181773cc0a54e650b2aef8c7b6cd07405d0fa8d869444a",
"sha256:e4f6d3c53911a9d103d8ec9518190e52a8b945bab021745af4939cfc7c0d4a9e",
"sha256:ed8a311493cf5480a2ebc597d1e177231984c818a86875126cfd004241a73c3e",
"sha256:ef71a1d4fd4858596ae80ad1ec76404ad29701f8ca7cdcebc50300178db14dfc"
"sha256:012426a41bc9ab63bb158635aecccc7610e3eff5d31d1eb43bc099debc979d94",
"sha256:06fab248a088e439402141ea04f0fffb203723148f6ee791e9c75b3e9e82f080",
"sha256:0eef32ca3132a48e43f6a0f5a82cb508f22ce5a3d6f67a8329c81c8e226d3f6e",
"sha256:1ded4fce9cfaaf24e7a0ab51b7a87be9038ea1ace7f34b841fe3b6894c721d1c",
"sha256:2e55195bc1c6b705bfd8ad6f288b38b11b1af32f3c8289d6c50d47f950c12e76",
"sha256:2ea52bd92ab9f768cc64a4c3ef8f4b2580a17af0a5436f6126b08efbd1838371",
"sha256:36674959eed6957e61f11c912f71e78857a8d0604171dfd9ce9ad5cbf41c511c",
"sha256:384ec0463d1c2671170901994aeb6dce126de0a95ccc3976c43b0038a37329c2",
"sha256:39b70c19ec771805081578cc936bbe95336798b7edf4732ed102e7a43ec5c07a",
"sha256:400580cbd3cff6ffa6293df2278c75aef2d58d8d93d3c5614cd67981dae68ceb",
"sha256:43d4c81d5ffdff6bae58d66a3cd7f54a7acd9a0e7b18d97abb255defc09e3140",
"sha256:50a4a0ad0111cc1b71fa32dedd05fa239f7fb5a43a40663269bb5dc7877cfd28",
"sha256:603aa0706be710eea8884af807b1b3bc9fb2e49b9f4da439e76000f3b3c6ff0f",
"sha256:6149a185cece5ee78d1d196938b2a8f9d09f5a5ebfbba66969302a778d5ddd1d",
"sha256:759e4095edc3c1b3ac031f34d9459fa781777a93ccc633a472a5468587a190ff",
"sha256:7fb43004bce0ca31d8f13a6eb5e943fa73371381e53f7074ed21a4cb786c32f8",
"sha256:811daee36a58dc79cf3d8bdd4a490e4277d0e4b7d103a001a4e73ddb48e7e6aa",
"sha256:8b5e972b43c8fc27d56550b4120fe6257fdc15f9301914380b27f74856299fea",
"sha256:99abf4f353c3d1a0c7a5f27699482c987cf663b1eac20db59b8c7b061eabd7fc",
"sha256:a0d53e51a6cb6f0d9082decb7a4cb6dfb33055308c4c44f53103c073f649af73",
"sha256:a12ff4c8ddfee61f90a1633a4c4afd3f7bcb32b11c52026c92a12e1325922d0d",
"sha256:a4646724fba402aa7504cd48b4b50e783296b5e10a524c7a6da62e4a8ac9698d",
"sha256:a76f502430dd98d7546e1ea2250a7360c065a5fdea52b2dffe8ae7180909b6f4",
"sha256:a9d17f2be3b427fbb2bce61e596cf555d6f8a56c222bd2ca148baeeb5e5c783c",
"sha256:ab83f24d5c52d60dbc8cd0528759532736b56db58adaa7b5f1f76ad551416a1e",
"sha256:aeb9ed923be74e659984e321f609b9ba54a48354bfd168d21a2b072ed1e833ea",
"sha256:c843b3f50d1ab7361ca4f0b3639bf691569493a56808a0b0c54a051d260b7dbd",
"sha256:cae865b1cae1ec2663d8ea56ef6ff185bad091a5e33ebbadd98de2cfa3fa668f",
"sha256:cc6bd4fd593cb261332568485e20a0712883cf631f6f5e8e86a52caa8b2b50ff",
"sha256:cf2402002d3d9f91c8b01e66fbb436a4ed01c6498fffed0e4c7566da1d40ee1e",
"sha256:d051ec1c64b85ecc69531e1137bb9751c6830772ee5c1c426dbcfe98ef5788d7",
"sha256:d6631f2e867676b13026e2846180e2c13c1e11289d67da08d71cacb2cd93d4aa",
"sha256:dbd18bcf4889b720ba13a27ec2f2aac1981bd41203b3a3b27ba7a33f88ae4827",
"sha256:df609c82f18c5b9f6cb97271f03315ff0dbe481a2a02e56aeb1b1a985ce38e60"
],
"index": "pypi",
"version": "==1.19.1"
"version": "==1.19.5"
},
"python-dateutil": {
"hashes": [
@@ -105,38 +112,49 @@
},
"sgp4": {
"hashes": [
"sha256:005f8517fcbde7af42229f1e0effde7f797d96eb210e471c474791c3aaf5aadf",
"sha256:047757aa85357b2deec06a00bd098806639dac4bd16a10a2ea406cc9bc9a8f7e",
"sha256:0847397cf8a563b9cc4625d96365301225f52fcfb2ce889a30f95113ad6a010a",
"sha256:0a43ce0451c0f1a8023848f672b56d7b02b0c9747d73031b55c26f67500a70e7",
"sha256:10e64adf473f1f4c72ea6dc7f6817364545a6163388e72bb8f63ddd9ff7a911b",
"sha256:1e91f64a9d0f42855082b028419d06e8e20a857e0d3eeb64a138b74f394321f5",
"sha256:1ef02cbb37100c67b0b8b156613fd09ce1a97d2b5361c201f6b157ec954569e0",
"sha256:1fa7b3f55c9e00f2526b30ff2293526c353856bfb157c71332ec70db536906ba",
"sha256:28f3c51eec209518d502bb5f3b0de5306efd0cd40e48321c036692c6041ea496",
"sha256:2bfbb35d2216b36b6b1b5c6e15630839b9eea5c15b26893f05f27f51fbc92360",
"sha256:3acdbbb5de380b587c66fc59e26e635668c74661da1b731007aece8506d1e279",
"sha256:43720e8e20dcbf3ac60cda41171d6fcc7692d685bd6374d171f7849299d03c52",
"sha256:46b3457db278faf85c4fce58de690a88370d5fd5d701406082f4041c2fc94221",
"sha256:5d9683f28f8d5d8a1856e985aa9fdde017aa7a2b2f29e24d9726d59d23b4f351",
"sha256:6267c27560f09a20913abde97d945d3334591436e8130bbb21ae02e0d4758b98",
"sha256:8471b183198d649266d22f61704840fea0ad499b38fd95228c38438faf9584d2",
"sha256:8b3ced831b321cd5a018bb134e4d4ba2b10fc73c20a48c74b006c0a73eb91622",
"sha256:8db7be3b810907bbdeaa57c84824fe0fda0090be42b40ab149665cfdb625919a",
"sha256:950489e6287b8d3fd8fa47446455fcb3c6a231eec15e49ff06467b9ce61454b9",
"sha256:a96282c862bbd746e9395f80430488f5283cc3179c1b697fdc014d786fd97e06",
"sha256:b49360be32bae8afb30bce4153f80d290bcf0975a3bf41991c3e473a949971a6",
"sha256:b5d814dee570bb2bf6938dd511019245dc8d3e3bcb58488461ce2efd747f578d",
"sha256:bb371f39e72472f48f24061198bb6523d3d796e140d7bbc5ccae049afd5cc66f",
"sha256:c9346b69e9ee1ec53222d32557da8ad422a394f7a3675773c850aa22df60995e",
"sha256:cd3bdbc10df1a914b3c015fd4212923357a8a0691d448fb1339d6b97d439ecc6",
"sha256:d46bc7f38ae7d13982875d5cf44c8f343f56538b49b0ab9c038e9d24365e80dd",
"sha256:e2b2321df9f3465acf50ea67e8c6559c97b26762682469308564a631ee454f9a",
"sha256:e549dbf6cb9b328358deca1390e65dbdb07b69d80a06323162921975ee90ec00",
"sha256:edd3b77630e2bc52ba203c7d578837b9ed353d8d5b8d716c776a37fd0dfcc08b",
"sha256:f35f01d2fbb4bf07da35c44057ca334b014d728893b233afec8149341307ce35"
],
"version": "==2.13"
"sha256:05519625ff4da7c2b60075e0489af2f3b08247fc4c24d83aa02e86d49095a632",
"sha256:064b8188d305247b674698837cb320685cbc897ab5da724468f267fc1281c3e9",
"sha256:0ee6a97a23a0f63882935d6082cc761bdf4a9fc2fe1a2989e6849efb46ee13fe",
"sha256:1788b54cce2308ee4360a1f15693d2d26adb44420b358b151162a2ceabfa0560",
"sha256:1c5b2b2aa1da6bbf7f9d3d19955d070d01ca935b43314ebeb10fce79fd35c5c5",
"sha256:2419ab6bbf7dd4edf26b114d22c3d46f77f3de27e2269079700519fb8ec0dccb",
"sha256:2b7dd490ac58dc9ef259e82e5b162eb8eacac03c817eae5744354e52372da509",
"sha256:360c700228b02d1afe6cc1b217c5f5f7b9624b2fc3ea65feeba51d8d7dd6f3f7",
"sha256:3d8ce6d67b349c3222586c861b8a1b42ee126af8464aeaccc521433fa4cdf5ca",
"sha256:3f21d31e18c7fbdb046eecebb67cd9d61549177e3e428df0dc2d56a85aeef43d",
"sha256:47f4a8879da46c4ebbce9021951a3c4e050bd2647fb53a943acc86a4828aed5a",
"sha256:4a3750337d6f44969447ec10385adca6f79e2bb0f41f774e5cae7e3b2c6cc6c1",
"sha256:4a42ca7f37d53eeb32359a056fc0ded0737cbee8b0948e93d12881afe80e585a",
"sha256:53f5c7d08f0bcf0b4954b2a82d35521162ebe4f44c8a2281b011334cafd8ed51",
"sha256:591c28d56031a82f5caa7403eada012273bdd0db43406bc5887819776e5cea49",
"sha256:6540aa58118405da6e3389b23998cf17c51c262933a9f627f7bf0c0e1e68e98a",
"sha256:6c1106a78a5d383ac0f0cfa3bb724dfc53e0096009e7cbd25bfc6e816f02d773",
"sha256:705fdcabd2f8417822644b8b84a6bbe440491b52487ec567d87f88645f455ae7",
"sha256:70855f34f05e9d66a5709297f2a704af9ffd5a28d8f13994e869a1c9e3554ed0",
"sha256:747bf84cc67109f6e074460eabc1a1beddbaf2eef84f4609628366e607f83321",
"sha256:756adf7e8635b10a8fe12ca83ff4633709223c9c72fad717b5f6ad1df991a185",
"sha256:7648211d7faaf1a847c01200e9a223597718e61d116e7be4da1be1a70a30fd4d",
"sha256:8c49130253308d0b508ec5f5b6686a1922a7ddc83b137114e3077627b20db920",
"sha256:905e25a64da2c09c82f2f29380db6bfc04662d46732e530f14a518a880825878",
"sha256:93121b4e31f0e6d5e17db14aebe5cfa773a8be13edc795e09864d50455d5edc5",
"sha256:95306df48334c9db6a9e8ceae3724d7c2d7e51e6da8eb5a677e03f505b4ceead",
"sha256:98a8f4c25a851b5c1bb2cb1f800df7212eb0916cc9f5e918cfad2e95261bb5c8",
"sha256:9dee4e1a01ca531ab1f402006a090dce44e9f493ccf6876ad4b71cf6a3a644fc",
"sha256:9e2487e45ea3d0bb7a707f0ccd6cfbc8e72cee96d20a06df04c293c33f7d34ac",
"sha256:9ee8bbbc622d3a5e33bf7f04a4cb6c9f18686bd017658d3f3072a8110ba9c5cc",
"sha256:ab8cc9c74cb5520bfc34656ec67896c2d1a00c9888436b703c99c4d65f098778",
"sha256:b18cf7facd51b3b9d5eb24298570ef7e6a34289ce8696286fcaa01011045bd33",
"sha256:b78fcb349f942b060733501a6aab4daa56918bd116c107827d5f20da9131d242",
"sha256:bb31bca50eae97a132860afbd70435ec4d7745108a79c791dcaab73765c69982",
"sha256:bf7bc6c46f2d0ec0eb7fc7cd26d626d6e452709402a831461e9c708caf157bf2",
"sha256:d5bfb2cb2d71882baf68042777b75b65853c37917ffbb64945c2427221120730",
"sha256:dab2a3939fc1922bfc3b8a6841aeaafe138677d302a6043686b1ebefff350121",
"sha256:dea9499cdfa23ba357496a4980429dab13d3b274232a96deb41261aad5f484cf",
"sha256:e3073da63069a74438de4c29585bcbd4dbfe8ddc9f64f7f9271f09249fb10523",
"sha256:ef7d2b1be26bd3b7f0cf81ad8210c987539e61f822b7aaab10c7420dc95b2953",
"sha256:f9c0bda7b129179b6b0046a4aa807902ecd4be5464eeb626efb2a7a34beafaff"
],
"version": "==2.14"
},
"shutilwhich": {
"hashes": [
@@ -154,10 +172,10 @@
},
"skyfield": {
"hashes": [
"sha256:68316a9e151b32d9664fc0073436a2fbdeff1b12d5d81a4a2108480f1788ce35"
"sha256:a5b229bb9cd96ad42be1744d9f4ff1a56cc7ff755742f56d784a0bb84cb6c1b9"
],
"index": "pypi",
"version": "==1.31"
"version": "==1.35"
},
"tabulate": {
"hashes": [
@@ -192,80 +210,81 @@
},
"babel": {
"hashes": [
"sha256:1aac2ae2d0d8ea368fa90906567f5c08463d98ade155c0c4bfedd6a0f7160e38",
"sha256:d670ea0b10f8b723672d3a6abeb87b565b244da220d76b4dba1b66269ec152d4"
"sha256:9d35c22fcc79893c3ecc85ac4a56cde1ecf3f19c540bba0922308a6c06ca6fa5",
"sha256:da031ab54472314f210b0adcff1588ee5d1d1d0ba4dbd07b94dba82bde791e05"
],
"index": "pypi",
"version": "==2.8.0"
"version": "==2.9.0"
},
"certifi": {
"hashes": [
"sha256:1f422849db327d534e3d0c5f02a263458c3955ec0aae4ff09b95f195c59f4edd",
"sha256:f05def092c44fbf25834a51509ef6e631dc19765ab8a57b4e7ab85531f0a9cf4"
"sha256:1a4995114262bffbc2413b159f2a1a480c969de6e6eb13ee966d470af86af59c",
"sha256:719a74fb9e33b9bd44cc7f3a8d94bc35e4049deebe19ba7d8e108280cfd59830"
],
"version": "==2020.11.8"
"version": "==2020.12.5"
},
"chardet": {
"hashes": [
"sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae",
"sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"
],
"version": "==3.0.4"
},
"click": {
"hashes": [
"sha256:2335065e6395b9e67ca716de5f7526736bfa6ceead690adf616d925bdc622b13",
"sha256:5b94b49521f6456670fdb30cd82a4eca9412788a93fa6dd6df72c94d5a8ff2d7"
"sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa",
"sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
"version": "==7.0"
},
"comlipy": {
"hashes": [
"sha256:aa836b8ff7184661727f987def812f3d084e1599cbdd8076613d0dafc5264996",
"sha256:cc5253dd55f002f958cfab56dec7af714d42b8cfb0171a591157b1440c4d6878"
],
"index": "pypi",
"version": "==1.2.1"
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'",
"version": "==4.0.0"
},
"coverage": {
"hashes": [
"sha256:0203acd33d2298e19b57451ebb0bed0ab0c602e5cf5a818591b4918b1f97d516",
"sha256:0f313707cdecd5cd3e217fc68c78a960b616604b559e9ea60cc16795c4304259",
"sha256:1c6703094c81fa55b816f5ae542c6ffc625fec769f22b053adb42ad712d086c9",
"sha256:1d44bb3a652fed01f1f2c10d5477956116e9b391320c94d36c6bf13b088a1097",
"sha256:280baa8ec489c4f542f8940f9c4c2181f0306a8ee1a54eceba071a449fb870a0",
"sha256:29a6272fec10623fcbe158fdf9abc7a5fa032048ac1d8631f14b50fbfc10d17f",
"sha256:2b31f46bf7b31e6aa690d4c7a3d51bb262438c6dcb0d528adde446531d0d3bb7",
"sha256:2d43af2be93ffbad25dd959899b5b809618a496926146ce98ee0b23683f8c51c",
"sha256:381ead10b9b9af5f64646cd27107fb27b614ee7040bb1226f9c07ba96625cbb5",
"sha256:47a11bdbd8ada9b7ee628596f9d97fbd3851bd9999d398e9436bd67376dbece7",
"sha256:4d6a42744139a7fa5b46a264874a781e8694bb32f1d76d8137b68138686f1729",
"sha256:50691e744714856f03a86df3e2bff847c2acede4c191f9a1da38f088df342978",
"sha256:530cc8aaf11cc2ac7430f3614b04645662ef20c348dce4167c22d99bec3480e9",
"sha256:582ddfbe712025448206a5bc45855d16c2e491c2dd102ee9a2841418ac1c629f",
"sha256:63808c30b41f3bbf65e29f7280bf793c79f54fb807057de7e5238ffc7cc4d7b9",
"sha256:71b69bd716698fa62cd97137d6f2fdf49f534decb23a2c6fc80813e8b7be6822",
"sha256:7858847f2d84bf6e64c7f66498e851c54de8ea06a6f96a32a1d192d846734418",
"sha256:78e93cc3571fd928a39c0b26767c986188a4118edc67bc0695bc7a284da22e82",
"sha256:7f43286f13d91a34fadf61ae252a51a130223c52bfefb50310d5b2deb062cf0f",
"sha256:86e9f8cd4b0cdd57b4ae71a9c186717daa4c5a99f3238a8723f416256e0b064d",
"sha256:8f264ba2701b8c9f815b272ad568d555ef98dfe1576802ab3149c3629a9f2221",
"sha256:9342dd70a1e151684727c9c91ea003b2fb33523bf19385d4554f7897ca0141d4",
"sha256:9361de40701666b034c59ad9e317bae95c973b9ff92513dd0eced11c6adf2e21",
"sha256:9669179786254a2e7e57f0ecf224e978471491d660aaca833f845b72a2df3709",
"sha256:aac1ba0a253e17889550ddb1b60a2063f7474155465577caa2a3b131224cfd54",
"sha256:aef72eae10b5e3116bac6957de1df4d75909fc76d1499a53fb6387434b6bcd8d",
"sha256:bd3166bb3b111e76a4f8e2980fa1addf2920a4ca9b2b8ca36a3bc3dedc618270",
"sha256:c1b78fb9700fc961f53386ad2fd86d87091e06ede5d118b8a50dea285a071c24",
"sha256:c3888a051226e676e383de03bf49eb633cd39fc829516e5334e69b8d81aae751",
"sha256:c5f17ad25d2c1286436761b462e22b5020d83316f8e8fcb5deb2b3151f8f1d3a",
"sha256:c851b35fc078389bc16b915a0a7c1d5923e12e2c5aeec58c52f4aa8085ac8237",
"sha256:cb7df71de0af56000115eafd000b867d1261f786b5eebd88a0ca6360cccfaca7",
"sha256:cedb2f9e1f990918ea061f28a0f0077a07702e3819602d3507e2ff98c8d20636",
"sha256:e8caf961e1b1a945db76f1b5fa9c91498d15f545ac0ababbe575cfab185d3bd8"
],
"version": "==5.1"
"sha256:08b3ba72bd981531fd557f67beee376d6700fba183b167857038997ba30dd297",
"sha256:2757fa64e11ec12220968f65d086b7a29b6583d16e9a544c889b22ba98555ef1",
"sha256:3102bb2c206700a7d28181dbe04d66b30780cde1d1c02c5f3c165cf3d2489497",
"sha256:3498b27d8236057def41de3585f317abae235dd3a11d33e01736ffedb2ef8606",
"sha256:378ac77af41350a8c6b8801a66021b52da8a05fd77e578b7380e876c0ce4f528",
"sha256:38f16b1317b8dd82df67ed5daa5f5e7c959e46579840d77a67a4ceb9cef0a50b",
"sha256:3911c2ef96e5ddc748a3c8b4702c61986628bb719b8378bf1e4a6184bbd48fe4",
"sha256:3a3c3f8863255f3c31db3889f8055989527173ef6192a283eb6f4db3c579d830",
"sha256:3b14b1da110ea50c8bcbadc3b82c3933974dbeea1832e814aab93ca1163cd4c1",
"sha256:535dc1e6e68fad5355f9984d5637c33badbdc987b0c0d303ee95a6c979c9516f",
"sha256:6f61319e33222591f885c598e3e24f6a4be3533c1d70c19e0dc59e83a71ce27d",
"sha256:723d22d324e7997a651478e9c5a3120a0ecbc9a7e94071f7e1954562a8806cf3",
"sha256:76b2775dda7e78680d688daabcb485dc87cf5e3184a0b3e012e1d40e38527cc8",
"sha256:782a5c7df9f91979a7a21792e09b34a658058896628217ae6362088b123c8500",
"sha256:7e4d159021c2029b958b2363abec4a11db0ce8cd43abb0d9ce44284cb97217e7",
"sha256:8dacc4073c359f40fcf73aede8428c35f84639baad7e1b46fce5ab7a8a7be4bb",
"sha256:8f33d1156241c43755137288dea619105477961cfa7e47f48dbf96bc2c30720b",
"sha256:8ffd4b204d7de77b5dd558cdff986a8274796a1e57813ed005b33fd97e29f059",
"sha256:93a280c9eb736a0dcca19296f3c30c720cb41a71b1f9e617f341f0a8e791a69b",
"sha256:9a4f66259bdd6964d8cf26142733c81fb562252db74ea367d9beb4f815478e72",
"sha256:9a9d4ff06804920388aab69c5ea8a77525cf165356db70131616acd269e19b36",
"sha256:a2070c5affdb3a5e751f24208c5c4f3d5f008fa04d28731416e023c93b275277",
"sha256:a4857f7e2bc6921dbd487c5c88b84f5633de3e7d416c4dc0bb70256775551a6c",
"sha256:a607ae05b6c96057ba86c811d9c43423f35e03874ffb03fbdcd45e0637e8b631",
"sha256:a66ca3bdf21c653e47f726ca57f46ba7fc1f260ad99ba783acc3e58e3ebdb9ff",
"sha256:ab110c48bc3d97b4d19af41865e14531f300b482da21783fdaacd159251890e8",
"sha256:b239711e774c8eb910e9b1ac719f02f5ae4bf35fa0420f438cdc3a7e4e7dd6ec",
"sha256:be0416074d7f253865bb67630cf7210cbc14eb05f4099cc0f82430135aaa7a3b",
"sha256:c46643970dff9f5c976c6512fd35768c4a3819f01f61169d8cdac3f9290903b7",
"sha256:c5ec71fd4a43b6d84ddb88c1df94572479d9a26ef3f150cef3dacefecf888105",
"sha256:c6e5174f8ca585755988bc278c8bb5d02d9dc2e971591ef4a1baabdf2d99589b",
"sha256:c89b558f8a9a5a6f2cfc923c304d49f0ce629c3bd85cb442ca258ec20366394c",
"sha256:cc44e3545d908ecf3e5773266c487ad1877be718d9dc65fc7eb6e7d14960985b",
"sha256:cc6f8246e74dd210d7e2b56c76ceaba1cc52b025cd75dbe96eb48791e0250e98",
"sha256:cd556c79ad665faeae28020a0ab3bda6cd47d94bec48e36970719b0b86e4dcf4",
"sha256:ce6f3a147b4b1a8b09aae48517ae91139b1b010c5f36423fa2b866a8b23df879",
"sha256:ceb499d2b3d1d7b7ba23abe8bf26df5f06ba8c71127f188333dddcf356b4b63f",
"sha256:cef06fb382557f66d81d804230c11ab292d94b840b3cb7bf4450778377b592f4",
"sha256:e448f56cfeae7b1b3b5bcd99bb377cde7c4eb1970a525c770720a352bc4c8044",
"sha256:e52d3d95df81c8f6b2a1685aabffadf2d2d9ad97203a40f8d61e51b70f191e4e",
"sha256:ee2f1d1c223c3d2c24e3afbb2dd38be3f03b1a8d6a83ee3d9eb8c36a52bee899",
"sha256:f2c6888eada180814b8583c3e793f3f343a692fc802546eed45f40a001b1169f",
"sha256:f51dbba78d68a44e99d484ca8c8f604f17e957c1ca09c3ebc2c7e3bbd9ba0448",
"sha256:f54de00baf200b4539a5a092a759f000b5f45fd226d6d25a76b0dff71177a714",
"sha256:fa10fee7e32213f5c7b0d6428ea92e3a3fdd6d725590238a3f92c0de1c78b9d2",
"sha256:fabeeb121735d47d8eab8671b6b031ce08514c86b7ad8f7d5490a7b6dcd6267d",
"sha256:fac3c432851038b3e6afe086f777732bcf7f6ebbfd90951fa04ee53db6d0bcdd",
"sha256:fda29412a66099af6d6de0baa6bd7c52674de177ec2ad2630ca264142d69c6c7",
"sha256:ff1330e8bc996570221b450e2d539134baa9465f5cb98aff0e0f73f34172e0ae"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4.0'",
"version": "==5.3.1"
},
"coveralls": {
"hashes": [
@@ -291,11 +310,11 @@
},
"isort": {
"hashes": [
"sha256:54da7e92468955c4fceacd0c86bd0ec997b0e1ee80d97f67c35a78b719dccab1",
"sha256:6e811fcb295968434526407adb8796944f1988c5b65e8139058f2014cbe100fd"
"sha256:c729845434366216d320e936b8ad6f9d681aab72dc7cbc2d51bedc3582f3ad1e",
"sha256:fff4f0c04e1825522ce6949973e83110a6e907750cd92d128b0d14aaaadbffdc"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
"version": "==4.3.21"
"markers": "python_version >= '3.6' and python_version < '4.0'",
"version": "==5.7.0"
},
"lazy-object-proxy": {
"hashes": [
@@ -333,49 +352,33 @@
},
"pylint": {
"hashes": [
"sha256:7dd78437f2d8d019717dbf287772d0b2dbdfd13fc016aa7faa08d67bccc46adc",
"sha256:d0ece7d223fe422088b0e8f13fa0a1e8eb745ebffcb8ed53d3e95394b6101a1c"
"sha256:bb4a908c9dadbc3aac18860550e870f58e1a02c9f2c204fdf5693d73be061210",
"sha256:bfe68f020f8a0fece830a22dd4d5dddb4ecc6137db04face4c3420a46a52239f"
],
"index": "pypi",
"version": "==2.5.3"
"version": "==2.6.0"
},
"pylintfileheader": {
"hashes": [
"sha256:1e404d21142ef1f38610b57f8bbdae3856442880212f189a8a296cff02793087",
"sha256:dbcd7c504afea2a909a0bf3a5dfff1931645297de27c032296b432f5347bd7f5"
"sha256:7871193691484210268d467dc12d88ac5b3ba7eb7dec6239e24075797185a3b2",
"sha256:a23f143b0fb4d65f984ffd824731d6e41f2840e26a5752a90df93f4454b5ccd1"
],
"index": "pypi",
"version": "==0.1.0"
"version": "==0.3.0"
},
"pytz": {
"hashes": [
"sha256:3e6b7dd2d1e0a59084bcee14a17af60c5c562cdc16d828e8eba2e683d3a7e268",
"sha256:5c55e189b682d420be27c6995ba6edce0c0a77dd67bfbe2ae6607134d5851ffd"
"sha256:16962c5fb8db4a8f63a26646d8886e9d769b6c511543557bc84e9569fb9a9cb4",
"sha256:180befebb1927b16f6b57101720075a984c019ac16b1b7575673bea42c6c3da5"
],
"version": "==2020.4"
},
"pyyaml": {
"hashes": [
"sha256:059b2ee3194d718896c0ad077dd8c043e5e909d9180f387ce42012662a4946d6",
"sha256:1cf708e2ac57f3aabc87405f04b86354f66799c8e62c28c5fc5f88b5521b2dbf",
"sha256:24521fa2890642614558b492b473bee0ac1f8057a7263156b02e8b14c88ce6f5",
"sha256:4fee71aa5bc6ed9d5f116327c04273e25ae31a3020386916905767ec4fc5317e",
"sha256:70024e02197337533eef7b85b068212420f950319cc8c580261963aefc75f811",
"sha256:74782fbd4d4f87ff04159e986886931456a1894c61229be9eaf4de6f6e44b99e",
"sha256:940532b111b1952befd7db542c370887a8611660d2b9becff75d39355303d82d",
"sha256:cb1f2f5e426dc9f07a7681419fe39cee823bb74f723f36f70399123f439e9b20",
"sha256:dbbb2379c19ed6042e8f11f2a2c66d39cceb8aeace421bfc29d085d93eda3689",
"sha256:e3a057b7a64f1222b56e47bcff5e4b94c4f61faac04c7c4ecb1985e18caa3994",
"sha256:e9f45bd5b92c7974e59bcd2dcc8631a6b6cc380a904725fce7bc08872e691615"
],
"version": "==5.3"
"version": "==2020.5"
},
"requests": {
"hashes": [
"sha256:7f1a0b932f4a60a1a65caa4263921bb7d9ee911957e0ae4a23a6dd08185ad5f8",
"sha256:e786fa28d8c9154e6a4de5d46a1d921b8749f8b74e28bde23768e5e16eece998"
"sha256:27973dd4a904a4f13b263a19c866c13b92a39ed1c964655f025f3f8d3d75b804",
"sha256:c210084e36a42ae6b9219e00e48287def368a26d03a048ddad7bfee44f75871e"
],
"version": "==2.25.0"
"version": "==2.25.1"
},
"six": {
"hashes": [
@@ -390,6 +393,7 @@
"sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b",
"sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"
],
"markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'",
"version": "==0.10.2"
},
"unittest-data-provider": {
@@ -404,6 +408,7 @@
"sha256:19188f96923873c92ccb987120ec4acaa12f0461fa9ce5d3d0772bc965a39e08",
"sha256:d8ff90d979214d7b4f8ce956e80f4028fc6860e4431f731ea4a8c08f23f99473"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4.0'",
"version": "==1.26.2"
},
"wrapt": {


+ 14
- 23
README.md ファイルの表示

@@ -1,19 +1,10 @@
# ![Kosmorro](kosmorrolib/assets/png/kosmorro-logo.png)
[![Coverage Status](https://coveralls.io/repos/github/Kosmorro/kosmorro/badge.svg?branch=master)](https://coveralls.io/github/Kosmorro/kosmorro?branch=master) [![Version on PyPI](https://img.shields.io/pypi/v/kosmorro)](https://pypi.org/project/kosmorro) [![Discord](https://img.shields.io/discord/650237632533757965?logo=discord&label=%23kosmorro)](https://discord.gg/TVX4MSKGaa)

## About the project

Kosmorro is a software that allows you to compute the ephemeris for a date, a month or a year.
A program that calculates your astronomical ephemerides!

## Installation

### Requirements

Kosmorro requires the following software to work:

- Python ≥ 3.5.0
- PIP

### Production environment

Keep in mind that Kosmorro is still in alpha development stage and is not considered as stable.
@@ -32,7 +23,7 @@ First, install `python-pip` on your system and invoke the following command: `pi
#### macOS

Currently, macOS does not provide Python 3, so you will first have to install it.
If you don't have it, first install [HomeBrew](https://formulae.brew.sh), then install Python 3: `brew install python`.
If you don't have it, install [HomeBrew](https://formulae.brew.sh), then install Python 3: `brew install python`.

This will install Python 3 and its PIP on your system. Note that their executables are called `python3` and `pip3`.
Now, you can install Kosmorro with your PIP: `pip3 install kosmorro`.
@@ -43,7 +34,11 @@ Kosmorro being at an early-stage development, Windows is not supported officiall

### Development environment

First, install [Pipenv](https://pypi.org/project/pipenv/).
Before you run Kosmorro in your development environment, check you have installed these programs on your system:

- Python ≥ 3.7.0 (needed run Kosmorro)
- PIP3 (needed for package management, usually installed among with Python 3)
- [Pipenv](https://pypi.org/project/pipenv/) (needed to manage the virtual environment)

Clone this repository and run `pipenv sync` to install all the dependencies.
Then, run Kosmorro by invoking `pipenv run python kosmorro`.
@@ -63,17 +58,13 @@ Note: the first time it runs, Kosmorro will download some important files needed

### Exporting to PDF

Kosmorro can export the computation results to PDF files, but this feature requires first that you install some additional dependencies. Before you use this feature, please check these packages are installed:
Kosmorro can export the computation results to PDF files, but this feature requires first that you install some additional dependencies.
Before you use this feature, make sure you have installed a LaTeX distribution:

- **A LaTeX distribution:**
- Linux: install TeXLive through your packages manager. Kosmorro just needs the minimal installation, you don't need any extension.
- macOS: install [MacTeX](https://www.tug.org/mactex/), the basic version will suffice:
- from the official website, choose the _smaller download_
- with Brew: `brew install basictex`
- **The `latex` Python library:**
- Arch Linux: the library is available [on the AUR](https://aur.archlinux.org/packages/python-latex)
- Any other systems: install it through PyPI: `pip install latex`
- **Linux:** install TeXLive through your packages manager. Kosmorro just needs the minimal installation, you don't need any extension.
Note: **on Ubuntu 20.04+**, you will also need the `texlive-latex-extra` package.
- **macOS**: install basic version of [MacTeX](https://www.tug.org/mactex/):
- from the official website, choose the _smaller download_
- with Brew: `brew install basictex`

These dependencies are not installed by default, because they take a lot of place and are not necessary if you are not interested in generating PDF files.
The first time you ask Kosmorro to create a PDF, it may be a little verbose. You can ignore its blahblah.


+ 3
- 2
config-comlipy.yml ファイルの表示

@@ -6,7 +6,7 @@ rules:
applicable: always
value: 0
level: 1
header-max-length:
header-max-length:
applicable: always
value: 120
level: 2
@@ -14,4 +14,5 @@ rules:
value: lower-case
scope-empty:
level: 0

subject-case:
level: 0

+ 2
- 1
kosmorrolib/core.py ファイルの表示

@@ -98,7 +98,8 @@ def get_date(date_arg: str) -> date:
try:
return date.fromisoformat(date_arg)
except ValueError as error:
raise ValueError(_('The date {date} is not valid: {error}').format(date=date_arg, error=error.args[0]))
raise ValueError(_('The date {date} is not valid: {error}').format(date=date_arg,
error=error.args[0])) from error
elif re.match(r'^([+-])(([0-9]+)y)?[ ]?(([0-9]+)m)?[ ]?(([0-9]+)d)?$', date_arg):
def get_offset(date_arg: str, signifier: str):
if re.search(r'([0-9]+)' + signifier, date_arg):


+ 33
- 13
kosmorrolib/dumper.py ファイルの表示

@@ -20,6 +20,9 @@ from abc import ABC, abstractmethod
import datetime
import json
import os
import tempfile
import subprocess
import shutil
from pathlib import Path
from tabulate import tabulate
from termcolor import colored
@@ -27,11 +30,7 @@ from termcolor import colored
from .data import ASTERS, AsterEphemerides, MoonPhase, Event
from .i18n import _, FULL_DATE_FORMAT, SHORT_DATETIME_FORMAT, TIME_FORMAT
from .version import VERSION
from .exceptions import UnavailableFeatureError
try:
from latex import build_pdf
except ImportError:
build_pdf = None
from .exceptions import UnavailableFeatureError, CompileError


class Dumper(ABC):
@@ -346,10 +345,12 @@ class PdfDumper(Dumper):
date=self.date, timezone=self.timezone, with_colors=self.with_colors,
show_graph=self.show_graph)
return self._compile(latex_dumper.to_string())
except RuntimeError:
except CompileError as error:
raise UnavailableFeatureError from error
except RuntimeError as error:
raise UnavailableFeatureError(_("Building PDFs was not possible, because some dependencies are not"
" installed.\nPlease look at the documentation at http://kosmorro.space "
"for more information."))
"for more information.")) from error

@staticmethod
def is_file_output_needed() -> bool:
@@ -357,9 +358,28 @@ class PdfDumper(Dumper):

@staticmethod
def _compile(latex_input) -> bytes:
if build_pdf is None:
raise RuntimeError('Python latex module not found')

package = str(Path(__file__).parent.absolute()) + '/assets/pdf/'

return bytes(build_pdf(latex_input, [package]))
package = str(Path(__file__).parent.absolute()) + '/assets/pdf/kosmorro.sty'

with tempfile.TemporaryDirectory() as tempdir:
timestamp = datetime.datetime.now().strftime('%Y%m%d%H%M%S')
shutil.copy(package, tempdir)

with open('%s/%s.tex' % (tempdir, timestamp), 'w') as texfile:
texfile.write(latex_input)

os.chdir(tempdir)
try:
subprocess.run(['pdflatex', '-interaction', 'nonstopmode', '%s.tex' % timestamp],
capture_output=True, check=True)
except FileNotFoundError as error:
raise RuntimeError('pdflatex is not installed.') from error
except subprocess.CalledProcessError as error:
with open('/tmp/kosmorro-%s.log' % timestamp, 'wb') as file:
file.write(error.stdout)

raise CompileError(_('An error occured during the compilation of the PDF.\n'
'Please open an issue at https://github.com/Kosmorro/kosmorro/issues and share '
'the content of the log file at /tmp/kosmorro-%s.log' % timestamp)) from error

with open('%s.pdf' % timestamp, 'rb') as pdffile:
return bytes(pdffile.read())

+ 2
- 2
kosmorrolib/ephemerides.py ファイルの表示

@@ -97,7 +97,7 @@ def get_moon_phase(compute_date: datetime.date, timezone: int = 0) -> MoonPhase:
start = datetime.date(start.year, start.month, start.day) + datetime.timedelta(days=12)
end = datetime.date(end.year, end.month, end.day) - datetime.timedelta(days=12)

raise OutOfRangeDateError(start, end)
raise OutOfRangeDateError(start, end) from error

return _get_skyfield_to_moon_phase(times, phase, today)

@@ -158,6 +158,6 @@ def get_ephemerides(date: datetime.date, position: Position, timezone: int = 0)
start = datetime.date(start.year, start.month, start.day + 1)
end = datetime.date(end.year, end.month, end.day - 1)

raise OutOfRangeDateError(start, end)
raise OutOfRangeDateError(start, end) from error

return ephemerides

+ 1
- 1
kosmorrolib/events.py ファイルの表示

@@ -196,4 +196,4 @@ def search_events(date: date_type, timezone: int = 0) -> [Event]:
start_date = date_type(start_date.year, start_date.month, start_date.day)
end_date = date_type(end_date.year, end_date.month, end_date.day)

raise OutOfRangeDateError(start_date, end_date)
raise OutOfRangeDateError(start_date, end_date) from error

+ 8
- 2
kosmorrolib/exceptions.py ファイルの表示

@@ -22,15 +22,21 @@ from .i18n import _, SHORT_DATE_FORMAT

class UnavailableFeatureError(RuntimeError):
def __init__(self, msg: str):
super(UnavailableFeatureError, self).__init__()
super().__init__()
self.msg = msg


class OutOfRangeDateError(RuntimeError):
def __init__(self, min_date: date, max_date: date):
super(OutOfRangeDateError, self).__init__()
super().__init__()
self.min_date = min_date
self.max_date = max_date
self.msg = _('The date must be between {minimum_date}'
' and {maximum_date}').format(minimum_date=min_date.strftime(SHORT_DATE_FORMAT),
maximum_date=max_date.strftime(SHORT_DATE_FORMAT))


class CompileError(RuntimeError):
def __init__(self, msg):
super().__init__()
self.msg = msg

+ 48
- 40
kosmorrolib/locales/messages.pot ファイルの表示

@@ -1,27 +1,27 @@
# Translations template for kosmorro.
# Copyright (C) 2020 ORGANIZATION
# Copyright (C) 2021 ORGANIZATION
# This file is distributed under the same license as the kosmorro project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2021.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: kosmorro 0.8.1\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2020-12-02 10:22+0100\n"
"POT-Creation-Date: 2021-01-15 10:36+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.8.0\n"
"Generated-By: Babel 2.9.0\n"

#: kosmorrolib/core.py:101
msgid "The date {date} is not valid: {error}"
msgstr ""

#: kosmorrolib/core.py:117
#: kosmorrolib/core.py:118
msgid ""
"The date {date} does not match the required YYYY-MM-DD format or the "
"offset format."
@@ -67,76 +67,76 @@ msgstr ""
msgid "Pluto"
msgstr ""

#: kosmorrolib/dumper.py:88
#: kosmorrolib/dumper.py:87
msgid "Expected events:"
msgstr ""

#: kosmorrolib/dumper.py:92
#: kosmorrolib/dumper.py:91
msgid "Note: All the hours are given in UTC."
msgstr ""

#: kosmorrolib/dumper.py:97
#: kosmorrolib/dumper.py:96
msgid "Note: All the hours are given in the UTC{offset} timezone."
msgstr ""

#: kosmorrolib/dumper.py:143 kosmorrolib/dumper.py:227
#: kosmorrolib/dumper.py:142 kosmorrolib/dumper.py:226
msgid "Object"
msgstr ""

#: kosmorrolib/dumper.py:144 kosmorrolib/dumper.py:228
#: kosmorrolib/dumper.py:143 kosmorrolib/dumper.py:227
msgid "Rise time"
msgstr ""

#: kosmorrolib/dumper.py:145 kosmorrolib/dumper.py:229
#: kosmorrolib/dumper.py:144 kosmorrolib/dumper.py:228
msgid "Culmination time"
msgstr ""

#: kosmorrolib/dumper.py:146 kosmorrolib/dumper.py:230
#: kosmorrolib/dumper.py:145 kosmorrolib/dumper.py:229
msgid "Set time"
msgstr ""

#: kosmorrolib/dumper.py:161
#: kosmorrolib/dumper.py:160
msgid "Moon phase is unavailable for this date."
msgstr ""

#: kosmorrolib/dumper.py:163 kosmorrolib/dumper.py:234
#: kosmorrolib/dumper.py:162 kosmorrolib/dumper.py:233
msgid "Moon phase:"
msgstr ""

#: kosmorrolib/dumper.py:164
#: kosmorrolib/dumper.py:163
msgid "{next_moon_phase} on {next_moon_phase_date} at {next_moon_phase_time}"
msgstr ""

#: kosmorrolib/dumper.py:214
#: kosmorrolib/dumper.py:213
msgid "A Summary of your Sky"
msgstr ""

#: kosmorrolib/dumper.py:218
#: kosmorrolib/dumper.py:217
msgid ""
"This document summarizes the ephemerides and the events of {date}. It "
"aims to help you to prepare your observation session. All the hours are "
"given in {timezone}."
msgstr ""

#: kosmorrolib/dumper.py:224
#: kosmorrolib/dumper.py:223
msgid ""
"Don't forget to check the weather forecast before you go out with your "
"equipment."
msgstr ""

#: kosmorrolib/dumper.py:226
#: kosmorrolib/dumper.py:225
msgid "Ephemerides of the day"
msgstr ""

#: kosmorrolib/dumper.py:232
#: kosmorrolib/dumper.py:231
msgid "hours"
msgstr ""

#: kosmorrolib/dumper.py:236
#: kosmorrolib/dumper.py:235
msgid "Expected events"
msgstr ""

#: kosmorrolib/dumper.py:350
#: kosmorrolib/dumper.py:351
msgid ""
"Building PDFs was not possible, because some dependencies are not "
"installed.\n"
@@ -144,6 +144,14 @@ msgid ""
"information."
msgstr ""

#: kosmorrolib/dumper.py:380
#, python-format
msgid ""
"An error occured during the compilation of the PDF.\n"
"Please open an issue at https://github.com/Kosmorro/kosmorro/issues and "
"share the content of the log file at /tmp/kosmorro-%s.log"
msgstr ""

#: kosmorrolib/enum.py:24
msgid "New Moon"
msgstr ""
@@ -239,91 +247,91 @@ msgid ""
"the observation coordinate."
msgstr ""

#: kosmorrolib/main.py:90
#: kosmorrolib/main.py:93
msgid "Could not save the output in \"{path}\": {error}"
msgstr ""

#: kosmorrolib/main.py:95
#: kosmorrolib/main.py:100
msgid "Selected output format needs an output file (--output)."
msgstr ""

#: kosmorrolib/main.py:112
#: kosmorrolib/main.py:117
msgid "Moon phase can only be displayed between {min_date} and {max_date}"
msgstr ""

#: kosmorrolib/main.py:134
#: kosmorrolib/main.py:139
msgid "Running on Python {python_version}"
msgstr ""

#: kosmorrolib/main.py:140
#: kosmorrolib/main.py:145
msgid "Do you really want to clear Kosmorro's cache? [yN] "
msgstr ""

#: kosmorrolib/main.py:147
#: kosmorrolib/main.py:152
msgid "Answer did not match expected options, cache not cleared."
msgstr ""

#: kosmorrolib/main.py:156
#: kosmorrolib/main.py:161
msgid ""
"Compute the ephemerides and the events for a given date, at a given "
"position on Earth."
msgstr ""

#: kosmorrolib/main.py:158
#: kosmorrolib/main.py:163
msgid ""
"By default, only the events will be computed for today ({date}).\n"
"To compute also the ephemerides, latitude and longitude arguments are "
"needed."
msgstr ""

#: kosmorrolib/main.py:163
#: kosmorrolib/main.py:168
msgid "Show the program version"
msgstr ""

#: kosmorrolib/main.py:165
#: kosmorrolib/main.py:170
msgid "Delete all the files Kosmorro stored in the cache."
msgstr ""

#: kosmorrolib/main.py:167
#: kosmorrolib/main.py:172
msgid "The format under which the information have to be output"
msgstr ""

#: kosmorrolib/main.py:169
#: kosmorrolib/main.py:174
msgid ""
"The observer's latitude on Earth. Can also be set in the "
"KOSMORRO_LATITUDE environment variable."
msgstr ""

#: kosmorrolib/main.py:172
#: kosmorrolib/main.py:177
msgid ""
"The observer's longitude on Earth. Can also be set in the "
"KOSMORRO_LONGITUDE environment variable."
msgstr ""

#: kosmorrolib/main.py:175
#: kosmorrolib/main.py:180
msgid ""
"The date for which the ephemerides must be computed (in the YYYY-MM-DD "
"format), or as an interval in the \"[+-]YyMmDd\" format (with Y, M, and D"
" numbers). Defaults to the current date ({default_date})"
msgstr ""

#: kosmorrolib/main.py:180
#: kosmorrolib/main.py:185
msgid ""
"The timezone to display the hours in (e.g. 2 for UTC+2 or -3 for UTC-3). "
"Can also be set in the KOSMORRO_TIMEZONE environment variable."
msgstr ""

#: kosmorrolib/main.py:183
#: kosmorrolib/main.py:188
msgid "Disable the colors in the console."
msgstr ""

#: kosmorrolib/main.py:185
#: kosmorrolib/main.py:190
msgid ""
"A file to export the output to. If not given, the standard output is "
"used. This argument is needed for PDF format."
msgstr ""

#: kosmorrolib/main.py:188
#: kosmorrolib/main.py:193
msgid ""
"Do not generate a graph to represent the rise and set times in the PDF "
"format."


+ 7
- 2
kosmorrolib/main.py ファイルの表示

@@ -86,9 +86,14 @@ def main():
try:
with open(args.output, 'wb') as output_file:
output_file.write(output.to_string())
except UnavailableFeatureError as error:
print(colored(error.msg, 'red'))
return 2
except OSError as error:
print(_('Could not save the output in "{path}": {error}').format(path=args.output,
error=error.strerror))
print(colored(_('Could not save the output in "{path}": {error}').format(path=args.output,
error=error.strerror),
'red'))
return 3
elif not output.is_file_output_needed():
print(output)
else:


読み込み中…
キャンセル
保存