Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions data/1889/mot-1889--ak--00130.xml
Original file line number Diff line number Diff line change
Expand Up @@ -88,9 +88,11 @@
angående vilkoren för tillverkning af bränvin af den 2 juni 1882
stadgats, eller 3 kronor 75 öre för. hvarje helt tusental liter:
</p>
<p xml:id="i-5Wqwr7D8GykcUSwcQdXMjJ">
Stockholm den: 24 januari 1889. C. J. Jakobson. Häri instämmer
Nils Jönsson.
<p xml:id="i-5Wqwr7D8GykcUSwcQdXMjJ" type="date">
Stockholm den: 24 januari 1889.
</p>
<p type="signatureBlock" id="i-Ek3zpkHdW2RnYvAUGLMQ4S">
C. J. Jakobson. Häri instämmer Nils Jönsson.
</p>
<p xml:id="i-KWob5uns5e2BR3LRBu1LiP">
N:o 131
Expand Down
8 changes: 5 additions & 3 deletions data/1889/mot-1889--ak--00131.xml
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,11 @@
angående vilkoren för tillverkning af bränvin af den 2 juni 1882
stadgats, eller 3 kronor 75 öre för. hvarje helt tusental liter:
</p>
<p xml:id="i-4SRGMKeQHyzWFxjZSLdGuX">
Stockholm den: 24 januari 1889. C. J. Jakobson. Häri instämmer
Nils Jönsson.
<p xml:id="i-4SRGMKeQHyzWFxjZSLdGuX" type="date">
Stockholm den: 24 januari 1889.
</p>
<p type="signatureBlock" id="i-Nw6hVfAbpLUtXx7SjBEjbL">
C. J. Jakobson. Häri instämmer Nils Jönsson.
</p>
<p xml:id="i-51JKHHrQ12SiHx4awRmZH8">
N:o 131
Expand Down
7 changes: 5 additions & 2 deletions data/1892/mot-1892--ak--00157.xml
Original file line number Diff line number Diff line change
Expand Up @@ -90,8 +90,11 @@
gifna; samt att härför erforderligt anslag skall i de allmänna
läroverkens stat upptagas.
</p>
<p xml:id="i-4qj8VhFBhmF1Fg8Rs4mD39">
Stockholm den: 30 januari 1892. : V. Vahlin. Häruti instämmer
<p xml:id="i-4qj8VhFBhmF1Fg8Rs4mD39" type="date">
Stockholm den: 30 januari 1892.
</p>
<p type="signatureBlock" id="i-JUJyykYSBdNmDq5NGt4xHP">
: V. Vahlin. Häruti instämmer
</p>
<p xml:id="i-8oWx3ESa31MU7oBeXCed99">
B: P. Ersson.
Expand Down
2 changes: 1 addition & 1 deletion data/1900/mot-1900--fk--00016.xml
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@
de grunder, som nu äro gällande för indelt manskaps underhåll
från Vadstena krigsmans: huskassa.
</p>
<p xml:id="i-36t7S3TbrWQWJ9omou7Fn3">
<p xml:id="i-36t7S3TbrWQWJ9omou7Fn3" type="date">
Stockholm den: 25 januari 1900.
</p>
<p xml:id="i-2pcPLbraX7UwhSx9h6x8hj">
Expand Down
2 changes: 1 addition & 1 deletion data/1907/mot-1907--ak--00232.xml
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
<p type="date" id="i-W3SBzkp4oSfnWLJ5GhiHbW">
Stockholm den 20 november 1863.
</p>
<p xml:id="i-MfxzZfFHpUmPB69hWh8qbq" type="signatureBlock">
<p xml:id="i-MfxzZfFHpUmPB69hWh8qbq" type="date">
Stockholm den 8 april 1907.
</p>
<p xml:id="i-VYWaroVK88vaSCxU5Y1T8n" type="signatureBlock">
Expand Down
2 changes: 1 addition & 1 deletion data/1922/mot-1922--ak--00039.xml
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@
angivna bestäm- melser måtte meddelas för anslagets användning
och fördelning.
</p>
<p xml:id="i-Pkmk84oxVvjU6FXx99V6S7">
<p xml:id="i-Pkmk84oxVvjU6FXx99V6S7" type="date">
Stockholm den: 18 januari 1922.
</p>
<p xml:id="i-Rq6iNKAexiR2oEdab1ufE5">
Expand Down
7 changes: 5 additions & 2 deletions data/1923/mot-1923--fk--00166.xml
Original file line number Diff line number Diff line change
Expand Up @@ -98,8 +98,11 @@
att riksdagen ville besluta, att i lagförslagets 7 8 mom. 2 den
angivna övertiden för kalendermånad ändras från 40 till 50.
</p>
<p xml:id="i-HQSH2MxmWbER3i9QBYeKkz">
Stockholm den: 27 februari 1923. Ulrik Leander:
<p xml:id="i-HQSH2MxmWbER3i9QBYeKkz" type="date">
Stockholm den: 27 februari 1923.
</p>
<p type="signatureBlock" id="i-NisVxfUpmTJ8b5GdvtiwUZ">
Ulrik Leander:
</p>
<p xml:id="i-oeAadE7D7A9KzFHHHX2YY">
Stockholm, K. L. Beckmans Boktr., 1923.
Expand Down
2 changes: 1 addition & 1 deletion data/1925/mot-1925--ak--00135.xml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
<p xml:id="i-WnRgF72QvdZVugPLuhXByr">
(Lika lydande med motion i Första kammaren nr 105).
</p>
<p xml:id="i-Szk3xgc8fW1Wp9V2kxjEmf">
<p xml:id="i-Szk3xgc8fW1Wp9V2kxjEmf" type="date">
Stockholm den: 20 januari 1925.
</p>
<p xml:id="i-5FK6HV32EGoVNU6FGkxaAs">
Expand Down
2 changes: 1 addition & 1 deletion data/1925/mot-1925--ak--00341.xml
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@
<p xml:id="i-RkEUU4iKE8Ks6xuRtm2weW">
2) att Kronobergs regemente organiseras såsom nor- malregemente.
</p>
<p xml:id="i-LDYW49Y5As28m9g7SAgghY">
<p xml:id="i-LDYW49Y5As28m9g7SAgghY" type="date">
Stockholm den: 19 mars 1925.
</p>
<p xml:id="i-6G5yhW5MspFT1jHsF112EZ">
Expand Down
2 changes: 1 addition & 1 deletion data/1925/mot-1925--ak--00342.xml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
<p xml:id="i-A65zUfZeLXqsCDN3CrGNJm">
2) att Kronobergs regemente organiseras såsom nor- malregemente.
</p>
<p xml:id="i-PFuM32fVW8uTzrXXEZpm8G">
<p xml:id="i-PFuM32fVW8uTzrXXEZpm8G" type="date">
Stockholm den: 19 mars 1925.
</p>
<p xml:id="i-WpezrNMqrFH6YMuhh8DQAA">
Expand Down
2 changes: 1 addition & 1 deletion data/1945/mot-1945--ak--00005.xml
Original file line number Diff line number Diff line change
Expand Up @@ -289,7 +289,7 @@
från statens sida kan och bör medverka till en lösning av industriens
'årbetarbostadsproblem.
</p>
<p xml:id="i-HBmtkvwMyumf4yr28avvjv">
<p xml:id="i-HBmtkvwMyumf4yr28avvjv" type="date">
Stockholm den: 11 januari 1945.
</p>
<p xml:id="i-V1B988Pcmu9Mnm2Wy5odXi">
Expand Down
7 changes: 5 additions & 2 deletions data/1947/mot-1947--ak--00339.xml
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,11 @@
<p xml:id="i-GrgZ9jFPxXKDK3JoH22428">
(Lika lydande med motion i Första kammaren nr 227.) .
</p>
<p xml:id="i-WG4ShzgY6Qi91JSxHFKWtu">
Stockholm den: 5 mars 1947. Hildur Ericsson.
<p xml:id="i-WG4ShzgY6Qi91JSxHFKWtu" type="date">
Stockholm den: 5 mars 1947.
</p>
<p type="signatureBlock" id="i-5FA2myDofeCgUdFyQijbew">
Hildur Ericsson.
</p>
<p xml:id="i-CVBCBGP29s3sGGmhYiGnQc">
J. O. Gavelin. Märta Boman. Ivar Jansson, Kalix.
Expand Down
3 changes: 0 additions & 3 deletions data/1954/mot-1954--ak--00627.xml
Original file line number Diff line number Diff line change
Expand Up @@ -190,9 +190,6 @@
<p type="date" id="i-7R4qAKi87zQjtgegNzdA5w">
Stockholm den 24 mars 1954.
</p>
<p type="signatureBlock" id="i-Qngv94PHx1sgBQNCgrkF7k">
Stockholm den 24 mars 1954.
</p>
<p xml:id="i-DQyi8yrn2YiL69bMCDRSJj">
Bertil Ohlin. Sven Wedén. Wald. Svensson.
</p>
Expand Down
2 changes: 1 addition & 1 deletion data/1968/mot-1968--fk--00079.xml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
<p xml:id="i-4YkqGDtG9X3kdCK3VkRcv7">
(Lika lydande med motion nr 1187 Andra kanimaren)
</p>
<p xml:id="i-3UHaedLfboQPeX5ZUNGMDw">
<p xml:id="i-3UHaedLfboQPeX5ZUNGMDw" type="date">
Stockholm den: 18 januari 1968
</p>
<p xml:id="i-E96nz8nGKNjH32iiHVGVVb">
Expand Down
2 changes: 1 addition & 1 deletion data/1968/mot-1968--fk--00080.xml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
<p xml:id="i-KF1sicDRoMu2PAxZ1yoJMy">
(Lika lydande med motion nr 1187 Andra kanimaren)
</p>
<p xml:id="i-8tp1VG6D9AVQdtp3isU9DT">
<p xml:id="i-8tp1VG6D9AVQdtp3isU9DT" type="date">
Stockholm den: 18 januari 1968
</p>
<p xml:id="i-7HJgBZL1LNHXzjnBvhPUSh">
Expand Down
2 changes: 1 addition & 1 deletion data/1968/mot-1968--fk--00789.xml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
lydelse av 19 $ kommunalskattelagen den 28 september 1928 (nr
370), m. m. (Lika lydande med motion nr 1022 i Andra kammaren)
</p>
<p xml:id="i-Kk9bj65fYQEUtcYBuUZ6Qb">
<p xml:id="i-Kk9bj65fYQEUtcYBuUZ6Qb" type="date">
Stockholm den: 28 mars 1968
</p>
<p xml:id="i-RCixwtqTBKQ9uTdgvd6GRH">
Expand Down
2 changes: 1 addition & 1 deletion data/1968/mot-1968--fk--00790.xml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
lydelse av 19 $ kommunalskattelagen den 28 september 1928 (nr
370), m. m. (Lika lydande med motion nr 1022 i Andra kammaren)
</p>
<p xml:id="i-SGJpSD5xp27docXUE4Yego">
<p xml:id="i-SGJpSD5xp27docXUE4Yego" type="date">
Stockholm den: 28 mars 1968
</p>
<p xml:id="i-RYQiXTT7RdQpkJJ3Rcityf">
Expand Down
2 changes: 1 addition & 1 deletion data/197576/mot-197576--00216.xml
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@
bullernivå, dels till att bestäm- melserna efterföljs av respektive
lokalinnehavare.
</p>
<p xml:id="i-Kv9rMHzu5hcwdFoezSvjVC">
<p xml:id="i-Kv9rMHzu5hcwdFoezSvjVC" type="date">
Stockholm den: 12 januari 1976
</p>
<p xml:id="i-VxP9zF2VPQPkM5XLUxaDMm">
Expand Down
3 changes: 0 additions & 3 deletions data/198889/mot-198889-SkU-00331.xml
Original file line number Diff line number Diff line change
Expand Up @@ -112,9 +112,6 @@
<p type="date" id="i-T9xuahMCCATvtxvVkBssvE">
Stockholm den 17 januari 1989
</p>
<p type="signatureBlock" id="i-Q2QM8CrQygRmoVgtfKrnmd">
Stockholm den 17 januari 1989
</p>
<p xml:id="i-BnJskuzdrEGkcMKpyCwkwF">
Karl-Gösta Svenson (m)
</p>
Expand Down
3 changes: 0 additions & 3 deletions data/199091/mot-199091-JoU-00129.xml
Original file line number Diff line number Diff line change
Expand Up @@ -157,9 +157,6 @@
<p type="date" id="i-Jc4wBqT4GWf1qsCHevo9Jn">
Stockholm den 14 mars 1991
</p>
<p xml:id="i-UyFHoWtC9EJ9EE94eicqhg" type="signatureBlock">
Stockholm den 14 mars 1991
</p>
<p xml:id="i-3STcCPTLKCypPrM3gHNw6F" type="signatureBlock">
Marianne Samuelsson (mp) Inger Schörling (mp)
</p>
Expand Down
173 changes: 173 additions & 0 deletions test/motion-has-date.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,173 @@
#!/usr/bin/env python3
"""
Check each motion has a date.
"""
from cycler import cycler
from glob import glob
import matplotlib.pyplot as plt
from pyriksdagen.io import parse_tei
from pyriksdagen.utils import version_number_is_valid
from tqdm import tqdm
import json
import os
import pandas as pd
import sys
import unittest
import warnings




VERSION = "v99.99.99"
# copy sys.argv
argv = sys.argv[:]
# keep only script name + module name for unittest
sys.argv = argv[:2]
# everything after that are "custom" args
if len(argv) > 2:
VERSION = argv[2]
_ = version_number_is_valid(VERSION)




class Test(unittest.TestCase):

@classmethod
def setUpClass(cls):
cls.version = VERSION
cls.motions = sorted(glob("data/*/*.xml"))
cls.motions = [_ for _ in cls.motions if _.startswith('data/1') or _.startswith('data/2')]
cls.tally = {
"no_dates": 0,
"meta_date_only": 0,
"body_date_only": 0,
"meta_body_date": 0
}
cls.no_dates = []
cls.year_counts = {}
cls.no_dates_counts = {}


@classmethod
def tearDownClass(cls):

def update_plot_date_coverage(df):
versions = list(set([v.split('_')[0] for v in df.columns if v.startswith('v')]))
if cls.version != "v99.99.99" and "v99.99.99" in versions:
versions.remove("v99.99.99")
versions = sorted(versions, key=lambda s: list(map(int, s[1:].split('.'))), reverse=True)
colors = list('kbgrcmy')
default_cycler = (cycler(color=colors) +
cycler(linestyle=(['-', '--', ':', '-.']*2)[:len(colors)]))
plt.rc('axes', prop_cycle=default_cycler)
f, ax = plt.subplots()
r = {}
X = df['parliament_year'].tolist()
baseline = df[f"{cls.version}_Baseline"].tolist()
x, baseline = zip(*sorted(zip(X,baseline),key=lambda x: x[0]))
plt.plot(x, baseline, linewidth=1.75)
for version in versions:
y = df[f"{version}_HaveDate"].to_list()
r[version] = [_/baseline[i] for i, _ in enumerate(y)]
x, y = zip(*sorted(zip(X,y),key=lambda x: x[0]))
plt.plot(x, y, linewidth=1.75)
plt.title('Coverage of annotated dates')
plt.legend([f"Baseline_{cls.version}"]+versions, loc ="upper left")
plt.xticks(rotation=90)
labs = [_.get_text()[:4] for _ in ax.xaxis.get_ticklabels()]
ax.set_xticklabels(labs)
for label in ax.xaxis.get_ticklabels():
if not int(label.get_text()) % 10 == 0:
label.set_visible(False)
f.subplots_adjust(bottom=0.2)
ax.set_xlabel('Year')
ax.set_ylabel('Coverage')
plt.savefig("test/results/plot/date-coverage.png", dpi=300)

f, ax = plt.subplots()
for k, v in r.items():
x, y = zip(*sorted(zip(X, v),key=lambda x: x[0]))
plt.plot(x, y, linewidth=1.75)
plt.title('Coverage of annotated dates')
plt.legend(list(r.keys()), loc ="lower right")
plt.xticks(rotation=90)
labs = [_.get_text()[:4] for _ in ax.xaxis.get_ticklabels()]
ax.set_xticklabels(labs)
for label in ax.xaxis.get_ticklabels():
if not int(label.get_text()) % 10 == 0:
label.set_visible(False)
f.subplots_adjust(bottom=0.2)
ax.set_xlabel('Year')
ax.set_ylabel('Coverage')
plt.savefig("test/results/plot/date-coverage-ratio.png", dpi=300)

return True


with open("test/results/motion-has-date-summary.json", "w+") as outf1:
json.dump(cls.tally, outf1, indent=4)
with open("test/results/motion-has-no-date.txt", "w+") as outf2:
[outf2.write(f"{_}\n") for _ in sorted(cls.no_dates)]
df = pd.DataFrame(list(cls.year_counts.items()), columns=["parliament_year", f"{cls.version}_Baseline"])
df[f"{cls.version}_MissingDate"] = df["parliament_year"].map(cls.no_dates_counts).fillna(0)
df[f"{cls.version}_HaveDate"] = df[f"{cls.version}_Baseline"] - df[f"{cls.version}_MissingDate"]
for column in [f"{cls.version}_HaveDate", f"{cls.version}_MissingDate", "parliament_year"]:
df[column] = df[column].fillna(0).astype(int)
if os.path.exists("test/results/date-test-by-parliament-year.tsv"):
df_hist = pd.read_csv("test/results/date-test-by-parliament-year.tsv", sep="\t")
for _ in df_hist.columns:
df_hist[_] = df_hist[_].fillna(0).astype(int)
if _.startswith(cls.version):
df_hist.drop([_], axis=1, inplace=True)
df = pd.merge(df, df_hist, on="parliament_year", how="outer")
for _ in df.columns:
df[_] = df[_].fillna(0).astype(int)
df["parliament_year"] = df["parliament_year"].astype(str)
df.to_csv("test/results/date-test-by-parliament-year.tsv", index=False, sep="\t")

if update_plot_date_coverage(df):
print("Generated Plot for date coverage")
sys.exit(0)


def test_motion_has_date(self):
for motion in tqdm(self.motions):
root, ns = parse_tei(motion)
py = motion.split("/")[1]
meta_title = root.find(f".//{ns['tei_ns']}bibl/{ns['tei_ns']}title")
if meta_title is not None and meta_title.text == "Motionen utgår.":
continue
if py not in self.year_counts:
self.year_counts[py] = 0
if py not in self.no_dates_counts:
self.no_dates_counts[py] = 0
self.year_counts[py] += 1
try:
meta_dates = root.findall(f".//{ns['tei_ns']}correspAction/{ns['tei_ns']}date")
assert len(meta_dates) > 0
except:
meta_dates = root.findall(f".//correspAction/date")
# print(meta_dates)
try:
body_dates = root.findall(f".//{ns['tei_ns']}p[@type=\"date\"]")
assert len(body_dates) > 0
except:
body_dates = root.findall(f".//p[@type=\"date\"]")
# print(body_dates)
if len(body_dates) > 0 and len(meta_dates) > 0:
self.tally["meta_body_date"] += 1
elif len(body_dates) > 0:
self.tally["body_date_only"] += 1
elif len(meta_dates) > 0:
self.tally["meta_date_only"] += 1
else:
self.tally["no_dates"] += 1
self.no_dates.append(motion)
self.no_dates_counts[py] += 1




if __name__ == '__main__':
unittest.main()
Loading