Giter Club home page Giter Club logo

jpholiday's People

Contributors

dependabot[bot] avatar goodclues avatar lalcs avatar otsuka avatar panda1100 avatar tukamotoryuzo avatar yuichinotoya avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

jpholiday's Issues

2021年、海の日と山の日とスポーツの日の日付ずれている

こんにちは。
いつも利用しておりまして、大変助かっております。
ありがとうございます!
表題の通り2021年の一部休日の日付がずれていると思いご連絡しました。

手元の結果
(datetime.date(2021, 7, 19), '海の日'),
(datetime.date(2021, 8, 11), '山の日'),
(datetime.date(2021, 10, 11), 'スポーツの日'),

正しくは以下と思います。
(datetime.date(2021, 7, 22), '海の日'),
(datetime.date(2021, 7, 23), 'スポーツの日'),
(datetime.date(2021, 8, 8), '山の日'),

test_year_2020.py が Fail する

jpholiday を利用させて頂いております。 必要になる都度、祝日判定処理を自前で実装していたのですが、ライブラリ化して頂いているので大変、助かっております (作者の方に感謝いたします)。 オンラインのカレンダー情報を利用するライブラリを見かけたのですが、接続先の影響 (URL 変更やフォーマット変更) を受けてしまう為、「ローカルのみで動作する」という方針も有り難いです。

a08df7a でユニットテストを実行したところ、Fail するようです。 他の年のユニットテストも Fail するようなのですが、他の方の環境ですとテスト結果は如何でしょうか?

# python -m unittest tests/test_year_2020.py
FFF
======================================================================
FAIL: test_count_month (tests.test_year_2020.TestYear2020)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/jpholiday/tests/test_year_2020.py", line 36, in test_count_month
    self.assertEqual(len(jpholiday.month_holidays(2020, 1)), 2)
AssertionError: 0 != 2

======================================================================
FAIL: test_count_year (tests.test_year_2020.TestYear2020)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/jpholiday/tests/test_year_2020.py", line 53, in test_count_year
    self.assertEqual(len(jpholiday.year_holidays(2020)), 18)
AssertionError: 0 != 18

======================================================================
FAIL: test_holiday (tests.test_year_2020.TestYear2020)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/jpholiday/tests/test_year_2020.py", line 13, in test_holiday
    self.assertEqual(jpholiday.is_holiday_name(datetime.date(2020, 1, 1)), '元日')
AssertionError: None != '元日'

----------------------------------------------------------------------
Ran 3 tests in 0.005s

FAILED (failures=3)

祝日関する法律制定年について

法律制定年この辺に不備があったようです。
例として:
天皇誕生日(平成以降)
jpholiday.year_holidays(1948)-->(datetime.date(1948, 12, 23), '天皇誕生日'):X
振替休日(1973年以降)
jpholiday.year_holidays(1971)-->(datetime.date(1971, 10, 11), '体育の日 振替休日'):X
ご確認よろしくお願いします。

土日+カスタム祝日も含ませる拡張機能

便利なライブラリ、ありがとうございます。令和対応まで感謝です。

jpholidayの対応範囲ではないことを知りつつもリクエストさせていただきたいです。

  1. 土日の場合もTrueを返すオプション
  2. 祝日を追加設定できる(会社の創立記念日、12/30-1/4は毎年休みにする、など)

今は自作しているのですが、jpholidayにこの機能があればいいなと思いました。
もしくは、jpholidayをwrapしたそのようなライブラリがあれば、教えていただきたいです。

_to_date() 関数の型チェックを通らないケースがある

jpholiday を活用させてもらっています。

0.1.5 から 0.1.7 にアップデートしてから、アプリケーションのテストでエラーが発生するようになり、調べていたところ
e4e51f8#diff-3eb44a14116fd7cebc4b4c3347aaca4726cad6b18d083021f8227080181367e0R106-R115
こちらの変更で型チェックが入るようになったのが原因でした。

freezegun という Fake の date オブジェクトを生成するテストツールと合わせて使っているのですが、次のテストコードで _to_date() 関数から JPHolidayTypeError が送出されるエラーを再現できます。

class TestFreezegun(unittest.TestCase):

    def setUp(self) -> None:
        self.the_date = datetime.date(2020, 7, 24)

    @freezegun.freeze_time('2020-7-24')
    def test_freezegun_date(self):
        today = datetime.date.today()
        self.assertTrue(jpholiday.is_holiday(today))

        # this raises "jpholiday.exception.JPHolidayTypeError: is type datetime or date only."
        self.assertTrue(jpholiday.is_holiday(self.the_date))

_to_date() 関数内の型チェックを type(value) is ... から isinstance(value, ...) 関数を使う形に変更すれば、上記のテストも通るようになります。

freezegun を使うと、datetime.datedatetime.datetimeFakeDateFakeDatetimeといったクラスに置き換えられるのですが、タイミングによって(上のテストの例だと setUp() で生成された datetime.date)は置き換えられないため、is 左辺の type(value) は素の datetime.date で、右辺の datetime.dateFakeDate なため if 文が True にならないためにエラーになります。

    if type(value) is datetime.date:
        return value
    if type(value) is datetime.datetime:
        return value.date()

上のコードが下のように変更されると自分の問題は解決するのですが、ご検討いただけると幸いです。

    if isinstance(value, datetime.datetime):
        return value.date()
    if isinstance(value, datetime.date):
        return value

v0.1.0で祝日取得エラー

いつもお世話になっております。
ライブラリを0.1.0にupgradeして使用した所、
祝日取得でFalse(nameはNone)が返るようになっていました。
0.0.7では正常に取得出来ていた内容です。
ご検討頂けますと幸いです。

>pip list
Package    Version
---------- -------
jpholiday  0.1.0
pip        20.0.2
setuptools 41.2.0

>python
Python 3.8.0 (tags/v3.8.0:fa919fd, Oct 14 2019, 19:37:50) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import datetime
>>> import jpholiday
>>> jpholiday.is_holiday(datetime.date(2020, 1, 1))
False
>>> jpholiday.is_holiday_name(datetime.date(2020, 1, 1))
>>>
>>> ^Z


>pip install jpholiday==0.0.7
Collecting jpholiday==0.0.7
  Using cached jpholiday-0.0.7-py3-none-any.whl (6.3 kB)
Installing collected packages: jpholiday
  Attempting uninstall: jpholiday
    Found existing installation: jpholiday 0.1.0
    Uninstalling jpholiday-0.1.0:
      Successfully uninstalled jpholiday-0.1.0
Successfully installed jpholiday-0.0.7

>pip list
Package    Version
---------- -------
jpholiday  0.0.7
pip        20.0.2
setuptools 41.2.0

>python
Python 3.8.0 (tags/v3.8.0:fa919fd, Oct 14 2019, 19:37:50) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import datetime
>>> import jpholiday
>>> jpholiday.is_holiday(datetime.date(2020, 1, 1))
True
>>> jpholiday.is_holiday_name(datetime.date(2020, 1, 1))
'元日'

内閣府の国民の祝日データと合わない日がある(1990年~2021年のうち4日間)

内閣府の国民の祝日データと合わない日

  1. 1992-05-06
  2. 1997-05-04
  3. 1998-05-06
  4. 2003-05-04

jpholidayのバージョン: 0.1.4

私事ですが、ここ数日でpython-shukujitsuというライブラリを書いたので、それとこのjpholidayとのクロスバリデーションを実施したところ、上記の4日間、jpholidayでのみ祝日と判定されました。

1992-05-06

1997-05-04

1998-05-06

2003-05-04

いずれの日もゴールデンウィーク期間中の日曜日、もしくは水曜日ですので、振替休日等の計算に何かしらのコーナーケースや例外があるのかもしれないと感じました。以上、ご報告までに。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.