myl-fech 1.0.3

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.
Files changed (117) hide show
  1. data/.gitignore +7 -0
  2. data/.rspec +2 -0
  3. data/Gemfile +4 -0
  4. data/Gemfile.lock +48 -0
  5. data/LICENSE +13 -0
  6. data/README.rdoc +82 -0
  7. data/Rakefile +3 -0
  8. data/autotest/discover.rb +1 -0
  9. data/fech.gemspec +40 -0
  10. data/lib/fech/comparison.rb +36 -0
  11. data/lib/fech/csv.rb +70 -0
  12. data/lib/fech/default_translations.rb +133 -0
  13. data/lib/fech/fech_utils.rb +76 -0
  14. data/lib/fech/filing.rb +341 -0
  15. data/lib/fech/map_generator.rb +233 -0
  16. data/lib/fech/mapped.rb +38 -0
  17. data/lib/fech/mappings.rb +67 -0
  18. data/lib/fech/rendered_maps.rb +238 -0
  19. data/lib/fech/translator.rb +138 -0
  20. data/lib/fech/version.rb +3 -0
  21. data/lib/fech.rb +15 -0
  22. data/sources/F1.csv +106 -0
  23. data/sources/F1M.csv +78 -0
  24. data/sources/F2.csv +43 -0
  25. data/sources/F24.csv +18 -0
  26. data/sources/F3.csv +1 -0
  27. data/sources/F3L.csv +27 -0
  28. data/sources/F3P.csv +208 -0
  29. data/sources/F3P31.csv +39 -0
  30. data/sources/F3PS.csv +94 -0
  31. data/sources/F3S.csv +36 -0
  32. data/sources/F3X.csv +125 -0
  33. data/sources/F4.csv +86 -0
  34. data/sources/F5.csv +39 -0
  35. data/sources/F56.csv +33 -0
  36. data/sources/F57.csv +44 -0
  37. data/sources/F6.csv +1 -0
  38. data/sources/F65.csv +1 -0
  39. data/sources/F7.csv +1 -0
  40. data/sources/F76.csv +1 -0
  41. data/sources/F9.csv +46 -0
  42. data/sources/F91.csv +17 -0
  43. data/sources/F92.csv +23 -0
  44. data/sources/F93.csv +27 -0
  45. data/sources/F94.csv +18 -0
  46. data/sources/F99.csv +1 -0
  47. data/sources/H1.csv +1 -0
  48. data/sources/H2.csv +1 -0
  49. data/sources/H3.csv +1 -0
  50. data/sources/H4.csv +1 -0
  51. data/sources/H5.csv +1 -0
  52. data/sources/H6.csv +1 -0
  53. data/sources/HDR.csv +10 -0
  54. data/sources/SchA.csv +50 -0
  55. data/sources/SchB.csv +50 -0
  56. data/sources/SchC.csv +41 -0
  57. data/sources/SchC1.csv +52 -0
  58. data/sources/SchC2.csv +19 -0
  59. data/sources/SchD.csv +34 -0
  60. data/sources/SchE.csv +57 -0
  61. data/sources/SchF.csv +55 -0
  62. data/sources/SchL.csv +1 -0
  63. data/sources/TEXT.csv +1 -0
  64. data/sources/headers/3.csv +1 -0
  65. data/sources/headers/5.0.csv +1 -0
  66. data/sources/headers/5.1.csv +1 -0
  67. data/sources/headers/5.2.csv +1 -0
  68. data/sources/headers/5.3.csv +1 -0
  69. data/sources/headers/6.1.csv +1 -0
  70. data/sources/headers/6.2.csv +1 -0
  71. data/sources/headers/6.3.csv +1 -0
  72. data/sources/headers/6.4.csv +1 -0
  73. data/sources/headers/7.0.csv +49 -0
  74. data/sources/headers/8.0.csv +49 -0
  75. data/sources/headers/ignore.csv +5 -0
  76. data/spec/comparison_spec.rb +30 -0
  77. data/spec/data/467627.fec +608 -0
  78. data/spec/data/723604.fec +4 -0
  79. data/spec/data/730635.fec +2 -0
  80. data/spec/data/747058.fec +4 -0
  81. data/spec/data/748730.fec +1196 -0
  82. data/spec/data/752356.fec +5 -0
  83. data/spec/data/753533.fec +7 -0
  84. data/spec/data/764901.fec +7 -0
  85. data/spec/data/765310.fec +2 -0
  86. data/spec/data/767339.fec +648 -0
  87. data/spec/data/82094.fec +144 -0
  88. data/spec/data/97405.fec +10 -0
  89. data/spec/default_translations_spec.rb +104 -0
  90. data/spec/fech_utils_spec.rb +29 -0
  91. data/spec/filing_spec.rb +314 -0
  92. data/spec/map_generator_spec.rb +49 -0
  93. data/spec/mapped_spec.rb +44 -0
  94. data/spec/mappings_spec.rb +46 -0
  95. data/spec/sources/F24.csv +18 -0
  96. data/spec/sources/F3P.csv +1 -0
  97. data/spec/sources/F3P31.csv +39 -0
  98. data/spec/sources/SchA.csv +1 -0
  99. data/spec/sources/SchB.csv +1 -0
  100. data/spec/sources/SchC.csv +1 -0
  101. data/spec/sources/headers/3.csv +1 -0
  102. data/spec/sources/headers/5.0.csv +1 -0
  103. data/spec/sources/headers/5.1.csv +1 -0
  104. data/spec/sources/headers/5.2.csv +1 -0
  105. data/spec/sources/headers/5.3.csv +1 -0
  106. data/spec/sources/headers/6.1.csv +1 -0
  107. data/spec/sources/headers/6.2.csv +1 -0
  108. data/spec/sources/headers/6.3.csv +1 -0
  109. data/spec/sources/headers/6.4.csv +1 -0
  110. data/spec/sources/headers/7.0.csv +1 -0
  111. data/spec/sources/headers/8.0.csv +49 -0
  112. data/spec/sources/headers/ignore.csv +5 -0
  113. data/spec/sources/sa.csv +1 -0
  114. data/spec/spec_helper.rb +9 -0
  115. data/spec/translator_spec.rb +195 -0
  116. data/tasks/fech.rake +41 -0
  117. metadata +342 -0
@@ -0,0 +1,138 @@
1
+ require 'people'
2
+
3
+ module Fech
4
+
5
+ # Fech::Translator stores a collection of Procs which are associated with
6
+ # one or many field types, row types and filing versions. When a row that
7
+ # matches all of these is mapped in Filing, the Proc is run on that value.
8
+ #
9
+ # :action => :convert alters a single value in place.
10
+ # :combine creates a new row out of others.
11
+ #
12
+ # It also stores a set of aliases, allowing fields on the returned Hash of
13
+ # mapped data to be accessed by other names.
14
+ class Translator
15
+
16
+ attr_accessor :translations, :aliases, :cache
17
+
18
+ NAME_PARSER = People::NameParser.new
19
+
20
+ def initialize(opts = {})
21
+ @cache = {}
22
+ @aliases = []
23
+ @translations = []
24
+ # op-in default translation packs
25
+ add_default_translations(opts[:include] || [])
26
+ end
27
+
28
+ # Returns list of all translations that should be applied to values of
29
+ # specified row and field.
30
+ #
31
+ # @option opts [String] :field the current field's value
32
+ # @option opts [String] :version the current filing's version
33
+ # @option opts [String] :row the row type
34
+ # @option opts [Symbol] :action match only :combine or :convert translations
35
+ def get_translations(opts)
36
+ key = [:field, :row, :version, :action].collect { |key| opts[key] }.join(":")
37
+ @cache[key] ||= \
38
+ procs = translations.collect do |t|
39
+ t if self.class.applicable_translation?(t, opts)
40
+ end.compact
41
+ end
42
+
43
+ # Given a translation and any or all of field, version, row, action:
44
+ # Returns true if all the given options are compatible with those
45
+ # specified in the translation.
46
+ #
47
+ # @param [Hash] translation the translation being tested for relevance
48
+ # @option opts [String] :field the current field's value
49
+ # @option opts [String] :version the current filing's version
50
+ # @option opts [String] :row the row type
51
+ # @option opts [Symbol] :action match only :combine or :convert translations
52
+ def self.applicable_translation?(translation, opts)
53
+ opts.keys.all? { |k| translation[k].match(opts[k].to_s) }
54
+ end
55
+
56
+ # Adds a tranlation for preprocessing a single field's value
57
+ #
58
+ # t.convert(:row => /^sa/, :field => :date_coverage_from) { |v| Date.parse(v) }
59
+ #
60
+ # @option opts [String] :field the current field's value
61
+ # @option opts [String] :version the current filing's version
62
+ # @option opts [String] :row the row type
63
+ def convert(args={}, &block)
64
+ add_translation(args.merge(:action => :convert), &block)
65
+ end
66
+
67
+ # Adds a translation that uses other fields to create a new one
68
+ #
69
+ # t.combine(:row => "sa", :field => :net_individual_contributions) do |row|
70
+ # row.individual_contributions - row.individual_refunds
71
+ # end
72
+ #
73
+ # @option opts [String] :field the name of the field to create
74
+ # @option opts [String] :version the current filing's version
75
+ # @option opts [String] :row the row type
76
+ def combine(args={}, &block)
77
+ add_translation(args.merge(:action => :combine), &block)
78
+ end
79
+
80
+ # Allows @old_name on @row to be accessible on the returned hash as @new_name
81
+ #
82
+ # t.alias(:new, :old, "sa")
83
+ #
84
+ # @param [Symbol] new_name the given field will be accessible using this token
85
+ # @param [Symbol] old_name the existing field whose value to alias
86
+ # @param [Symbol,Regex] row the types of rows this alias should be applied to
87
+ def alias(new_name, old_name, row=/.*/)
88
+ aliases << {
89
+ :row => Fech.regexify(row),
90
+ :alias => new_name,
91
+ :for => old_name
92
+ }
93
+ end
94
+
95
+ private
96
+
97
+ # Adds a translation to the global translation list.
98
+ # Åt runtime, any field whose field, row and version match a translation
99
+ # will have its value preprocessed through &block.
100
+ #
101
+ # @option data [String] :field the current field's value
102
+ # @option data [String] :version the current filing's version
103
+ # @option data [String] :row the row type
104
+ def add_translation(data, &block)
105
+ raise "Block required" unless block_given?
106
+
107
+ # The cache may be now be out of date after adding this translation
108
+ cache = {}
109
+
110
+ data ||= {}
111
+ data[:row] ||= /.*/
112
+ data[:field] ||= /.*/
113
+ data[:version] ||= /.*/
114
+
115
+ # Convert any string or symbols to regular expressions for the hash
116
+ data.each do |k,v|
117
+ data[k] = Fech.regexify(v)
118
+ end
119
+
120
+ data = data.merge(:proc => block)
121
+ translations << data
122
+ data
123
+ end
124
+
125
+ # For each default translation set given, execute the corresponding
126
+ # code in Fech::DefaultTranslations.
127
+ def add_default_translations(translations_list)
128
+ translations_list = [translations_list] unless translations_list.is_a?(Array)
129
+ return if translations_list.empty?
130
+
131
+ default = Fech::DefaultTranslations.new(self)
132
+ translations_list.each do |package|
133
+ default.send(package)
134
+ end
135
+ end
136
+
137
+ end
138
+ end
@@ -0,0 +1,3 @@
1
+ module Fech
2
+ VERSION = "1.0.3"
3
+ end
data/lib/fech.rb ADDED
@@ -0,0 +1,15 @@
1
+ require 'fech/filing'
2
+ require 'fech/rendered_maps'
3
+ require 'fech/mappings'
4
+ require 'fech/default_translations'
5
+ require 'fech/translator'
6
+ require 'fech/mapped'
7
+ require 'fech/fech_utils'
8
+ require 'fech/map_generator'
9
+ require 'fech/csv'
10
+ require 'fech/comparison'
11
+
12
+ module Fech
13
+ extend FechUtils
14
+ DEFAULT_VERSION = "8.0"
15
+ end
data/sources/F1.csv ADDED
@@ -0,0 +1,106 @@
1
+ canonical,^8.0|7.0|6.4,,^6.3|6.2|6.1,,^5.3|5.2|5.1|5.0,,^3.0,
2
+ form_type,1,FORM TYPE,1,FORM TYPE,1,FORM TYPE,1,FORM TYPE
3
+ filer_committee_id_number,2,FILER COMMITTEE ID NUMBER,2,FILER COMMITTEE ID NUMBER,2,FILER FEC CMTE ID ,2,FILER FEC CMTE ID
4
+ change_of_committee_name,3,CHANGE OF COMMITTEE NAME,3,CHANGE OF COMMITTEE NAME,10,CHG OF COMMITTEE NAME,10,CHG OF COMMITTEE NAME
5
+ committee_name,4,COMMITTEE NAME,4,COMMITTEE NAME,3,COMMITTEE NAME,3,COMMITTEE NAME
6
+ change_of_address,5,CHANGE OF ADDRESS,5,CHANGE OF ADDRESS,11,CHG OF ADDRESS,11,CHG OF ADDRESS
7
+ street_1,6,STREET 1,6,STREET 1,4,STREET 1,4,STREET 1
8
+ street_2,7,STREET 2,7,STREET 2,5,STREET 2,5,STREET 2
9
+ city,8,CITY,8,CITY,6,CITY,6,CITY
10
+ state,9,STATE,9,STATE,7,STATE,7,STATE
11
+ zip_code,10,ZIP,10,ZIP,8,ZIP,8,ZIP
12
+ change_of_committee_email,11,CHANGE OF COMMITTEE EMAIL,11,CHANGE OF COMMITTEE EMAIL,,,,
13
+ committee_email,12,COMMITTEE EMAIL,12,COMMITTEE EMAIL,61,COMMITTEE EMAIL,61,COMMITTEE EMAIL
14
+ change_of_committee_url,13,CHANGE OF COMMITTEE WEB URL,13,CHANGE OF COMMITTEE WEB URL,,,,
15
+ committee_url,14,COMMITTEE WEB URL,14,COMMITTEE WEB URL,62,COMMITTEE WEB URL,62,COMMITTEE WEB URL
16
+ committee_fax_number,,,,,63,COMMITTEE FAX NUMBER,,
17
+ effective_date,15,EFFECTIVE DATE,15,SUBMISSION DATE,9,DATE (Submitted),9,DATE (Submitted)
18
+ signature_name,,,,,59,NAME/TREASURER (as signed),59,NAME/TREASURER (as signed)
19
+ signature_last_name,16,SIGNATURE LAST NAME,16,SIGNATURE LAST NAME,,,,
20
+ signature_first_name,17,SIGNATURE FIRST NAME,17,SIGNATURE FIRST NAME,,,,
21
+ signature_middle_name,18,SIGNATURE MIDDLE NAME,18,SIGNATURE MIDDLE NAME,,,,
22
+ signature_prefix,19,SIGNATURE PREFIX,19,SIGNATURE PREFIX,,,,
23
+ signature_suffix,20,SIGNATURE SUFFIX,20,SIGNATURE SUFFIX,,,,
24
+ date_signed,21,DATE SIGNED,21,DATE SIGNED,60,DATE (Signed),60,DATE (Signed)
25
+ committee_type,22,5. COMMITTEE TYPE,22,5. COMMITTEE TYPE,12,5. COMMITTEE TYPE,12,5. COMMITTEE TYPE
26
+ candidate_id_number,23,5. CANDIDATE ID NUMBER,23,5. CANDIDATE ID NUMBER,13,5. FEC CANDIDATE ID NUMBER,13,5. FEC CANDIDATE ID NUMBER
27
+ candidate_name,,,,,14,5. CANDIDATE NAME,14,5. CANDIDATE NAME
28
+ candidate_last_name,24,5. CANDIDATE LAST NAME,24,5. CANDIDATE LAST NAME,,,,
29
+ candidate_first_name,25,5. CANDIDATE FIRST NAME,25,5. CANDIDATE FIRST NAME,,,,
30
+ candidate_middle_name,26,5. CANDIDATE MIDDLE NAME,26,5. CANDIDATE MIDDLE NAME,,,,
31
+ candidate_prefix,27,5. CANDIDATE PREFIX,27,5. CANDIDATE PREFIX,,,,
32
+ candidate_suffix,28,5. CANDIDATE SUFFIX,28,5. CANDIDATE SUFFIX,,,,
33
+ candidate_office,29,5. CANDIDATE OFFICE ,29,5. CANDIDATE OFFICE ,15,5. CAN/OFFICE ,15,5. CAN/OFFICE
34
+ candidate_state,30,5. CANDIDATE STATE,30,5. CANDIDATE STATE,16,5. CAN/STATE,16,5. CAN/STATE
35
+ candidate_district,31,5. CANDIDATE DISTRICT,31,5. CANDIDATE DISTRICT,17,5. CAN/DIST,17,5. CAN/DIST
36
+ party_code,32,5. PARTY CODE,32,5. PARTY CODE,18,5. PARTY CODE,18,5. PARTY CODE
37
+ party_type,33,5. PARTY TYPE,33,5. PARTY TYPE,19,5. PARTY TYPE,19,5. PARTY TYPE
38
+ organization_type,34,5 (e). ORGANIZATION TYPE,34,5 (e). ORGANIZATION TYPE,28,6. ORGANIZATION TYPE,28,6. ORGANIZATION TYPE
39
+ lobbyist_registrant_pac,35,5 (e). LOBBYIST/REGISTRANT PAC ,35,5 (e). LOBBYIST/REGISTRANT PAC ,,,,
40
+ lobbyist_registrant_pac_2,36,5 (f). LOBBYIST/REGISTRANT PAC ,36,5 (f). LOBBYIST/REGISTRANT PAC ,,,,
41
+ leadership_pac,37,5 (f). LEADERSHIP PAC,37,5 (f). LEADERSHIP PAC,,,,
42
+ affiliated_committee_id_number,38,6. AFFILIATED CMTTE ID NUM,38,6. AFFILIATED CMTTE ID NUM,20,6. FEC COMMITTEE ID NUMBER,20,6. FEC COMMITTEE ID NUMBER
43
+ affiliated_committee_name,39,6. AFFILIATED CMTTE NAME,39,6. AFFILIATED CMTTE NAME,21,6. COMMITTEE NAME (Affiliated),21,6. COMMITTEE NAME (Affiliated)
44
+ affiliated_candidate_id_number,40,6. AFFILIATED CANDIDATE ID NUM,40,6. AFFILIATED CANDIDATE ID NUM,,,,
45
+ affiliated_last_name,41,6. AFFILIATED LAST NAME,41,6. AFFILIATED LAST NAME,,,,
46
+ affiliated_first_name,42,6. AFFILIATED FIRST NAME,42,6. AFFILIATED FIRST NAME,,,,
47
+ affiliated_middle_name,43,6. AFFILIATED MIDDLE NAME,43,6. AFFILIATED MIDDLE NAME,,,,
48
+ affiliated_prefix,44,6. AFFILIATED PREFIX,44,6. AFFILIATED PREFIX,,,,
49
+ affiliated_suffix,45,6. AFFILIATED SUFFIX,45,6. AFFILIATED SUFFIX,,,,
50
+ affiliated_street_1,46,6. AFFILIATED STREET 1,46,6. AFFILIATED STREET 1,22,6. STREET 1,22,6. STREET 1
51
+ affiliated_street_2,47,6. AFFILIATED STREET 2,47,6. AFFILIATED STREET 2,23,6. STREET 2,23,6. STREET 2
52
+ affiliated_city,48,6. AFFILIATED CITY,48,6. AFFILIATED CITY,24,6. CITY,24,6. CITY
53
+ affiliated_state,49,6. AFFILIATED STATE,49,6. AFFILIATED STATE,25,6. STATE,25,6. STATE
54
+ affiliated_zip_code,50,6. AFFILIATED ZIP,50,6. AFFILIATED ZIP,26,6. ZIP,26,6. ZIP
55
+ affiliated_relationship_code,51,"6. AFFILIATED RELATIONSHIP CODE",51,6. AFFILIATED RELATIONSHIP CODE,27,6. RELATIONSHIP (w/ Above Cmte),27,6. RELATIONSHIP (w/ Above Cmte)
56
+ custodian_name,,,,,29,7. IND/NAME (Custodian Name),29,7. IND/NAME (Custodian Name)
57
+ custodian_last_name,52,7. CUSTODIAN LAST NAME,52,7. CUSTODIAN LAST NAME,,,,
58
+ custodian_first_name,53,7. CUSTODIAN FIRST NAME,53,7. CUSTODIAN FIRST NAME,,,,
59
+ custodian_middle_name,54,7. CUSTODIAN MIDDLE NAME,54,7. CUSTODIAN MIDDLE NAME,,,,
60
+ custodian_prefix,55,7. CUSTODIAN PREFIX,55,7. CUSTODIAN PREFIX,,,,
61
+ custodian_suffix,56,7. CUSTODIAN SUFFIX,56,7. CUSTODIAN SUFFIX,,,,
62
+ custodian_street_1,57,7. CUSTODIAN STREET 1,57,7. CUSTODIAN STREET 1,30,7. STREET 1,30,7. STREET 1
63
+ custodian_street_2,58,7. CUSTODIAN STREET 2,58,7. CUSTODIAN STREET 2,31,7. STREET 2,31,7. STREET 2
64
+ custodian_city,59,7. CUSTODIAN CITY,59,7. CUSTODIAN CITY,32,7. CITY,32,7. CITY
65
+ custodian_state,60,7. CUSTODIAN STATE,60,7. CUSTODIAN STATE,33,7. STATE,33,7. STATE
66
+ custodian_zip_code,61,7. CUSTODIAN ZIP,61,7. CUSTODIAN ZIP,34,7. ZIP,34,7. ZIP
67
+ custodian_title,62,7. CUSTODIAN TITLE,62,7. CUSTODIAN TITLE,35,7. TITLE,35,7. TITLE
68
+ custodian_telephone,63,7. CUSTODIAN TELEPHONE,63,7. CUSTODIAN TELEPHONE,36,7. TELEPHONE,36,7. TELEPHONE
69
+ treasurer_name,,,,,37,8. IND/NAME (Treasurer),37,8. IND/NAME (Treasurer)
70
+ treasurer_last_name,64,8. TREASURER LAST NAME,64,8. TREASURER LAST NAME,,,,
71
+ treasurer_first_name,65,8. TREASURER FIRST NAME,65,8. TREASURER FIRST NAME,,,,
72
+ treasurer_middle_name,66,8. TREASURER MIDDLE NAME,66,8. TREASURER MIDDLE NAME,,,,
73
+ treasurer_prefix,67,8. TREASURER PREFIX,67,8. TREASURER PREFIX,,,,
74
+ treasurer_suffix,68,8. TREASURER SUFFIX,68,8. TREASURER SUFFIX,,,,
75
+ treasurer_street_1,69,8. TREASURER STREET 1,69,8. TREASURER STREET 1,38,8. STREET 1,38,8. STREET 1
76
+ treasurer_street_2,70,8. TREASURER STREET 2,70,8. TREASURER STREET 2,39,8. STREET 2,39,8. STREET 2
77
+ treasurer_city,71,8. TREASURER CITY,71,8. TREASURER CITY,40,8. CITY,40,8. CITY
78
+ treasurer_state,72,8. TREASURER STATE,72,8. TREASURER STATE,41,8. STATE,41,8. STATE
79
+ treasurer_zip_code,73,8. TREASURER ZIP,73,8. TREASURER ZIP,42,8. ZIP,42,8. ZIP
80
+ treasurer_title,74,8. TREASURER TITLE,74,8. TREASURER TITLE,43,8. TITLE,43,8. TITLE
81
+ treasurer_telephone,75,8. TREASURER TELEPHONE,75,8. TREASURER TELEPHONE,44,8. TELEPHONE,44,8. TELEPHONE
82
+ agent_name,,,,,45,8. IND/NAME (Designated Agent),45,8. IND/NAME (Designated Agent)
83
+ agent_last_name,76,8. AGENT LAST NAME,76,8. AGENT LAST NAME,,,,
84
+ agent_first_name,77,8. AGENT FIRST NAME,77,8. AGENT FIRST NAME,,,,
85
+ agent_middle_name,78,8. AGENT MIDDLE NAME,78,8. AGENT MIDDLE NAME,,,,
86
+ agent_prefix,79,8. AGENT PREFIX,79,8. AGENT PREFIX,,,,
87
+ agent_suffix,80,8. AGENT SUFFIX,80,8. AGENT SUFFIX,,,,
88
+ agent_street_1,81,8. AGENT STREET 1,81,8. AGENT STREET 1,46,8. STREET 1,46,8. STREET 1
89
+ agent_street_2,82,8. AGENT STREET 2,82,8. AGENT STREET 2,47,8. STREET 2,47,8. STREET 2
90
+ agent_city,83,8. AGENT CITY,83,8. AGENT CITY,48,8. CITY,48,8. CITY
91
+ agent_state,84,8. AGENT STATE,84,8. AGENT STATE,49,8. STATE,49,8. STATE
92
+ agent_zip_code,85,8. AGENT ZIP,85,8. AGENT ZIP,50,8. ZIP,50,8. ZIP
93
+ agent_title,86,8. AGENT TITLE,86,8. AGENT TITLE,51,8. TITLE,51,8. TITLE
94
+ agent_telephone,87,8. AGENT TELEPHONE,87,8. AGENT TELEPHONE,52,8. TELEPHONE,52,8. TELEPHONE
95
+ bank_name,88,9. a) BANK NAME,88,9. a) BANK NAME,53,9. IND/NAME (Bank/Depository),53,9. IND/NAME (Bank/Depository)
96
+ bank_street_1,89,9. a) BANK STREET 1,89,9. a) BANK STREET 1,54,9. STREET 1,54,9. STREET 1
97
+ bank_street_2,90,9. a) BANK STREET 2,90,9. a) BANK STREET 2,55,9. STREET 2,55,9. STREET 2
98
+ bank_city,91,9. a) BANK CITY,91,9. a) BANK CITY,56,9. CITY,56,9. CITY
99
+ bank_state,92,9. a) BANK STATE,92,9. a) BANK STATE,57,9. STATE,57,9. STATE
100
+ bank_zip_code,93,9. a) BANK ZIP,93,9. a) BANK ZIP,58,9. ZIP,58,9. ZIP
101
+ bank2_name,94,9. b) BANK NAME,94,9. b) BANK NAME,,,,
102
+ bank2_street_1,95,9. b) BANK STREET 1,95,9. b) BANK STREET 1,,,,
103
+ bank2_street_2,96,9. b) BANK STREET 2,96,9. b) BANK STREET 2,,,,
104
+ bank2_city,97,9. b) BANK CITY,97,9. b) BANK CITY,,,,
105
+ bank2_state,98,9. b) BANK STATE,98,9. b) BANK STATE,,,,
106
+ bank2_zip_code,99,9. b) BANK ZIP,99,9. b) BANK ZIP,,,,
data/sources/F1M.csv ADDED
@@ -0,0 +1,78 @@
1
+ canonical,^8.0|7.0|6.4|6.3|6.2|6.1,,^5.3|5.2|5.1|5.0|3.0,
2
+ form_type,1,FORM TYPE,1,FORM TYPE
3
+ filer_committee_id_number,2,FILER COMMITTEE ID NUMBER,2,FILER COMMITTEE ID NUMBER
4
+ committee_name,3,COMMITTEE NAME,3,COMMITTEE NAME
5
+ street_1,4,STREET 1,4,STREET 1
6
+ street_2,5,STREET 2,5,STREET 2
7
+ city,6,CITY,6,CITY
8
+ state,7,STATE,7,STATE
9
+ zip_code,8,ZIP,8,ZIP
10
+ committee_type,9,COMMITTEE TYPE,9,COMMITTEE TYPE
11
+ affiliated_date_f1_filed,10,DATE (Of Affiliation),10,AFFILIATED - DATE FORM F1 FILED
12
+ affiliated_committee_id_number,11,FEC COMMITTEE ID NUMBER,11,AFFILIATED COMMITTEE FEC ID
13
+ affiliated_committee_name,12,COMMITTEE NAME,12,AFFILIATED COMMITTEE NAME
14
+ first_candidate_id_number,13,I CANDIDATE ID NUMBER,13,FEC CANDIDATE ID NUMBER
15
+ first_candidate_name,,,14,CANDIDATE NAME
16
+ first_candidate_last_name,14,I CANDIDATE LAST NAME,,
17
+ first_candidate_first_name,15,I CANDIDATE FIRST NAME,,
18
+ first_candidate_middle_name,16,I CANDIDATE MIDDLE NAME,,
19
+ first_candidate_prefix,17,I CANDIDATE PREFIX,,
20
+ first_candidate_suffix,18,I CANDIDATE SUFFIX,,
21
+ first_candidate_office,19,I CANDIDATE OFFICE,15,CAN/OFFICE
22
+ first_candidate_state,20,I CANDIDATE STATE ,16,CAN/STATE
23
+ first_candidate_district,21,I CANDIDATE DIST,17,CAN/DIST
24
+ first_candidate_contribution_date,22,I DATE OF CONTRIBUTION,18, DATE (Of Contribution)
25
+ second_candidate_id_number,23,II CANDIDATE ID NUMBER,19,FEC CANDIDATE ID NUMBER
26
+ second_candidate_name,,,20,CANDIDATE NAME
27
+ second_candidate_last_name,24,II CANDIDATE LAST NAME,,
28
+ second_candidate_second_name,25,II CANDIDATE FIRST NAME,,
29
+ second_candidate_middle_name,26,II CANDIDATE MIDDLE NAME,,
30
+ second_candidate_prefix,27,II CANDIDATE PREFIX,,
31
+ second_candidate_suffix,28,II CANDIDATE SUFFIX,,
32
+ second_candidate_office,29,II CANDIDATE OFFICE,21,CAN/OFFICE
33
+ second_candidate_state,30,II CANDIDATE STATE ,22,CAN/STATE
34
+ second_candidate_district,31,II CANDIDATE DIST,23,CAN/DIST
35
+ second_candidate_contribution_date,32,II DATE OF CONTRIBUTION,24, DATE (Of Contribution)
36
+ third_candidate_id_number,33,III CANDIDATE ID NUMBER,25,FEC CANDIDATE ID NUMBER
37
+ third_candidate_name,,,26,CANDIDATE NAME
38
+ third_candidate_last_name,34,III CANDIDATE LAST NAME,,
39
+ third_candidate_third_name,35,III CANDIDATE FIRST NAME,,
40
+ third_candidate_middle_name,36,III CANDIDATE MIDDLE NAME,,
41
+ third_candidate_prefix,37,III CANDIDATE PREFIX,,
42
+ third_candidate_suffix,38,III CANDIDATE SUFFIX,,
43
+ third_candidate_office,39,III CANDIDATE OFFICE,27,CAN/OFFICE
44
+ third_candidate_state,40,III CANDIDATE STATE ,28,CAN/STATE
45
+ third_candidate_district,41,III CANDIDATE DIST,29,CAN/DIST
46
+ third_candidate_contribution_date,42,III DATE OF CONTRIBUTION,30, DATE (Of Contribution)
47
+ fourth_candidate_id_number,43,IV CANDIDATE ID NUMBER,31,FEC CANDIDATE ID NUMBER
48
+ fourth_candidate_name,,,32,CANDIDATE NAME
49
+ fourth_candidate_last_name,44,IV CANDIDATE LAST NAME,,
50
+ fourth_candidate_fourth_name,45,IV CANDIDATE FIRST NAME,,
51
+ fourth_candidate_middle_name,46,IV CANDIDATE MIDDLE NAME,,
52
+ fourth_candidate_prefix,47,IV CANDIDATE PREFIX,,
53
+ fourth_candidate_suffix,48,IV CANDIDATE SUFFIX,,
54
+ fourth_candidate_office,49,IV CANDIDATE OFFICE,33,CAN/OFFICE
55
+ fourth_candidate_state,50,IV CANDIDATE STATE ,34,CAN/STATE
56
+ fourth_candidate_district,51,IV CANDIDATE DIST,35,CAN/DIST
57
+ fourth_candidate_contribution_date,52,IV DATE OF CONTRIBUTION,36, DATE (Of Contribution)
58
+ fifth_candidate_id_number,53,V CANDIDATE ID NUMBER,37,FEC CANDIDATE ID NUMBER
59
+ fifth_candidate_name,,,38,CANDIDATE NAME
60
+ fifth_candidate_last_name,54,V CANDIDATE LAST NAME,,
61
+ fifth_candidate_fifth_name,55,V CANDIDATE FIRST NAME,,
62
+ fifth_candidate_middle_name,56,V CANDIDATE MIDDLE NAME,,
63
+ fifth_candidate_prefix,57,V CANDIDATE PREFIX,,
64
+ fifth_candidate_suffix,58,V CANDIDATE SUFFIX,,
65
+ fifth_candidate_office,59,V CANDIDATE OFFICE,39,CAN/OFFICE
66
+ fifth_candidate_state,60,V CANDIDATE STATE ,40,CAN/STATE
67
+ fifth_candidate_district,61,V CANDIDATE DIST,41,CAN/DIST
68
+ fifth_candidate_contribution_date,62,V DATE OF CONTRIBUTION,42, DATE (Of Contribution)
69
+ fifty_first_contributor_date,63,DATE (Of 51st Contributor),43,DATE (Of 51st Contributor)
70
+ original_registration_date,64,DATE (Of Orig Registration),44,DATE (Of Orig Registration)
71
+ requirements_met_date,65,DATE (Cmte Met Requirements),45,DATE (Cmte Met Requirements)
72
+ treasurer_name,,,46,NAME/TREASURER (as signed)
73
+ treasurer_last_name,66,TREASURER LAST NAME,,
74
+ treasurer_first_name,67,TREASURER FIRST NAME,,
75
+ treasurer_middle_name,68,TREASURER MIDDLE NAME,,
76
+ treasurer_prefix,69,TREASURER PREFIX,,
77
+ treasurer_suffix,70,TREASURER SUFFIX,,
78
+ date_signed,71,DATE SIGNED,47,DATE SIGNED
data/sources/F2.csv ADDED
@@ -0,0 +1,43 @@
1
+ canonical,^8.0|7.0|6.4,,^6.3|6.2|6.1,,^5.3|5.2|5.1|5.0,,^3.0,
2
+ form_type,1,FORM TYPE,1,FORM TYPE,1,FORM TYPE,1,FORM TYPE
3
+ candidate_id_number,2,FILER CANDIDATE ID NUMBER,2,FILER CANDIDATE ID NUMBER,2,FILER FEC CAND ID ,2,FILER FEC CAND ID
4
+ candidate_name,,,,,3,CANDIDATE NAME,3,CANDIDATE NAME
5
+ candidate_last_name,3,CANDIDATE LAST NAME,3,CANDIDATE LAST NAME,32,CANDIDATE LAST NAME,,
6
+ candidate_first_name,4,CANDIDATE FIRST NAME,4,CANDIDATE FIRST NAME,33,CANDIDATE FIRST NAME,,
7
+ candidate_middle_name,5,CANDIDATE MIDDLE NAME,5,CANDIDATE MIDDLE NAME,34,CANDIDATE MIDDLE NAME,,
8
+ candidate_prefix,6,CANDIDATE PREFIX,6,CANDIDATE PREFIX,35,CANDIDATE PREFIX,,
9
+ candidate_suffix,7,CANDIDATE SUFFIX,7,CANDIDATE SUFFIX,36,CANDIDATE SUFFIX,,
10
+ change_of_address,8,CHANGE OF ADDRESS,8,CHANGE OF ADDRESS,,,,
11
+ candidate_street_1,9,CANDIDATE STREET 1,9,CANDIDATE STREET 1,4,STREET 1,4,STREET 1
12
+ candidate_street_2,10,CANDIDATE STREET 2,10,CANDIDATE STREET 2,5,STREET 2,5,STREET 2
13
+ candidate_city,11,CANDIDATE CITY,11,CANDIDATE CITY,6,CITY,6,CITY
14
+ candidate_state,12,CANDIDATE STATE,12,CANDIDATE STATE,7,STATE,7,STATE
15
+ candidate_zip_code,13,CANDIDATE ZIP,13,CANDIDATE ZIP,8,ZIP,8,ZIP
16
+ candidate_party_code,14,CANDIDATE PARTY CODE,14,CANDIDATE PARTY CODE,9,PTY/CODE,9,PTY/CODE
17
+ candidate_office,15,CANDIDATE OFFICE,15,CANDIDATE OFFICE,10,CAN/OFFICE,10,CAN/OFFICE
18
+ candidate_state,16,CANDIDATE STATE ,16,CANDIDATE STATE ,11,CAN/STATE ,11,CAN/STATE
19
+ candidate_district,17,CANDIDATE DISTRICT,17,CANDIDATE DISTRICT,12,CAN/DIST,12,CAN/DIST
20
+ election_year,18,YEAR OF ELECTION 1900-2999,18,YEAR OF ELECTION 1900-2999,13,YEAR OF ELECTION 1900-2999,13,YEAR OF ELECTION 1900-2999
21
+ committee_id_number,19,PCC COMMITTEE ID NUMBER,19,PCC COMMITTEE ID NUMBER,14,FEC COMMITTEE ID NUMBER (PCC),14,FEC COMMITTEE ID NUMBER (PCC)
22
+ committee_name,20,PCC COMMITTEE NAME,20,PCC COMMITTEE NAME,15,COMMITTEE NAME (PCC),15,COMMITTEE NAME (PCC)
23
+ committee_street_1,21,PCC STREET 1,21,PCC STREET 1,16,STREET 1,16,STREET 1
24
+ committee_street_2,22,PCC STREET 2,22,PCC STREET 2,17,STREET 2,17,STREET 2
25
+ committee_city,23,PCC CITY,23,PCC CITY,18,CITY,18,CITY
26
+ committee_state,24,PCC STATE,24,PCC STATE,19,STATE,19,STATE
27
+ committee_zip_code,25,PCC ZIP,25,PCC ZIP,20,ZIP,20,ZIP
28
+ authorized_committee_id_number,26,AUTH COMMITTEE ID NUMBER,26,AUTH COMMITTEE ID NUMBER,21,FEC COMMITTEE ID NUMBER (Auth),21,FEC COMMITTEE ID NUMBER (Auth)
29
+ authorized_committee_name,27,AUTH COMMITTEE NAME,27,AUTH COMMITTEE NAME,22,COMMITTEE NAME (Auth),22,COMMITTEE NAME (Auth)
30
+ authorized_committee_street_1,28,AUTH STREET 1,28,AUTH STREET 1,23,STREET 1,23,STREET 1
31
+ authorized_committee_street_2,29,AUTH STREET 2,29,AUTH STREET 2,24,STREET 2,24,STREET 2
32
+ authorized_committee_city,30,AUTH CITY,30,AUTH CITY,25,CITY,25,CITY
33
+ authorized_committee_state,31,AUTH STATE,31,AUTH STATE,26,STATE,26,STATE
34
+ authorized_committee_zip_code,32,AUTH ZIP,32,AUTH ZIP,27,ZIP,27,ZIP
35
+ candidate_signature_name,,,,,28,NAME/CAN (as signed),28,NAME/CAN (as signed)
36
+ candidate_signature_last_name,33,CANDIDATE SIGNATURE LAST NAME,35,CANDIDATE SIGNATURE LAST NAME,,,,
37
+ candidate_signature_first_name,34,CANDIDATE SIGNATURE FIRST NAME,36,CANDIDATE SIGNATURE FIRST NAME,,,,
38
+ candidate_signature_middle_name,35,CANDIDATE SIGNATURE MIDDLE NAME,37,CANDIDATE SIGNATURE MIDDLE NAME,,,,
39
+ candidate_signature_prefix,36,CANDIDATE SIGNATURE PREFIX,38,CANDIDATE SIGNATURE PREFIX,,,,
40
+ candidate_signature_suffix,37,CANDIDATE SIGNATURE SUFFIX,39,CANDIDATE SIGNATURE SUFFIX,,,,
41
+ date_signed,38,DATE SIGNED,40,DATE SIGNED,29,DATE (Signed),29,DATE (Signed)
42
+ primary_personal_funds_declared,,,33,PRI PERSONAL FUNDS DECLARED,30,PRI PERSONAL FUNDS DECLARED,,
43
+ general_personal_funds_declared,,,34,GEN PERSONAL FUNDS DECLARED,31,GEN PERSONAL FUNDS DECLARED,,
data/sources/F24.csv ADDED
@@ -0,0 +1,18 @@
1
+ canonical,^8.0,,^7.0|6.4|6.3|6.2|6.1,,^5.0|5.1|5.2|5.3,,^3,
2
+ form_type,1,FORM TYPE,1,FORM TYPE,1,FORM TYPE,1,FORM TYPE
3
+ filer_committee_id_number,2,FILER COMMITTEE ID NUMBER,2,FILER COMMITTEE ID NUMBER,2,FILER COMMITTEE ID NUMBER,2,FILER FEC CMTE ID
4
+ report_type,3,REPORT TYPE {24/48 Hour},3,REPORT TYPE {24/48 Hour},11,REPORT TYPE,,
5
+ original_amendment_date,4,ORIGINAL AMENDMENT DATE,,
6
+ committee_name,5,COMMITTEE NAME,4,COMMITTEE NAME,3,COMMITTEE NAME,3,COMMITTEE NAME
7
+ street_1,6,STREET 1,5,STREET 1,4,STREET 1,4,STREET 1
8
+ street_2,7,STREET 1,6,STREET 2,5,STREET 2,5,STREET 2
9
+ city,8,CITY,7,CITY,6,CITY,6,CITY
10
+ state,9,STATE,8,STATE,7,STATE,7,STATE
11
+ zip_code,10,ZIP,9,ZIP,8,ZIP,8,ZIP
12
+ treasurer_name,,,,9,NAME/TREASURER (as signed),9,NAME/TREASURER (as signed)
13
+ treasurer_last_name,11,TREASURER LAST NAME,10,TREASURER LAST NAME,,,,
14
+ treasurer_first_name,12,TREASURER FIRST NAME,11,TREASURER FIRST NAME,,,,
15
+ treasurer_middle_name,13,TREASURER MIDDLE NAME,12,TREASURER MIDDLE NAME,,,,
16
+ treasurer_prefix,14,TREASURER PREFIX,13,TREASURER PREFIX,,,,
17
+ treasurer_suffix,15,TREASURER SUFFIX,14,TREASURER SUFFIX,,,,
18
+ date_signed,16,DATE SIGNED,15,DATE SIGNED,10,DATE (Signed),10,DATE (Signed)
data/sources/F3.csv ADDED
@@ -0,0 +1 @@
1
+ canonical,^8.0|7.0|6.4,,^6.3|6.2|6.1,,^5.3|5.2|5.1|5.0,,^3.0,
data/sources/F3L.csv ADDED
@@ -0,0 +1,27 @@
1
+ canonical,^8.0|7.0|6.4
2
+ form_type,1,FORM TYPE
3
+ filer_committee_id_number,2,FILER COMMITTEE ID NUMBER
4
+ committee_name,3,COMMITTEE NAME
5
+ change_of_address,4,CHANGE OF ADDRESS
6
+ street_1,5,STREET 1
7
+ street_2,6,STREET 2
8
+ city,7,CITY
9
+ state,8,STATE
10
+ zip_code,9,ZIP
11
+ report_code,12,REPORT CODE
12
+ election_date,13,DATE OF ELECTION
13
+ election_state,10,ELECTION STATE
14
+ election_district,11,ELECTION DISTRICT
15
+ coverage_from_date,16,COVERAGE FROM DATE
16
+ coverage_through_date,17,COVERAGE THROUGH DATE
17
+ semi_annual_period,15,SEMI-ANNUAL PERIOD - Sect 5(c) or (d)
18
+ semi_annual_period_jan_june,18,SEMI-ANNUAL JAN-JUN - Sect 6(b)
19
+ semi_annual_period_jul_dec,19,SEMI-ANNUAL JUL-DEC - Sect 6(b)
20
+ quarterly_monthly_bundled_contributions,20,QTR/MON/POST BUNDLED CONTRIBUTIONS
21
+ semi_annual_bundled_contributions,21,SEMI-ANNUAL BUNDLED CONTRIBS
22
+ treasurer_last_name,22,TREASURER LAST NAME
23
+ treasurer_first_name,23,TREASURER FIRST NAME
24
+ treasurer_middle_name,24,TREASURER MIDDLE NAME
25
+ treasurer_prefix,25,TREASURER PREFIX
26
+ treasurer_suffix,26,TREASURER SUFFIX
27
+ date_signed,27,DATE SIGNED