diff --git a/CHANGELOG.md b/CHANGELOG.md index 47425e3..cdec36b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,14 @@ +# [v0.6.1](https://github.com/Deuchnord/kosmorro/compare/v0.6.0...v0.6.1) (2020-03-08) + + +### Bug Fixes + +* **events:** prevent false detection of conjunctions ([c7bc757](https://github.com/Deuchnord/kosmorro/commit/c7bc7574df1b0469aad1226887495ce013b615f1)) +* handle KeyboardInterrupt exception ([a7cb46e](https://github.com/Deuchnord/kosmorro/commit/a7cb46e857e2ca8e55c61fba522b911fcabdc86c)) +* remove the "timezone" word in the PDF output’s introduction ([5ec56c4](https://github.com/Deuchnord/kosmorro/commit/5ec56c40b1ad80c81a7f5c4e1f63d099403f0a5d)) + + + # [v0.6.0](https://github.com/Deuchnord/kosmorro/compare/v0.5.2...v0.6.0) (2020-03-01) diff --git a/kosmorro b/kosmorro index 256126f..f0b6e77 100644 --- a/kosmorro +++ b/kosmorro @@ -23,4 +23,7 @@ from kosmorrolib.main import main locale.setlocale(locale.LC_ALL, '') if __name__ == '__main__': - sys.exit(main()) + try: + sys.exit(main()) + except KeyboardInterrupt: + sys.exit(1) diff --git a/kosmorrolib/dumper.py b/kosmorrolib/dumper.py index 7a584cd..241df35 100644 --- a/kosmorrolib/dumper.py +++ b/kosmorrolib/dumper.py @@ -263,7 +263,7 @@ class _LatexDumper(Dumper): "It aims to help you to prepare your observation session. " "All the hours are given in {timezone}.").format( date=self.get_date_as_string(), - timezone='UTC+%d timezone' % self.timezone if self.timezone != 0 else 'UTC' + timezone='UTC+%d' % self.timezone if self.timezone != 0 else 'UTC' ), _("Don't forget to check the weather forecast before you go out with your material.") ])) \ diff --git a/kosmorrolib/events.py b/kosmorrolib/events.py index 352e3b0..41e0e2d 100644 --- a/kosmorrolib/events.py +++ b/kosmorrolib/events.py @@ -20,6 +20,7 @@ from datetime import date as date_type from skyfield.timelib import Time from skyfield.searchlib import find_discrete, find_maxima +from numpy import pi from .data import Event, Planet, ASTERS from .core import get_timescale, get_skf_objects, flatten_list @@ -32,15 +33,12 @@ def _search_conjunction(start_time: Time, end_time: Time) -> [Event]: def is_in_conjunction(time: Time): earth_pos = earth.at(time) - aster1_pos = earth_pos.observe(get_skf_objects()[aster1.skyfield_name]).apparent() - aster2_pos = earth_pos.observe(get_skf_objects()[aster2.skyfield_name]).apparent() + _, aster1_lon, _ = earth_pos.observe(aster1.get_skyfield_object()).apparent().ecliptic_latlon() + _, aster2_lon, _ = earth_pos.observe(aster2.get_skyfield_object()).apparent().ecliptic_latlon() - aster_1_right_ascension, _, _ = aster1_pos.radec() - aster_2_right_ascension, _, _ = aster2_pos.radec() + return ((aster1_lon.radians - aster2_lon.radians) / pi % 2.0).astype('int8') == 0 - return aster_1_right_ascension.hours - aster_2_right_ascension.hours < 0 - - is_in_conjunction.rough_period = 1.0 + is_in_conjunction.rough_period = 60.0 computed = [] conjunctions = [] @@ -54,10 +52,11 @@ def _search_conjunction(start_time: Time, end_time: Time) -> [Event]: if not isinstance(aster2, Planet) or aster2 == aster1 or aster2 in computed: continue - times, _ = find_discrete(start_time, end_time, is_in_conjunction) + times, is_conjs = find_discrete(start_time, end_time, is_in_conjunction) - for time in times: - conjunctions.append(Event('CONJUNCTION', [aster1, aster2], time.utc_datetime())) + for i, time in enumerate(times): + if is_conjs[i]: + conjunctions.append(Event('CONJUNCTION', [aster1, aster2], time.utc_datetime())) computed.append(aster1) diff --git a/kosmorrolib/locales/messages.pot b/kosmorrolib/locales/messages.pot index c01684b..4a1cd62 100644 --- a/kosmorrolib/locales/messages.pot +++ b/kosmorrolib/locales/messages.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: kosmorro 0.6.0\n" +"Project-Id-Version: kosmorro 0.6.1\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2020-03-04 08:05+0100\n" +"POT-Creation-Date: 2020-03-08 10:46+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/kosmorrolib/version.py b/kosmorrolib/version.py index d5efe47..85ed0b3 100644 --- a/kosmorrolib/version.py +++ b/kosmorrolib/version.py @@ -16,4 +16,4 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -VERSION = '0.6.0' +VERSION = '0.6.1' diff --git a/test/events.py b/test/events.py index 0e1a1dd..1de895e 100644 --- a/test/events.py +++ b/test/events.py @@ -29,11 +29,16 @@ class MyTestCase(unittest.TestCase): self.assertEqual('Mars is in opposition', o[0].get_description()) def test_find_conjunctions(self): - # Test case: Mars opposition - # Source of the information: https://promenade.imcce.fr/en/pages6/887.html#mar - c1 = (events.search_events(date(2020, 1, 2)), [(['MERCURY', 'JUPITER BARYCENTER'], '^2020-01-02T15:20')]) - c2 = (events.search_events(date(2020, 1, 12)), [(['MERCURY', 'SATURN BARYCENTER'], '^2020-01-12T04:34'), - (['MERCURY', 'PLUTO BARYCENTER'], '^2020-01-12T06:56')]) + MERCURY = 'MERCURY' + JUPITER = 'JUPITER BARYCENTER' + SATURN = 'SATURN BARYCENTER' + PLUTO = 'PLUTO BARYCENTER' + + c1 = (events.search_events(date(2020, 1, 2)), [([MERCURY, JUPITER], '^2020-01-02T16:41')]) + c2 = (events.search_events(date(2020, 1, 12)), [([MERCURY, SATURN], '^2020-01-12T09:51'), + ([MERCURY, PLUTO], '^2020-01-12T10:13'), + ([SATURN, PLUTO], '^2020-01-12T16:57')]) + c3 = (events.search_events(date(2020, 2, 7)), []) for (c, expected_dates) in [c1, c2]: self.assertEqual(len(expected_dates), len(c),