| @@ -25,6 +25,7 @@ jobs: | |||
| - '3.10' | |||
| - '3.11' | |||
| - '3.12' | |||
| - '3.13' | |||
| name: Python ${{ matrix.python-version }} on ${{ matrix.os }} | |||
| steps: | |||
| @@ -8,29 +8,30 @@ msgid "" | |||
| msgstr "" | |||
| "Project-Id-Version: PROJECT VERSION\n" | |||
| "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" | |||
| "POT-Creation-Date: 2025-03-16 11:24+0100\n" | |||
| "POT-Creation-Date: 2025-03-16 11:59+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.15.0\n" | |||
| "Generated-By: Babel 2.17.0\n" | |||
| #: kosmorro/__main__.py:61 | |||
| #: kosmorro/__main__.py:62 | |||
| msgid "" | |||
| "Save the planet and paper!\n" | |||
| "Consider printing your PDF document only if really necessary, and use the" | |||
| " other side of the sheet." | |||
| msgstr "" | |||
| #: kosmorro/__main__.py:70 | |||
| #: kosmorro/__main__.py:71 | |||
| msgid "" | |||
| "PDF output will not contain the ephemerides, because you didn't provide " | |||
| "the observation coordinates." | |||
| msgstr "" | |||
| #: kosmorro/__main__.py:115 | |||
| #, python-brace-format | |||
| msgid "The file could not be saved in \"{path}\": {error}" | |||
| msgstr "" | |||
| @@ -38,21 +39,23 @@ msgstr "" | |||
| msgid "Please provide a file path to export in this format (--output)." | |||
| msgstr "" | |||
| #: kosmorro/__main__.py:162 | |||
| #: kosmorro/__main__.py:163 | |||
| #, python-brace-format | |||
| msgid "Moon phase can only be computed between {min_date} and {max_date}" | |||
| msgstr "" | |||
| #: kosmorro/__main__.py:201 | |||
| #: kosmorro/__main__.py:202 | |||
| #, python-brace-format | |||
| msgid "Running on Python {python_version} with Kosmorrolib v{kosmorrolib_version}" | |||
| msgstr "" | |||
| #: kosmorro/__main__.py:214 | |||
| #: kosmorro/__main__.py:215 | |||
| msgid "" | |||
| "Compute the ephemerides and the events for a given date and a given " | |||
| "position on Earth." | |||
| msgstr "" | |||
| #: kosmorro/__main__.py:217 | |||
| #: kosmorro/__main__.py:218 | |||
| msgid "" | |||
| "By default, only the events will be computed for today.\n" | |||
| "To compute also the ephemerides, latitude and longitude arguments are " | |||
| @@ -67,26 +70,26 @@ msgstr "" | |||
| msgid "The format to output the information to" | |||
| msgstr "" | |||
| #: kosmorro/__main__.py:245 | |||
| #: kosmorro/__main__.py:246 | |||
| msgid "" | |||
| "The observer's latitude on Earth. Can also be set in the " | |||
| "KOSMORRO_LATITUDE environment variable." | |||
| msgstr "" | |||
| #: kosmorro/__main__.py:255 | |||
| #: kosmorro/__main__.py:256 | |||
| msgid "" | |||
| "The observer's longitude on Earth. Can also be set in the " | |||
| "KOSMORRO_LONGITUDE environment variable." | |||
| msgstr "" | |||
| #: kosmorro/__main__.py:265 | |||
| #: kosmorro/__main__.py:266 | |||
| msgid "" | |||
| "The date for which the ephemerides must be calculated. Can be in the " | |||
| "YYYY-MM-DD format or an interval in the \"[+-]YyMmDd\" format (with Y, M," | |||
| " and D numbers). Defaults to current date." | |||
| msgstr "" | |||
| #: kosmorro/__main__.py:276 | |||
| #: kosmorro/__main__.py:277 | |||
| 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." | |||
| @@ -96,13 +99,13 @@ msgstr "" | |||
| msgid "Disable the colors in the console." | |||
| msgstr "" | |||
| #: kosmorro/__main__.py:292 | |||
| #: kosmorro/__main__.py:293 | |||
| msgid "" | |||
| "A file to export the output to. If not given, the standard output is " | |||
| "used. This argument is needed for PDF format." | |||
| msgstr "" | |||
| #: kosmorro/__main__.py:301 | |||
| #: kosmorro/__main__.py:302 | |||
| msgid "" | |||
| "Do not generate a graph to represent the rise and set times in the PDF " | |||
| "format." | |||
| @@ -113,10 +116,12 @@ msgid "Show debugging messages" | |||
| msgstr "" | |||
| #: kosmorro/date.py:17 | |||
| #, python-brace-format | |||
| msgid "The date {date} is not valid: {error}" | |||
| msgstr "" | |||
| #: kosmorro/date.py:39 | |||
| #: kosmorro/date.py:40 | |||
| #, python-brace-format | |||
| msgid "" | |||
| "The date {date} does not match the required YYYY-MM-DD format or the " | |||
| "offset format." | |||
| @@ -130,7 +135,8 @@ msgstr "" | |||
| msgid "Note: All the hours are given in UTC." | |||
| msgstr "" | |||
| #: kosmorro/dumper.py:151 | |||
| #: kosmorro/dumper.py:152 | |||
| #, python-brace-format | |||
| msgid "Note: All the hours are given in the UTC{offset} timezone." | |||
| msgstr "" | |||
| @@ -158,7 +164,8 @@ msgstr "" | |||
| msgid "Moon phase:" | |||
| msgstr "" | |||
| #: kosmorro/dumper.py:242 | |||
| #: kosmorro/dumper.py:243 | |||
| #, python-brace-format | |||
| msgid "{next_moon_phase} on {next_moon_phase_date} at {next_moon_phase_time}" | |||
| msgstr "" | |||
| @@ -166,14 +173,15 @@ msgstr "" | |||
| msgid "Overview of your sky" | |||
| msgstr "" | |||
| #: kosmorro/dumper.py:314 | |||
| #: kosmorro/dumper.py:315 | |||
| #, python-brace-format | |||
| 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 "" | |||
| #: kosmorro/dumper.py:324 | |||
| #: kosmorro/dumper.py:325 | |||
| msgid "" | |||
| "Don't forget to check the weather forecast before you go out with your " | |||
| "equipment." | |||
| @@ -191,7 +199,7 @@ msgstr "" | |||
| msgid "Expected events" | |||
| msgstr "" | |||
| #: kosmorro/dumper.py:487 | |||
| #: kosmorro/dumper.py:488 | |||
| msgid "" | |||
| "Building PDF was not possible, because some dependencies are not " | |||
| "installed.\n" | |||
| @@ -199,7 +207,7 @@ msgid "" | |||
| "pdf/ for more information." | |||
| msgstr "" | |||
| #: kosmorro/dumper.py:540 | |||
| #: kosmorro/dumper.py:541 | |||
| #, python-format | |||
| msgid "" | |||
| "An error occurred during the compilation of the PDF.\n" | |||
| @@ -207,7 +215,8 @@ msgid "" | |||
| "share the content of the log file at /tmp/kosmorro-%s.log" | |||
| msgstr "" | |||
| #: kosmorro/exceptions.py:35 | |||
| #: kosmorro/exceptions.py:36 | |||
| #, python-brace-format | |||
| msgid "The date must be between {minimum_date} and {maximum_date}" | |||
| msgstr "" | |||
| @@ -318,18 +327,22 @@ msgid "Pluto" | |||
| msgstr "" | |||
| #: kosmorro/i18n/utils.py:27 | |||
| #, python-brace-format | |||
| msgid "{day_of_week} {month} {day_number}, {year}" | |||
| msgstr "" | |||
| #: kosmorro/i18n/utils.py:30 | |||
| #, python-brace-format | |||
| msgid "{month} {day_number}, {hours}:{minutes}" | |||
| msgstr "" | |||
| #: kosmorro/i18n/utils.py:33 | |||
| #, python-brace-format | |||
| msgid "{month} {day_number}, {year}" | |||
| msgstr "" | |||
| #: kosmorro/i18n/utils.py:36 | |||
| #, python-brace-format | |||
| msgid "{hours}:{minutes}" | |||
| msgstr "" | |||
| @@ -33,6 +33,7 @@ def test_run_without_argument(): | |||
| def test_help_message(): | |||
| for arg in ["--help", "-h"]: | |||
| result = execute(KOSMORRO + [arg]) | |||
| assert result.is_successful() | |||
| # Options header has changed from "optional arguments" to "options" in Python 3.10. | |||
| @@ -40,9 +41,10 @@ def test_help_message(): | |||
| "optional arguments" if python_version.minor < 10 else "options" | |||
| ) | |||
| assert ( | |||
| result.stdout | |||
| == """usage: kosmorro [-h] [--version] [--format {text,json,pdf}] | |||
| if python_version.major == 3 and python_version.minor < 13: | |||
| assert ( | |||
| result.stdout | |||
| == """usage: kosmorro [-h] [--version] [--format {text,json,pdf}] | |||
| [--latitude LATITUDE] [--longitude LONGITUDE] [--date DATE] | |||
| [--timezone TIMEZONE] [--no-colors] [--output OUTPUT] | |||
| [--no-graph] [--debug] | |||
| @@ -81,5 +83,47 @@ on Earth. | |||
| By default, only the events will be computed for today. To compute also the | |||
| ephemerides, latitude and longitude arguments are needed. | |||
| """ | |||
| % options_header | |||
| ) | |||
| % options_header | |||
| ) | |||
| else: | |||
| assert ( | |||
| result.stdout | |||
| == """usage: kosmorro [-h] [--version] [--format {text,json,pdf}] | |||
| [--latitude LATITUDE] [--longitude LONGITUDE] [--date DATE] | |||
| [--timezone TIMEZONE] [--no-colors] [--output OUTPUT] | |||
| [--no-graph] [--debug] | |||
| Compute the ephemerides and the events for a given date and a given position | |||
| on Earth. | |||
| options: | |||
| -h, --help show this help message and exit | |||
| --version, -v Show the program version | |||
| --format, -f {text,json,pdf} | |||
| The format to output the information to | |||
| --latitude, -lat LATITUDE | |||
| The observer's latitude on Earth. Can also be set in | |||
| the KOSMORRO_LATITUDE environment variable. | |||
| --longitude, -lon LONGITUDE | |||
| The observer's longitude on Earth. Can also be set in | |||
| the KOSMORRO_LONGITUDE environment variable. | |||
| --date, -d DATE The date for which the ephemerides must be calculated. | |||
| Can be in the YYYY-MM-DD format or an interval in the | |||
| "[+-]YyMmDd" format (with Y, M, and D numbers). | |||
| Defaults to current date. | |||
| --timezone, -t TIMEZONE | |||
| 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. | |||
| --no-colors Disable the colors in the console. | |||
| --output, -o OUTPUT A file to export the output to. If not given, the | |||
| standard output is used. This argument is needed for | |||
| PDF format. | |||
| --no-graph Do not generate a graph to represent the rise and set | |||
| times in the PDF format. | |||
| --debug Show debugging messages | |||
| By default, only the events will be computed for today. To compute also the | |||
| ephemerides, latitude and longitude arguments are needed. | |||
| """ | |||
| ) | |||
| @@ -0,0 +1,181 @@ | |||
| \documentclass[a4paper,12pt]{article} | |||
| \usepackage[utf8]{inputenc} | |||
| \usepackage[T1]{fontenc} | |||
| \usepackage[margin=25mm]{geometry} | |||
| \usepackage{graphicx} | |||
| \usepackage{hyperref} | |||
| \usepackage{xcolor} | |||
| \usepackage{fp} | |||
| % Command showing the Moon phase | |||
| \newcommand{\moonphase}[2]{ | |||
| \begin{center} | |||
| \begin{minipage}{2cm} | |||
| \includegraphics[width=\linewidth]{#1} | |||
| \end{minipage} | |||
| \hspace{5mm} | |||
| \begin{minipage}{7cm} | |||
| \textbf{\currentmoonphasetitle}\\#2 | |||
| \end{minipage} | |||
| \end{center} | |||
| } | |||
| % Environment for the ephemerides, when --no-graph is given on the command line | |||
| \newenvironment{ephemerides}{ | |||
| \begin{table}[h] | |||
| \centering | |||
| \begin{tabular}{lccc} | |||
| \textbf{\ephemeridesobjecttitle} & | |||
| \textbf{\ephemeridesrisetimetitle} & | |||
| \textbf{\ephemeridesculminationtimetitle} & | |||
| \textbf{\ephemeridessettimetitle}\\ | |||
| \hline | |||
| }{ | |||
| \end{tabular} | |||
| \end{table} | |||
| } | |||
| % Command adding an object to the ephemerides environment | |||
| \newcommand{\object}[4]{ | |||
| \hline | |||
| \textbf{#1} & {#2} & {#3} & {#4}\\ | |||
| } | |||
| % Environment to insert the ephemerides graph | |||
| \newenvironment{graphephemerides}{\setlength{\unitlength}{0.02\linewidth} | |||
| \begin{picture}(20,20) | |||
| % Axes | |||
| \put(0,-2){\vector(1,0){50}} | |||
| \multiput(0,-2)(2,0){24}{ | |||
| \line(0,-1){0.25} | |||
| } | |||
| \newcounter{hour} | |||
| \multiput(-0.25,-3.5)(4,0){12}{ | |||
| \sffamily\footnotesize | |||
| \arabic{hour}\stepcounter{hour}\stepcounter{hour} | |||
| } | |||
| \put(49,-3.5){\sffamily\footnotesize \hourslabel} | |||
| % Graduation | |||
| \put(50,-0.5){\sffamily\footnotesize \Pluto} | |||
| \put(50,1.5){\sffamily\footnotesize \Neptune} | |||
| \put(50,3.5){\sffamily\footnotesize \Uranus} | |||
| \put(50,5.5){\sffamily\footnotesize \Saturn} | |||
| \put(50,7.5){\sffamily\footnotesize \Jupiter} | |||
| \put(50,9.5){\sffamily\footnotesize \Mars} | |||
| \put(50,11.5){\sffamily\footnotesize \Venus} | |||
| \put(50,13.5){\sffamily\footnotesize \Mercury} | |||
| \put(50,15.5){\sffamily\footnotesize \Moon} | |||
| \put(50,17.5){\sffamily\footnotesize \Sun} | |||
| \multiput(0,0)(0,2){10}{ | |||
| \color{gray}\line(1,0){48} | |||
| } | |||
| \linethickness{1.5mm} | |||
| }{ | |||
| \end{picture} | |||
| \vspace{1cm} | |||
| } | |||
| % Command to add an object to the graph | |||
| \newcommand{\graphobject}[8]{% | |||
| % #1: Y coordinate component | |||
| % #2: Color | |||
| % #3: Hour rise time | |||
| % #4: Minute rise time | |||
| % #5: Hour set time | |||
| % #6: Minute set time | |||
| % #7: Human-readable rise time | |||
| % #8: Human-readable set time | |||
| \FPeval{\start}{#3*2+(#4/60)*2}% | |||
| \FPeval{\length}{#5*2+(#6/60)*2 - \start}% | |||
| \FPeval{\starttext}{\start+0.7}% | |||
| \FPeval{\endtext}{\start+\length-3.25}% | |||
| {\color{#2}% | |||
| \put(\start,#1){% | |||
| \line(1, 0){\length}% | |||
| }}% | |||
| \put(\starttext,#1.5){\sffamily\footnotesize #7}% | |||
| \put(\endtext,#1.5){\sffamily\footnotesize #8}% | |||
| } | |||
| \newcommand{\event}[2]{ | |||
| \textbf{#1} & {#2}\\ | |||
| } | |||
| \newenvironment{events}{ | |||
| \begin{table}[h] | |||
| \begin{tabular}{ll} | |||
| }{ | |||
| \end{tabular} | |||
| \end{table} | |||
| } | |||
| % Commands to handle the translated strings | |||
| \newcommand{\currentmoonphasetitle}{Moon phase:} | |||
| \newcommand{\ephemeridesobjecttitle}{Object} | |||
| \newcommand{\ephemeridesrisetimetitle}{Rise time} | |||
| \newcommand{\ephemeridesculminationtimetitle}{Culmination time} | |||
| \newcommand{\ephemeridessettimetitle}{Set time} | |||
| \newcommand{\hourslabel}{hours} | |||
| \newcommand{\Pluto}{Pluto} | |||
| \newcommand{\Neptune}{Neptune} | |||
| \newcommand{\Uranus}{Uranus} | |||
| \newcommand{\Saturn}{Saturn} | |||
| \newcommand{\Jupiter}{Jupiter} | |||
| \newcommand{\Mars}{Mars} | |||
| \newcommand{\Venus}{Venus} | |||
| \newcommand{\Mercury}{Mercury} | |||
| \newcommand{\Moon}{Moon} | |||
| \newcommand{\Sun}{Sun} | |||
| % Fix Unicode issues | |||
| \DeclareUnicodeCharacter{202F}{~} | |||
| \DeclareUnicodeCharacter{00B0}{$^\circ$} | |||
| \hypersetup{pdfinfo={% | |||
| Title={Overview of your sky}, | |||
| Creator={Kosmorro v__APP_VERSION__} | |||
| }} | |||
| \pagenumbering{gobble} | |||
| \setcounter{secnumdepth}{0} | |||
| \title{\sffamily\href{http://kosmorro.space}{\includegraphics[width=5cm]{__PROJECT_PATH__/assets/png/kosmorro-logo.png}}\\Overview of your sky} | |||
| \date{\vspace{-11mm}\sffamily Monday, January 27, 2020} | |||
| \begin{document} | |||
| \maketitle | |||
| This document summarizes the ephemerides and the events of Monday, January 27, 2020. It aims to help you to prepare your observation session. All the hours are given in UTC. | |||
| Don't forget to check the weather forecast before you go out with your equipment. | |||
| \moonphase{__PROJECT_PATH__/assets/moonphases/png/new-moon.png}{New Moon} | |||
| %%% BEGIN-EPHEMERIDES-SECTION | |||
| \section{\sffamily Ephemerides of the day} | |||
| \begin{graphephemerides}% | |||
| \graphobject{18}{gray}{7}{31}{16}{30}{7:31 AM}{4:30 PM}\graphobject{16}{gray}{9}{6}{19}{13}{9:06 AM}{7:13 PM}\graphobject{14}{gray}{8}{10}{17}{28}{8:10 AM}{5:28 PM}\graphobject{12}{gray}{9}{1}{20}{10}{9:01 AM}{8:10 PM}\graphobject{10}{gray}{4}{19}{12}{28}{4:19 AM}{12:28 PM}\graphobject{8}{gray}{6}{15}{14}{21}{6:15 AM}{2:21 PM}\graphobject{6}{gray}{6}{56}{15}{22}{6:56 AM}{3:22 PM}\graphobject{4}{gray}{0}{0}{0}{33}{}{12:33 AM}\graphobject{4}{gray}{10}{21}{24}{0}{10:21 AM}{}\graphobject{2}{gray}{9}{1}{20}{10}{9:01 AM}{8:10 PM}\graphobject{0}{gray}{6}{57}{15}{11}{6:57 AM}{3:11 PM} | |||
| \end{graphephemerides} | |||
| %%% END-EPHEMERIDES-SECTION | |||
| %%% BEGIN-EVENTS-SECTION | |||
| \section{\sffamily Expected events} | |||
| \begin{events} | |||
| \event{8:00 PM}{Venus and Neptune are in conjunction} | |||
| \end{events} | |||
| %%% END-EVENTS-SECTION | |||
| \end{document} | |||