Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

郵便番号"921-8046"を指定した場合にエラーになる #6

Closed
terukizm opened this issue Dec 16, 2020 · 3 comments
Closed

Comments

@terukizm
Copy link

terukizm commented Dec 16, 2020

日本語で失礼いたします。郵便番号921-8046を指定した場合に、以下のようなエラーになります。

>>> import posuto
>>> posuto.get('921-8046')
(略)
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/local/lib/python3.6/site-packages/posuto/posuto.py", line 56, in get
    base['alternates'] = [PostalCode(**aa) for aa in base['alternates']]
  File "/usr/local/lib/python3.6/site-packages/posuto/posuto.py", line 56, in <listcomp>
    base['alternates'] = [PostalCode(**aa) for aa in base['alternates']]
TypeError: __new__() missing 3 required positional arguments: 'prefecture_romaji', 'city_romaji', and 'neighborhood_romaji'

確認環境:

  • posuto-0.2.1
  • Python 3.6.10

いわゆる「KEN_ALL.CSVが複数行の場合」なのかなと思ったのですが、特にそういうわけでもなさそうでした。
どういう場合に該当するのかちょっと追いきれなかったのですが(postaldata.jsonにnamedtupleの項目がないから?)、ご確認いただければ幸いです。

参考までに…

$ curl -sS https://raw.githubusercontent.com/polm/posuto/master/posuto/postaldata.json | jq '.["9218046"]'{
  "jisx0402": "17201",
  "old_code": "92181",
  "postal_code": "9218046",
  "prefecture_kana": "イシカワケン",
  "city_kana": "カナザワシ",
  "neighborhood_kana": "オオクワマチ",
  "prefecture": "石川県",
  "city": "金沢市",
  "neighborhood": "大桑町",
  "partial": true,
  "koazabanchi": false,
  "chome": false,
  "multi": true,
  "update_status": "変更なし",
  "update_reason": "変更なし",
  "multiline": true,
  "alternates": [
    {
      "jisx0402": "17201",
      "old_code": "92181",
      "postal_code": "9218046",
      "prefecture_kana": "イシカワケン",
      "city_kana": "カナザワシ",
      "neighborhood_kana": "ミツコウジマチ",
      "prefecture": "石川県",
      "city": "金沢市",
      "neighborhood": "三小牛町",
      "partial": true,
      "koazabanchi": false,
      "chome": false,
      "multi": true,
      "update_status": "変更なし",
      "update_reason": "変更なし",
      "multiline": false,
      "alternates": [],
      "note": "ヘ"
    }
  ],
  "note": "ア、イ、ヰ、ウ、上野、ヲ、オ乙、鐘搗山、上川原、上猫下、ク、ケ、御所谷、小寺山、シ、下上野、下西欠、平、チ、ツ乙、ツ丙、テ、ト、中上野、中尾山、中平、中ノ大平、西ノ山、猫シタイ、ノ、ハ、開、法師山、坊山、マ、鱒川淵、ム、元末、元涌波庚、ヤ、リ、ル、レ乙、レ甲、ロ乙、ロ甲、和",
  "prefecture_romaji": "Ishikawa Ken",
  "city_romaji": "Kanazawa Shi",
  "neighborhood_romaji": "Okuwamachi"
}

$ curl -sS -L "https://github.com/polm/posuto/blob/master/raw/ken_all.utf8.csv?raw=true" | grep "9218046"
17201,"92181","9218046","イシカワケン","カナザワシ","オオクワマチ(ア、イ、イ、ウ、ウエノ、オ、オオツ、カネツキヤマ、カミカワラ、カミネコシタ、","石川県","金沢市","大桑町(ア、イ、ヰ、ウ、上野、ヲ、オ乙、鐘搗山、上川原、上猫下、",1,0,0,1,0,0
17201,"92181","9218046","イシカワケン","カナザワシ","ク、ケ、ゴショガダニ、コデラヤマ、シ、シモウエノ、シモニシガケ、ダイラ、チ、ツオツ、ツヘイ、テ、ト、","石川県","金沢市","ク、ケ、御所谷、小寺山、シ、下上野、下西欠、平、チ、ツ乙、ツ丙、テ、ト、",1,0,0,1,0,0
17201,"92181","9218046","イシカワケン","カナザワシ","ナカウエノ、ナカオヤマ、ナカダイラ、ナカノオオヒラ、ニシノヤマ、ネコノシタイ、ノ、ハ、ヒラキ、","石川県","金沢市","中上野、中尾山、中平、中ノ大平、西ノ山、猫シタイ、ノ、ハ、開、",1,0,0,1,0,0
17201,"92181","9218046","イシカワケン","カナザワシ","ホウシヤマ、ボウヤマ、マ、マスカワブチ、ム、モトスエ、モトワクナミコウ、ヤ、リ、ル、レオツ、","石川県","金沢市","法師山、坊山、マ、鱒川淵、ム、元末、元涌波庚、ヤ、リ、ル、レ乙、",1,0,0,1,0,0
17201,"92181","9218046","イシカワケン","カナザワシ","レコウ、ロオツ、ロコウ、ワ)","石川県","金沢市","レ甲、ロ乙、ロ甲、和)",1,0,0,1,0,0
17201,"92181","9218046","イシカワケン","カナザワシ","ミツコウジマチ(ヘ)","石川県","金沢市","三小牛町(ヘ)",1,0,0,1,0,0

$ docker run -it --rm python:3.8.6-slim /bin/bash -c 'pip3 install posuto; python -c "import posuto; posuto.get("921-8046")"'
Collecting posuto
Downloading posuto-0.2.1.tar.gz (5.4 MB)
|████████████████████████████████| 5.4 MB 3.6 MB/s
Building wheels for collected packages: posuto
Building wheel for posuto (setup.py) ... done
Created wheel for posuto: filename=posuto-0.2.1-py3-none-any.whl size=5324729 sha256=5f3fcfe986c5072b00316b391f0b1d4faa7b576bbd9852c5036a266e31dfbbe9
Stored in directory: /root/.cache/pip/wheels/6b/a0/fb/8b586611424f543d9622afcbe2e916efee1e98e6293305bf5b
Successfully built posuto
Installing collected packages: posuto
Successfully installed posuto-0.2.1
WARNING: You are using pip version 20.3.1; however, version 20.3.3 is available.
You should consider upgrading via the '/usr/local/bin/python -m pip install --upgrade pip' command.
Traceback (most recent call last):
File "", line 1, in
File "/usr/local/lib/python3.8/site-packages/posuto/posuto.py", line 56, in get
base['alternates'] = [PostalCode(**aa) for aa in base['alternates']]
File "/usr/local/lib/python3.8/site-packages/posuto/posuto.py", line 56, in
base['alternates'] = [PostalCode(**aa) for aa in base['alternates']]
TypeError: new() missing 3 required positional arguments: 'prefecture_romaji', 'city_romaji', and 'neighborhood_romaji'

@polm
Copy link
Owner

polm commented Dec 17, 2020

ご報告ありがとうございます。

複数行の項目が関係しているみたいですが確かにそれだけではありません。複数行+複数行以外の項目の場合ローマ字の紐付けがうまくいっていないみたいです。

今調査しています、しばらくお待ちください。

@polm polm closed this as completed in 7c683e3 Dec 18, 2020
@polm
Copy link
Owner

polm commented Dec 18, 2020

修正しましてv0.2.2をリリースしました、ご確認ください。

エラーの原因はやっぱり複数行の項目と、同じ郵便番号で、複数行の項目以外の項目があったからです。こういう組み合わせはこの郵便番号以外にありません。ローマ字の情報を紐付ける処理で、複数行の項目がある場合にalternates(複数行でない複数項目のこと)を確認しなかったので、ローマ字情報は紐付けることなくデータができてしまい、このエラーが出ました。

ご報告ありがとうございました。

@terukizm
Copy link
Author

複数行の項目と、同じ郵便番号で、複数行の項目以外の項目があったから

921-8046が「複数行であり」かつ「同じ郵便番号で、複数行ではない項目があった」ということですね…
https://api.nipponsoft.co.jp/zipcode/921-8046
確かにおっしゃるとおりでした… (so crazy...)

v0.2.2にて以下のように実行されることを確認いたしました。
迅速かつ丁寧なご対応、まことにありがとうございました!!

>>> import posuto
>>> posuto.get('921-8046')
PostalCode(jisx0402='17201', old_code='92181', postal_code='9218046', prefecture='石川県', city='金沢市', neighborhood='大桑町', prefecture_kana='イシカワケン', city_kana='カナザワシ', neighborhood_kana='オオクワマチ', prefecture_romaji='Ishikawa Ken', city_romaji='Kanazawa Shi', neighborhood_romaji='Okuwamachi', partial=True, chome=False, koazabanchi=False, multi=True, multiline=True, update_status='変更なし', update_reason='変更なし', note='ア、イ、ヰ、ウ、上野、ヲ、オ乙、鐘搗山、上川原、上猫下、ク、ケ、御所谷、小寺山、シ、下上野、下西欠、平、チ、ツ乙、ツ丙、テ、ト、中上野、中尾山、中平、中ノ大平、西ノ山、猫シタイ、ノ、ハ、開、法師山、坊山、マ、鱒川淵、ム、元末、元涌波庚、ヤ、リ、ル、レ乙、レ甲、ロ乙、ロ甲、和', alternates=[PostalCode(jisx0402='17201', old_code='92181', postal_code='9218046', prefecture='石川県', city='金沢市', neighborhood='三小牛町', prefecture_kana='イシカワケン', city_kana='カナザワシ', neighborhood_kana='ミツコウジマチ', prefecture_romaji='Ishikawa Ken', city_romaji='Kanazawa Shi', neighborhood_romaji='Mitsukojimachi', partial=True, chome=False, koazabanchi=False, multi=True, 

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants