Skip to content

Commit ebe7e8a

Browse files
committed
deprecate parliament corpus settings
1 parent b951877 commit ebe7e8a

19 files changed

Lines changed: 354 additions & 131 deletions

backend/corpora/parliament/canada.py

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,30 @@
33
import logging
44
import re
55

6-
from django.conf import settings
7-
86
from corpora.parliament.parliament import Parliament
97
from corpora.utils.constants import document_context
108
from ianalyzer_readers.extract import Constant, CSV
11-
from addcorpus.python_corpora.corpus import CSVCorpusDefinition
9+
from addcorpus.python_corpora.corpus import CSVCorpusDefinition, get_deprecated_setting
1210
import corpora.parliament.utils.field_defaults as field_defaults
1311
from corpora.parliament.uk import format_house
1412

1513
class ParliamentCanada(Parliament, CSVCorpusDefinition):
1614
title = 'People & Parliament (Canada)'
1715
description = "Speeches from House of Commons"
1816
min_date = datetime(year=1901, month=1, day=1)
19-
data_directory = settings.PP_CANADA_DATA
20-
es_index = getattr(settings, 'PP_CANADA_INDEX', 'parliament-canada')
21-
word_model_path = getattr(settings, 'PP_CANADA_WM', None)
17+
18+
@property
19+
def data_directory(self):
20+
return get_deprecated_setting('PP_CANADA_DATA') or super().data_directory
21+
22+
@property
23+
def es_index(self):
24+
return get_deprecated_setting('PP_CANADA_INDEX') or 'parliament-canada'
25+
26+
@property
27+
def word_model_path(self):
28+
return get_deprecated_setting('PP_CANADA_WM') or super().word_model_path
29+
2230
image = 'canada.jpeg'
2331
languages = ['en']
2432
description_page = 'canada.md'

backend/corpora/parliament/conftest.py

Lines changed: 54 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -31,24 +31,60 @@ def parliament_corpora_settings(settings):
3131
'parliament-europe': 'corpora.parliament.euparl.ParliamentEurope',
3232
}
3333

34-
settings.PP_CANADA_DATA = os.path.join(here, 'tests', 'data', 'canada')
35-
settings.PP_DENMARK_DATA = os.path.join(here, 'tests', 'data', 'denmark')
36-
settings.PP_DENMARK_NEW_DATA = os.path.join(here, 'tests', 'data', 'denmark-new')
37-
settings.PP_EUPARL_DATA = os.path.join(here, 'tests', 'data', 'euparl', 'rds')
38-
settings.PP_FINLAND_DATA = os.path.join(here, 'tests', 'data', 'finland')
39-
settings.PP_FINLAND_OLD_DATA = os.path.join(here, 'tests', 'data', 'finland-old')
40-
settings.PP_FR_DATA = os.path.join(here, 'tests', 'data', 'france')
41-
settings.PP_GERMANY_NEW_DATA = os.path.join(here, 'tests', 'data', 'germany-new')
42-
settings.PP_GERMANY_OLD_DATA = os.path.join(here, 'tests', 'data', 'germany-old')
43-
settings.PP_IRELAND_DATA = os.path.join(here, 'tests', 'data', 'ireland')
44-
settings.PP_NL_DATA = os.path.join(here, 'tests', 'data', 'netherlands')
45-
settings.PP_NL_RECENT_DATA = os.path.join(here, 'tests', 'data', 'netherlands-recent')
46-
settings.PP_NORWAY_DATA = os.path.join(here, 'tests', 'data', 'norway')
47-
settings.PP_NORWAY_NEW_DATA = os.path.join(here, 'tests', 'data', 'norway-new')
48-
settings.PP_SWEDEN_DATA = os.path.join(here, 'tests', 'data', 'sweden')
49-
settings.PP_SWEDEN_OLD_DATA = os.path.join(here, 'tests', 'data', 'sweden-old')
50-
settings.PP_SWEDEN_SWERIK_DATA = os.path.join(here, 'tests', 'data', 'sweden-swerik')
51-
settings.PP_UK_DATA = os.path.join(here, 'tests', 'data', 'uk')
34+
settings.CORPUS_SETTINGS = {
35+
'parliament-canada': {
36+
'data_directory': os.path.join(here, 'tests', 'data', 'canada'),
37+
},
38+
'parliament-denmark': {
39+
'data_directory': os.path.join(here, 'tests', 'data', 'denmark'),
40+
},
41+
'parliament-denmark-new': {
42+
'data_directory': os.path.join(here, 'tests', 'data', 'denmark-new'),
43+
},
44+
'parliament-europe': {
45+
'data_directory': os.path.join(here, 'tests', 'data', 'euparl', 'rds'),
46+
},
47+
'parliament-finland': {
48+
'data_directory': os.path.join(here, 'tests', 'data', 'finland'),
49+
},
50+
'parliament-finland-old': {
51+
'data_directory': os.path.join(here, 'tests', 'data', 'finland-old'),
52+
},
53+
'parliament-france': {
54+
'data_directory': os.path.join(here, 'tests', 'data', 'france'),
55+
},
56+
'parliament-germany-new': {
57+
'data_directory': os.path.join(here, 'tests', 'data', 'germany-new'),
58+
},
59+
'parliament-germany-old': {
60+
'data_directory': os.path.join(here, 'tests', 'data', 'germany-old'),
61+
},
62+
'parliament-ireland': {
63+
'data_directory': os.path.join(here, 'tests', 'data', 'ireland'),
64+
},
65+
'parliament-netherlands': {
66+
'data_directory': os.path.join(here, 'tests', 'data', 'netherlands-recent'),
67+
'data_directory_old': os.path.join(here, 'tests', 'data', 'netherlands'),
68+
},
69+
'parliament-norway': {
70+
'data_directory': os.path.join(here, 'tests', 'data', 'norway'),
71+
},
72+
'parliament-norway-new': {
73+
'data_directory': os.path.join(here, 'tests', 'data', 'norway-new'),
74+
},
75+
'parliament-sweden': {
76+
'data_directory': os.path.join(here, 'tests', 'data', 'sweden'),
77+
},
78+
'parliament-sweden-old': {
79+
'data_directory': os.path.join(here, 'tests', 'data', 'sweden-old'),
80+
},
81+
'parliament-sweden-swerik': {
82+
'data_directory': os.path.join(here, 'tests', 'data', 'sweden-swerik'),
83+
},
84+
'parliament-uk': {
85+
'data_directory': os.path.join(here, 'tests', 'data', 'uk')
86+
}
87+
}
5288

5389

5490
CORPUS_TEST_DATA = [

backend/corpora/parliament/denmark-new.py

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
from datetime import datetime
22
from glob import glob
3-
from django.conf import settings
3+
44
import os
55
import re
66

77
from corpora.parliament.parliament import Parliament
88
from ianalyzer_readers.extract import Constant, CSV, Metadata, Combined
9-
from addcorpus.python_corpora.corpus import CSVCorpusDefinition
9+
from addcorpus.python_corpora.corpus import CSVCorpusDefinition, get_deprecated_setting
1010
import corpora.parliament.utils.field_defaults as field_defaults
1111
import corpora.utils.formatting as formatting
1212
import corpora.utils.constants as constants
@@ -37,9 +37,20 @@ class ParliamentDenmarkNew(Parliament, CSVCorpusDefinition):
3737
description = "Speeches from the Folketing"
3838
min_date = datetime(year=2009, month=1, day=1)
3939
max_date = datetime(year=2016, month=12, day=31)
40-
data_directory = settings.PP_DENMARK_NEW_DATA
41-
es_index = getattr(settings, 'PP_DENMARK_NEW_INDEX', 'parliament-denmark-new')
42-
word_model_path = getattr(settings, 'PP_DENMARK_WM', None)
40+
41+
@property
42+
def data_directory(self):
43+
return get_deprecated_setting('PP_DENMARK_NEW_DATA') or super().data_directory
44+
45+
@property
46+
def es_index(self):
47+
return get_deprecated_setting('PP_DENMARK_NEW_INDEX') or 'parliament-denmark-new'
48+
49+
@property
50+
def word_model_path(self):
51+
return get_deprecated_setting('PP_DENMARK_WM') or super().word_model_path
52+
53+
4354
image = 'denmark.jpg'
4455
description_page = 'denmark-new.md'
4556
languages = ['da']

backend/corpora/parliament/denmark.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
from datetime import datetime
22
from glob import glob
33
import logging
4-
from django.conf import settings
54

65
from corpora.parliament.parliament import Parliament
76
from ianalyzer_readers.extract import Constant, CSV
8-
from addcorpus.python_corpora.corpus import CSVCorpusDefinition
7+
from addcorpus.python_corpora.corpus import CSVCorpusDefinition, get_deprecated_setting
98
import corpora.parliament.utils.field_defaults as field_defaults
109
import corpora.utils.formatting as formatting
1110

@@ -28,8 +27,15 @@ class ParliamentDenmark(Parliament, CSVCorpusDefinition):
2827
description = "Speeches from the Folketing and Landsting"
2928
min_date = datetime(year=1848, month=1, day=1)
3029
max_date = datetime(year=2008, month=12, day=31)
31-
data_directory = settings.PP_DENMARK_DATA
32-
es_index = getattr(settings, 'PP_DENMARK_INDEX', 'parliament-denmark')
30+
31+
@property
32+
def data_directory(self):
33+
return get_deprecated_setting('PP_DENMARK_DATA') or super().data_directory
34+
35+
@property
36+
def es_index(self):
37+
return get_deprecated_setting('PP_DENMARK_INDEX') or 'parliament-denmark'
38+
3339
image = 'denmark.jpg'
3440
description_page = 'denmark.md'
3541

backend/corpora/parliament/euparl.py

Lines changed: 38 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,14 @@
88
import numbers
99

1010
from bs4 import BeautifulSoup
11-
from django.conf import settings
1211
from langcodes import standardize_tag, Language
1312
import requests
14-
from ianalyzer_readers.extract import Combined, JSON, Metadata, Pass, CSV, Constant
13+
from ianalyzer_readers.extract import Combined, JSON, Pass, CSV, Constant
1514
from ianalyzer_readers.readers.core import Field
1615
from ianalyzer_readers.readers.json import JSONReader
1716

1817
from addcorpus.es_mappings import keyword_mapping, main_content_mapping
19-
from addcorpus.python_corpora.corpus import FieldDefinition
18+
from addcorpus.python_corpora.corpus import FieldDefinition, get_deprecated_setting
2019
from addcorpus.python_corpora.filters import MultipleChoiceFilter
2120
from corpora.parliament.parliament import Parliament
2221
import corpora.parliament.utils.field_defaults as field_defaults
@@ -31,26 +30,48 @@ def language_name(lang_code: str) -> str:
3130

3231

3332
class ParliamentEurope(Parliament):
33+
'''
34+
Corpus definition for EU Parliament.
35+
36+
During data extraction, the corpus will harvest data from an API up until the present,
37+
so `max_date` is `datetime.now()` by default.
38+
If you are not doing periodic updates, configure `max_date` to the date of the harvest.
39+
'''
3440
title = 'People & Parliament (European Parliament)'
3541
description = "Speeches from the European Parliament (EP)"
36-
es_index = getattr(settings, 'PP_EUPARL_INDEX', 'parliament-euparl')
37-
data_directory = settings.PP_EUPARL_DATA
42+
43+
@property
44+
def es_index(self):
45+
return get_deprecated_setting('PP_EUPARL_INDEX') or 'parliament-euparl'
46+
47+
@property
48+
def data_directory(self):
49+
return get_deprecated_setting('PP_EUPARL_DATA') or super().data_directory
50+
3851
languages = ['en']
3952
category = "parliament"
4053
document_context = document_context()
4154
description_page = 'euparl.md'
4255
image = 'euparl.jpeg'
4356
min_date = datetime(year=1999, month=7, day=20)
44-
max_date = getattr(settings, 'PP_EUPARL_MAX_DATE', datetime.now())
57+
58+
@property
59+
def max_date(self):
60+
return get_deprecated_setting('PP_EUPARL_MAX_DATE') or datetime.now()
61+
4562
language_field = 'original_language_code'
46-
word_model_path = getattr(settings, 'PP_EUPARL_WM', None)
63+
64+
@property
65+
def word_model_path(self):
66+
return get_deprecated_setting('PP_EUPARL_WM') or super().word_model_path
67+
4768
wordmodels_page = 'euparl.md'
4869

4970

5071
@property
5172
def subcorpora(self):
5273
return [
53-
EUPDCorpReader(),
74+
EUPDCorpReader(self.data_directory),
5475
ParliamentEuropeFromAPI(),
5576
]
5677

@@ -75,7 +96,11 @@ def source2dicts(self, source, **kwargs):
7596

7697
debate_id = field_defaults.debate_id()
7798
debate_title = field_defaults.debate_title()
78-
date = field_defaults.date(min_date, max_date)
99+
100+
@property
101+
def date(self):
102+
return field_defaults.date(self.min_date, self.max_date)
103+
79104
party = field_defaults.party()
80105
party_full = field_defaults.party_full()
81106
party_id = field_defaults.party_id()
@@ -605,7 +630,10 @@ class EUPDCorpReader(RDSReader):
605630
Reader for the EUPDCorp dataset. Contains debates from 20/7/1999 to 8/2/2024
606631
'''
607632

608-
data_directory = settings.PP_EUPARL_DATA
633+
data_directory = None
634+
635+
def __init__(self, data_directory: str):
636+
self.data_directory = data_directory
609637

610638
def sources(self, **kwargs):
611639
for filename in os.listdir(self.data_directory):

backend/corpora/parliament/finland-old.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,28 @@
11
from datetime import datetime
22
from glob import glob
33

4-
from addcorpus.python_corpora.corpus import CSVCorpusDefinition
4+
from addcorpus.python_corpora.corpus import CSVCorpusDefinition, get_deprecated_setting
55
from ianalyzer_readers.extract import CSV, Combined, Constant
66
from addcorpus.python_corpora.filters import MultipleChoiceFilter
77
from corpora.parliament.parliament import Parliament
88
import corpora.parliament.utils.field_defaults as field_defaults
99
from corpora.utils.constants import document_context
1010
from corpora.utils import formatting
1111

12-
from django.conf import settings
1312

1413
class ParliamentFinlandOld(Parliament, CSVCorpusDefinition):
1514
title = 'People and Parliament (Finland, 1863-1905)'
1615
description = 'Speeches from the early Finnish estates'
1716
max_date = datetime(year=1906, month=12, day=31)
1817
min_date = datetime(year=1863, month=1, day=1)
19-
data_directory = settings.PP_FINLAND_OLD_DATA
20-
es_index = getattr(settings, 'PP_FINLAND_OLD_INDEX', 'parliament-finland-old')
18+
19+
@property
20+
def data_directory(self):
21+
return get_deprecated_setting('PP_FINLAND_OLD_DATA') or super().data_directory
22+
23+
@property
24+
def es_index(self):
25+
return get_deprecated_setting('PP_FINLAND_OLD_INDEX') or 'parliament-finland-old'
2126

2227
def sources(self, start, end):
2328
for csv_file in glob('{}/**/*.csv'.format(self.data_directory), recursive=True):

backend/corpora/parliament/finland.py

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,14 @@
22
from glob import glob
33
from ianalyzer_readers.xml_tag import Tag, FindParentTag, PreviousSiblingTag, ParentTag
44

5-
from addcorpus.python_corpora.corpus import XMLCorpusDefinition
5+
from addcorpus.python_corpora.corpus import XMLCorpusDefinition, get_deprecated_setting
66
from ianalyzer_readers.extract import XML, Combined, Constant, Metadata
77
from corpora.parliament.parliament import Parliament
88
import corpora.parliament.utils.field_defaults as field_defaults
99
from corpora.utils.constants import document_context
1010
from bs4 import BeautifulSoup
1111
from corpora.parliament.utils.parlamint import extract_all_party_data, extract_people_data, extract_role_data, party_attribute_extractor, person_attribute_extractor, clean_value
1212

13-
from django.conf import settings
1413

1514
def format_role(values):
1615
id, roles = values
@@ -23,9 +22,18 @@ class ParliamentFinland(Parliament, XMLCorpusDefinition):
2322
title = 'People and Parliament (Finland, 1907-)'
2423
description = 'Speeches from the eduskunta'
2524
min_date = datetime(year=1907, month=1, day=1)
26-
data_directory = settings.PP_FINLAND_DATA
27-
es_index = getattr(settings, 'PP_FINLAND_INDEX', 'parliament-finland')
28-
word_model_path = getattr(settings, 'PP_FINLAND_WM', None)
25+
26+
@property
27+
def data_directory(self):
28+
return get_deprecated_setting('PP_FINLAND_DATA') or super().data_directory
29+
30+
@property
31+
def es_index(self):
32+
return get_deprecated_setting('PP_FINLAND_INDEX') or 'parliament-finland'
33+
34+
@property
35+
def word_model_path(self):
36+
return get_deprecated_setting('PP_FINLAND_WM') or super().word_model_path
2937

3038
def sources(self, start, end):
3139
for xml_file in glob('{}/**/*.xml'.format(self.data_directory), recursive=True):

backend/corpora/parliament/france.py

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,9 @@
22
import logging
33
from datetime import datetime
44

5-
from django.conf import settings
6-
75
from corpora.parliament.parliament import Parliament
86
from ianalyzer_readers.extract import Constant, Combined, CSV
9-
from addcorpus.python_corpora.corpus import CSVCorpusDefinition
7+
from addcorpus.python_corpora.corpus import CSVCorpusDefinition, get_deprecated_setting
108
import corpora.parliament.utils.field_defaults as field_defaults
119
from corpora.utils.formatting import underscore_to_space
1210
from corpora.utils.constants import document_context
@@ -15,12 +13,22 @@ class ParliamentFrance(Parliament, CSVCorpusDefinition):
1513
title = "People & Parliament (France 1881-2022)"
1614
description = "Speeches from the 3rd, 4th and 5th republic of France"
1715
min_date = datetime(year=1881, month=1, day=1)
18-
data_directory = settings.PP_FR_DATA
19-
es_index = getattr(settings, 'PP_FR_INDEX', 'parliament-france')
16+
17+
@property
18+
def data_directory(self):
19+
return get_deprecated_setting('PP_FR_DATA') or super().data_directory
20+
21+
@property
22+
def es_index(self):
23+
return get_deprecated_setting('PP_FR_INDEX') or 'parliament-france'
24+
2025
image = 'france.jpg'
2126
languages = ['fr']
2227
description_page = 'france.md'
23-
word_model_path = getattr(settings, 'PP_FR_WM', None)
28+
29+
@property
30+
def word_model_path(self):
31+
return get_deprecated_setting('PP_FR_WM') or super().word_model_path
2432

2533
field_entry = 'speech_id'
2634

0 commit comments

Comments
 (0)