You can now use the `--format=pdf` argument to save the data computed by Kosmorro to a PDF file. The new `--output` argument must be given with the export file path.tags/v0.6.0
@@ -6,6 +6,8 @@ kosmorro.egg-info | |||
coverage.xml | |||
node_modules/ | |||
package-lock.json | |||
/kosmorrolib/assets/pdf/* | |||
!/assets/pdf/*.tex | |||
# Translation files are taken care on https://poeditor.com/join/project/GXuhLpdaoh | |||
*.mo | |||
@@ -14,6 +14,7 @@ skyfield = ">=1.13.0,<2.0.0" | |||
tabulate = "*" | |||
numpy = ">=1.17.0,<2.0.0" | |||
termcolor = "*" | |||
latex = "*" | |||
[requires] | |||
python_version = "3" |
@@ -1,7 +1,7 @@ | |||
{ | |||
"_meta": { | |||
"hash": { | |||
"sha256": "fb530146420b5768bc25165302d947d11615aac375e7a63a9076fdddd0372d53" | |||
"sha256": "789ae3ae412a3b57df763f776aa8ce0497d680de59fa09ad22a9b91a4e3d6b4e" | |||
}, | |||
"pipfile-spec": 6, | |||
"requires": { | |||
@@ -16,12 +16,45 @@ | |||
] | |||
}, | |||
"default": { | |||
"data": { | |||
"hashes": [ | |||
"sha256:2726a65da1af31e2345b6bba81ae4cee87dddf17f7c62f5c63ba7327a8480667" | |||
], | |||
"version": "==0.4" | |||
}, | |||
"decorator": { | |||
"hashes": [ | |||
"sha256:54c38050039232e1db4ad7375cfce6748d7b41c29e95a081c8a6d2c30364a2ce", | |||
"sha256:5d19b92a3c8f7f101c8dd86afd86b0f061a8ce4540ab8cd401fa2542756bce6d" | |||
], | |||
"version": "==4.4.1" | |||
}, | |||
"funcsigs": { | |||
"hashes": [ | |||
"sha256:330cc27ccbf7f1e992e69fef78261dc7c6569012cf397db8d3de0234e6c937ca", | |||
"sha256:a7bb0f2cf3a3fd1ab2732cb49eba4252c2af4240442415b4abce3b87022a8f50" | |||
], | |||
"version": "==1.0.2" | |||
}, | |||
"future": { | |||
"hashes": [ | |||
"sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d" | |||
], | |||
"version": "==0.18.2" | |||
}, | |||
"jplephem": { | |||
"hashes": [ | |||
"sha256:35a3b67444c7b03433e5ffff89fe10fd78d9bc88c12aafd001631227a1782023" | |||
], | |||
"version": "==2.12" | |||
}, | |||
"latex": { | |||
"hashes": [ | |||
"sha256:bf10c3fe27e9f3adccebc12e90ec239c86dcba101b89221f6775918211482a79" | |||
], | |||
"index": "pypi", | |||
"version": "==0.7.0" | |||
}, | |||
"numpy": { | |||
"hashes": [ | |||
"sha256:1786a08236f2c92ae0e70423c45e1e62788ed33028f94ca99c4df03f5be6b3c6", | |||
@@ -94,6 +127,12 @@ | |||
"index": "pypi", | |||
"version": "==0.8.6" | |||
}, | |||
"tempdir": { | |||
"hashes": [ | |||
"sha256:689680ed3ba4cc8347a70e67efc25086ce85b53b9d24a1420899c585bbf7ba8e" | |||
], | |||
"version": "==0.7.1" | |||
}, | |||
"termcolor": { | |||
"hashes": [ | |||
"sha256:1d6d69ce66211143803fbc56652b41d73b4a400a2891d7bf7a1cdf4c02de613b" | |||
@@ -1,4 +1,4 @@ | |||
# ![Kosmorro](assets/png/kosmorro-logo.png) | |||
# ![Kosmorro](kosmorrolib/assets/png/kosmorro-logo.png) | |||
[![codecov](https://codecov.io/gh/Deuchnord/kosmorro/branch/master/graph/badge.svg)](https://codecov.io/gh/Deuchnord/kosmorro) [![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/nyemBqE) | |||
## About the project | |||
@@ -0,0 +1,78 @@ | |||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
<svg | |||
xmlns:dc="http://purl.org/dc/elements/1.1/" | |||
xmlns:cc="http://creativecommons.org/ns#" | |||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
xmlns:svg="http://www.w3.org/2000/svg" | |||
xmlns="http://www.w3.org/2000/svg" | |||
xmlns:xlink="http://www.w3.org/1999/xlink" | |||
id="svg6593" | |||
version="1.1" | |||
viewBox="0 0 92.682022 92.684395" | |||
height="92.684395mm" | |||
width="92.682022mm"> | |||
<defs | |||
id="defs6587"> | |||
<radialGradient | |||
gradientTransform="translate(688.05,-50.712)" | |||
r="234.94" | |||
fx="248.94" | |||
cy="354.57001" | |||
cx="245.39" | |||
gradientUnits="userSpaceOnUse" | |||
id="radialGradient4640" | |||
xlink:href="#a" /> | |||
<radialGradient | |||
gradientUnits="userSpaceOnUse" | |||
fx="248.94" | |||
r="234.94" | |||
cy="354.57001" | |||
cx="245.39" | |||
id="a"> | |||
<stop | |||
id="stop7" | |||
offset="0" | |||
stop-color="#b7c3cc" /> | |||
<stop | |||
id="stop9" | |||
offset="1" | |||
stop-color="#001e29" /> | |||
</radialGradient> | |||
</defs> | |||
<metadata | |||
id="metadata6590"> | |||
<rdf:RDF> | |||
<cc:Work | |||
rdf:about=""> | |||
<dc:format>image/svg+xml</dc:format> | |||
<dc:type | |||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
<dc:title></dc:title> | |||
</cc:Work> | |||
</rdf:RDF> | |||
</metadata> | |||
<g | |||
transform="translate(54.656486,-144.82447)" | |||
id="layer1"> | |||
<g | |||
id="g6568" | |||
transform="matrix(0.26458333,0,0,0.26458333,-256.00384,138.12983)"> | |||
<path | |||
style="fill:#000024;fill-rule:evenodd;stroke-width:1.01019692" | |||
id="path38" | |||
d="m 1092.3945,200.45419 a 156.24949,156.25397 0 1 1 -312.49898,0 156.24949,156.25397 0 1 1 312.49898,0 z" /> | |||
<path | |||
style="fill:url(#radialGradient4640);fill-rule:evenodd" | |||
id="path40" | |||
d="m 894.22,56.638 c -25.06,6.447 -47.957,20.982 -65.936,39.456 -33.589,34.689 -49.415,85.84 -39.274,133.3 7.7684,38.332 30.319,73.818 63.261,95.34 39.082,26.542 90.824,33.344 135.13,16.523 44.589,-15.935 80.583,-53.959 92.968,-99.846 14.03,-47.365 2.42,-101 -30.04,-138.25 -27.522,-32.74 -69.296,-52.414 -112.07,-52.8 -2.4338,-0.40982 -30.229,1.5565 -44.039,6.2796 z" /> | |||
<path | |||
style="fill-opacity:0.25126002;fill-rule:evenodd" | |||
id="path42" | |||
d="m 1026.92,189.108 c -10.37,17.497 15.281,19.939 24.511,25.141 -3.4576,-31.524 10.512,-20.807 13.141,-30.822 -2.4603,-15.476 -20.24,-18.289 -30.195,-28.185 -0.3689,-19.454 -33.444,-17.876 -30.691,-31.892 -5.3458,-59.729 -15.582,-5.0632 -17.324,-14.89 -11.086,12.896 -14.512,-1.6954 -11.166,-10.995 0.26364,-11.365 -18.639,-11.91 -25.607,-6.5757 -5.8842,3.1388 -14.403,3.9638 -17.373,11.046 -13.66,2.7421 -12.28,-17.783 -26.048,-16.916 -15.276,-6.4266 -21.571,-23.77 -33.99,-13.45 -8.9365,2.8834 -27.358,38.752 -33.694,23.765 -13.5,-9.5163 -20.451,15.279 -20.026,25.654 -6.3485,13.802 -17.899,25.142 -24.397,39.356 -8.0969,13.6 -8.0574,31.852 -2.7715,46.369 16.911,-8.3049 18.513,27.307 24.313,42.266 8.439,10.014 21.898,-12.821 25.417,-6.9099 22.751,14.162 -5.2534,18.337 -1.2166,29.083 4.539,15.527 24.377,5.6814 35.735,9.2032 4.7599,1.8134 10.807,12.467 13.777,3.1751 -1.815,-6.8086 -5.6283,-13.445 4.7747,-13.371 7.3152,-6.3929 17.349,-5.3491 24.821,-7.2415 9.0393,-11.572 -10.092,-19.333 -4.8746,-30.443 2.8779,-11.759 -12.73,-8.4941 -10.462,-18.846 -7.0124,-5.8828 -11.048,-16.424 0.22233,-20.807 7.9487,-5.15 29.707,5.1288 24.31,-11.199 -6.8963,-0.46855 -16.33,-6.6026 -8.8168,-14.327 10.756,-7.5046 26.836,6.3362 36.887,-4.9453 1.0925,-5.4659 4.6002,-20.74 11.751,-10.347 -2.0036,12.706 4.4139,23.496 16.934,28.605 5.6256,3.7827 11.442,24.659 18.96297,12.144 -10.57897,-15.807 -1.3253,-36.935 21.493,-9.7167 -0.2777,2.0581 -0.6355,4.9085 1.6013,6.0725 z M 914.35,129.376 c -3.3727,-9.642 -15.855,0.88715 -7.0124,5.9448 -1.4949,18.168 -23.383,19.29 -37.295,19.685 -8.7173,4.2923 -20.669,6.5967 -27.583,10.788 -1.5637,11.397 17.747,10.622 15.712,22.827 8.4646,11.957 22.01,19.653 28.373,33.172 12.227,10.86 6.5682,-16.046 -1.1103,-17.921 -11.846,-4.4912 -26.133,-24.017 -7.6284,-30.074 12.233,-3.4412 6.304,-25.137 22.916,-20.183 15.144,3.9218 14.776,-14.074 24.42,-20.796 2.2128,-9.6425 -5.7023,-6.6942 -10.791,-3.4427 z" /> | |||
<path | |||
style="fill:#000024;fill-opacity:0.86431998" | |||
id="path44" | |||
d="m 936.05,351.958 c -82.8,0 -151.24,-67.499 -151.24,-150.67 0,-83.171 65.111,-150.67 151.24,-150.67 v 301.33 z" /> | |||
</g> | |||
</g> | |||
</svg> |
@@ -0,0 +1,74 @@ | |||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
<svg | |||
xmlns:dc="http://purl.org/dc/elements/1.1/" | |||
xmlns:cc="http://creativecommons.org/ns#" | |||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
xmlns:svg="http://www.w3.org/2000/svg" | |||
xmlns="http://www.w3.org/2000/svg" | |||
xmlns:xlink="http://www.w3.org/1999/xlink" | |||
id="svg7949" | |||
version="1.1" | |||
viewBox="0 0 92.68203 92.684395" | |||
height="92.684395mm" | |||
width="92.68203mm"> | |||
<defs | |||
id="defs7943"> | |||
<radialGradient | |||
gradientTransform="translate(1418.2,-50.712)" | |||
r="234.94" | |||
fx="248.94" | |||
cy="354.57001" | |||
cx="245.39" | |||
gradientUnits="userSpaceOnUse" | |||
id="radialGradient4658" | |||
xlink:href="#a" /> | |||
<radialGradient | |||
gradientUnits="userSpaceOnUse" | |||
fx="248.94" | |||
r="234.94" | |||
cy="354.57001" | |||
cx="245.39" | |||
id="a"> | |||
<stop | |||
id="stop7" | |||
offset="0" | |||
stop-color="#b7c3cc" /> | |||
<stop | |||
id="stop9" | |||
offset="1" | |||
stop-color="#001e29" /> | |||
</radialGradient> | |||
</defs> | |||
<metadata | |||
id="metadata7946"> | |||
<rdf:RDF> | |||
<cc:Work | |||
rdf:about=""> | |||
<dc:format>image/svg+xml</dc:format> | |||
<dc:type | |||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
<dc:title></dc:title> | |||
</cc:Work> | |||
</rdf:RDF> | |||
</metadata> | |||
<g | |||
transform="translate(-110.89709,-153.13994)" | |||
id="layer1"> | |||
<g | |||
id="g7925" | |||
transform="matrix(0.26458333,0,0,0.26458333,-283.63578,146.4453)"> | |||
<path | |||
style="fill:#000024;fill-rule:evenodd;stroke-width:1.01019692" | |||
id="path62" | |||
d="m 1822.5445,200.45419 a 156.2495,156.25398 0 1 1 -312.499,0 156.2495,156.25398 0 1 1 312.499,0 z" /> | |||
<path | |||
style="fill:url(#radialGradient4658);fill-rule:evenodd" | |||
id="path64" | |||
d="m 1624.37,56.638 c -25.06,6.447 -47.957,20.982 -65.936,39.456 -33.589,34.689 -49.415,85.84 -39.274,133.3 7.7684,38.332 30.319,73.818 63.261,95.34 39.082,26.542 90.824,33.344 135.13,16.523 44.589,-15.935 80.583,-53.959 92.968,-99.846 14.03,-47.365 2.42,-101 -30.04,-138.25 -27.522,-32.74 -69.296,-52.414 -112.07,-52.8 -2.4338,-0.40982 -30.229,1.5565 -44.039,6.2796 z" /> | |||
<path | |||
style="fill-opacity:0.25126002;fill-rule:evenodd" | |||
id="path66" | |||
d="m 1757.07,189.108 c -10.37,17.497 15.281,19.939 24.511,25.141 -3.4576,-31.524 10.512,-20.807 13.141,-30.822 -2.4603,-15.476 -20.24,-18.289 -30.195,-28.185 -0.3689,-19.454 -33.444,-17.876 -30.691,-31.892 -5.3458,-59.729 -15.582,-5.0632 -17.324,-14.89 -11.086,12.896 -14.512,-1.6954 -11.166,-10.995 0.2636,-11.365 -18.639,-11.91 -25.607,-6.5757 -5.8842,3.1388 -14.403,3.9638 -17.373,11.046 -13.66,2.7421 -12.28,-17.783 -26.048,-16.916 -15.276,-6.4266 -21.571,-23.77 -33.99,-13.45 -8.9365,2.8834 -27.358,38.752 -33.694,23.765 -13.5,-9.5163 -20.451,15.279 -20.026,25.654 -6.3485,13.802 -17.899,25.142 -24.397,39.356 -8.0969,13.6 -8.0574,31.852 -2.7715,46.369 16.911,-8.3049 18.513,27.307 24.313,42.266 8.439,10.014 21.898,-12.821 25.417,-6.9099 22.751,14.162 -5.2534,18.337 -1.2166,29.083 4.539,15.527 24.377,5.6814 35.735,9.2032 4.7599,1.8134 10.807,12.467 13.777,3.1751 -1.815,-6.8086 -5.6283,-13.445 4.7747,-13.371 7.3152,-6.3929 17.349,-5.3491 24.821,-7.2415 9.0393,-11.572 -10.092,-19.333 -4.8746,-30.443 2.8779,-11.759 -12.73,-8.4941 -10.462,-18.846 -7.0124,-5.8828 -11.048,-16.424 0.2223,-20.807 7.9487,-5.15 29.707,5.1288 24.31,-11.199 -6.8963,-0.46855 -16.33,-6.6026 -8.8168,-14.327 10.756,-7.5046 26.836,6.3362 36.887,-4.9453 1.0925,-5.4659 4.6002,-20.74 11.751,-10.347 -2.0036,12.706 4.4139,23.496 16.934,28.605 5.6256,3.7827 11.442,24.659 18.963,12.144 -10.579,-15.807 -1.3253,-36.935 21.493,-9.7167 -0.2777,2.0581 -0.6355,4.9085 1.6013,6.0725 z M 1644.5,129.376 c -3.3727,-9.642 -15.855,0.88715 -7.0124,5.9448 -1.4949,18.168 -23.383,19.29 -37.295,19.685 -8.7173,4.2923 -20.669,6.5967 -27.583,10.788 -1.5637,11.397 17.747,10.622 15.712,22.827 8.4646,11.957 22.01,19.653 28.373,33.172 12.227,10.86 6.5682,-16.046 -1.1103,-17.921 -11.846,-4.4912 -26.133,-24.017 -7.6284,-30.074 12.233,-3.4412 6.304,-25.137 22.916,-20.183 15.144,3.9218 14.776,-14.074 24.42,-20.796 2.2128,-9.6425 -5.7023,-6.6942 -10.791,-3.4427 z" /> | |||
</g> | |||
</g> | |||
</svg> |
@@ -0,0 +1,74 @@ | |||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
<svg | |||
xmlns:dc="http://purl.org/dc/elements/1.1/" | |||
xmlns:cc="http://creativecommons.org/ns#" | |||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
xmlns:svg="http://www.w3.org/2000/svg" | |||
xmlns="http://www.w3.org/2000/svg" | |||
xmlns:xlink="http://www.w3.org/1999/xlink" | |||
id="svg9798" | |||
version="1.1" | |||
viewBox="0 0 89.78627 89.811501" | |||
height="89.811501mm" | |||
width="89.78627mm"> | |||
<defs | |||
id="defs9792"> | |||
<radialGradient | |||
gradientTransform="translate(2148,-50.612)" | |||
r="234.94" | |||
fx="248.94" | |||
cy="354.57001" | |||
cx="245.39" | |||
gradientUnits="userSpaceOnUse" | |||
id="radialGradient4675" | |||
xlink:href="#a" /> | |||
<radialGradient | |||
gradientUnits="userSpaceOnUse" | |||
fx="248.94" | |||
r="234.94" | |||
cy="354.57001" | |||
cx="245.39" | |||
id="a"> | |||
<stop | |||
id="stop7" | |||
offset="0" | |||
stop-color="#b7c3cc" /> | |||
<stop | |||
id="stop9" | |||
offset="1" | |||
stop-color="#001e29" /> | |||
</radialGradient> | |||
</defs> | |||
<metadata | |||
id="metadata9795"> | |||
<rdf:RDF> | |||
<cc:Work | |||
rdf:about=""> | |||
<dc:format>image/svg+xml</dc:format> | |||
<dc:type | |||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
<dc:title></dc:title> | |||
</cc:Work> | |||
</rdf:RDF> | |||
</metadata> | |||
<g | |||
transform="translate(-236.32115,-232.43949)" | |||
id="layer1"> | |||
<g | |||
id="g9774" | |||
transform="matrix(0.26458333,0,0,0.26458333,-352.91332,224.10231)"> | |||
<path | |||
style="fill:url(#radialGradient4675);fill-rule:evenodd" | |||
id="path86" | |||
d="m 2354.17,56.738 c -25.06,6.447 -47.957,20.982 -65.936,39.456 -33.589,34.689 -49.415,85.84 -39.274,133.3 7.7684,38.332 30.319,73.818 63.261,95.34 39.082,26.542 90.824,33.344 135.13,16.523 44.589,-15.935 80.583,-53.959 92.968,-99.846 14.03,-47.365 2.42,-101 -30.04,-138.25 -27.522,-32.74 -69.296,-52.414 -112.07,-52.8 -2.4338,-0.40982 -30.229,1.5565 -44.039,6.2796 z" /> | |||
<path | |||
style="fill-opacity:0.25126002;fill-rule:evenodd" | |||
id="path88" | |||
d="m 2486.87,189.208 c -10.37,17.497 15.281,19.939 24.511,25.141 -3.4576,-31.524 10.512,-20.807 13.141,-30.822 -2.4603,-15.476 -20.24,-18.289 -30.195,-28.185 -0.3689,-19.454 -33.444,-17.876 -30.691,-31.892 -5.3458,-59.729 -15.582,-5.0632 -17.324,-14.89 -11.086,12.896 -14.512,-1.6954 -11.166,-10.995 0.2636,-11.365 -18.639,-11.91 -25.607,-6.5757 -5.8842,3.1388 -14.403,3.9638 -17.373,11.046 -13.66,2.7421 -12.28,-17.783 -26.048,-16.916 -15.276,-6.4266 -21.571,-23.77 -33.99,-13.45 -8.9365,2.8834 -27.358,38.752 -33.694,23.765 -13.5,-9.5163 -20.451,15.279 -20.026,25.654 -6.3485,13.802 -17.899,25.142 -24.397,39.356 -8.0969,13.6 -8.0574,31.852 -2.7715,46.369 16.911,-8.3049 18.513,27.307 24.313,42.266 8.439,10.014 21.898,-12.821 25.417,-6.9099 22.751,14.162 -5.2534,18.337 -1.2166,29.083 4.539,15.527 24.377,5.6814 35.735,9.2032 4.7599,1.8134 10.807,12.467 13.777,3.1751 -1.815,-6.8086 -5.6283,-13.445 4.7747,-13.371 7.3152,-6.3929 17.349,-5.3491 24.821,-7.2415 9.0393,-11.572 -10.092,-19.333 -4.8746,-30.443 2.8779,-11.759 -12.73,-8.4941 -10.462,-18.846 -7.0124,-5.8828 -11.048,-16.424 0.2223,-20.807 7.9487,-5.15 29.707,5.1288 24.31,-11.199 -6.8963,-0.46855 -16.33,-6.6026 -8.8168,-14.327 10.756,-7.5046 26.836,6.3362 36.887,-4.9453 1.0925,-5.4659 4.6002,-20.74 11.751,-10.347 -2.0036,12.706 4.4139,23.496 16.934,28.605 5.6256,3.7827 11.442,24.659 18.963,12.144 -10.579,-15.807 -1.3253,-36.935 21.493,-9.7167 -0.2777,2.0581 -0.6355,4.9085 1.6013,6.0725 z M 2374.3,129.476 c -3.3727,-9.642 -15.855,0.88715 -7.0124,5.9448 -1.4949,18.168 -23.383,19.29 -37.295,19.685 -8.7173,4.2923 -20.669,6.5967 -27.583,10.788 -1.5637,11.397 17.747,10.622 15.712,22.827 8.4646,11.957 22.01,19.653 28.373,33.172 12.227,10.86 6.5682,-16.046 -1.1103,-17.921 -11.846,-4.4912 -26.133,-24.017 -7.6284,-30.074 12.233,-3.4412 6.304,-25.137 22.916,-20.183 15.144,3.9218 14.776,-14.074 24.42,-20.796 2.2128,-9.6425 -5.7023,-6.6942 -10.791,-3.4427 z" /> | |||
<path | |||
style="fill:#000024;fill-opacity:0.86431998" | |||
id="path90" | |||
d="m 2396.24,352.058 c 82.8,0 151.24,-66.255 151.24,-149.42 0,-83.165 -65.111,-151.91 -151.24,-151.91 z" /> | |||
</g> | |||
</g> | |||
</svg> |
@@ -0,0 +1,78 @@ | |||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
<svg | |||
xmlns:dc="http://purl.org/dc/elements/1.1/" | |||
xmlns:cc="http://creativecommons.org/ns#" | |||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
xmlns:svg="http://www.w3.org/2000/svg" | |||
xmlns="http://www.w3.org/2000/svg" | |||
xmlns:xlink="http://www.w3.org/1999/xlink" | |||
id="svg5292" | |||
version="1.1" | |||
viewBox="0 0 92.682014 92.684387" | |||
height="92.684387mm" | |||
width="92.682014mm"> | |||
<defs | |||
id="defs5286"> | |||
<radialGradient | |||
gradientTransform="translate(-41.85,-50.912)" | |||
r="234.94" | |||
fx="248.94" | |||
cy="354.57001" | |||
cx="245.39" | |||
gradientUnits="userSpaceOnUse" | |||
id="radialGradient4622" | |||
xlink:href="#a" /> | |||
<radialGradient | |||
gradientUnits="userSpaceOnUse" | |||
fx="248.94" | |||
r="234.94" | |||
cy="354.57001" | |||
cx="245.39" | |||
id="a"> | |||
<stop | |||
id="stop7" | |||
offset="0" | |||
stop-color="#b7c3cc" /> | |||
<stop | |||
id="stop9" | |||
offset="1" | |||
stop-color="#001e29" /> | |||
</radialGradient> | |||
</defs> | |||
<metadata | |||
id="metadata5289"> | |||
<rdf:RDF> | |||
<cc:Work | |||
rdf:about=""> | |||
<dc:format>image/svg+xml</dc:format> | |||
<dc:type | |||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
<dc:title></dc:title> | |||
</cc:Work> | |||
</rdf:RDF> | |||
</metadata> | |||
<g | |||
transform="translate(-15.647087,-114.58638)" | |||
id="layer1"> | |||
<g | |||
id="g4697" | |||
transform="matrix(0.26458333,0,0,0.26458333,7.4191065,107.94465)"> | |||
<path | |||
style="fill:#000024;fill-rule:evenodd;stroke-width:1.01019692" | |||
id="path14" | |||
d="m 362.49448,200.25419 a 156.24948,156.25396 0 1 1 -312.498961,0 156.24948,156.25396 0 1 1 312.498961,0 z" /> | |||
<path | |||
style="fill:url(#radialGradient4622);fill-rule:evenodd" | |||
id="path16" | |||
d="m 164.32,56.438 c -25.06,6.447 -47.957,20.982 -65.936,39.456 -33.589,34.689 -49.415,85.84 -39.274,133.3 7.7684,38.332 30.319,73.818 63.261,95.34 39.082,26.542 90.824,33.344 135.13,16.523 44.589,-15.935 80.583,-53.959 92.968,-99.846 14.03,-47.365 2.42,-101 -30.04,-138.25 -27.522,-32.74 -69.296,-52.414 -112.07,-52.8 -2.4338,-0.40982 -30.229,1.5565 -44.039,6.2796 z" /> | |||
<path | |||
style="fill-opacity:0.25126002;fill-rule:evenodd" | |||
id="path18" | |||
d="m 297.02,188.908 c -10.37,17.497 15.281,19.939 24.511,25.141 -3.4576,-31.524 10.512,-20.807 13.141,-30.822 -2.4603,-15.476 -20.24,-18.289 -30.195,-28.185 -0.36892,-19.454 -33.444,-17.876 -30.691,-31.892 -5.3458,-59.729 -15.582,-5.0632 -17.324,-14.89 -11.086,12.896 -14.512,-1.6954 -11.166,-10.995 0.26364,-11.365 -18.639,-11.91 -25.607,-6.5757 -5.8842,3.1388 -14.403,3.9638 -17.373,11.046 -13.66,2.7421 -12.28,-17.783 -26.048,-16.916 -15.276,-6.4266 -21.571,-23.77 -33.99,-13.45 -8.9365,2.8834 -27.358,38.752 -33.694,23.765 -13.5,-9.5163 -20.451,15.279 -20.026,25.654 -6.3485,13.802 -17.899,25.142 -24.397,39.356 -8.0969,13.6 -8.0574,31.852 -2.7715,46.369 16.911,-8.3049 18.513,27.307 24.313,42.266 8.439,10.014 21.898,-12.821 25.417,-6.9099 22.751,14.162 -5.2534,18.337 -1.2166,29.083 4.539,15.527 24.377,5.6814 35.735,9.2032 4.7599,1.8134 10.807,12.467 13.777,3.1751 -1.815,-6.8086 -5.6283,-13.445 4.7747,-13.371 7.3152,-6.3929 17.349,-5.3491 24.821,-7.2415 9.0393,-11.572 -10.092,-19.333 -4.8746,-30.443 2.8779,-11.759 -12.73,-8.4941 -10.462,-18.846 -7.0124,-5.8828 -11.048,-16.424 0.22233,-20.807 7.9487,-5.15 29.707,5.1288 24.31,-11.199 -6.8963,-0.46855 -16.33,-6.6026 -8.8168,-14.327 10.756,-7.5046 26.836,6.3362 36.887,-4.9453 1.0925,-5.4659 4.6002,-20.74 11.751,-10.347 -2.0036,12.706 4.4139,23.496 16.934,28.605 5.6256,3.7827 11.442,24.659 18.963,12.144 -10.579,-15.807 -1.3253,-36.935 21.493,-9.7167 -0.27777,2.0581 -0.63554,4.9085 1.6013,6.0725 z M 184.45,129.176 c -3.3727,-9.642 -15.855,0.88715 -7.0124,5.9448 -1.4949,18.168 -23.383,19.29 -37.295,19.685 -8.7173,4.2923 -20.669,6.5967 -27.583,10.788 -1.5637,11.397 17.747,10.622 15.712,22.827 8.4646,11.957 22.01,19.653 28.373,33.172 12.227,10.86 6.5682,-16.046 -1.1103,-17.921 -11.846,-4.4912 -26.133,-24.017 -7.6284,-30.074 12.233,-3.4412 6.304,-25.137 22.916,-20.183 15.144,3.9218 14.776,-14.074 24.42,-20.796 2.2128,-9.6425 -5.7023,-6.6942 -10.791,-3.4427 z" /> | |||
<path | |||
style="fill:#000024;fill-opacity:0.86431998" | |||
id="path20" | |||
d="m 358.45,201.088 c 0,83.168 -68.058,150.67 -151.91,150.67 -83.852,0 -151.91,-67.499 -151.91,-150.67 0,-83.171 64.682,-150.67 151.91,-150.67 89.933,0 151.91,67.499 151.91,150.67 z" /> | |||
</g> | |||
</g> | |||
</svg> |
@@ -0,0 +1,78 @@ | |||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
<svg | |||
xmlns:dc="http://purl.org/dc/elements/1.1/" | |||
xmlns:cc="http://creativecommons.org/ns#" | |||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
xmlns:svg="http://www.w3.org/2000/svg" | |||
xmlns="http://www.w3.org/2000/svg" | |||
xmlns:xlink="http://www.w3.org/1999/xlink" | |||
id="svg10495" | |||
version="1.1" | |||
viewBox="0 0 92.68203 92.684402" | |||
height="92.684402mm" | |||
width="92.68203mm"> | |||
<defs | |||
id="defs10489"> | |||
<radialGradient | |||
gradientTransform="translate(2513.2,-50.612)" | |||
r="234.94" | |||
fx="248.94" | |||
cy="354.57001" | |||
cx="245.39" | |||
gradientUnits="userSpaceOnUse" | |||
id="radialGradient4684" | |||
xlink:href="#a" /> | |||
<radialGradient | |||
gradientUnits="userSpaceOnUse" | |||
fx="248.94" | |||
r="234.94" | |||
cy="354.57001" | |||
cx="245.39" | |||
id="a"> | |||
<stop | |||
id="stop7" | |||
offset="0" | |||
stop-color="#b7c3cc" /> | |||
<stop | |||
id="stop9" | |||
offset="1" | |||
stop-color="#001e29" /> | |||
</radialGradient> | |||
</defs> | |||
<metadata | |||
id="metadata10492"> | |||
<rdf:RDF> | |||
<cc:Work | |||
rdf:about=""> | |||
<dc:format>image/svg+xml</dc:format> | |||
<dc:type | |||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
<dc:title></dc:title> | |||
</cc:Work> | |||
</rdf:RDF> | |||
</metadata> | |||
<g | |||
transform="translate(-59.492323,-102.49113)" | |||
id="layer1"> | |||
<g | |||
id="g10470" | |||
transform="matrix(0.26458333,0,0,0.26458333,-624.75929,95.770038)"> | |||
<path | |||
style="fill:#000024;fill-rule:evenodd;stroke-width:1.01019692" | |||
id="path96" | |||
d="m 2917.5445,200.55419 a 156.2495,156.25398 0 1 1 -312.499,0 156.2495,156.25398 0 1 1 312.499,0 z" /> | |||
<path | |||
style="fill:url(#radialGradient4684);fill-rule:evenodd" | |||
id="path98" | |||
d="m 2719.37,56.738 c -25.06,6.447 -47.957,20.982 -65.936,39.456 -33.589,34.689 -49.415,85.84 -39.274,133.3 7.7684,38.332 30.319,73.818 63.261,95.34 39.082,26.542 90.824,33.344 135.13,16.523 44.589,-15.935 80.583,-53.959 92.968,-99.846 14.03,-47.365 2.42,-101 -30.04,-138.25 -27.522,-32.74 -69.296,-52.414 -112.07,-52.8 -2.4338,-0.40982 -30.229,1.5565 -44.039,6.2796 z" /> | |||
<path | |||
style="fill-opacity:0.25126002;fill-rule:evenodd" | |||
id="path100" | |||
d="m 2852.07,189.208 c -10.37,17.497 15.281,19.939 24.511,25.141 -3.4576,-31.524 10.512,-20.807 13.141,-30.822 -2.4603,-15.476 -20.24,-18.289 -30.195,-28.185 -0.3689,-19.454 -33.444,-17.876 -30.691,-31.892 -5.3458,-59.729 -15.582,-5.0632 -17.324,-14.89 -11.086,12.896 -14.512,-1.6954 -11.166,-10.995 0.2636,-11.365 -18.639,-11.91 -25.607,-6.5757 -5.8842,3.1388 -14.403,3.9638 -17.373,11.046 -13.66,2.7421 -12.28,-17.783 -26.048,-16.916 -15.276,-6.4266 -21.571,-23.77 -33.99,-13.45 -8.9365,2.8834 -27.358,38.752 -33.694,23.765 -13.5,-9.5163 -20.451,15.279 -20.026,25.654 -6.3485,13.802 -17.899,25.142 -24.397,39.356 -8.0969,13.6 -8.0574,31.852 -2.7715,46.369 16.911,-8.3049 18.513,27.307 24.313,42.266 8.439,10.014 21.898,-12.821 25.417,-6.9099 22.751,14.162 -5.2534,18.337 -1.2166,29.083 4.539,15.527 24.377,5.6814 35.735,9.2032 4.7599,1.8134 10.807,12.467 13.777,3.1751 -1.815,-6.8086 -5.6283,-13.445 4.7747,-13.371 7.3152,-6.3929 17.349,-5.3491 24.821,-7.2415 9.0393,-11.572 -10.092,-19.333 -4.8746,-30.443 2.8779,-11.759 -12.73,-8.4941 -10.462,-18.846 -7.0124,-5.8828 -11.048,-16.424 0.2223,-20.807 7.9487,-5.15 29.707,5.1288 24.31,-11.199 -6.8963,-0.46855 -16.33,-6.6026 -8.8168,-14.327 10.756,-7.5046 26.836,6.3362 36.887,-4.9453 1.0925,-5.4659 4.6002,-20.74 11.751,-10.347 -2.0036,12.706 4.4139,23.496 16.934,28.605 5.6256,3.7827 11.442,24.659 18.963,12.144 -10.579,-15.807 -1.3253,-36.935 21.493,-9.7167 -0.2777,2.0581 -0.6355,4.9085 1.6013,6.0725 z M 2739.5,129.476 c -3.3727,-9.642 -15.855,0.88715 -7.0124,5.9448 -1.4949,18.168 -23.383,19.29 -37.295,19.685 -8.7173,4.2923 -20.669,6.5967 -27.583,10.788 -1.5637,11.397 17.747,10.622 15.712,22.827 8.4646,11.957 22.01,19.653 28.373,33.172 12.227,10.86 6.5682,-16.046 -1.1103,-17.921 -11.846,-4.4912 -26.133,-24.017 -7.6284,-30.074 12.233,-3.4412 6.304,-25.137 22.916,-20.183 15.144,3.9218 14.776,-14.074 24.42,-20.796 2.2128,-9.6425 -5.7023,-6.6942 -10.791,-3.4427 z" /> | |||
<path | |||
style="fill:#000024;fill-opacity:0.86431998;fill-rule:evenodd" | |||
id="path102" | |||
d="m 2677.63,200.738 c 0.071,0.26538 -9.293,155.82 76.975,155.82 86.268,0 156.99,-70.513 156.99,-156.52 0,-86.007 -70.722,-155.11 -156.99,-155.11 -86.268,0 -76.975,156.62 -76.975,155.82 z" /> | |||
</g> | |||
</g> | |||
</svg> |
@@ -0,0 +1,78 @@ | |||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
<svg | |||
xmlns:dc="http://purl.org/dc/elements/1.1/" | |||
xmlns:cc="http://creativecommons.org/ns#" | |||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
xmlns:svg="http://www.w3.org/2000/svg" | |||
xmlns="http://www.w3.org/2000/svg" | |||
xmlns:xlink="http://www.w3.org/1999/xlink" | |||
id="svg9171" | |||
version="1.1" | |||
viewBox="0 0 92.68203 92.684395" | |||
height="92.684395mm" | |||
width="92.68203mm"> | |||
<defs | |||
id="defs9165"> | |||
<radialGradient | |||
gradientTransform="translate(1783.2,-50.712)" | |||
r="234.94" | |||
fx="248.94" | |||
cy="354.57001" | |||
cx="245.39" | |||
gradientUnits="userSpaceOnUse" | |||
id="radialGradient4666" | |||
xlink:href="#a" /> | |||
<radialGradient | |||
gradientUnits="userSpaceOnUse" | |||
fx="248.94" | |||
r="234.94" | |||
cy="354.57001" | |||
cx="245.39" | |||
id="a"> | |||
<stop | |||
id="stop7" | |||
offset="0" | |||
stop-color="#b7c3cc" /> | |||
<stop | |||
id="stop9" | |||
offset="1" | |||
stop-color="#001e29" /> | |||
</radialGradient> | |||
</defs> | |||
<metadata | |||
id="metadata9168"> | |||
<rdf:RDF> | |||
<cc:Work | |||
rdf:about=""> | |||
<dc:format>image/svg+xml</dc:format> | |||
<dc:type | |||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
<dc:title></dc:title> | |||
</cc:Work> | |||
</rdf:RDF> | |||
</metadata> | |||
<g | |||
transform="translate(54.656488,-148.60423)" | |||
id="layer1"> | |||
<g | |||
id="g8556" | |||
transform="matrix(0.26458333,0,0,0.26458333,-545.76227,141.90959)"> | |||
<path | |||
style="fill:#000024;fill-rule:evenodd;stroke-width:1.01019692" | |||
id="path72" | |||
d="m 2187.5445,200.45419 a 156.2495,156.25398 0 1 1 -312.499,0 156.2495,156.25398 0 1 1 312.499,0 z" /> | |||
<path | |||
style="fill:url(#radialGradient4666);fill-rule:evenodd" | |||
id="path74" | |||
d="m 1989.37,56.638 c -25.06,6.447 -47.957,20.982 -65.936,39.456 -33.589,34.689 -49.415,85.84 -39.274,133.3 7.7684,38.332 30.319,73.818 63.261,95.34 39.082,26.542 90.824,33.344 135.13,16.523 44.589,-15.935 80.583,-53.959 92.968,-99.846 14.03,-47.365 2.42,-101 -30.04,-138.25 -27.522,-32.74 -69.296,-52.414 -112.07,-52.8 -2.4338,-0.40982 -30.229,1.5565 -44.039,6.2796 z" /> | |||
<path | |||
style="fill-opacity:0.25126002;fill-rule:evenodd" | |||
id="path76" | |||
d="m 2122.07,189.108 c -10.37,17.497 15.281,19.939 24.511,25.141 -3.4576,-31.524 10.512,-20.807 13.141,-30.822 -2.4603,-15.476 -20.24,-18.289 -30.195,-28.185 -0.3689,-19.454 -33.444,-17.876 -30.691,-31.892 -5.3458,-59.729 -15.582,-5.0632 -17.324,-14.89 -11.086,12.896 -14.512,-1.6954 -11.166,-10.995 0.2636,-11.365 -18.639,-11.91 -25.607,-6.5757 -5.8842,3.1388 -14.403,3.9638 -17.373,11.046 -13.66,2.7421 -12.28,-17.783 -26.048,-16.916 -15.276,-6.4266 -21.571,-23.77 -33.99,-13.45 -8.9365,2.8834 -27.358,38.752 -33.694,23.765 -13.5,-9.5163 -20.451,15.279 -20.026,25.654 -6.3485,13.802 -17.899,25.142 -24.397,39.356 -8.0969,13.6 -8.0574,31.852 -2.7715,46.369 16.911,-8.3049 18.513,27.307 24.313,42.266 8.439,10.014 21.898,-12.821 25.417,-6.9099 22.751,14.162 -5.2534,18.337 -1.2166,29.083 4.539,15.527 24.377,5.6814 35.735,9.2032 4.7599,1.8134 10.807,12.467 13.777,3.1751 -1.815,-6.8086 -5.6283,-13.445 4.7747,-13.371 7.3152,-6.3929 17.349,-5.3491 24.821,-7.2415 9.0393,-11.572 -10.092,-19.333 -4.8746,-30.443 2.8779,-11.759 -12.73,-8.4941 -10.462,-18.846 -7.0124,-5.8828 -11.048,-16.424 0.2223,-20.807 7.9487,-5.15 29.707,5.1288 24.31,-11.199 -6.8963,-0.46855 -16.33,-6.6026 -8.8168,-14.327 10.756,-7.5046 26.836,6.3362 36.887,-4.9453 1.0925,-5.4659 4.6002,-20.74 11.751,-10.347 -2.0036,12.706 4.4139,23.496 16.934,28.605 5.6256,3.7827 11.442,24.659 18.963,12.144 -10.579,-15.807 -1.3253,-36.935 21.493,-9.7167 -0.2777,2.0581 -0.6355,4.9085 1.6013,6.0725 z M 2009.5,129.376 c -3.3727,-9.642 -15.855,0.88715 -7.0124,5.9448 -1.4949,18.168 -23.383,19.29 -37.295,19.685 -8.7173,4.2923 -20.669,6.5967 -27.583,10.788 -1.5637,11.397 17.747,10.622 15.712,22.827 8.4646,11.957 22.01,19.653 28.373,33.172 12.227,10.86 6.5682,-16.046 -1.1103,-17.921 -11.846,-4.4912 -26.133,-24.017 -7.6284,-30.074 12.233,-3.4412 6.304,-25.137 22.916,-20.183 15.144,3.9218 14.776,-14.074 24.42,-20.796 2.2128,-9.6425 -5.7023,-6.6942 -10.791,-3.4427 z" /> | |||
<path | |||
style="fill:#000024;fill-opacity:0.86431998" | |||
id="path78" | |||
d="m 2031.09,351.958 c 82.8,0 150.54,-68.432 150.54,-151.6 0,-83.168 -64.411,-149.73 -150.54,-149.73 103.26,-4.0552 104.5,307.88 0,301.33 z" /> | |||
</g> | |||
</g> | |||
</svg> |
@@ -0,0 +1,78 @@ | |||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
<svg | |||
xmlns:dc="http://purl.org/dc/elements/1.1/" | |||
xmlns:cc="http://creativecommons.org/ns#" | |||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
xmlns:svg="http://www.w3.org/2000/svg" | |||
xmlns="http://www.w3.org/2000/svg" | |||
xmlns:xlink="http://www.w3.org/1999/xlink" | |||
id="svg5978" | |||
version="1.1" | |||
viewBox="0 0 92.787987 92.694862" | |||
height="92.694862mm" | |||
width="92.787987mm"> | |||
<defs | |||
id="defs5972"> | |||
<radialGradient | |||
gradientTransform="translate(323.55,-50.712)" | |||
r="234.94" | |||
fx="248.94" | |||
cy="354.57001" | |||
cx="245.39" | |||
gradientUnits="userSpaceOnUse" | |||
id="radialGradient4631" | |||
xlink:href="#a" /> | |||
<radialGradient | |||
gradientUnits="userSpaceOnUse" | |||
fx="248.94" | |||
r="234.94" | |||
cy="354.57001" | |||
cx="245.39" | |||
id="a"> | |||
<stop | |||
id="stop7" | |||
offset="0" | |||
stop-color="#b7c3cc" /> | |||
<stop | |||
id="stop9" | |||
offset="1" | |||
stop-color="#001e29" /> | |||
</radialGradient> | |||
</defs> | |||
<metadata | |||
id="metadata5975"> | |||
<rdf:RDF> | |||
<cc:Work | |||
rdf:about=""> | |||
<dc:format>image/svg+xml</dc:format> | |||
<dc:type | |||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
<dc:title></dc:title> | |||
</cc:Work> | |||
</rdf:RDF> | |||
</metadata> | |||
<g | |||
transform="translate(52.441611,-215.87876)" | |||
id="layer1"> | |||
<g | |||
id="g5953" | |||
transform="matrix(0.26458333,0,0,0.26458333,-157.24237,209.19458)"> | |||
<path | |||
style="fill:#000024;fill-rule:evenodd;stroke-width:1.01019692" | |||
id="path26" | |||
d="m 727.89449,200.45419 a 156.24948,156.25403 0 1 1 -312.49897,0 156.24949,156.25397 0 1 1 312.49897,0 z" /> | |||
<path | |||
style="fill:url(#radialGradient4631);fill-rule:evenodd" | |||
id="path28" | |||
d="m 529.72,56.638 c -25.06,6.447 -47.957,20.982 -65.936,39.456 -33.589,34.689 -49.415,85.84 -39.274,133.3 7.7684,38.332 30.319,73.818 63.261,95.34 39.082,26.542 90.824,33.344 135.13,16.523 44.589,-15.935 80.583,-53.959 92.968,-99.846 14.03,-47.365 2.42,-101 -30.04,-138.25 -27.522,-32.74 -69.296,-52.414 -112.07,-52.8 -2.4338,-0.40982 -30.229,1.5565 -44.039,6.2796 z" /> | |||
<path | |||
style="fill-opacity:0.25126002;fill-rule:evenodd" | |||
id="path30" | |||
d="m 662.42,189.108 c -10.37,17.497 15.281,19.939 24.511,25.141 -3.4576,-31.524 10.512,-20.807 13.141,-30.822 -2.4603,-15.476 -20.24,-18.289 -30.195,-28.185 -0.36892,-19.454 -33.444,-17.876 -30.691,-31.892 -5.3458,-59.729 -15.582,-5.0632 -17.324,-14.89 -11.086,12.896 -14.512,-1.6954 -11.166,-10.995 0.26364,-11.365 -18.639,-11.91 -25.607,-6.5757 -5.8842,3.1388 -14.403,3.9638 -17.373,11.046 -13.66,2.7421 -12.28,-17.783 -26.048,-16.916 -15.276,-6.4266 -21.571,-23.77 -33.99,-13.45 -8.9365,2.8834 -27.358,38.752 -33.694,23.765 -13.5,-9.5163 -20.451,15.279 -20.026,25.654 -6.3485,13.802 -17.899,25.142 -24.397,39.356 -8.0969,13.6 -8.0574,31.852 -2.7715,46.369 16.911,-8.3049 18.513,27.307 24.313,42.266 8.439,10.014 21.898,-12.821 25.417,-6.9099 22.751,14.162 -5.2534,18.337 -1.2166,29.083 4.539,15.527 24.377,5.6814 35.735,9.2032 4.7599,1.8134 10.807,12.467 13.777,3.1751 -1.815,-6.8086 -5.6283,-13.445 4.7747,-13.371 7.3152,-6.3929 17.349,-5.3491 24.821,-7.2415 9.0393,-11.572 -10.092,-19.333 -4.8746,-30.443 2.8779,-11.759 -12.73,-8.4941 -10.462,-18.846 -7.0124,-5.8828 -11.048,-16.424 0.22233,-20.807 7.9487,-5.15 29.707,5.1288 24.31,-11.199 -6.8963,-0.46855 -16.33,-6.6026 -8.8168,-14.327 10.756,-7.5046 26.836,6.3362 36.887,-4.9453 1.0925,-5.4659 4.6002,-20.74 11.751,-10.347 -2.0036,12.706 4.4139,23.496 16.934,28.605 5.6256,3.7827 11.442,24.659 18.963,12.144 -10.579,-15.807 -1.3253,-36.935 21.493,-9.7167 -0.27777,2.0581 -0.63554,4.9085 1.6013,6.0725 z M 549.85,129.376 c -3.3727,-9.642 -15.855,0.88715 -7.0124,5.9448 -1.4949,18.168 -23.383,19.29 -37.295,19.685 -8.7173,4.2923 -20.669,6.5967 -27.583,10.788 -1.5637,11.397 17.747,10.622 15.712,22.827 8.4646,11.957 22.01,19.653 28.373,33.172 12.227,10.86 6.5682,-16.046 -1.1103,-17.921 -11.846,-4.4912 -26.133,-24.017 -7.6284,-30.074 12.233,-3.4412 6.304,-25.137 22.916,-20.183 15.144,3.9218 14.776,-14.074 24.42,-20.796 2.2128,-9.6425 -5.7023,-6.6942 -10.791,-3.4427 z" /> | |||
<path | |||
style="fill:#000024;fill-opacity:0.86431998;fill-rule:evenodd" | |||
id="path32" | |||
d="m 648.25,200.638 c -0.0711,0.26538 9.293,155.82 -76.975,155.82 -86.268,0 -156.28,-69.806 -156.28,-155.82 0,-86.014 70.015,-155.82 156.28,-155.82 86.265,0 76.975,156.62 76.975,155.82 z" /> | |||
</g> | |||
</g> | |||
</svg> |
@@ -0,0 +1,78 @@ | |||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
<svg | |||
xmlns:dc="http://purl.org/dc/elements/1.1/" | |||
xmlns:cc="http://creativecommons.org/ns#" | |||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |||
xmlns:svg="http://www.w3.org/2000/svg" | |||
xmlns="http://www.w3.org/2000/svg" | |||
xmlns:xlink="http://www.w3.org/1999/xlink" | |||
id="svg7227" | |||
version="1.1" | |||
viewBox="0 0 92.68203 92.684395" | |||
height="92.684395mm" | |||
width="92.68203mm"> | |||
<defs | |||
id="defs7221"> | |||
<radialGradient | |||
gradientTransform="translate(1053.2,-50.612)" | |||
r="234.94" | |||
fx="248.94" | |||
cy="354.57001" | |||
cx="245.39" | |||
gradientUnits="userSpaceOnUse" | |||
id="radialGradient4649" | |||
xlink:href="#a" /> | |||
<radialGradient | |||
gradientUnits="userSpaceOnUse" | |||
fx="248.94" | |||
r="234.94" | |||
cy="354.57001" | |||
cx="245.39" | |||
id="a"> | |||
<stop | |||
id="stop7" | |||
offset="0" | |||
stop-color="#b7c3cc" /> | |||
<stop | |||
id="stop9" | |||
offset="1" | |||
stop-color="#001e29" /> | |||
</radialGradient> | |||
</defs> | |||
<metadata | |||
id="metadata7224"> | |||
<rdf:RDF> | |||
<cc:Work | |||
rdf:about=""> | |||
<dc:format>image/svg+xml</dc:format> | |||
<dc:type | |||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |||
<dc:title></dc:title> | |||
</cc:Work> | |||
</rdf:RDF> | |||
</metadata> | |||
<g | |||
transform="translate(7.7874386,-141.04471)" | |||
id="layer1"> | |||
<g | |||
id="g7202" | |||
transform="matrix(0.26458333,0,0,0.26458333,-305.74739,134.32361)"> | |||
<path | |||
style="fill:#000024;fill-rule:evenodd;stroke-width:1.01019692" | |||
id="path50" | |||
d="m 1457.5445,200.55419 a 156.2495,156.25398 0 1 1 -312.499,0 156.2495,156.25398 0 1 1 312.499,0 z" /> | |||
<path | |||
style="fill:url(#radialGradient4649);fill-rule:evenodd" | |||
id="path52" | |||
d="m 1259.37,56.738 c -25.06,6.447 -47.957,20.982 -65.936,39.456 -33.589,34.689 -49.415,85.84 -39.274,133.3 7.7684,38.332 30.319,73.818 63.261,95.34 39.082,26.542 90.824,33.344 135.13,16.523 44.589,-15.935 80.583,-53.959 92.968,-99.846 14.03,-47.365 2.42,-101 -30.04,-138.25 -27.522,-32.74 -69.296,-52.414 -112.07,-52.8 -2.4338,-0.40982 -30.229,1.5565 -44.039,6.2796 z" /> | |||
<path | |||
style="fill-opacity:0.25126002;fill-rule:evenodd" | |||
id="path54" | |||
d="m 1392.07,189.208 c -10.37,17.497 15.281,19.939 24.511,25.141 -3.4576,-31.524 10.512,-20.807 13.141,-30.822 -2.4603,-15.476 -20.24,-18.289 -30.195,-28.185 -0.3689,-19.454 -33.444,-17.876 -30.691,-31.892 -5.3458,-59.729 -15.582,-5.0632 -17.324,-14.89 -11.086,12.896 -14.512,-1.6954 -11.166,-10.995 0.2636,-11.365 -18.639,-11.91 -25.607,-6.5757 -5.8842,3.1388 -14.403,3.9638 -17.373,11.046 -13.66,2.7421 -12.28,-17.783 -26.048,-16.916 -15.276,-6.4266 -21.571,-23.77 -33.99,-13.45 -8.9365,2.8834 -27.358,38.752 -33.694,23.765 -13.5,-9.5163 -20.451,15.279 -20.026,25.654 -6.3485,13.802 -17.899,25.142 -24.397,39.356 -8.0969,13.6 -8.0574,31.852 -2.7715,46.369 16.911,-8.3049 18.513,27.307 24.313,42.266 8.439,10.014 21.898,-12.821 25.417,-6.9099 22.751,14.162 -5.2534,18.337 -1.2166,29.083 4.539,15.527 24.377,5.6814 35.735,9.2032 4.7599,1.8134 10.807,12.467 13.777,3.1751 -1.815,-6.8086 -5.6283,-13.445 4.7747,-13.371 7.3152,-6.3929 17.349,-5.3491 24.821,-7.2415 9.0393,-11.572 -10.092,-19.333 -4.8746,-30.443 2.8779,-11.759 -12.73,-8.4941 -10.462,-18.846 -7.0124,-5.8828 -11.048,-16.424 0.2223,-20.807 7.9487,-5.15 29.707,5.1288 24.31,-11.199 -6.8963,-0.46855 -16.33,-6.6026 -8.8168,-14.327 10.756,-7.5046 26.836,6.3362 36.887,-4.9453 1.0925,-5.4659 4.6002,-20.74 11.751,-10.347 -2.0036,12.706 4.4139,23.496 16.934,28.605 5.6256,3.7827 11.442,24.659 18.963,12.144 -10.579,-15.807 -1.3253,-36.935 21.493,-9.7167 -0.2777,2.0581 -0.6355,4.9085 1.6013,6.0725 z M 1279.5,129.476 c -3.3727,-9.642 -15.855,0.88715 -7.0124,5.9448 -1.4949,18.168 -23.383,19.29 -37.295,19.685 -8.7173,4.2923 -20.669,6.5967 -27.583,10.788 -1.5637,11.397 17.747,10.622 15.712,22.827 8.4646,11.957 22.01,19.653 28.373,33.172 12.227,10.86 6.5682,-16.046 -1.1103,-17.921 -11.846,-4.4912 -26.133,-24.017 -7.6284,-30.074 12.233,-3.4412 6.304,-25.137 22.916,-20.183 15.144,3.9218 14.776,-14.074 24.42,-20.796 2.2128,-9.6425 -5.7023,-6.6942 -10.791,-3.4427 z" /> | |||
<path | |||
style="fill:#000024;fill-opacity:0.86431998" | |||
id="path56" | |||
d="m 1301.56,352.058 c -82.8,0 -150.78,-67.499 -150.78,-150.67 0,-83.171 64.644,-150.67 150.78,-150.67 -103.26,-4.0552 -104.5,307.88 0,301.33 z" /> | |||
</g> | |||
</g> | |||
</svg> |
@@ -0,0 +1,90 @@ | |||
\documentclass[a4paper,12pt]{article} | |||
\usepackage[utf8]{inputenc} | |||
\usepackage[T1]{fontenc} | |||
\usepackage[margin=25mm]{geometry} | |||
\usepackage{graphicx} | |||
\usepackage{hyperref} | |||
% Fix non-break spaces issues | |||
\DeclareUnicodeCharacter{202F}{~} | |||
\hypersetup{pdfinfo={ | |||
Title={+++DOCUMENT-TITLE+++}, | |||
Creator={Kosmorro v+++KOSMORRO-VERSION+++} | |||
}} | |||
\pagenumbering{gobble} | |||
\setcounter{secnumdepth}{0} | |||
\title{\sffamily\href{http://kosmorro.space}{\includegraphics[width=5cm]{+++KOSMORRO-LOGO+++}}\\+++DOCUMENT-TITLE+++} | |||
\date{\vspace{-11mm}\sffamily +++DOCUMENT-DATE+++} | |||
\begin{document} | |||
\newcommand{\object}[4]{ | |||
\hline | |||
\textbf{#1} & {#2} & {#3} & {#4}\\ | |||
} | |||
\newcommand{\moonphase}[2]{ | |||
\begin{center} | |||
\begin{minipage}{2cm} | |||
\includegraphics[width=\linewidth]{#1} | |||
\end{minipage} | |||
\hspace{5mm} | |||
\begin{minipage}{7cm} | |||
\textbf{+++CURRENT-MOON-PHASE-TITLE+++}\\#2 | |||
\end{minipage} | |||
\end{center} | |||
} | |||
\newenvironment{ephemerides}{ | |||
\begin{table}[h] | |||
\centering | |||
\begin{tabular}{lccc} | |||
\textbf{+++EPHEMERIDES-OBJECT+++} & | |||
\textbf{+++EPHEMERIDES-RISE-TIME+++} & | |||
\textbf{+++EPHEMERIDES-CULMINATION-TIME+++} & | |||
\textbf{+++EPHEMERIDES-SET-TIME+++}\\ | |||
\hline | |||
}{ | |||
\end{tabular} | |||
\end{table} | |||
} | |||
\newcommand{\event}[2]{ | |||
\textbf{#1} & {#2}\\ | |||
} | |||
\newenvironment{events}{ | |||
\begin{table}[h] | |||
\begin{tabular}{ll} | |||
}{ | |||
\end{tabular} | |||
\end{table} | |||
} | |||
\maketitle | |||
+++INTRODUCTION+++ | |||
\moonphase{+++MOON-PHASE-GRAPHICS+++}{+++CURRENT-MOON-PHASE+++} | |||
%%% BEGIN-EPHEMERIDES-SECTION | |||
\section{\sffamily +++SECTION-EPHEMERIDES+++} | |||
\begin{ephemerides} | |||
+++EPHEMERIDES+++ | |||
\end{ephemerides} | |||
%%% END-EPHEMERIDES-SECTION | |||
%%% BEGIN-EVENTS-SECTION | |||
\section{\sffamily +++SECTION-EVENTS+++} | |||
\begin{events} | |||
+++EVENTS+++ | |||
\end{events} | |||
%%% END-EVENTS-SECTION | |||
\end{document} |
@@ -19,12 +19,19 @@ | |||
from abc import ABC, abstractmethod | |||
import datetime | |||
import json | |||
import os | |||
from tabulate import tabulate | |||
from skyfield.timelib import Time | |||
from numpy import int64 | |||
from termcolor import colored | |||
from .data import Object, AsterEphemerides, MoonPhase, Event | |||
from .i18n import _ | |||
from .version import VERSION | |||
from .exceptions import UnavailableFeatureError | |||
try: | |||
from latex import build_pdf | |||
except ImportError: | |||
build_pdf = None | |||
FULL_DATE_FORMAT = _('{day_of_week} {month} {day_number}, {year}').format(day_of_week='%A', month='%B', | |||
day_number='%d', year='%Y') | |||
@@ -39,10 +46,22 @@ class Dumper(ABC): | |||
self.date = date | |||
self.with_colors = with_colors | |||
def get_date_as_string(self, capitalized: bool = False) -> str: | |||
date = self.date.strftime(FULL_DATE_FORMAT) | |||
if capitalized: | |||
return ''.join([date[0].upper(), date[1:]]) | |||
return date | |||
@abstractmethod | |||
def to_string(self): | |||
pass | |||
@staticmethod | |||
def is_file_output_needed() -> bool: | |||
return False | |||
class JsonDumper(Dumper): | |||
def to_string(self): | |||
@@ -83,7 +102,7 @@ class JsonDumper(Dumper): | |||
class TextDumper(Dumper): | |||
def to_string(self): | |||
text = [self.style(self.get_date(), 'h1')] | |||
text = [self.style(self.get_date_as_string(capitalized=True), 'h1')] | |||
if len(self.ephemeris['details']) > 0: | |||
text.append(self.get_asters(self.ephemeris['details'])) | |||
@@ -112,11 +131,6 @@ class TextDumper(Dumper): | |||
return styles[tag](text) | |||
def get_date(self) -> str: | |||
date = self.date.strftime(FULL_DATE_FORMAT) | |||
return ''.join([date[0].upper(), date[1:]]) | |||
def get_asters(self, asters: [Object]) -> str: | |||
data = [] | |||
@@ -164,3 +178,132 @@ class TextDumper(Dumper): | |||
) | |||
return '\n'.join([current_moon_phase, new_moon_phase]) | |||
class _LatexDumper(Dumper): | |||
def to_string(self): | |||
template_path = os.path.join(os.path.abspath(os.path.dirname(__file__)), | |||
'assets', 'pdf', 'template.tex') | |||
with open(template_path, mode='r') as file: | |||
template = file.read() | |||
return self._make_document(template) | |||
def _make_document(self, template: str) -> str: | |||
kosmorro_logo_path = os.path.join(os.path.abspath(os.path.dirname(__file__)), | |||
'assets', 'png', 'kosmorro-logo.png') | |||
moon_phase_graphics = os.path.join(os.path.abspath(os.path.dirname(__file__)), | |||
'assets', 'moonphases', 'png', | |||
'.'.join([self.ephemeris['moon_phase'].identifier.lower().replace('_', '-'), | |||
'png'])) | |||
document = template | |||
if len(self.ephemeris['details']) == 0: | |||
document = self._remove_section(document, 'ephemerides') | |||
if len(self.events) == 0: | |||
document = self._remove_section(document, 'events') | |||
document = document \ | |||
.replace('+++KOSMORRO-VERSION+++', VERSION) \ | |||
.replace('+++KOSMORRO-LOGO+++', kosmorro_logo_path) \ | |||
.replace('+++DOCUMENT-TITLE+++', _('A Summary of your Sky')) \ | |||
.replace('+++DOCUMENT-DATE+++', self.get_date_as_string(capitalized=True)) \ | |||
.replace('+++INTRODUCTION+++', | |||
'\n\n'.join([ | |||
_("This document summarizes the ephemerides and the events of {date}. " | |||
"It aims to help you to prepare your observation session.").format( | |||
date=self.get_date_as_string()), | |||
_("Don't forget to check the weather forecast before you go out with your material.") | |||
])) \ | |||
.replace('+++SECTION-EPHEMERIDES+++', _('Ephemerides of the day')) \ | |||
.replace('+++EPHEMERIDES-OBJECT+++', _('Object')) \ | |||
.replace('+++EPHEMERIDES-RISE-TIME+++', _('Rise time')) \ | |||
.replace('+++EPHEMERIDES-CULMINATION-TIME+++', _('Culmination time')) \ | |||
.replace('+++EPHEMERIDES-SET-TIME+++', _('Set time')) \ | |||
.replace('+++EPHEMERIDES+++', self._make_ephemerides()) \ | |||
.replace('+++MOON-PHASE-GRAPHICS+++', moon_phase_graphics) \ | |||
.replace('+++CURRENT-MOON-PHASE-TITLE+++', _('Moon phase:')) \ | |||
.replace('+++CURRENT-MOON-PHASE+++', self.ephemeris['moon_phase'].get_phase()) \ | |||
.replace('+++SECTION-EVENTS+++', _('Expected events')) \ | |||
.replace('+++EVENTS+++', self._make_events()) | |||
return document | |||
def _make_ephemerides(self) -> str: | |||
latex = [] | |||
for aster in self.ephemeris['details']: | |||
if aster.ephemerides.rise_time is not None: | |||
aster_rise = aster.ephemerides.rise_time.utc_strftime(TIME_FORMAT) | |||
else: | |||
aster_rise = '-' | |||
if aster.ephemerides.culmination_time is not None: | |||
aster_culmination = aster.ephemerides.culmination_time.utc_strftime(TIME_FORMAT) | |||
else: | |||
aster_culmination = '-' | |||
if aster.ephemerides.set_time is not None: | |||
aster_set = aster.ephemerides.set_time.utc_strftime(TIME_FORMAT) | |||
else: | |||
aster_set = '-' | |||
latex.append(r'\object{%s}{%s}{%s}{%s}' % (aster.name, | |||
aster_rise, | |||
aster_culmination, | |||
aster_set)) | |||
return ''.join(latex) | |||
def _make_events(self) -> str: | |||
latex = [] | |||
for event in self.events: | |||
latex.append(r'\event{%s}{%s}' % (event.start_time.utc_strftime(TIME_FORMAT), | |||
event.get_description())) | |||
return ''.join(latex) | |||
@staticmethod | |||
def _remove_section(document: str, section: str): | |||
begin_section_tag = '%%%%%% BEGIN-%s-SECTION' % section.upper() | |||
end_section_tag = '%%%%%% END-%s-SECTION' % section.upper() | |||
document = document.split('\n') | |||
new_document = [] | |||
ignore_line = False | |||
for line in document: | |||
if begin_section_tag in line or end_section_tag in line: | |||
ignore_line = not ignore_line | |||
continue | |||
if ignore_line: | |||
continue | |||
new_document.append(line) | |||
return '\n'.join(new_document) | |||
class PdfDumper(Dumper): | |||
def to_string(self): | |||
try: | |||
latex_dumper = _LatexDumper(self.ephemeris, self.events, self.date, self.with_colors) | |||
return self._compile(latex_dumper.to_string()) | |||
except RuntimeError: | |||
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.")) | |||
@staticmethod | |||
def is_file_output_needed() -> bool: | |||
return True | |||
@staticmethod | |||
def _compile(latex_input) -> bytes: | |||
if build_pdf is None: | |||
raise RuntimeError('Python latex module not found') | |||
return bytes(build_pdf(latex_input)) |
@@ -0,0 +1,23 @@ | |||
#!/usr/bin/env python3 | |||
# Kosmorro - Compute The Next Ephemerides | |||
# Copyright (C) 2019 Jérôme Deuchnord <jerome@deuchnord.fr> | |||
# | |||
# This program is free software: you can redistribute it and/or modify | |||
# it under the terms of the GNU Affero General Public License as | |||
# published by the Free Software Foundation, either version 3 of the | |||
# License, or (at your option) any later version. | |||
# | |||
# This program is distributed in the hope that it will be useful, | |||
# but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
# GNU Affero General Public License for more details. | |||
# | |||
# You should have received a copy of the GNU Affero General Public License | |||
# along with this program. If not, see <https://www.gnu.org/licenses/>. | |||
class UnavailableFeatureError(RuntimeError): | |||
def __init__(self, msg: str): | |||
super(UnavailableFeatureError, self).__init__() | |||
self.msg = msg |
@@ -8,7 +8,7 @@ msgid "" | |||
msgstr "" | |||
"Project-Id-Version: kosmorro 0.5.1\n" | |||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" | |||
"POT-Creation-Date: 2020-02-03 13:19+0100\n" | |||
"POT-Creation-Date: 2020-02-04 13:29+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" | |||
@@ -99,111 +99,170 @@ msgstr "" | |||
msgid "%s and %s are in conjunction" | |||
msgstr "" | |||
#: kosmorrolib/dumper.py:29 | |||
#: kosmorrolib/dumper.py:36 | |||
msgid "{day_of_week} {month} {day_number}, {year}" | |||
msgstr "" | |||
#: kosmorrolib/dumper.py:31 | |||
#: kosmorrolib/dumper.py:38 | |||
msgid "{hours}:{minutes}" | |||
msgstr "" | |||
#: kosmorrolib/dumper.py:94 | |||
#: kosmorrolib/dumper.py:113 | |||
msgid "Expected events:" | |||
msgstr "" | |||
#: kosmorrolib/dumper.py:97 | |||
#: kosmorrolib/dumper.py:116 | |||
msgid "Note: All the hours are given in UTC." | |||
msgstr "" | |||
#: kosmorrolib/dumper.py:143 | |||
#: kosmorrolib/dumper.py:157 kosmorrolib/dumper.py:222 | |||
msgid "Object" | |||
msgstr "" | |||
#: kosmorrolib/dumper.py:144 | |||
#: kosmorrolib/dumper.py:158 kosmorrolib/dumper.py:223 | |||
msgid "Rise time" | |||
msgstr "" | |||
#: kosmorrolib/dumper.py:145 | |||
#: kosmorrolib/dumper.py:159 kosmorrolib/dumper.py:224 | |||
msgid "Culmination time" | |||
msgstr "" | |||
#: kosmorrolib/dumper.py:146 | |||
#: kosmorrolib/dumper.py:160 kosmorrolib/dumper.py:225 | |||
msgid "Set time" | |||
msgstr "" | |||
#: kosmorrolib/dumper.py:159 | |||
#: kosmorrolib/dumper.py:173 kosmorrolib/dumper.py:228 | |||
msgid "Moon phase:" | |||
msgstr "" | |||
#: kosmorrolib/dumper.py:160 | |||
#: kosmorrolib/dumper.py:174 | |||
msgid "{next_moon_phase} on {next_moon_phase_date} at {next_moon_phase_time}" | |||
msgstr "" | |||
#: kosmorrolib/main.py:76 | |||
msgid "Running on Python {python_version}" | |||
#: kosmorrolib/dumper.py:212 | |||
msgid "A Summary of your Sky" | |||
msgstr "" | |||
#: kosmorrolib/dumper.py:216 | |||
msgid "" | |||
"This document summarizes the ephemerides and the events of {date}. It " | |||
"aims to help you to prepare your observation session." | |||
msgstr "" | |||
#: kosmorrolib/dumper.py:219 | |||
msgid "" | |||
"Don't forget to check the weather forecast before you go out with your " | |||
"material." | |||
msgstr "" | |||
#: kosmorrolib/dumper.py:221 | |||
msgid "Ephemerides of the day" | |||
msgstr "" | |||
#: kosmorrolib/dumper.py:230 | |||
msgid "Expected events" | |||
msgstr "" | |||
#: kosmorrolib/dumper.py:296 | |||
msgid "" | |||
"Building PDFs was not possible, because some dependencies are not " | |||
"installed.\n" | |||
"Please look at the documentation at http://kosmorro.space for more " | |||
"information." | |||
msgstr "" | |||
#: kosmorrolib/main.py:58 | |||
msgid "" | |||
"Save the planet and paper!\n" | |||
"Consider printing you PDF document only if really necessary, and use the " | |||
"other side of the sheet." | |||
msgstr "" | |||
#: kosmorrolib/main.py:62 | |||
msgid "" | |||
"PDF output will not contain the ephemerides, because you didn't provide " | |||
"the observation coordinate." | |||
msgstr "" | |||
#: kosmorrolib/main.py:82 | |||
msgid "Could not save the output in \"{path}\": {error}" | |||
msgstr "" | |||
#: kosmorrolib/main.py:87 | |||
msgid "Selected output format needs an output file (--output)." | |||
msgstr "" | |||
#: kosmorrolib/main.py:104 | |||
msgid "Running on Python {python_version}" | |||
msgstr "" | |||
#: kosmorrolib/main.py:110 | |||
msgid "Do you really want to clear Kosmorro's cache? [yN] " | |||
msgstr "" | |||
#: kosmorrolib/main.py:89 | |||
#: kosmorrolib/main.py:117 | |||
msgid "Answer did not match expected options, cache not cleared." | |||
msgstr "" | |||
#: kosmorrolib/main.py:98 | |||
#: kosmorrolib/main.py:126 | |||
msgid "" | |||
"Compute the ephemerides and the events for a given date, at a given " | |||
"position on Earth." | |||
msgstr "" | |||
#: kosmorrolib/main.py:100 | |||
#: kosmorrolib/main.py:128 | |||
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:105 | |||
#: kosmorrolib/main.py:133 | |||
msgid "Show the program version" | |||
msgstr "" | |||
#: kosmorrolib/main.py:107 | |||
#: kosmorrolib/main.py:135 | |||
msgid "Delete all the files Kosmorro stored in the cache." | |||
msgstr "" | |||
#: kosmorrolib/main.py:109 | |||
#: kosmorrolib/main.py:137 | |||
msgid "The format under which the information have to be output" | |||
msgstr "" | |||
#: kosmorrolib/main.py:111 | |||
#: kosmorrolib/main.py:139 | |||
msgid "The observer's latitude on Earth" | |||
msgstr "" | |||
#: kosmorrolib/main.py:113 | |||
#: kosmorrolib/main.py:141 | |||
msgid "The observer's longitude on Earth" | |||
msgstr "" | |||
#: kosmorrolib/main.py:115 | |||
#: kosmorrolib/main.py:143 | |||
msgid "" | |||
"A number between 1 and 28, 29, 30 or 31 (depending on the month). The day" | |||
" you want to compute the ephemerides for. Defaults to {default_day} (the" | |||
" current day)." | |||
msgstr "" | |||
#: kosmorrolib/main.py:119 | |||
#: kosmorrolib/main.py:147 | |||
msgid "" | |||
"A number between 1 and 12. The month you want to compute the ephemerides " | |||
"for. Defaults to {default_month} (the current month)." | |||
msgstr "" | |||
#: kosmorrolib/main.py:122 | |||
#: kosmorrolib/main.py:150 | |||
msgid "" | |||
"The year you want to compute the ephemerides for. Defaults to " | |||
"{default_year} (the current year)." | |||
msgstr "" | |||
#: kosmorrolib/main.py:125 | |||
#: kosmorrolib/main.py:153 | |||
msgid "Disable the colors in the console." | |||
msgstr "" | |||
#: kosmorrolib/main.py:155 | |||
msgid "" | |||
"A file to export the output to. If not given, the standard output is " | |||
"used. This argument is needed for PDF format." | |||
msgstr "" | |||
@@ -22,6 +22,7 @@ import re | |||
import sys | |||
from datetime import date | |||
from termcolor import colored | |||
from kosmorrolib.version import VERSION | |||
from kosmorrolib import dumper | |||
@@ -29,6 +30,7 @@ from kosmorrolib import core | |||
from kosmorrolib import events | |||
from kosmorrolib.i18n import _ | |||
from .ephemerides import EphemeridesComputer, Position | |||
from .exceptions import UnavailableFeatureError | |||
def main(): | |||
@@ -52,13 +54,38 @@ def main(): | |||
else: | |||
position = Position(args.latitude, args.longitude) | |||
ephemeris = EphemeridesComputer(position) | |||
ephemerides = ephemeris.compute_ephemerides(year, month, day) | |||
if args.format == 'pdf': | |||
print(_('Save the planet and paper!\n' | |||
'Consider printing you PDF document only if really necessary, and use the other side of the sheet.')) | |||
if position is None: | |||
print() | |||
print(colored(_("PDF output will not contain the ephemerides, because you didn't provide the observation " | |||
"coordinate."), 'yellow')) | |||
events_list = events.search_events(compute_date) | |||
try: | |||
ephemeris = EphemeridesComputer(position) | |||
ephemerides = ephemeris.compute_ephemerides(year, month, day) | |||
dump = output_formats[args.format](ephemerides, events_list, compute_date, args.colors) | |||
print(dump.to_string()) | |||
events_list = events.search_events(compute_date) | |||
selected_dumper = output_formats[args.format](ephemerides, events_list, compute_date, args.colors) | |||
output = selected_dumper.to_string() | |||
except UnavailableFeatureError as error: | |||
print(colored(error.msg, 'red')) | |||
return 2 | |||
if args.output is not None: | |||
try: | |||
with open(args.output, 'wb') as output_file: | |||
output_file.write(output) | |||
except OSError as error: | |||
print(_('Could not save the output in "{path}": {error}').format(path=args.output, | |||
error=error.strerror)) | |||
elif not selected_dumper.is_file_output_needed(): | |||
print(output) | |||
else: | |||
print(_('Selected output format needs an output file (--output).')) | |||
return 1 | |||
return 0 | |||
@@ -66,7 +93,8 @@ def main(): | |||
def get_dumpers() -> {str: dumper.Dumper}: | |||
return { | |||
'text': dumper.TextDumper, | |||
'json': dumper.JsonDumper | |||
'json': dumper.JsonDumper, | |||
'pdf': dumper.PdfDumper | |||
} | |||
@@ -123,5 +151,8 @@ def get_args(output_formats: [str]): | |||
' Defaults to {default_year} (the current year).').format(default_year=today.year)) | |||
parser.add_argument('--no-colors', dest='colors', action='store_false', | |||
help=_('Disable the colors in the console.')) | |||
parser.add_argument('--output', '-o', type=str, default=None, | |||
help=_('A file to export the output to. If not given, the standard output is used. ' | |||
'This argument is needed for PDF format.')) | |||
return parser.parse_args() |
@@ -2,7 +2,7 @@ import unittest | |||
from datetime import date | |||
from kosmorrolib.data import AsterEphemerides, Planet, MoonPhase, Event | |||
from kosmorrolib.dumper import JsonDumper, TextDumper | |||
from kosmorrolib.dumper import JsonDumper, TextDumper, _LatexDumper | |||
from kosmorrolib.core import get_timescale | |||
@@ -39,8 +39,7 @@ class DumperTestCase(unittest.TestCase): | |||
' }\n' | |||
' ]\n' | |||
'}', JsonDumper(data, | |||
[Event('OPPOSITION', [Planet('Mars', 'MARS')], | |||
get_timescale().utc(2018, 7, 27, 5, 12))] | |||
self._get_events() | |||
).to_string()) | |||
def test_text_dumper_without_events(self): | |||
@@ -65,10 +64,7 @@ class DumperTestCase(unittest.TestCase): | |||
'Expected events:\n' | |||
'05:12 Mars is in opposition\n\n' | |||
'Note: All the hours are given in UTC.', | |||
TextDumper(ephemerides, [Event('OPPOSITION', | |||
[Planet('Mars', 'MARS')], | |||
get_timescale().utc(2018, 7, 27, 5, 12)) | |||
], date=date(2019, 10, 14), with_colors=False).to_string()) | |||
TextDumper(ephemerides, self._get_events(), date=date(2019, 10, 14), with_colors=False).to_string()) | |||
def test_text_dumper_without_ephemerides_and_with_events(self): | |||
ephemerides = self._get_data(False) | |||
@@ -78,18 +74,59 @@ class DumperTestCase(unittest.TestCase): | |||
'Expected events:\n' | |||
'05:12 Mars is in opposition\n\n' | |||
'Note: All the hours are given in UTC.', | |||
TextDumper(ephemerides, [Event('OPPOSITION', | |||
[Planet('Mars', 'MARS')], | |||
get_timescale().utc(2018, 7, 27, 5, 12)) | |||
], date=date(2019, 10, 14), with_colors=False).to_string()) | |||
TextDumper(ephemerides, self._get_events(), date=date(2019, 10, 14), with_colors=False).to_string()) | |||
def test_latex_dumper(self): | |||
latex = _LatexDumper(self._get_data(), self._get_events(), date=date(2019, 10, 14)).to_string() | |||
self.assertRegex(latex, 'Monday October 14, 2019') | |||
self.assertRegex(latex, 'Full Moon') | |||
self.assertRegex(latex, r'\\section{\\sffamily Expected events}') | |||
self.assertRegex(latex, r'\\section{\\sffamily Ephemerides of the day}') | |||
self.assertRegex(latex, r'\\object\{Mars\}\{-\}\{-\}\{-\}') | |||
self.assertRegex(latex, r'\\event\{05:12\}\{Mars is in opposition\}') | |||
latex = _LatexDumper(self._get_data(aster_rise_set=True), | |||
self._get_events(), date=date(2019, 10, 14)).to_string() | |||
self.assertRegex(latex, r'\\object\{Mars\}\{08:00\}\{13:00\}\{23:00\}') | |||
def test_latex_dumper_without_ephemerides(self): | |||
latex = _LatexDumper(self._get_data(False), self._get_events(), date=date(2019, 10, 14)).to_string() | |||
self.assertRegex(latex, 'Monday October 14, 2019') | |||
self.assertRegex(latex, 'Full Moon') | |||
self.assertRegex(latex, r'\\section{\\sffamily Expected events}') | |||
self.assertRegex(latex, r'\\event\{05:12\}\{Mars is in opposition\}') | |||
self.assertNotRegex(latex, r'\\object\{Mars\}\{-\}\{-\}\{-\}') | |||
self.assertNotRegex(latex, r'\\section{\\sffamily Ephemerides of the day}') | |||
def test_latex_dumper_without_events(self): | |||
latex = _LatexDumper(self._get_data(), [], date=date(2019, 10, 14)).to_string() | |||
self.assertRegex(latex, 'Monday October 14, 2019') | |||
self.assertRegex(latex, 'Full Moon') | |||
self.assertRegex(latex, r'\\object\{Mars\}\{-\}\{-\}\{-\}') | |||
self.assertRegex(latex, r'\\section{\\sffamily Ephemerides of the day}') | |||
self.assertNotRegex(latex, r'\\section{\\sffamily Expected events}') | |||
@staticmethod | |||
def _get_data(has_ephemerides: bool = True): | |||
def _get_data(has_ephemerides: bool = True, aster_rise_set=False): | |||
rise_time = get_timescale().utc(2019, 10, 14, 8) if aster_rise_set else None | |||
culmination_time = get_timescale().utc(2019, 10, 14, 13) if aster_rise_set else None | |||
set_time = get_timescale().utc(2019, 10, 14, 23) if aster_rise_set else None | |||
return { | |||
'moon_phase': MoonPhase('FULL_MOON', get_timescale().utc(2019, 10, 14), get_timescale().utc(2019, 10, 21)), | |||
'details': [Planet('Mars', 'MARS', AsterEphemerides(None, None, None))] if has_ephemerides else [] | |||
'details': [Planet('Mars', 'MARS', | |||
AsterEphemerides(rise_time, culmination_time, set_time))] if has_ephemerides else [] | |||
} | |||
@staticmethod | |||
def _get_events(): | |||
return [Event('OPPOSITION', | |||
[Planet('Mars', 'MARS')], | |||
get_timescale().utc(2018, 7, 27, 5, 12)) | |||
] | |||
if __name__ == '__main__': | |||
unittest.main() |