atlas_engine 0.7.0 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9948b64010b57506c90e07bf0fc324c7ad158112169375aa1ac1f7053850a9be
4
- data.tar.gz: 872cd26b540c96af7a777b044a4af20cce6d1b7df5569f0b3cd7aaf999fb1847
3
+ metadata.gz: 1bdadba3857324dae37bf4c22aa4078b4f565876c0f865a4d3b99db69d0eaa41
4
+ data.tar.gz: 4004ade11bd387145ed6b82cb8b5df9a99989b3d1869cc1d40fd7fb310e3fc7c
5
5
  SHA512:
6
- metadata.gz: d8ea33678c4c924fb202cecf027e4796892430c35394233c0a971474166b71a10881a6ddc2cc6056d7f66df6b225a63cfdafe18b5590327035d19f3f4e70cf99
7
- data.tar.gz: 30d5b8b914d14f4fd6871228435383ff90499e25617af0c7dc5a6a5580fbf4005854f2189034712f4030001878be8c6ee42223e5b94a1890b2a14f8be80e0dc3
6
+ metadata.gz: 846730be55864274ddd3d61e90ffd970102ea54d25221e411cee78c91daaa974a1159d0c976cde708ac6ea355815deb9c1d91230ef9c4eb49dcf38fe59e4be27
7
+ data.tar.gz: 791c4a0050adab0b39092b660c56968d7f6862a1387914f50341f940153963487f9fc8ec8533ee6519fd8569bd69022c8cb7ce181c3017a14313fd32a49879a7
data/README.md CHANGED
@@ -290,12 +290,46 @@ level address validation, your app must have a populated elasticsearch index per
290
290
  to query.
291
291
 
292
292
  The data we use to power atlas engine validation is free open source data from the [open addresses](https://openaddresses.io/)
293
- project. The following guide demostrates how to ingest data with the dummy app, but the process is the same with
293
+ project.
294
+
295
+ ### Supported countries
296
+ At the moment, `atlas_engine` supports advanced address validation for the following countries.
297
+
298
+ | Country/territory | Two-letter code | Locales | Street | City | Postal Code | Province/State |
299
+ |-------------------|-----------------|----------|--------|------|-------------|----------------|
300
+ | Australia | AU | | | x | x | x |
301
+ | Austria | AT | | | x | x | x |
302
+ | Belgium | BE | fr,nl,de | | x | x | |
303
+ | Bermuda | BM | | | x | x | x |
304
+ | Czechia | CZ | | | x | x | |
305
+ | Denmark | DK | | | x | x | |
306
+ | Faroe Islands | FO | | | x | x | |
307
+ | France | FR | | | x | x | |
308
+ | Italy | IT | | | | x | |
309
+ | Liechtenstein | LI | | | x | x | x |
310
+ | Luxembourg | LU | fr,lb | | x | x | |
311
+ | Netherlands | NL | nl | | x | x | x |
312
+ | Poland | PL | | | x | x | x |
313
+ | Portugal | PT | | | x | x | x |
314
+ | Slovenia | SI | | | x | x | x |
315
+ | South Korea | KR | | | x | x | x |
316
+ | Switzerland | CH | de,fr,it | | x | x | |
317
+
318
+ ### Downloading and indexing instructions
319
+
320
+
321
+ The following guide demonstrates how to ingest data with the dummy app, but the process is the same with
294
322
  the engine mounted into your own rails app.
295
323
 
296
324
  1. Go to the [open addresses](https://openaddresses.io/) download center, create an account, support the project, and
297
- download a GeoJSON+LD file for the country or region you wish to validate. For this example, we will be using the
298
- countrywide addresses data for Australia.
325
+ download a GeoJSON+LD file for the country or region you wish to validate.
326
+
327
+ Restrictions on the file:
328
+ - Must be an `addresses` file, as opposed to a `buildings` or `parcels` file.
329
+ - Must be gzipped (.gz format)
330
+ - Datasets listed under the _Individual Sources_ section work fine. Those under _Data Collections_ must first be unzipped. The `addresses` geojson files within may then be gzipped and imported.
331
+
332
+ For this example, we will be using the `au/countrywide` --> `addresses - country` data for Australia, in the GeoJSON+LD format.
299
333
 
300
334
  2. Once the file is downloaded, start your app with `rails s` and navigate to `http://localhost:3000/maintenance_tasks`
301
335
  (see [the github repo](https://github.com/Shopify/maintenance_tasks) for more information about maintenance_tasks).
@@ -309,7 +343,7 @@ records in our mysql database and has the following parameters:
309
343
  - **country_code: (required)** The ISO country code of the data we are ingesting.
310
344
  In this example, the country code of Australia is `AU`.
311
345
 
312
- - **geojson_file_path: (required)** The fully qualified path of the previously downloaded geojson data from open addresses.
346
+ - **geojson_file_path: (required)** The fully qualified path of the previously downloaded geojson data from OpenAddresses. A comma-delimited list of fully-qualified paths is also accepted.
313
347
 
314
348
  - **locale: (optional)** The language of the data in the open addresses file.
315
349
 
@@ -0,0 +1,38 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module AtlasEngine
5
+ module Gg
6
+ module AddressImporter
7
+ module Corrections
8
+ module OpenAddress
9
+ class CityCorrector
10
+ class << self
11
+ extend T::Sig
12
+
13
+ CITY_ALIASES_MAPPING = {
14
+ "St. Sampson" => ["Saint Samsaon"],
15
+ "St. Saviour" => ["Saint-Sauveur", "Saint Sauveux"],
16
+ "St. Peter Port" => ["Saint-Pierre Port"],
17
+ "St. Andrew" => ["Saint Andri", "Saint-André-de-la-Pommeraye"],
18
+ "St. Pierre Du Bois" => ["St. Peter's", "St. Pierre"],
19
+ "Castel" => ["Lé Casté", "Sainte-Marie-du-Câtel"],
20
+ "Forest" => ["Le Fôret", "La Fouarêt"],
21
+ "Torteval" => ["Tortévas"],
22
+ "Vale" => ["Lé Vale", "Le Valle"],
23
+ }
24
+
25
+ sig { params(address: Hash).void }
26
+ def apply(address)
27
+ city = address[:city].first
28
+ if CITY_ALIASES_MAPPING.include?(city)
29
+ address[:city] += CITY_ALIASES_MAPPING[city]
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -6,6 +6,10 @@ validation:
6
6
  address_parser: AtlasEngine::Gg::ValidationTranscriber::AddressParser
7
7
  restrictions:
8
8
  - class: AtlasEngine::Gg::AddressValidation::Validators::FullAddress::Restrictions::UnsupportedCity
9
+ ingestion:
10
+ correctors:
11
+ open_address:
12
+ - AtlasEngine::Gg::AddressImporter::Corrections::OpenAddress::CityCorrector
9
13
  exclusions:
10
14
  city:
11
15
  - AtlasEngine::Gg::AddressValidation::Validators::FullAddress::Exclusions::City
@@ -0,0 +1,3 @@
1
+ city_synonyms:
2
+ - st, saint
3
+ - ste, sainte
@@ -10,16 +10,30 @@ module AtlasEngine
10
10
  CITY = %r{
11
11
  (?<city>
12
12
  st\.?\s?saviour[']?[s]?|
13
+ saint[-|\s]sauveur|
14
+ saint\s?sauveux|
13
15
  st\.?\s?sampson[']?[s]?|
16
+ saint\s?samsaon|
14
17
  st\.?\s?andrew[']?[s]?|
18
+ saint\s?andri|
19
+ saint[-|\s]andr[é|e][-|\s]de[-|\s]la[-|\s]pommeraye|
15
20
  st\.?\s?martin[']?[s]?|
16
21
  st\.?\s?peter[']?[s]?\s?port|
22
+ saint[-|\s]pierre\s?port|
17
23
  st\.?\s?peter[']?[s]?|
18
24
  st\.?\s?pierre\s?du\s?bois|
25
+ st\.?\s?pierre|
19
26
  vale|
27
+ l[é|e]\s?vale|
28
+ le\s?valle|
20
29
  torteval|
30
+ tort[é|e]vas|
21
31
  castel|
22
- forest
32
+ l[é|e]\s?cast[é|e]|
33
+ sainte[-|\s]marie[-|\s]du[-|\s]c[â|a]tel|
34
+ forest|
35
+ le\s?f[ô|o]ret|
36
+ la\s?fouar[ê|e]t
23
37
  )
24
38
  }ix
25
39
 
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module AtlasEngine
5
- VERSION = "0.7.0"
5
+ VERSION = "0.8.0"
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: atlas_engine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shopify
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-03-14 00:00:00.000000000 Z
11
+ date: 2024-04-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: annex_29
@@ -305,9 +305,11 @@ files:
305
305
  - app/countries/atlas_engine/gb/country_profile.yml
306
306
  - app/countries/atlas_engine/gb/validation_transcriber/full_address_parser.rb
307
307
  - app/countries/atlas_engine/gb/validation_transcriber/parsed_address.rb
308
+ - app/countries/atlas_engine/gg/address_importer/corrections/open_address/city_corrector.rb
308
309
  - app/countries/atlas_engine/gg/address_validation/validators/full_address/exclusions/city.rb
309
310
  - app/countries/atlas_engine/gg/address_validation/validators/full_address/restrictions/unsupported_city.rb
310
311
  - app/countries/atlas_engine/gg/country_profile.yml
312
+ - app/countries/atlas_engine/gg/synonyms.yml
311
313
  - app/countries/atlas_engine/gg/validation_transcriber/address_parser.rb
312
314
  - app/countries/atlas_engine/ie/country_profile.yml
313
315
  - app/countries/atlas_engine/it/address_importer/corrections/open_address/city_corrector.rb
@@ -595,7 +597,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
595
597
  - !ruby/object:Gem::Version
596
598
  version: '0'
597
599
  requirements: []
598
- rubygems_version: 3.5.6
600
+ rubygems_version: 3.5.7
599
601
  signing_key:
600
602
  specification_version: 4
601
603
  summary: Address Validation API