diff options
| author | Terry Truong <terry06890@gmail.com> | 2022-10-04 22:40:39 +1100 |
|---|---|---|
| committer | Terry Truong <terry06890@gmail.com> | 2022-10-04 22:40:39 +1100 |
| commit | 50fbff73a288f08b7027648ed4d50b2c02061f4c (patch) | |
| tree | f67667a914dcc77ddd5a8074db26b910fdc56396 /backend | |
| parent | 243deedb6099c3a88ca44a7e26e72bceb65f562e (diff) | |
Add correction for jdcal treating year 0 as 1 BCE
Diffstat (limited to 'backend')
| -rwxr-xr-x | backend/hist_data/gen_events_data.py | 8 | ||||
| -rw-r--r-- | backend/tests/test_gen_events_data.py | 6 |
2 files changed, 8 insertions, 6 deletions
diff --git a/backend/hist_data/gen_events_data.py b/backend/hist_data/gen_events_data.py index 1f990d0..d1038ce 100755 --- a/backend/hist_data/gen_events_data.py +++ b/backend/hist_data/gen_events_data.py @@ -16,7 +16,7 @@ Value objects have a 'type' and 'value' field. Info about objects with type 'time' can be found at: https://www.wikidata.org/wiki/Help:Dates An example: {"value":{ - "time":"+1830-10-04T00:00:00Z", # The year is always signed and padded to 4-16 digits + "time":"+1830-10-04T00:00:00Z", # The year is always signed and padded to 4-16 digits (-0001 means 1 BCE) "timezone":0, # Unused "before":0, # Unused "after":0, # Unused @@ -379,9 +379,11 @@ def getEventTime(dataVal) -> tuple[int, int | None, int] | None: startUpper: int | None = None timeFmt: int if precision in [10, 11]: # 'month' or 'day' precision - if year < -4712: # If before 4713 BCE (start of valid julian date period) + if year < -4713: # If before 4713 BCE (start of valid julian date period) print(f'WARNING: Skipping sub-year-precision date before 4713 BCE: {json.dumps(dataVal)}') return None + if year < 0: + year += 1 # Adjust for 'jdcal' treating year 0 as 1 BCE, year -1 as 2 BCE, etc day = max(day, 1) # With month-precision, entry may have a 'day' of 0 if calendarmodel == 'http://www.wikidata.org/entity/Q1985727': # 'proleptic gregorian calendar' start = jdPairToJd(gcal2jd(year, month, day)) @@ -408,7 +410,7 @@ def getEventTime(dataVal) -> tuple[int, int | None, int] | None: return start, startUpper, timeFmt def jdPairToJd(jdPair: tuple[int, int]) -> int: """ Converts a julian-date-representing value from jdcal into an int """ - return math.floor(sum(jdPair)) + return math.ceil(sum(jdPair)) # For using multiple processes def readDumpChunkOneParam(params: tuple[int, str, str, str, int, int]) -> str: diff --git a/backend/tests/test_gen_events_data.py b/backend/tests/test_gen_events_data.py index 37b24a3..0f298ca 100644 --- a/backend/tests/test_gen_events_data.py +++ b/backend/tests/test_gen_events_data.py @@ -149,12 +149,12 @@ class TestGenData(unittest.TestCase): }, ] self.expectedRows = { - (1, 'event one', 2433616, 2433646, None, None, 2, 'event'), - (2, 'Human One', 2452593, None, 2455368, None, 3, 'human'), + (1, 'event one', 2433617, 2433647, None, None, 2, 'event'), + (2, 'Human One', 2452594, None, 2455369, None, 3, 'human'), (3, 'country one', -1001, None, -99, None, 0, 'country'), (4, 'country two', -9000, -7000, None, None, 0, 'country'), (5, 'discovery one', 1, 1000, None, None, 0, 'discovery'), - (6, 'media one', 1713965, None, 1713996, None, 1, 'media'), + (6, 'media one', 1714331, None, 1714362, None, 1, 'media'), (7, 'media two', -2199, -2100, None, None, 0, 'media'), } def test_wikiItems(self): |
