civics-cdf-validator 1.46.dev1__tar.gz → 1.46.dev2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {civics_cdf_validator-1.46.dev1/civics_cdf_validator.egg-info → civics_cdf_validator-1.46.dev2}/PKG-INFO +1 -1
- {civics_cdf_validator-1.46.dev1 → civics_cdf_validator-1.46.dev2/civics_cdf_validator.egg-info}/PKG-INFO +1 -1
- {civics_cdf_validator-1.46.dev1 → civics_cdf_validator-1.46.dev2}/rules.py +35 -0
- {civics_cdf_validator-1.46.dev1 → civics_cdf_validator-1.46.dev2}/version.py +1 -1
- {civics_cdf_validator-1.46.dev1 → civics_cdf_validator-1.46.dev2}/CONTRIBUTING.md +0 -0
- {civics_cdf_validator-1.46.dev1 → civics_cdf_validator-1.46.dev2}/LICENSE-2.0.txt +0 -0
- {civics_cdf_validator-1.46.dev1 → civics_cdf_validator-1.46.dev2}/MANIFEST.in +0 -0
- {civics_cdf_validator-1.46.dev1 → civics_cdf_validator-1.46.dev2}/README.md +0 -0
- {civics_cdf_validator-1.46.dev1 → civics_cdf_validator-1.46.dev2}/__init__.py +0 -0
- {civics_cdf_validator-1.46.dev1 → civics_cdf_validator-1.46.dev2}/base.py +0 -0
- {civics_cdf_validator-1.46.dev1 → civics_cdf_validator-1.46.dev2}/civics_cdf_validator.egg-info/SOURCES.txt +0 -0
- {civics_cdf_validator-1.46.dev1 → civics_cdf_validator-1.46.dev2}/civics_cdf_validator.egg-info/dependency_links.txt +0 -0
- {civics_cdf_validator-1.46.dev1 → civics_cdf_validator-1.46.dev2}/civics_cdf_validator.egg-info/entry_points.txt +0 -0
- {civics_cdf_validator-1.46.dev1 → civics_cdf_validator-1.46.dev2}/civics_cdf_validator.egg-info/requires.txt +0 -0
- {civics_cdf_validator-1.46.dev1 → civics_cdf_validator-1.46.dev2}/civics_cdf_validator.egg-info/top_level.txt +0 -0
- {civics_cdf_validator-1.46.dev1 → civics_cdf_validator-1.46.dev2}/gpunit_rules.py +0 -0
- {civics_cdf_validator-1.46.dev1 → civics_cdf_validator-1.46.dev2}/loggers.py +0 -0
- {civics_cdf_validator-1.46.dev1 → civics_cdf_validator-1.46.dev2}/office_utils.py +0 -0
- {civics_cdf_validator-1.46.dev1 → civics_cdf_validator-1.46.dev2}/setup.cfg +0 -0
- {civics_cdf_validator-1.46.dev1 → civics_cdf_validator-1.46.dev2}/setup.py +0 -0
- {civics_cdf_validator-1.46.dev1 → civics_cdf_validator-1.46.dev2}/stats.py +0 -0
- {civics_cdf_validator-1.46.dev1 → civics_cdf_validator-1.46.dev2}/validator.py +0 -0
|
@@ -3751,6 +3751,40 @@ class ElectionEventDatesAreSequential(base.DateRule):
|
|
|
3751
3751
|
raise loggers.ElectionError(self.error_log)
|
|
3752
3752
|
|
|
3753
3753
|
|
|
3754
|
+
class NoSourceDirPathBeforeInitialDeliveryDate(base.BaseRule):
|
|
3755
|
+
"""SourceDirPath should only be defined if one of the initial delivery dates is in the past.
|
|
3756
|
+
"""
|
|
3757
|
+
|
|
3758
|
+
def elements(self):
|
|
3759
|
+
return ["Feed"]
|
|
3760
|
+
|
|
3761
|
+
def check(self, element):
|
|
3762
|
+
if not element_has_text(element.find("SourceDirPath")):
|
|
3763
|
+
return
|
|
3764
|
+
today = datetime.date.today()
|
|
3765
|
+
today_partial_date = base.PartialDate(
|
|
3766
|
+
year=today.year, month=today.month, day=today.day
|
|
3767
|
+
)
|
|
3768
|
+
initial_deliveries = element.findall(".//InitialDeliveryDate")
|
|
3769
|
+
if initial_deliveries:
|
|
3770
|
+
for initial_delivery in initial_deliveries:
|
|
3771
|
+
initial_delivery_date = (
|
|
3772
|
+
base.PartialDate.init_partial_date(initial_delivery.text)
|
|
3773
|
+
if element_has_text(initial_delivery)
|
|
3774
|
+
else None
|
|
3775
|
+
)
|
|
3776
|
+
if (
|
|
3777
|
+
initial_delivery_date
|
|
3778
|
+
and initial_delivery_date.is_older_than(today_partial_date) > 0
|
|
3779
|
+
):
|
|
3780
|
+
return
|
|
3781
|
+
raise loggers.ElectionWarning.from_message(
|
|
3782
|
+
"SourceDirPath is defined but all initialDeliveryDate are in the"
|
|
3783
|
+
" future.",
|
|
3784
|
+
[element],
|
|
3785
|
+
)
|
|
3786
|
+
|
|
3787
|
+
|
|
3754
3788
|
class OfficeHolderSubFeedDatesAreSequential(base.DateRule):
|
|
3755
3789
|
"""Dates in an OfficeHolderSubFeed element should be sequential."""
|
|
3756
3790
|
|
|
@@ -4090,6 +4124,7 @@ METADATA_RULES = (
|
|
|
4090
4124
|
OfficeHolderSubFeedDatesAreSequential,
|
|
4091
4125
|
FeedHasValidCountryCode,
|
|
4092
4126
|
FeedInactiveDateSetForNonEvergreenFeed,
|
|
4127
|
+
NoSourceDirPathBeforeInitialDeliveryDate,
|
|
4093
4128
|
)
|
|
4094
4129
|
|
|
4095
4130
|
ALL_RULES = frozenset(
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|