Compare commits

...

323 Commits

Author SHA1 Message Date
dependabot[bot] a0cef6f010 Bump jinja2 from 3.1.3 to 3.1.4
Bumps [jinja2](https://github.com/pallets/jinja) from 3.1.3 to 3.1.4.
- [Release notes](https://github.com/pallets/jinja/releases)
- [Changelog](https://github.com/pallets/jinja/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/jinja/compare/3.1.3...3.1.4)

---
updated-dependencies:
- dependency-name: jinja2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-07 09:36:39 +03:00
dependabot[bot] 0ae15d1cd3 Bump google-api-python-client from 2.124.0 to 2.127.0
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 2.124.0 to 2.127.0.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v2.124.0...v2.127.0)

---
updated-dependencies:
- dependency-name: google-api-python-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-01 13:52:40 +03:00
dependabot[bot] e63bd7cca8 Bump pytest from 8.1.1 to 8.2.0
Bumps [pytest](https://github.com/pytest-dev/pytest) from 8.1.1 to 8.2.0.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/8.1.1...8.2.0)

---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-01 13:49:55 +03:00
dependabot[bot] 601ef8f0d7 Bump mypy from 1.9.0 to 1.10.0
Bumps [mypy](https://github.com/python/mypy) from 1.9.0 to 1.10.0.
- [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md)
- [Commits](https://github.com/python/mypy/compare/1.9.0...v1.10.0)

---
updated-dependencies:
- dependency-name: mypy
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-01 13:45:05 +03:00
dependabot[bot] e4725ffbf4 Bump sphinx from 7.2.6 to 7.3.7
Bumps [sphinx](https://github.com/sphinx-doc/sphinx) from 7.2.6 to 7.3.7.
- [Release notes](https://github.com/sphinx-doc/sphinx/releases)
- [Changelog](https://github.com/sphinx-doc/sphinx/blob/master/CHANGES.rst)
- [Commits](https://github.com/sphinx-doc/sphinx/compare/v7.2.6...v7.3.7)

---
updated-dependencies:
- dependency-name: sphinx
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-01 13:38:52 +03:00
dependabot[bot] 1fc572e427 Bump lxml from 5.2.0 to 5.2.1
Bumps [lxml](https://github.com/lxml/lxml) from 5.2.0 to 5.2.1.
- [Release notes](https://github.com/lxml/lxml/releases)
- [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt)
- [Commits](https://github.com/lxml/lxml/compare/lxml-5.2.0...lxml-5.2.1)

---
updated-dependencies:
- dependency-name: lxml
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-01 13:35:22 +03:00
dependabot[bot] b6f1b75c6b Bump types-pytz from 2024.1.0.20240203 to 2024.1.0.20240417
Bumps [types-pytz](https://github.com/python/typeshed) from 2024.1.0.20240203 to 2024.1.0.20240417.
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-pytz
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-01 13:31:21 +03:00
dependabot[bot] 566ccedcc1 Bump myst-parser from 2.0.0 to 3.0.1
Bumps [myst-parser](https://github.com/executablebooks/MyST-Parser) from 2.0.0 to 3.0.1.
- [Release notes](https://github.com/executablebooks/MyST-Parser/releases)
- [Changelog](https://github.com/executablebooks/MyST-Parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/executablebooks/MyST-Parser/compare/v2.0.0...v3.0.1)

---
updated-dependencies:
- dependency-name: myst-parser
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-01 13:26:53 +03:00
dependabot[bot] ecbb3ab459 Bump black from 24.3.0 to 24.4.2
Bumps [black](https://github.com/psf/black) from 24.3.0 to 24.4.2.
- [Release notes](https://github.com/psf/black/releases)
- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
- [Commits](https://github.com/psf/black/compare/24.3.0...24.4.2)

---
updated-dependencies:
- dependency-name: black
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-01 13:22:36 +03:00
dependabot[bot] fa228b5f70 Bump idna from 3.6 to 3.7
Bumps [idna](https://github.com/kjd/idna) from 3.6 to 3.7.
- [Release notes](https://github.com/kjd/idna/releases)
- [Changelog](https://github.com/kjd/idna/blob/master/HISTORY.rst)
- [Commits](https://github.com/kjd/idna/compare/v3.6...v3.7)

---
updated-dependencies:
- dependency-name: idna
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-12 09:01:22 +03:00
dependabot[bot] 7ac51ab562 Bump icalendar from 5.0.11 to 5.0.12
Bumps [icalendar](https://github.com/collective/icalendar) from 5.0.11 to 5.0.12.
- [Release notes](https://github.com/collective/icalendar/releases)
- [Changelog](https://github.com/collective/icalendar/blob/master/CHANGES.rst)
- [Commits](https://github.com/collective/icalendar/compare/v5.0.11...v5.0.12)

---
updated-dependencies:
- dependency-name: icalendar
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-01 19:39:24 +03:00
dependabot[bot] 091ff08579 Bump google-auth from 2.28.1 to 2.29.0
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 2.28.1 to 2.29.0.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v2.28.1...v2.29.0)

---
updated-dependencies:
- dependency-name: google-auth
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-01 11:38:19 +03:00
dependabot[bot] b7d9df76d5 Bump google-api-python-client from 2.120.0 to 2.124.0
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 2.120.0 to 2.124.0.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v2.120.0...v2.124.0)

---
updated-dependencies:
- dependency-name: google-api-python-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-01 11:22:14 +03:00
dependabot[bot] a14e56cfcd Bump lxml from 5.1.0 to 5.2.0
Bumps [lxml](https://github.com/lxml/lxml) from 5.1.0 to 5.2.0.
- [Release notes](https://github.com/lxml/lxml/releases)
- [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt)
- [Commits](https://github.com/lxml/lxml/compare/lxml-5.1.0...lxml-5.2.0)

---
updated-dependencies:
- dependency-name: lxml
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-01 10:41:22 +03:00
dependabot[bot] 11f1777432 Bump sphinx from 7.1.2 to 7.2.6
Bumps [sphinx](https://github.com/sphinx-doc/sphinx) from 7.1.2 to 7.2.6.
- [Release notes](https://github.com/sphinx-doc/sphinx/releases)
- [Changelog](https://github.com/sphinx-doc/sphinx/blob/master/CHANGES.rst)
- [Commits](https://github.com/sphinx-doc/sphinx/compare/v7.1.2...v7.2.6)

---
updated-dependencies:
- dependency-name: sphinx
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-01 10:30:47 +03:00
dependabot[bot] c874ca2199 Bump flake8 from 5.0.4 to 7.0.0
Bumps [flake8](https://github.com/pycqa/flake8) from 5.0.4 to 7.0.0.
- [Commits](https://github.com/pycqa/flake8/compare/5.0.4...7.0.0)

---
updated-dependencies:
- dependency-name: flake8
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-01 09:34:34 +03:00
dependabot[bot] fbd83ff497 Bump fire from 0.5.0 to 0.6.0
Bumps [fire](https://github.com/google/python-fire) from 0.5.0 to 0.6.0.
- [Release notes](https://github.com/google/python-fire/releases)
- [Commits](https://github.com/google/python-fire/compare/v0.5.0...v0.6.0)

---
updated-dependencies:
- dependency-name: fire
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-01 09:05:59 +03:00
Dmitry Belyaev f945cdc915
python: -3.8, +3.12 2024-03-20 22:53:31 +03:00
Dmitry Belyaev 217f284102 fix readthedocs 2024-03-20 22:48:53 +03:00
dependabot[bot] 2d90ef289a Bump black from 24.2.0 to 24.3.0
Bumps [black](https://github.com/psf/black) from 24.2.0 to 24.3.0.
- [Release notes](https://github.com/psf/black/releases)
- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
- [Commits](https://github.com/psf/black/compare/24.2.0...24.3.0)

---
updated-dependencies:
- dependency-name: black
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-20 21:15:45 +03:00
dependabot[bot] 95208568cb Bump google-api-python-client from 2.116.0 to 2.120.0
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 2.116.0 to 2.120.0.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v2.116.0...v2.120.0)

---
updated-dependencies:
- dependency-name: google-api-python-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-01 09:45:32 +03:00
dependabot[bot] bfa8079560 Bump google-auth from 2.27.0 to 2.28.1
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 2.27.0 to 2.28.1.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v2.27.0...v2.28.1)

---
updated-dependencies:
- dependency-name: google-auth
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-01 09:40:24 +03:00
dependabot[bot] 914b69d81a Bump pytest from 8.0.0 to 8.0.2
Bumps [pytest](https://github.com/pytest-dev/pytest) from 8.0.0 to 8.0.2.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/8.0.0...8.0.2)

---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-01 09:10:09 +03:00
dependabot[bot] ff9d82a5b1 Bump black from 24.1.1 to 24.2.0
Bumps [black](https://github.com/psf/black) from 24.1.1 to 24.2.0.
- [Release notes](https://github.com/psf/black/releases)
- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
- [Commits](https://github.com/psf/black/compare/24.1.1...24.2.0)

---
updated-dependencies:
- dependency-name: black
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-01 09:09:50 +03:00
dependabot[bot] 228591580f Bump pytz from 2023.4 to 2024.1
Bumps [pytz](https://github.com/stub42/pytz) from 2023.4 to 2024.1.
- [Release notes](https://github.com/stub42/pytz/releases)
- [Commits](https://github.com/stub42/pytz/compare/release_2023.4...release_2024.1)

---
updated-dependencies:
- dependency-name: pytz
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-01 09:09:29 +03:00
dependabot[bot] 4135802850 Bump types-pytz from 2023.3.1.1 to 2024.1.0.20240203
Bumps [types-pytz](https://github.com/python/typeshed) from 2023.3.1.1 to 2024.1.0.20240203.
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-pytz
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-05 23:40:33 +03:00
dependabot[bot] d6cc89456a Bump types-python-dateutil from 2.8.19.14 to 2.8.19.20240106
Bumps [types-python-dateutil](https://github.com/python/typeshed) from 2.8.19.14 to 2.8.19.20240106.
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-python-dateutil
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-05 23:33:58 +03:00
dependabot[bot] 6f93231a79 Bump google-api-python-client from 2.111.0 to 2.116.0
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 2.111.0 to 2.116.0.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v2.111.0...v2.116.0)

---
updated-dependencies:
- dependency-name: google-api-python-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-05 23:29:07 +03:00
dependabot[bot] 314ed34dc7 Bump google-auth from 2.25.2 to 2.27.0
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 2.25.2 to 2.27.0.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v2.25.2...v2.27.0)

---
updated-dependencies:
- dependency-name: google-auth
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-05 23:23:09 +03:00
dependabot[bot] 47015c3c5e Bump pytest from 7.4.4 to 8.0.0
Bumps [pytest](https://github.com/pytest-dev/pytest) from 7.4.4 to 8.0.0.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/7.4.4...8.0.0)

---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-05 23:20:43 +03:00
dependabot[bot] 60543837f7 Bump lxml from 5.0.0 to 5.1.0
Bumps [lxml](https://github.com/lxml/lxml) from 5.0.0 to 5.1.0.
- [Release notes](https://github.com/lxml/lxml/releases)
- [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt)
- [Commits](https://github.com/lxml/lxml/compare/lxml-5.0.0...lxml-5.1.0)

---
updated-dependencies:
- dependency-name: lxml
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-05 23:13:53 +03:00
dependabot[bot] 391de7570b Bump black from 23.12.1 to 24.1.1
Bumps [black](https://github.com/psf/black) from 23.12.1 to 24.1.1.
- [Release notes](https://github.com/psf/black/releases)
- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
- [Commits](https://github.com/psf/black/compare/23.12.1...24.1.1)

---
updated-dependencies:
- dependency-name: black
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-05 23:11:19 +03:00
dependabot[bot] 2d62495068 Bump pytz from 2023.3.post1 to 2023.4
Bumps [pytz](https://github.com/stub42/pytz) from 2023.3.post1 to 2023.4.
- [Commits](https://github.com/stub42/pytz/compare/release_2023.3.post1...release_2023.4)

---
updated-dependencies:
- dependency-name: pytz
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-05 23:02:47 +03:00
dependabot[bot] d0944b4a56 Bump jinja2 from 3.1.2 to 3.1.3
Bumps [jinja2](https://github.com/pallets/jinja) from 3.1.2 to 3.1.3.
- [Release notes](https://github.com/pallets/jinja/releases)
- [Changelog](https://github.com/pallets/jinja/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/jinja/compare/3.1.2...3.1.3)

---
updated-dependencies:
- dependency-name: jinja2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-12 08:48:53 +03:00
dependabot[bot] 5bb33d1cb7 Bump google-api-python-client from 2.109.0 to 2.111.0
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 2.109.0 to 2.111.0.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v2.109.0...v2.111.0)

---
updated-dependencies:
- dependency-name: google-api-python-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-01 23:32:28 +03:00
dependabot[bot] e7cbd72569 Bump google-auth from 2.24.0 to 2.25.2
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 2.24.0 to 2.25.2.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v2.24.0...v2.25.2)

---
updated-dependencies:
- dependency-name: google-auth
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-01 23:27:03 +03:00
dependabot[bot] 6b7f4ce5ff Bump lxml from 4.9.3 to 5.0.0
Bumps [lxml](https://github.com/lxml/lxml) from 4.9.3 to 5.0.0.
- [Release notes](https://github.com/lxml/lxml/releases)
- [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt)
- [Commits](https://github.com/lxml/lxml/compare/lxml-4.9.3...lxml-5.0.0)

---
updated-dependencies:
- dependency-name: lxml
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-01 22:45:47 +03:00
dependabot[bot] 99b39b2abf Bump pytest from 7.4.3 to 7.4.4
Bumps [pytest](https://github.com/pytest-dev/pytest) from 7.4.3 to 7.4.4.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/7.4.3...7.4.4)

---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-01 22:42:49 +03:00
dependabot[bot] 5e6e173525 Bump mypy from 1.7.1 to 1.8.0
Bumps [mypy](https://github.com/python/mypy) from 1.7.1 to 1.8.0.
- [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md)
- [Commits](https://github.com/python/mypy/compare/v1.7.1...v1.8.0)

---
updated-dependencies:
- dependency-name: mypy
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-01 22:41:43 +03:00
dependabot[bot] 5fd1c75a25 Bump black from 23.11.0 to 23.12.1
Bumps [black](https://github.com/psf/black) from 23.11.0 to 23.12.1.
- [Release notes](https://github.com/psf/black/releases)
- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
- [Commits](https://github.com/psf/black/compare/23.11.0...23.12.1)

---
updated-dependencies:
- dependency-name: black
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-01 22:41:03 +03:00
dependabot[bot] 4ba6a3cbd5 Bump icalendar from 5.0.10 to 5.0.11
Bumps [icalendar](https://github.com/collective/icalendar) from 5.0.10 to 5.0.11.
- [Changelog](https://github.com/collective/icalendar/blob/master/CHANGES.rst)
- [Commits](https://github.com/collective/icalendar/compare/v5.0.10...v5.0.11)

---
updated-dependencies:
- dependency-name: icalendar
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-01 12:50:42 +03:00
dependabot[bot] 20db097fed Bump google-auth from 2.23.4 to 2.24.0
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 2.23.4 to 2.24.0.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v2.23.4...v2.24.0)

---
updated-dependencies:
- dependency-name: google-auth
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-01 12:46:21 +03:00
dependabot[bot] f0363d7b0b Bump google-api-python-client from 2.106.0 to 2.109.0
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 2.106.0 to 2.109.0.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v2.106.0...v2.109.0)

---
updated-dependencies:
- dependency-name: google-api-python-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-01 12:20:09 +03:00
dependabot[bot] 6b7f1df64b Bump black from 23.10.1 to 23.11.0
Bumps [black](https://github.com/psf/black) from 23.10.1 to 23.11.0.
- [Release notes](https://github.com/psf/black/releases)
- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
- [Commits](https://github.com/psf/black/compare/23.10.1...23.11.0)

---
updated-dependencies:
- dependency-name: black
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-01 12:14:21 +03:00
dependabot[bot] cf85c3c3f9 Bump mypy from 1.6.1 to 1.7.1
Bumps [mypy](https://github.com/python/mypy) from 1.6.1 to 1.7.1.
- [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md)
- [Commits](https://github.com/python/mypy/compare/v1.6.1...v1.7.1)

---
updated-dependencies:
- dependency-name: mypy
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-01 12:13:13 +03:00
dependabot[bot] bc5082e10e Bump sphinx-rtd-theme from 1.3.0 to 2.0.0
Bumps [sphinx-rtd-theme](https://github.com/readthedocs/sphinx_rtd_theme) from 1.3.0 to 2.0.0.
- [Changelog](https://github.com/readthedocs/sphinx_rtd_theme/blob/master/docs/changelog.rst)
- [Commits](https://github.com/readthedocs/sphinx_rtd_theme/compare/1.3.0...2.0.0)

---
updated-dependencies:
- dependency-name: sphinx-rtd-theme
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-01 11:34:07 +03:00
dependabot[bot] dcf5fc428a Bump google-api-python-client from 2.101.0 to 2.106.0
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 2.101.0 to 2.106.0.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v2.101.0...v2.106.0)

---
updated-dependencies:
- dependency-name: google-api-python-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-01 11:48:31 +03:00
dependabot[bot] a8f887de52 Bump google-auth from 2.23.2 to 2.23.4
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 2.23.2 to 2.23.4.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v2.23.2...v2.23.4)

---
updated-dependencies:
- dependency-name: google-auth
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-01 10:24:09 +03:00
dependabot[bot] 49420f417f Bump black from 23.9.1 to 23.10.1
Bumps [black](https://github.com/psf/black) from 23.9.1 to 23.10.1.
- [Release notes](https://github.com/psf/black/releases)
- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
- [Commits](https://github.com/psf/black/compare/23.9.1...23.10.1)

---
updated-dependencies:
- dependency-name: black
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-01 10:15:11 +03:00
dependabot[bot] 21fc0b9db4 Bump pytest from 7.4.2 to 7.4.3
Bumps [pytest](https://github.com/pytest-dev/pytest) from 7.4.2 to 7.4.3.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/7.4.2...7.4.3)

---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-01 08:45:51 +03:00
dependabot[bot] 79191247b4 Bump mypy from 1.5.1 to 1.6.1
Bumps [mypy](https://github.com/python/mypy) from 1.5.1 to 1.6.1.
- [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md)
- [Commits](https://github.com/python/mypy/compare/v1.5.1...v1.6.1)

---
updated-dependencies:
- dependency-name: mypy
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-01 08:36:55 +03:00
dependabot[bot] fe70c3acd6 Bump urllib3 from 1.26.17 to 1.26.18
Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.26.17 to 1.26.18.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/1.26.17...1.26.18)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-18 09:59:34 +03:00
dependabot[bot] b3df47b8be Bump urllib3 from 1.26.16 to 1.26.17
Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.26.16 to 1.26.17.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/1.26.16...1.26.17)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-03 08:32:18 +03:00
dependabot[bot] 3c98345014 Bump google-api-python-client from 2.97.0 to 2.101.0
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 2.97.0 to 2.101.0.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v2.97.0...v2.101.0)

---
updated-dependencies:
- dependency-name: google-api-python-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-01 15:15:35 +03:00
dependabot[bot] ec45edb8f2 Bump google-auth from 2.22.0 to 2.23.2
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 2.22.0 to 2.23.2.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v2.22.0...v2.23.2)

---
updated-dependencies:
- dependency-name: google-auth
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-01 14:15:13 +03:00
dependabot[bot] 122b311b8a Bump icalendar from 5.0.7 to 5.0.10
Bumps [icalendar](https://github.com/collective/icalendar) from 5.0.7 to 5.0.10.
- [Changelog](https://github.com/collective/icalendar/blob/master/CHANGES.rst)
- [Commits](https://github.com/collective/icalendar/compare/v5.0.7...v5.0.10)

---
updated-dependencies:
- dependency-name: icalendar
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-01 13:19:51 +03:00
dependabot[bot] f36a5ad064 Bump pytest from 7.4.0 to 7.4.2
Bumps [pytest](https://github.com/pytest-dev/pytest) from 7.4.0 to 7.4.2.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/7.4.0...7.4.2)

---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-01 13:17:32 +03:00
dependabot[bot] e11139d76f Bump types-pyyaml from 6.0.12.11 to 6.0.12.12
Bumps [types-pyyaml](https://github.com/python/typeshed) from 6.0.12.11 to 6.0.12.12.
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-pyyaml
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-01 13:15:06 +03:00
dependabot[bot] 42ad4da28d Bump black from 23.7.0 to 23.9.1
Bumps [black](https://github.com/psf/black) from 23.7.0 to 23.9.1.
- [Release notes](https://github.com/psf/black/releases)
- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
- [Commits](https://github.com/psf/black/compare/23.7.0...23.9.1)

---
updated-dependencies:
- dependency-name: black
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-01 13:13:38 +03:00
dependabot[bot] 550a73eb29 Bump types-pytz from 2023.3.0.1 to 2023.3.1.1
Bumps [types-pytz](https://github.com/python/typeshed) from 2023.3.0.1 to 2023.3.1.1.
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-pytz
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-01 13:09:58 +03:00
dependabot[bot] b1332b8d64 Bump pytz from 2023.3 to 2023.3.post1
Bumps [pytz](https://github.com/stub42/pytz) from 2023.3 to 2023.3.post1.
- [Commits](https://github.com/stub42/pytz/compare/release_2023.3...release_2023.3.post1)

---
updated-dependencies:
- dependency-name: pytz
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-01 13:07:43 +03:00
dependabot[bot] 8a0904f68b Bump google-api-python-client from 2.95.0 to 2.97.0
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 2.95.0 to 2.97.0.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v2.95.0...v2.97.0)

---
updated-dependencies:
- dependency-name: google-api-python-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-01 15:02:43 +03:00
dependabot[bot] ca6d0bf525 Bump sphinx-rtd-theme from 1.3.0rc1 to 1.3.0
Bumps [sphinx-rtd-theme](https://github.com/readthedocs/sphinx_rtd_theme) from 1.3.0rc1 to 1.3.0.
- [Changelog](https://github.com/readthedocs/sphinx_rtd_theme/blob/master/docs/changelog.rst)
- [Commits](https://github.com/readthedocs/sphinx_rtd_theme/compare/1.3.0rc1...1.3.0)

---
updated-dependencies:
- dependency-name: sphinx-rtd-theme
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-01 08:49:44 +03:00
Dmitry Belyaev d2db9f9472
add py.typed 2023-08-20 23:29:38 +03:00
Dmitry Belyaev 657b0c0621
Merge pull request #204 from b4tman/docs
add docs
2023-08-20 23:15:24 +03:00
Dmitry Belyaev 545cde2ccc
add docs 2023-08-20 23:08:56 +03:00
Dmitry Belyaev b2c4136a92
upd poetry.lock
to fix https://github.com/b4tman/sync_ics2gcal/security/dependabot/6
2023-08-16 09:49:39 +03:00
dependabot[bot] a65b544c8b Bump google-api-python-client from 2.91.0 to 2.95.0
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 2.91.0 to 2.95.0.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v2.91.0...v2.95.0)

---
updated-dependencies:
- dependency-name: google-api-python-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-01 15:04:11 +03:00
dependabot[bot] 52867a2f8e Bump google-auth from 2.21.0 to 2.22.0
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 2.21.0 to 2.22.0.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v2.21.0...v2.22.0)

---
updated-dependencies:
- dependency-name: google-auth
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-01 14:33:02 +03:00
dependabot[bot] 16e78dadbd Bump lxml from 4.9.2 to 4.9.3
Bumps [lxml](https://github.com/lxml/lxml) from 4.9.2 to 4.9.3.
- [Release notes](https://github.com/lxml/lxml/releases)
- [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt)
- [Commits](https://github.com/lxml/lxml/compare/lxml-4.9.2...lxml-4.9.3)

---
updated-dependencies:
- dependency-name: lxml
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-01 13:33:06 +03:00
dependabot[bot] ecaf9c4a39 Bump black from 23.3.0 to 23.7.0
Bumps [black](https://github.com/psf/black) from 23.3.0 to 23.7.0.
- [Release notes](https://github.com/psf/black/releases)
- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
- [Commits](https://github.com/psf/black/compare/23.3.0...23.7.0)

---
updated-dependencies:
- dependency-name: black
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-01 09:57:23 +03:00
dependabot[bot] 17e28f5eab Bump types-pyyaml from 6.0.12.10 to 6.0.12.11
Bumps [types-pyyaml](https://github.com/python/typeshed) from 6.0.12.10 to 6.0.12.11.
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-pyyaml
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-01 09:41:22 +03:00
dependabot[bot] 1d91cd37a2 Bump types-python-dateutil from 2.8.19.13 to 2.8.19.14
Bumps [types-python-dateutil](https://github.com/python/typeshed) from 2.8.19.13 to 2.8.19.14.
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-python-dateutil
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-01 09:21:49 +03:00
dependabot[bot] f23adf3730 Bump pyyaml from 6.0 to 6.0.1
Bumps [pyyaml](https://github.com/yaml/pyyaml) from 6.0 to 6.0.1.
- [Changelog](https://github.com/yaml/pyyaml/blob/6.0.1/CHANGES)
- [Commits](https://github.com/yaml/pyyaml/compare/6.0...6.0.1)

---
updated-dependencies:
- dependency-name: pyyaml
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-01 09:00:20 +03:00
dependabot[bot] b5e34a7175 Bump google-api-python-client from 2.88.0 to 2.91.0
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 2.88.0 to 2.91.0.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v2.88.0...v2.91.0)

---
updated-dependencies:
- dependency-name: google-api-python-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-01 12:54:13 +03:00
dependabot[bot] 3709159f73 Bump google-auth from 2.19.0 to 2.21.0
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 2.19.0 to 2.21.0.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v2.19.0...v2.21.0)

---
updated-dependencies:
- dependency-name: google-auth
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-01 12:13:39 +03:00
dependabot[bot] 6cf5b936b1 Bump pytest from 7.3.1 to 7.4.0
Bumps [pytest](https://github.com/pytest-dev/pytest) from 7.3.1 to 7.4.0.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/7.3.1...7.4.0)

---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-01 11:45:39 +03:00
dependabot[bot] 830c6d6493 Bump mypy from 1.3.0 to 1.4.1
Bumps [mypy](https://github.com/python/mypy) from 1.3.0 to 1.4.1.
- [Commits](https://github.com/python/mypy/compare/v1.3.0...v1.4.1)

---
updated-dependencies:
- dependency-name: mypy
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-01 11:37:07 +03:00
dependabot[bot] 55ae6e70cc Bump google-api-python-client from 2.86.0 to 2.88.0
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 2.86.0 to 2.88.0.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v2.86.0...v2.88.0)

---
updated-dependencies:
- dependency-name: google-api-python-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-01 13:23:54 +03:00
dependabot[bot] cc107eb295 Bump google-auth from 2.17.3 to 2.19.0
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 2.17.3 to 2.19.0.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v2.17.3...v2.19.0)

---
updated-dependencies:
- dependency-name: google-auth
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-01 13:08:02 +03:00
dependabot[bot] 14a3492ed5 Bump icalendar from 5.0.5 to 5.0.7
Bumps [icalendar](https://github.com/collective/icalendar) from 5.0.5 to 5.0.7.
- [Changelog](https://github.com/collective/icalendar/blob/master/CHANGES.rst)
- [Commits](https://github.com/collective/icalendar/compare/v5.0.5...v5.0.7)

---
updated-dependencies:
- dependency-name: icalendar
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-01 11:45:30 +03:00
dependabot[bot] 12bb35ca33 Bump mypy from 1.2.0 to 1.3.0
Bumps [mypy](https://github.com/python/mypy) from 1.2.0 to 1.3.0.
- [Commits](https://github.com/python/mypy/compare/v1.2.0...v1.3.0)

---
updated-dependencies:
- dependency-name: mypy
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-01 11:28:50 +03:00
dependabot[bot] dee0aad617 Bump types-python-dateutil from 2.8.19.12 to 2.8.19.13
Bumps [types-python-dateutil](https://github.com/python/typeshed) from 2.8.19.12 to 2.8.19.13.
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-python-dateutil
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-01 09:16:17 +03:00
dependabot[bot] ac318237e0 Bump types-pyyaml from 6.0.12.9 to 6.0.12.10
Bumps [types-pyyaml](https://github.com/python/typeshed) from 6.0.12.9 to 6.0.12.10.
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-pyyaml
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-01 09:04:47 +03:00
dependabot[bot] c9f51c98c7 Bump requests from 2.27.1 to 2.31.0
Bumps [requests](https://github.com/psf/requests) from 2.27.1 to 2.31.0.
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.27.1...v2.31.0)

---
updated-dependencies:
- dependency-name: requests
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-23 08:33:37 +03:00
dependabot[bot] ab441a18e1 Bump google-api-python-client from 2.83.0 to 2.86.0
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 2.83.0 to 2.86.0.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v2.83.0...v2.86.0)

---
updated-dependencies:
- dependency-name: google-api-python-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-02 11:28:25 +03:00
dependabot[bot] aad1b7d266 Bump google-auth from 2.17.1 to 2.17.3
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 2.17.1 to 2.17.3.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v2.17.1...v2.17.3)

---
updated-dependencies:
- dependency-name: google-auth
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-02 10:48:00 +03:00
dependabot[bot] 1c0074a308 Bump icalendar from 5.0.4 to 5.0.5
Bumps [icalendar](https://github.com/collective/icalendar) from 5.0.4 to 5.0.5.
- [Release notes](https://github.com/collective/icalendar/releases)
- [Changelog](https://github.com/collective/icalendar/blob/master/CHANGES.rst)
- [Commits](https://github.com/collective/icalendar/compare/v5.0.4...v5.0.5)

---
updated-dependencies:
- dependency-name: icalendar
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-02 10:17:21 +03:00
dependabot[bot] 2e684ca132 Bump pytest from 7.2.2 to 7.3.1
Bumps [pytest](https://github.com/pytest-dev/pytest) from 7.2.2 to 7.3.1.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/7.2.2...7.3.1)

---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-02 10:11:26 +03:00
dependabot[bot] 5a64414bb6 Bump mypy from 1.1.1 to 1.2.0
Bumps [mypy](https://github.com/python/mypy) from 1.1.1 to 1.2.0.
- [Release notes](https://github.com/python/mypy/releases)
- [Commits](https://github.com/python/mypy/compare/v1.1.1...v1.2.0)

---
updated-dependencies:
- dependency-name: mypy
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-02 10:05:58 +03:00
dependabot[bot] 169faa4505 Bump types-python-dateutil from 2.8.19.11 to 2.8.19.12
Bumps [types-python-dateutil](https://github.com/python/typeshed) from 2.8.19.11 to 2.8.19.12.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-python-dateutil
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-02 09:30:47 +03:00
dependabot[bot] 9a03984642 Bump google-api-python-client from 2.79.0 to 2.83.0
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 2.79.0 to 2.83.0.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v2.79.0...v2.83.0)

---
updated-dependencies:
- dependency-name: google-api-python-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-01 23:26:24 +03:00
dependabot[bot] 20343c8719 Bump google-auth from 2.16.1 to 2.17.1
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 2.16.1 to 2.17.1.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v2.16.1...v2.17.1)

---
updated-dependencies:
- dependency-name: google-auth
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-01 23:19:36 +03:00
dependabot[bot] 830feaf3fc Bump mypy from 1.0.1 to 1.1.1
Bumps [mypy](https://github.com/python/mypy) from 1.0.1 to 1.1.1.
- [Release notes](https://github.com/python/mypy/releases)
- [Commits](https://github.com/python/mypy/compare/v1.0.1...v1.1.1)

---
updated-dependencies:
- dependency-name: mypy
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-01 19:39:41 +03:00
dependabot[bot] 9d38a8cde4 Bump pytest from 7.2.1 to 7.2.2
Bumps [pytest](https://github.com/pytest-dev/pytest) from 7.2.1 to 7.2.2.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/7.2.1...7.2.2)

---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-01 19:20:49 +03:00
dependabot[bot] 178c41c411 Bump black from 23.1.0 to 23.3.0
Bumps [black](https://github.com/psf/black) from 23.1.0 to 23.3.0.
- [Release notes](https://github.com/psf/black/releases)
- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
- [Commits](https://github.com/psf/black/compare/23.1.0...23.3.0)

---
updated-dependencies:
- dependency-name: black
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-01 18:44:39 +03:00
dependabot[bot] c2f59f9562 Bump pytz from 2022.7.1 to 2023.3
Bumps [pytz](https://github.com/stub42/pytz) from 2022.7.1 to 2023.3.
- [Release notes](https://github.com/stub42/pytz/releases)
- [Commits](https://github.com/stub42/pytz/compare/release_2022.7.1...release_2023.3)

---
updated-dependencies:
- dependency-name: pytz
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-01 13:09:39 +03:00
dependabot[bot] fe07b21e5d Bump types-pytz from 2022.7.1.2 to 2023.3.0.0
Bumps [types-pytz](https://github.com/python/typeshed) from 2022.7.1.2 to 2023.3.0.0.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-pytz
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-01 13:09:14 +03:00
dependabot[bot] c806ec25e4 Bump types-pyyaml from 6.0.12.8 to 6.0.12.9
Bumps [types-pyyaml](https://github.com/python/typeshed) from 6.0.12.8 to 6.0.12.9.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-pyyaml
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-01 13:08:56 +03:00
dependabot[bot] c426ecf06d Bump types-python-dateutil from 2.8.19.9 to 2.8.19.11
Bumps [types-python-dateutil](https://github.com/python/typeshed) from 2.8.19.9 to 2.8.19.11.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-python-dateutil
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-01 13:08:38 +03:00
Dmitry Belyaev 5f0aa46e28 add python 3.11 2023-03-11 22:49:29 +03:00
dependabot[bot] ee3e5ba613 Bump google-auth from 2.16.0 to 2.16.1
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 2.16.0 to 2.16.1.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v2.16.0...v2.16.1)

---
updated-dependencies:
- dependency-name: google-auth
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-01 12:45:45 +03:00
dependabot[bot] 45610c8bfe Bump google-api-python-client from 2.76.0 to 2.79.0
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 2.76.0 to 2.79.0.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v2.76.0...v2.79.0)

---
updated-dependencies:
- dependency-name: google-api-python-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-01 12:35:31 +03:00
dependabot[bot] 5591765911 Bump mypy from 0.991 to 1.0.1
Bumps [mypy](https://github.com/python/mypy) from 0.991 to 1.0.1.
- [Release notes](https://github.com/python/mypy/releases)
- [Commits](https://github.com/python/mypy/compare/v0.991...v1.0.1)

---
updated-dependencies:
- dependency-name: mypy
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-01 12:34:34 +03:00
dependabot[bot] b209fff2a1 Bump types-pytz from 2022.7.1.0 to 2022.7.1.2
Bumps [types-pytz](https://github.com/python/typeshed) from 2022.7.1.0 to 2022.7.1.2.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-pytz
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-01 12:33:07 +03:00
dependabot[bot] 69fc8560b6 Bump types-python-dateutil from 2.8.19.6 to 2.8.19.9
Bumps [types-python-dateutil](https://github.com/python/typeshed) from 2.8.19.6 to 2.8.19.9.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-python-dateutil
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-01 11:54:12 +03:00
dependabot[bot] 3e00dfffa4 Bump types-pyyaml from 6.0.12.3 to 6.0.12.8
Bumps [types-pyyaml](https://github.com/python/typeshed) from 6.0.12.3 to 6.0.12.8.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-pyyaml
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-01 10:42:19 +03:00
dependabot[bot] e64ede2472 Bump black from 22.12.0 to 23.1.0
Bumps [black](https://github.com/psf/black) from 22.12.0 to 23.1.0.
- [Release notes](https://github.com/psf/black/releases)
- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
- [Commits](https://github.com/psf/black/compare/22.12.0...23.1.0)

---
updated-dependencies:
- dependency-name: black
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-01 10:07:58 +03:00
dependabot[bot] a73d7048e4 Bump google-auth from 2.15.0 to 2.16.0
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 2.15.0 to 2.16.0.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v2.15.0...v2.16.0)

---
updated-dependencies:
- dependency-name: google-auth
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-04 18:31:12 +03:00
dependabot[bot] e80b004a99 Bump google-api-python-client from 2.70.0 to 2.76.0
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 2.70.0 to 2.76.0.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v2.70.0...v2.76.0)

---
updated-dependencies:
- dependency-name: google-api-python-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-04 13:23:15 +03:00
dependabot[bot] a806cc87c3 Bump pytest from 7.2.0 to 7.2.1
Bumps [pytest](https://github.com/pytest-dev/pytest) from 7.2.0 to 7.2.1.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/7.2.0...7.2.1)

---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-03 13:39:20 +03:00
dependabot[bot] 88eede3a00 Bump types-python-dateutil from 2.8.19.5 to 2.8.19.6
Bumps [types-python-dateutil](https://github.com/python/typeshed) from 2.8.19.5 to 2.8.19.6.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-python-dateutil
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-03 10:34:34 +03:00
dependabot[bot] 7d605328c1 Bump types-pyyaml from 6.0.12.2 to 6.0.12.3
Bumps [types-pyyaml](https://github.com/python/typeshed) from 6.0.12.2 to 6.0.12.3.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-pyyaml
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-01 17:08:12 +03:00
dependabot[bot] 6561da777a Bump pytz from 2022.7 to 2022.7.1
Bumps [pytz](https://github.com/stub42/pytz) from 2022.7 to 2022.7.1.
- [Release notes](https://github.com/stub42/pytz/releases)
- [Commits](https://github.com/stub42/pytz/compare/release_2022.7...release_2022.7.1)

---
updated-dependencies:
- dependency-name: pytz
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-01 13:32:32 +03:00
dependabot[bot] a0429e24ab Bump types-pytz from 2022.7.0.0 to 2022.7.1.0
Bumps [types-pytz](https://github.com/python/typeshed) from 2022.7.0.0 to 2022.7.1.0.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-pytz
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-01 13:05:23 +03:00
dependabot[bot] fa768c96ab Bump types-pytz from 2022.6.0.1 to 2022.7.0.0
Bumps [types-pytz](https://github.com/python/typeshed) from 2022.6.0.1 to 2022.7.0.0.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-pytz
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-04 17:14:52 +03:00
dependabot[bot] f566c98065 Bump types-python-dateutil from 2.8.19.4 to 2.8.19.5
Bumps [types-python-dateutil](https://github.com/python/typeshed) from 2.8.19.4 to 2.8.19.5.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-python-dateutil
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-04 16:08:25 +03:00
dependabot[bot] c568dcd6ea Bump google-api-python-client from 2.68.0 to 2.70.0
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 2.68.0 to 2.70.0.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v2.68.0...v2.70.0)

---
updated-dependencies:
- dependency-name: google-api-python-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-04 14:46:35 +03:00
dependabot[bot] 111d773ff8 Bump google-auth from 2.14.1 to 2.15.0
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 2.14.1 to 2.15.0.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v2.14.1...v2.15.0)

---
updated-dependencies:
- dependency-name: google-auth
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-04 14:38:53 +03:00
dependabot[bot] ac96a78280 Bump pytz from 2022.6 to 2022.7
Bumps [pytz](https://github.com/stub42/pytz) from 2022.6 to 2022.7.
- [Release notes](https://github.com/stub42/pytz/releases)
- [Commits](https://github.com/stub42/pytz/compare/release_2022.6...release_2022.7)

---
updated-dependencies:
- dependency-name: pytz
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-04 14:10:27 +03:00
dependabot[bot] 5e845cf629 Bump fire from 0.4.0 to 0.5.0
Bumps [fire](https://github.com/google/python-fire) from 0.4.0 to 0.5.0.
- [Release notes](https://github.com/google/python-fire/releases)
- [Commits](https://github.com/google/python-fire/compare/v0.4.0...v0.5.0)

---
updated-dependencies:
- dependency-name: fire
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-04 13:54:18 +03:00
dependabot[bot] d43c906869 Bump lxml from 4.9.1 to 4.9.2
Bumps [lxml](https://github.com/lxml/lxml) from 4.9.1 to 4.9.2.
- [Release notes](https://github.com/lxml/lxml/releases)
- [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt)
- [Commits](https://github.com/lxml/lxml/compare/lxml-4.9.1...lxml-4.9.2)

---
updated-dependencies:
- dependency-name: lxml
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-04 12:28:13 +03:00
dependabot[bot] b685ed0c15 Bump icalendar from 5.0.3 to 5.0.4
Bumps [icalendar](https://github.com/collective/icalendar) from 5.0.3 to 5.0.4.
- [Release notes](https://github.com/collective/icalendar/releases)
- [Changelog](https://github.com/collective/icalendar/blob/master/CHANGES.rst)
- [Commits](https://github.com/collective/icalendar/compare/v5.0.3...v5.0.4)

---
updated-dependencies:
- dependency-name: icalendar
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-04 01:28:46 +03:00
dependabot[bot] b6c6366b88 Bump black from 22.10.0 to 22.12.0
Bumps [black](https://github.com/psf/black) from 22.10.0 to 22.12.0.
- [Release notes](https://github.com/psf/black/releases)
- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
- [Commits](https://github.com/psf/black/compare/22.10.0...22.12.0)

---
updated-dependencies:
- dependency-name: black
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-03 22:14:33 +03:00
dependabot[bot] 6ad8a6fa5e Bump certifi from 2022.5.18.1 to 2022.12.7
Bumps [certifi](https://github.com/certifi/python-certifi) from 2022.5.18.1 to 2022.12.7.
- [Release notes](https://github.com/certifi/python-certifi/releases)
- [Commits](https://github.com/certifi/python-certifi/compare/2022.05.18.1...2022.12.07)

---
updated-dependencies:
- dependency-name: certifi
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-09 10:35:11 +03:00
dependabot[bot] 022a339157 Bump types-python-dateutil from 2.8.19.2 to 2.8.19.4
Bumps [types-python-dateutil](https://github.com/python/typeshed) from 2.8.19.2 to 2.8.19.4.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-python-dateutil
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-02 10:22:06 +03:00
dependabot[bot] f0c095dcc9 Bump types-pyyaml from 6.0.12.1 to 6.0.12.2
Bumps [types-pyyaml](https://github.com/python/typeshed) from 6.0.12.1 to 6.0.12.2.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-pyyaml
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-02 09:53:09 +03:00
dependabot[bot] c6d47d2eba Bump mypy from 0.982 to 0.991
Bumps [mypy](https://github.com/python/mypy) from 0.982 to 0.991.
- [Release notes](https://github.com/python/mypy/releases)
- [Commits](https://github.com/python/mypy/compare/v0.982...v0.991)

---
updated-dependencies:
- dependency-name: mypy
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-02 00:25:06 +03:00
dependabot[bot] 3e766d614c Bump icalendar from 5.0.1 to 5.0.3
Bumps [icalendar](https://github.com/collective/icalendar) from 5.0.1 to 5.0.3.
- [Release notes](https://github.com/collective/icalendar/releases)
- [Changelog](https://github.com/collective/icalendar/blob/master/CHANGES.rst)
- [Commits](https://github.com/collective/icalendar/compare/v5.0.1...v5.0.3)

---
updated-dependencies:
- dependency-name: icalendar
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-01 22:24:59 +03:00
dependabot[bot] 5c6c293d3b Bump google-api-python-client from 2.65.0 to 2.68.0
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 2.65.0 to 2.68.0.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v2.65.0...v2.68.0)

---
updated-dependencies:
- dependency-name: google-api-python-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-01 22:15:08 +03:00
dependabot[bot] b9ac2de328 Bump google-auth from 2.14.0 to 2.14.1
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 2.14.0 to 2.14.1.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v2.14.0...v2.14.1)

---
updated-dependencies:
- dependency-name: google-auth
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-01 20:58:33 +03:00
dependabot[bot] ebf0b2dc7c Bump types-pytz from 2022.2.1.0 to 2022.6.0.1
Bumps [types-pytz](https://github.com/python/typeshed) from 2022.2.1.0 to 2022.6.0.1.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-pytz
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-02 19:43:43 +03:00
dependabot[bot] fb6a3c5503 Bump types-pyyaml from 6.0.12 to 6.0.12.1
Bumps [types-pyyaml](https://github.com/python/typeshed) from 6.0.12 to 6.0.12.1.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-pyyaml
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-02 19:38:31 +03:00
dependabot[bot] 2aee926d1e Bump types-python-dateutil from 2.8.19 to 2.8.19.2
Bumps [types-python-dateutil](https://github.com/python/typeshed) from 2.8.19 to 2.8.19.2.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-python-dateutil
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-01 18:28:13 +03:00
dependabot[bot] b1188c00a7 Bump google-api-python-client from 2.63.0 to 2.65.0
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 2.63.0 to 2.65.0.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v2.63.0...v2.65.0)

---
updated-dependencies:
- dependency-name: google-api-python-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-01 17:29:41 +03:00
dependabot[bot] 77e036975b Bump google-auth from 2.12.0 to 2.14.0
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 2.12.0 to 2.14.0.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v2.12.0...v2.14.0)

---
updated-dependencies:
- dependency-name: google-auth
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-01 16:58:36 +03:00
dependabot[bot] c0b2863687 Bump pytz from 2022.2.1 to 2022.6
Bumps [pytz](https://github.com/stub42/pytz) from 2022.2.1 to 2022.6.
- [Release notes](https://github.com/stub42/pytz/releases)
- [Commits](https://github.com/stub42/pytz/compare/release_2022.2.1...release_2022.6)

---
updated-dependencies:
- dependency-name: pytz
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-01 15:47:10 +03:00
dependabot[bot] 72e4659f8f Bump mypy from 0.981 to 0.982
Bumps [mypy](https://github.com/python/mypy) from 0.981 to 0.982.
- [Release notes](https://github.com/python/mypy/releases)
- [Commits](https://github.com/python/mypy/compare/v0.981...v0.982)

---
updated-dependencies:
- dependency-name: mypy
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-01 15:28:15 +03:00
dependabot[bot] 27ba8192fd Bump icalendar from 4.1.0 to 5.0.1
Bumps [icalendar](https://github.com/collective/icalendar) from 4.1.0 to 5.0.1.
- [Release notes](https://github.com/collective/icalendar/releases)
- [Changelog](https://github.com/collective/icalendar/blob/master/CHANGES.rst)
- [Commits](https://github.com/collective/icalendar/compare/4.1.0...v5.0.1)

---
updated-dependencies:
- dependency-name: icalendar
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-01 10:59:27 +03:00
dependabot[bot] a209146c56 Bump black from 22.8.0 to 22.10.0
Bumps [black](https://github.com/psf/black) from 22.8.0 to 22.10.0.
- [Release notes](https://github.com/psf/black/releases)
- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
- [Commits](https://github.com/psf/black/compare/22.8.0...22.10.0)

---
updated-dependencies:
- dependency-name: black
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-01 09:23:44 +03:00
dependabot[bot] a60f8777f5 Bump pytest from 7.1.3 to 7.2.0
Bumps [pytest](https://github.com/pytest-dev/pytest) from 7.1.3 to 7.2.0.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/7.1.3...7.2.0)

---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-01 07:55:19 +03:00
dependabot[bot] eafbd6bf59 Bump types-pyyaml from 6.0.11 to 6.0.12
Bumps [types-pyyaml](https://github.com/python/typeshed) from 6.0.11 to 6.0.12.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-pyyaml
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-01 12:45:56 +03:00
dependabot[bot] 9d02e01da0 Bump mypy from 0.971 to 0.981
Bumps [mypy](https://github.com/python/mypy) from 0.971 to 0.981.
- [Release notes](https://github.com/python/mypy/releases)
- [Commits](https://github.com/python/mypy/compare/v0.971...v0.981)

---
updated-dependencies:
- dependency-name: mypy
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-01 11:45:16 +03:00
dependabot[bot] 1c1a1a220d Bump pytest from 7.1.2 to 7.1.3
Bumps [pytest](https://github.com/pytest-dev/pytest) from 7.1.2 to 7.1.3.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/7.1.2...7.1.3)

---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-01 11:37:18 +03:00
dependabot[bot] 3759992950 Bump google-api-python-client from 2.58.0 to 2.63.0
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 2.58.0 to 2.63.0.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v2.58.0...v2.63.0)

---
updated-dependencies:
- dependency-name: google-api-python-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-01 11:28:11 +03:00
dependabot[bot] 45b07dc5ab Bump google-auth from 2.11.0 to 2.12.0
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 2.11.0 to 2.12.0.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v2.11.0...v2.12.0)

---
updated-dependencies:
- dependency-name: google-auth
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-01 11:20:12 +03:00
dependabot[bot] 4f22594ddc Bump protobuf from 3.20.1 to 3.20.2
Bumps [protobuf](https://github.com/protocolbuffers/protobuf) from 3.20.1 to 3.20.2.
- [Release notes](https://github.com/protocolbuffers/protobuf/releases)
- [Changelog](https://github.com/protocolbuffers/protobuf/blob/main/generate_changelog.py)
- [Commits](https://github.com/protocolbuffers/protobuf/compare/v3.20.1...v3.20.2)

---
updated-dependencies:
- dependency-name: protobuf
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-24 01:49:24 +03:00
dependabot[bot] dd2d87d38d Bump types-pytz from 2022.1.2 to 2022.2.1.0
Bumps [types-pytz](https://github.com/python/typeshed) from 2022.1.2 to 2022.2.1.0.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-pytz
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-01 15:06:32 +03:00
dependabot[bot] ee4d6de9d5 Bump pytz from 2022.1 to 2022.2.1
Bumps [pytz](https://github.com/stub42/pytz) from 2022.1 to 2022.2.1.
- [Release notes](https://github.com/stub42/pytz/releases)
- [Commits](https://github.com/stub42/pytz/compare/release_2022.1...release_2022.2.1)

---
updated-dependencies:
- dependency-name: pytz
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-01 13:25:47 +03:00
dependabot[bot] 353ffa1d0c Bump flake8 from 5.0.1 to 5.0.4
Bumps [flake8](https://github.com/pycqa/flake8) from 5.0.1 to 5.0.4.
- [Release notes](https://github.com/pycqa/flake8/releases)
- [Commits](https://github.com/pycqa/flake8/compare/5.0.1...5.0.4)

---
updated-dependencies:
- dependency-name: flake8
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-01 12:54:27 +03:00
dependabot[bot] 3da56345b1 Bump black from 22.6.0 to 22.8.0
Bumps [black](https://github.com/psf/black) from 22.6.0 to 22.8.0.
- [Release notes](https://github.com/psf/black/releases)
- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
- [Commits](https://github.com/psf/black/compare/22.6.0...22.8.0)

---
updated-dependencies:
- dependency-name: black
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-01 12:44:39 +03:00
dependabot[bot] 47808d92bd Bump google-auth from 2.9.1 to 2.11.0
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 2.9.1 to 2.11.0.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v2.9.1...v2.11.0)

---
updated-dependencies:
- dependency-name: google-auth
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-01 12:30:51 +03:00
dependabot[bot] 444e70942e Bump google-api-python-client from 2.55.0 to 2.58.0
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 2.55.0 to 2.58.0.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v2.55.0...v2.58.0)

---
updated-dependencies:
- dependency-name: google-api-python-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-01 12:21:33 +03:00
dependabot[bot] 0accf99f99 Bump types-python-dateutil from 2.8.18 to 2.8.19
Bumps [types-python-dateutil](https://github.com/python/typeshed) from 2.8.18 to 2.8.19.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-python-dateutil
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 12:07:12 +03:00
dependabot[bot] 9eb3d964bd Bump types-pyyaml from 6.0.9 to 6.0.11
Bumps [types-pyyaml](https://github.com/python/typeshed) from 6.0.9 to 6.0.11.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-pyyaml
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 11:49:50 +03:00
dependabot[bot] b51cec36e4 Bump google-api-python-client from 2.52.0 to 2.55.0
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 2.52.0 to 2.55.0.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v2.52.0...v2.55.0)

---
updated-dependencies:
- dependency-name: google-api-python-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 11:43:54 +03:00
dependabot[bot] a2d51b1886 Bump google-auth from 2.9.0 to 2.9.1
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 2.9.0 to 2.9.1.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v2.9.0...v2.9.1)

---
updated-dependencies:
- dependency-name: google-auth
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 10:49:44 +03:00
dependabot[bot] 22d448c993 Bump mypy from 0.961 to 0.971
Bumps [mypy](https://github.com/python/mypy) from 0.961 to 0.971.
- [Release notes](https://github.com/python/mypy/releases)
- [Commits](https://github.com/python/mypy/compare/v0.961...v0.971)

---
updated-dependencies:
- dependency-name: mypy
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 10:42:15 +03:00
dependabot[bot] 526be4de8a Bump types-pytz from 2022.1.1 to 2022.1.2
Bumps [types-pytz](https://github.com/python/typeshed) from 2022.1.1 to 2022.1.2.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-pytz
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 10:25:15 +03:00
dependabot[bot] cc526e4172 Bump flake8 from 4.0.1 to 5.0.1
Bumps [flake8](https://github.com/pycqa/flake8) from 4.0.1 to 5.0.1.
- [Release notes](https://github.com/pycqa/flake8/releases)
- [Commits](https://github.com/pycqa/flake8/compare/4.0.1...5.0.1)

---
updated-dependencies:
- dependency-name: flake8
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 10:16:35 +03:00
dependabot[bot] f2e9b2cf87 Bump icalendar from 4.0.9 to 4.1.0
Bumps [icalendar](https://github.com/collective/icalendar) from 4.0.9 to 4.1.0.
- [Release notes](https://github.com/collective/icalendar/releases)
- [Changelog](https://github.com/collective/icalendar/blob/4.1.0/CHANGES.rst)
- [Commits](https://github.com/collective/icalendar/compare/4.0.9...4.1.0)

---
updated-dependencies:
- dependency-name: icalendar
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 08:56:52 +03:00
dependabot[bot] 0da36d5428 Bump lxml from 4.9.0 to 4.9.1
Bumps [lxml](https://github.com/lxml/lxml) from 4.9.0 to 4.9.1.
- [Release notes](https://github.com/lxml/lxml/releases)
- [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt)
- [Commits](https://github.com/lxml/lxml/compare/lxml-4.9.0...lxml-4.9.1)

---
updated-dependencies:
- dependency-name: lxml
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-07 09:02:28 +03:00
dependabot[bot] af8150197d Bump google-api-python-client from 2.49.0 to 2.52.0
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 2.49.0 to 2.52.0.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v2.49.0...v2.52.0)

---
updated-dependencies:
- dependency-name: google-api-python-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-01 15:36:13 +03:00
dependabot[bot] 72f474217a Bump google-auth from 2.6.6 to 2.9.0
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 2.6.6 to 2.9.0.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v2.6.6...v2.9.0)

---
updated-dependencies:
- dependency-name: google-auth
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-01 14:32:59 +03:00
dependabot[bot] 22b4cec62b Bump black from 22.3.0 to 22.6.0
Bumps [black](https://github.com/psf/black) from 22.3.0 to 22.6.0.
- [Release notes](https://github.com/psf/black/releases)
- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
- [Commits](https://github.com/psf/black/compare/22.3.0...22.6.0)

---
updated-dependencies:
- dependency-name: black
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-01 14:22:44 +03:00
dependabot[bot] defea7633b Bump types-python-dateutil from 2.8.17 to 2.8.18
Bumps [types-python-dateutil](https://github.com/python/typeshed) from 2.8.17 to 2.8.18.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-python-dateutil
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-01 13:46:27 +03:00
dependabot[bot] 520fd15da8 Bump types-pyyaml from 6.0.8 to 6.0.9
Bumps [types-pyyaml](https://github.com/python/typeshed) from 6.0.8 to 6.0.9.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-pyyaml
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-01 12:38:09 +03:00
dependabot[bot] f04c0c46fd Bump types-pytz from 2021.3.8 to 2022.1.1
Bumps [types-pytz](https://github.com/python/typeshed) from 2021.3.8 to 2022.1.1.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-pytz
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-01 11:07:12 +03:00
dependabot[bot] 74d2e18e91 Bump mypy from 0.960 to 0.961
Bumps [mypy](https://github.com/python/mypy) from 0.960 to 0.961.
- [Release notes](https://github.com/python/mypy/releases)
- [Commits](https://github.com/python/mypy/compare/v0.960...v0.961)

---
updated-dependencies:
- dependency-name: mypy
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-01 10:42:31 +03:00
Dmitry Belyaev 5e4bed5604
bump github/codeql-action to v2
https://github.blog/changelog/2022-04-27-code-scanning-deprecation-of-codeql-action-v1/
2022-06-04 23:51:41 +03:00
Dmitry Belyaev 111d527c33
check formatting with black (#99)
* check formatting with black + suggest on pr

* test format check

* fix test format error

suggested by reviewdog[black]

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-06-04 23:43:13 +03:00
Dmitry Belyaev a18be3d079
Merge pull request #98 from b4tman/mypy
type checking with mypy
2022-06-04 22:57:22 +03:00
Dmitry Belyaev c9b38cd29e
add mypy strict check (not failing) 2022-06-04 20:14:53 +03:00
Dmitry Belyaev c2c3a7a14d
fix type errors in tests
with mypy --strict
2022-06-04 18:51:43 +03:00
Dmitry Belyaev 787e9df642
explicitly exports
to fix (mypy --strict) errors like:
>> error: Module "sync_ics2gcal" does not explicitly export attribute "GoogleCalendarService"; implicit reexport disabled
2022-06-04 18:50:58 +03:00
Dmitry Belyaev 80e15b0622
fix type errors
with mypy --strict
2022-06-04 18:47:54 +03:00
Dmitry Belyaev ad634e9c6e
ignore tmp_bin/ 2022-06-04 17:40:33 +03:00
Dmitry Belyaev 6ba8106f3e
version 0.1.4 2022-06-04 17:29:11 +03:00
Dmitry Belyaev e5abc3c218
fix test error 2022-06-04 17:12:21 +03:00
Dmitry Belyaev 9ad97a158c
test type error 2022-06-04 17:09:09 +03:00
Dmitry Belyaev 47ac72c1fe
fix add-path 2022-06-04 17:01:33 +03:00
Dmitry Belyaev c1c621cbf0
add reviewdog workflow with mypy 2022-06-04 16:54:33 +03:00
Dmitry Belyaev bfdeaa17ff
drop python 3.7 support
for TypedDict
2022-06-04 15:56:11 +03:00
Dmitry Belyaev 1eef4114cd
ci: fix mypy checks 2022-06-04 15:48:25 +03:00
Dmitry Belyaev e2d5548466
update poetry.lock 2022-06-04 15:46:02 +03:00
Dmitry Belyaev 0778fbe51f
ci: check with mypy + upload report 2022-06-04 15:44:01 +03:00
Dmitry Belyaev 7b62e2c583
ignore mypy_report folder + lxml dep 2022-06-04 15:42:19 +03:00
Dmitry Belyaev 3cbbbb1a1b
remove TypeAlias usage 2022-06-04 01:07:24 +03:00
Dmitry Belyaev 29275d3f0e
more types in test_sync 2022-06-04 00:57:38 +03:00
Dmitry Belyaev edd6c39dcb
more types in sync 2022-06-04 00:40:15 +03:00
Dmitry Belyaev 54146451c7
types: + EventsSearchResults 2022-06-04 00:39:29 +03:00
Dmitry Belyaev 5b4dca0ab9
add types-PyYAML, mypy ignore_missing: +fire 2022-06-04 00:11:14 +03:00
Dmitry Belyaev 2f3a87f25f
more types in gcal 2022-06-03 23:42:29 +03:00
Dmitry Belyaev 260f168077
mypy ignore_missing_imports 2022-06-03 23:39:11 +03:00
Dmitry Belyaev dc23acb7d2
type annotations in ical, gcal 2022-06-03 22:07:06 +03:00
Dmitry Belyaev 4a85424215
add mypy 2022-06-03 22:07:05 +03:00
Dmitry Belyaev 8eaafc9925
workflows: remove poetry cache 2022-06-03 15:55:50 +03:00
Dmitry Belyaev 7582cba1dd
add test_format_datetime_utc 2022-06-03 14:06:36 +03:00
dependabot[bot] 6ac6a0fb6b Bump google-api-python-client from 2.46.0 to 2.49.0
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 2.46.0 to 2.49.0.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v2.46.0...v2.49.0)

---
updated-dependencies:
- dependency-name: google-api-python-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-01 14:04:08 +03:00
dependabot[bot] e8c0c17a4c Bump google-api-python-client from 2.42.0 to 2.46.0
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 2.42.0 to 2.46.0.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v2.42.0...v2.46.0)

---
updated-dependencies:
- dependency-name: google-api-python-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-02 15:34:29 +03:00
dependabot[bot] 64a12c3754 Bump google-auth from 2.6.2 to 2.6.6
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 2.6.2 to 2.6.6.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v2.6.2...v2.6.6)

---
updated-dependencies:
- dependency-name: google-auth
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-02 15:25:53 +03:00
dependabot[bot] aef5fd6491 Bump pytest from 7.1.1 to 7.1.2
Bumps [pytest](https://github.com/pytest-dev/pytest) from 7.1.1 to 7.1.2.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/7.1.1...7.1.2)

---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-02 15:17:00 +03:00
dependabot[bot] 6221cd02e9 Bump black from 22.1.0 to 22.3.0
Bumps [black](https://github.com/psf/black) from 22.1.0 to 22.3.0.
- [Release notes](https://github.com/psf/black/releases)
- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
- [Commits](https://github.com/psf/black/compare/22.1.0...22.3.0)

---
updated-dependencies:
- dependency-name: black
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-05 16:59:11 +03:00
dependabot[bot] 6e0684372c Bump pytest from 7.0.1 to 7.1.1
Bumps [pytest](https://github.com/pytest-dev/pytest) from 7.0.1 to 7.1.1.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/7.0.1...7.1.1)

---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-05 16:12:30 +03:00
dependabot[bot] 903092835e Bump pytz from 2021.3 to 2022.1
Bumps [pytz](https://github.com/stub42/pytz) from 2021.3 to 2022.1.
- [Release notes](https://github.com/stub42/pytz/releases)
- [Commits](https://github.com/stub42/pytz/compare/release_2021.3...release_2022.1)

---
updated-dependencies:
- dependency-name: pytz
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-05 13:12:04 +03:00
dependabot[bot] f62f032a00 Bump google-auth from 2.6.0 to 2.6.2
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 2.6.0 to 2.6.2.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v2.6.0...v2.6.2)

---
updated-dependencies:
- dependency-name: google-auth
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-05 12:58:54 +03:00
Dmitry Belyaev 8c05b8319c
reset poetry cache (github workflows) 2022-04-05 12:40:40 +03:00
Dmitry Belyaev adc61821cf
bump actions/checkout to 3 2022-04-05 12:38:17 +03:00
Dmitry Belyaev 25670a61ba
bump actions/cache to 3.0.1 2022-04-05 12:37:02 +03:00
dependabot[bot] 6411241a9a Bump google-api-python-client from 2.39.0 to 2.42.0
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 2.39.0 to 2.42.0.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v2.39.0...v2.42.0)

---
updated-dependencies:
- dependency-name: google-api-python-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-05 10:58:07 +03:00
Dmitry Belyaev 912754b4c1
Merge pull request #88 from gwww/develop
Format with black
2022-03-08 19:53:22 +03:00
Glenn Waters 70278c1542 Format with black. 2022-03-08 10:46:21 -05:00
dependabot[bot] 2372103807 Bump google-api-python-client from 2.36.0 to 2.39.0
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 2.36.0 to 2.39.0.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v2.36.0...v2.39.0)

---
updated-dependencies:
- dependency-name: google-api-python-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-02 23:10:35 +03:00
Dmitry Belyaev 3062d4323a
Update README.md 2022-03-02 23:08:23 +03:00
Dmitry Belyaev 7f8806e259
Delete .travis.yml 2022-03-02 23:08:03 +03:00
dependabot[bot] 348dae9f60 Bump pytest from 6.2.5 to 7.0.1
Bumps [pytest](https://github.com/pytest-dev/pytest) from 6.2.5 to 7.0.1.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/6.2.5...7.0.1)

---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-02 23:05:52 +03:00
Dmitry Belyaev f0a7668fcd
fix typo 2022-02-24 12:34:41 +03:00
Dmitry Belyaev 38fe634a9f
fix var names 2022-02-24 12:20:07 +03:00
Dmitry Belyaev 839a3ac0c3
fix parsing config `start_from` (#82) 2022-02-23 13:11:56 +03:00
Dmitry Belyaev 70a9dac822
update poetry.lock 2022-02-23 12:34:29 +03:00
Dmitry Belyaev e6cc7ad336
Merge pull request #81 from b4tman/filter_no-updated
overwrite events without updated field (#80)
2022-02-22 10:26:17 +03:00
Dmitry Belyaev 693c6c4359
overwrite events without `updated` field 2022-02-22 10:15:05 +03:00
Dmitry Belyaev b09136747f
rewrite test_filter_events_no_updated 2022-02-22 09:52:28 +03:00
Dmitry Belyaev 89877bc6d8
add test_filter_events_to_update_no_updated
#80
2022-02-21 22:40:07 +03:00
Dmitry Belyaev 61d3186522
drop python 3.6 support 2022-02-11 14:29:25 +03:00
Dmitry Belyaev 3fa8334408
remove requirements.txt 2022-02-11 14:19:38 +03:00
dependabot[bot] 809b0996c2 Bump google-api-python-client from 2.33.0 to 2.36.0
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 2.33.0 to 2.36.0.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v2.33.0...v2.36.0)

---
updated-dependencies:
- dependency-name: google-api-python-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-01 09:20:25 +03:00
dependabot[bot] 93840f9795 Bump google-auth from 2.3.3 to 2.6.0
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 2.3.3 to 2.6.0.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v2.3.3...v2.6.0)

---
updated-dependencies:
- dependency-name: google-auth
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-01 09:04:17 +03:00
Dmitry Belyaev 843ad37066 travis ci: add python 3.10 2022-01-19 12:17:50 +03:00
dependabot[bot] 309969cc42 Bump google-api-python-client from 2.31.0 to 2.33.0
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 2.31.0 to 2.33.0.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v2.31.0...v2.33.0)

---
updated-dependencies:
- dependency-name: google-api-python-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-01 12:27:24 +03:00
dependabot[bot] a3b3954f39 Bump google-auth from 2.3.2 to 2.3.3
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 2.3.2 to 2.3.3.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v2.3.2...v2.3.3)

---
updated-dependencies:
- dependency-name: google-auth
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-12-01 11:07:29 +03:00
dependabot[bot] 3838d66067 Bump google-api-python-client from 2.28.0 to 2.31.0
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 2.28.0 to 2.31.0.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v2.28.0...v2.31.0)

---
updated-dependencies:
- dependency-name: google-api-python-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-12-01 09:31:22 +03:00
dependabot[bot] c3ab0bea08 Bump google-api-python-client from 2.23.0 to 2.28.0
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 2.23.0 to 2.28.0.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v2.23.0...v2.28.0)

---
updated-dependencies:
- dependency-name: google-api-python-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-01 09:48:46 +03:00
dependabot[bot] 5e55300448 Bump google-auth from 2.2.1 to 2.3.2
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 2.2.1 to 2.3.2.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v2.2.1...v2.3.2)

---
updated-dependencies:
- dependency-name: google-auth
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-01 09:38:31 +03:00
dependabot[bot] 69eea1b351 Bump flake8 from 3.9.2 to 4.0.1
Bumps [flake8](https://github.com/pycqa/flake8) from 3.9.2 to 4.0.1.
- [Release notes](https://github.com/pycqa/flake8/releases)
- [Commits](https://github.com/pycqa/flake8/compare/3.9.2...4.0.1)

---
updated-dependencies:
- dependency-name: flake8
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-01 09:34:06 +03:00
dependabot[bot] 1a3ce7cda4 Bump icalendar from 4.0.7 to 4.0.9
Bumps [icalendar](https://github.com/collective/icalendar) from 4.0.7 to 4.0.9.
- [Release notes](https://github.com/collective/icalendar/releases)
- [Changelog](https://github.com/collective/icalendar/blob/master/CHANGES.rst)
- [Commits](https://github.com/collective/icalendar/compare/4.0.7...4.0.9)

---
updated-dependencies:
- dependency-name: icalendar
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-01 09:23:47 +03:00
dependabot[bot] 36c4825080 Bump pytz from 2021.1 to 2021.3
Bumps [pytz](https://github.com/stub42/pytz) from 2021.1 to 2021.3.
- [Release notes](https://github.com/stub42/pytz/releases)
- [Commits](https://github.com/stub42/pytz/compare/release_2021.1...release_2021.3)

---
updated-dependencies:
- dependency-name: pytz
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-01 09:15:39 +03:00
dependabot[bot] 200ed88bd9 Bump pyyaml from 5.4.1 to 6.0
Bumps [pyyaml](https://github.com/yaml/pyyaml) from 5.4.1 to 6.0.
- [Release notes](https://github.com/yaml/pyyaml/releases)
- [Changelog](https://github.com/yaml/pyyaml/blob/master/CHANGES)
- [Commits](https://github.com/yaml/pyyaml/compare/5.4.1...6.0)

---
updated-dependencies:
- dependency-name: pyyaml
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-01 08:58:31 +03:00
Dmitry Belyaev a81192b96f
add python 3.10 (github actions) (#66) 2021-10-21 10:18:39 +03:00
Dmitry Belyaev 2ab96d1b00
travis ci: dist = focal 2021-10-21 09:52:27 +03:00
Dmitry Belyaev 9603718c83
remove install from requirements.txt 2021-10-15 09:37:57 +03:00
Dmitry Belyaev f7a84cc58c
use POETRY_PYPI_TOKEN_PYPI to publish
https://python-poetry.org/docs/repositories/
2021-10-15 09:34:07 +03:00
Dmitry Belyaev 782ab05126
Merge branch 'feature/poetry' into develop 2021-10-09 16:02:59 +03:00
Dmitry Belyaev d08671e722
update README 2021-10-09 15:54:31 +03:00
Dmitry Belyaev df2f3ef483
fix CodeQL
remove git checkout HEAD^2
2021-10-09 15:37:58 +03:00
Dmitry Belyaev 9e40b6fbbd
use poetry in ci 2021-10-09 15:27:38 +03:00
Dmitry Belyaev b86ef30397
migrate to poetry 2021-10-09 15:09:07 +03:00
dependabot[bot] 2b146bf15d Bump google-auth from 2.0.2 to 2.2.1
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 2.0.2 to 2.2.1.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v2.0.2...v2.2.1)

---
updated-dependencies:
- dependency-name: google-auth
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-01 10:34:26 +03:00
dependabot[bot] 6d4a9ddf30 Bump google-api-python-client from 2.19.0 to 2.23.0
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 2.19.0 to 2.23.0.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v2.19.0...v2.23.0)

---
updated-dependencies:
- dependency-name: google-api-python-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-01 10:23:02 +03:00
dependabot[bot] 217a1ccf39 Bump google-api-python-client from 2.15.0 to 2.19.0
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 2.15.0 to 2.19.0.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v2.15.0...v2.19.0)

---
updated-dependencies:
- dependency-name: google-api-python-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-01 11:59:36 +03:00
dependabot[bot] 1bc2fe1ea2 Bump google-auth from 1.34.0 to 2.0.2
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 1.34.0 to 2.0.2.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/main/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v1.34.0...v2.0.2)

---
updated-dependencies:
- dependency-name: google-auth
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-01 09:53:28 +03:00
dependabot[bot] 1187aa0f3e Bump google-api-python-client from 2.11.0 to 2.15.0
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 2.11.0 to 2.15.0.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/master/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v2.11.0...v2.15.0)

---
updated-dependencies:
- dependency-name: google-api-python-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-01 11:35:57 +03:00
dependabot[bot] c3312956e2 Bump google-auth from 1.32.1 to 1.34.0
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 1.32.1 to 1.34.0.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/master/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v1.32.1...v1.34.0)

---
updated-dependencies:
- dependency-name: google-auth
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-01 11:22:17 +03:00
dependabot[bot] 8910768b61 Bump google-api-python-client from 2.6.0 to 2.11.0
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 2.6.0 to 2.11.0.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/master/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v2.6.0...v2.11.0)

---
updated-dependencies:
- dependency-name: google-api-python-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-01 11:28:46 +03:00
dependabot[bot] 3274b85ca6 Bump google-auth from 1.30.1 to 1.32.1
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 1.30.1 to 1.32.1.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/master/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v1.30.1...v1.32.1)

---
updated-dependencies:
- dependency-name: google-auth
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-01 10:44:18 +03:00
dependabot[bot] 8d4a21c72d Bump google-api-python-client from 2.3.0 to 2.6.0
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 2.3.0 to 2.6.0.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/master/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v2.3.0...v2.6.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-01 13:29:00 +03:00
dependabot[bot] 412c916b15 Bump google-auth from 1.30.0 to 1.30.1
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 1.30.0 to 1.30.1.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/master/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v1.30.0...v1.30.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-01 09:13:31 +03:00
Dmitry Belyaev 052ba440d0
type aliases 2021-05-19 12:55:54 +03:00
Dmitry Belyaev 5e01b6dd01
add fire to setup requires 2021-05-01 18:26:02 +03:00
Dmitry Belyaev 8b2f35b3a9
Merge pull request #54 from b4tman/feature/fire_cli
feature/fire cli
2021-05-01 18:06:52 +03:00
Dmitry Belyaev c3bdd25d5a
cli group for property commands 2021-05-01 17:58:30 +03:00
Dmitry Belyaev 3b0de9d636
fire instead of argparse 2021-05-01 17:31:14 +03:00
dependabot[bot] 97614ae21d Bump google-api-python-client from 2.1.0 to 2.3.0
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 2.1.0 to 2.3.0.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/master/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v2.1.0...v2.3.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-01 15:14:42 +03:00
dependabot[bot] 1cdf1da6ee Bump google-auth from 1.28.0 to 1.30.0
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 1.28.0 to 1.30.0.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/master/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v1.28.0...v1.30.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-01 15:07:52 +03:00
Dmitry Belyaev bd6bd65719
Merge pull request #51 from b4tman/feature/type_annotations
Type annotations
2021-05-01 15:00:52 +03:00
Dmitry Belyaev c41b3a4dbd
type annotations - tests 2021-05-01 13:49:26 +03:00
Dmitry Belyaev 9dab3c5709
type annotations - scripts 2021-04-30 11:46:10 +03:00
Dmitry Belyaev e5064eeaed
cfg optional 2021-04-30 11:45:05 +03:00
Dmitry Belyaev 19192d1641
fix _tz_aware_datetime return type 2021-04-30 11:08:56 +03:00
Dmitry Belyaev 6c571df7bc
type annotations - sync 2021-04-29 17:10:35 +03:00
Dmitry Belyaev a6474ee984
type annotations - ical 2021-04-29 16:19:41 +03:00
Dmitry Belyaev 8669aefabe
type annotations - gcal 2021-04-29 15:24:23 +03:00
Dmitry Belyaev 77e2cdba36
ignore ide files and virtualenv 2021-04-29 15:22:27 +03:00
dependabot[bot] 18224ad5b4 Bump google-api-python-client from 1.12.8 to 2.1.0
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 1.12.8 to 2.1.0.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/master/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v1.12.8...v2.1.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-01 15:57:56 +03:00
dependabot[bot] 41c2973646 Bump google-auth from 1.27.0 to 1.28.0
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 1.27.0 to 1.28.0.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/master/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v1.27.0...v1.28.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-01 09:06:03 +03:00
dependabot[bot] a02775110d Bump pytz from 2020.5 to 2021.1
Bumps [pytz](https://github.com/stub42/pytz) from 2020.5 to 2021.1.
- [Release notes](https://github.com/stub42/pytz/releases)
- [Commits](https://github.com/stub42/pytz/compare/release_2020.5...release_2021.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-01 10:58:20 +03:00
dependabot[bot] 12653df1bf Bump google-auth from 1.24.0 to 1.27.0
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 1.24.0 to 1.27.0.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/master/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v1.24.0...v1.27.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-01 09:02:30 +03:00
dependabot[bot] fef3586146 Bump pyyaml from 5.3.1 to 5.4.1
Bumps [pyyaml](https://github.com/yaml/pyyaml) from 5.3.1 to 5.4.1.
- [Release notes](https://github.com/yaml/pyyaml/releases)
- [Changelog](https://github.com/yaml/pyyaml/blob/master/CHANGES)
- [Commits](https://github.com/yaml/pyyaml/compare/5.3.1...5.4.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-02-01 14:52:05 +03:00
Dmitry Belyaev b7cd3847bc
remove Dependabot and FOSSA badges 2021-01-01 15:14:24 +03:00
Dmitry Belyaev 3ddc486614 add Python 3.9 support 2021-01-01 13:38:14 +03:00
dependabot[bot] 1beff774bc Bump google-auth from 1.23.0 to 1.24.0
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 1.23.0 to 1.24.0.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/master/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v1.23.0...v1.24.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-01 13:25:26 +03:00
Dmitry Belyaev e0b4e6c28a
drop Python 3.5 support 2021-01-01 13:17:08 +03:00
dependabot[bot] 50f90925b8 Bump pytz from 2020.4 to 2020.5
Bumps [pytz](https://github.com/stub42/pytz) from 2020.4 to 2020.5.
- [Release notes](https://github.com/stub42/pytz/releases)
- [Commits](https://github.com/stub42/pytz/compare/release_2020.4...release_2020.5)

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-01 13:07:00 +03:00
dependabot[bot] c2a3a54783 Bump pytz from 2020.1 to 2020.4
Bumps [pytz](https://github.com/stub42/pytz) from 2020.1 to 2020.4.
- [Release notes](https://github.com/stub42/pytz/releases)
- [Commits](https://github.com/stub42/pytz/compare/release_2020.1...release_2020.4)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-01 10:37:35 +03:00
dependabot[bot] 38dd853436 Bump google-api-python-client from 1.12.5 to 1.12.8
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 1.12.5 to 1.12.8.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/master/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v1.12.5...v1.12.8)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-01 09:56:31 +03:00
dependabot[bot] a10e62f806 Bump google-api-python-client from 1.12.3 to 1.12.5
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 1.12.3 to 1.12.5.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/master/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v1.12.3...v1.12.5)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-01 12:31:38 +03:00
dependabot[bot] eca648ee56 Bump google-auth from 1.22.0 to 1.23.0
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 1.22.0 to 1.23.0.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/master/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v1.22.0...v1.23.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-11-01 12:26:07 +03:00
dependabot[bot] 55ee5002cc Bump google-api-python-client from 1.11.0 to 1.12.3
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 1.11.0 to 1.12.3.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/master/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v1.11.0...v1.12.3)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-01 10:29:44 +03:00
dependabot[bot] 1bec98a53e Bump google-auth from 1.21.0 to 1.22.0
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 1.21.0 to 1.22.0.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/master/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v1.21.0...v1.22.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-01 10:14:15 +03:00
dependabot[bot] 5649a71da2 Bump icalendar from 4.0.6 to 4.0.7
Bumps [icalendar](https://github.com/collective/icalendar) from 4.0.6 to 4.0.7.
- [Release notes](https://github.com/collective/icalendar/releases)
- [Changelog](https://github.com/collective/icalendar/blob/master/CHANGES.rst)
- [Commits](https://github.com/collective/icalendar/compare/4.0.6...4.0.7)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-01 10:08:55 +03:00
dependabot[bot] fc490dcefe Bump google-auth from 1.20.1 to 1.21.0
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 1.20.1 to 1.21.0.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/master/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v1.20.1...v1.21.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-01 09:48:30 +03:00
dependabot[bot] ecb2f5a3d1 Bump google-api-python-client from 1.10.0 to 1.11.0
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 1.10.0 to 1.11.0.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/master/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v1.10.0...v1.11.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-01 09:31:32 +03:00
Dmitry Belyaev 8f56ad426e
Enabling code scanning
https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/enabling-code-scanning
2020-08-11 00:22:53 +03:00
dependabot[bot] a5739cb64c Bump google-auth from 1.18.0 to 1.20.1
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 1.18.0 to 1.20.1.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/master/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v1.18.0...v1.20.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-08 13:53:24 +03:00
dependabot[bot] fff533c0a8 Bump google-api-python-client from 1.9.3 to 1.10.0
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 1.9.3 to 1.10.0.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/master/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v1.9.3...v1.10.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-08 13:31:16 +03:00
dependabot[bot] d8cb345550 Bump google-auth from 1.17.2 to 1.18.0
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 1.17.2 to 1.18.0.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/master/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v1.17.2...v1.18.0)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-01 10:58:29 +03:00
dependabot[bot] 05a4770071 Bump google-auth from 1.16.0 to 1.17.2
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 1.16.0 to 1.17.2.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/master/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v1.16.0...v1.17.2)

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-18 10:18:57 +03:00
dependabot[bot] 7664ca9e55 Bump google-api-python-client from 1.8.4 to 1.9.3
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 1.8.4 to 1.9.3.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/master/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v1.8.4...v1.9.3)

Signed-off-by: dependabot[bot] <support@github.com>
2020-06-18 10:12:42 +03:00
dependabot-preview[bot] 66f9de3980 Create Dependabot config file 2020-06-18 09:52:40 +03:00
dependabot-preview[bot] a7164abb24 Bump icalendar from 4.0.5 to 4.0.6
Bumps [icalendar](https://github.com/collective/icalendar) from 4.0.5 to 4.0.6.
- [Release notes](https://github.com/collective/icalendar/releases)
- [Changelog](https://github.com/collective/icalendar/blob/master/CHANGES.rst)
- [Commits](https://github.com/collective/icalendar/compare/4.0.5...4.0.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-01 10:58:44 +03:00
dependabot-preview[bot] 38f7403b40 Bump google-api-python-client from 1.8.2 to 1.8.4
Bumps [google-api-python-client](https://github.com/googleapis/google-api-python-client) from 1.8.2 to 1.8.4.
- [Release notes](https://github.com/googleapis/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/master/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-api-python-client/compare/v1.8.2...v1.8.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-01 10:37:23 +03:00
dependabot-preview[bot] 9ad544971e Bump google-auth from 1.14.1 to 1.16.0
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 1.14.1 to 1.16.0.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/master/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v1.14.1...v1.16.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-01 09:00:12 +03:00
dependabot-preview[bot] 2d00ae77c9 Bump google-api-python-client from 1.8.0 to 1.8.2
Bumps [google-api-python-client](https://github.com/google/google-api-python-client) from 1.8.0 to 1.8.2.
- [Release notes](https://github.com/google/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/google-api-python-client/compare/v1.8.0...v1.8.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-01 12:47:13 +03:00
dependabot-preview[bot] 283b164723 Bump google-auth from 1.12.0 to 1.14.1
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 1.12.0 to 1.14.1.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/master/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v1.12.0...v1.14.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-01 11:51:09 +03:00
dependabot-preview[bot] 6058a3e592 Bump pytz from 2019.3 to 2020.1
Bumps [pytz](https://github.com/stub42/pytz) from 2019.3 to 2020.1.
- [Release notes](https://github.com/stub42/pytz/releases)
- [Commits](https://github.com/stub42/pytz/compare/release_2019.3...release_2020.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-05-01 11:00:32 +03:00
dependabot-preview[bot] 9c08630931 Bump google-api-python-client from 1.7.11 to 1.8.0
Bumps [google-api-python-client](https://github.com/google/google-api-python-client) from 1.7.11 to 1.8.0.
- [Release notes](https://github.com/google/google-api-python-client/releases)
- [Changelog](https://github.com/googleapis/google-api-python-client/blob/master/CHANGELOG)
- [Commits](https://github.com/google/google-api-python-client/compare/v1.7.11...v1.8.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-01 09:32:53 +03:00
dependabot-preview[bot] 9e027df349 Bump google-auth from 1.11.2 to 1.12.0
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 1.11.2 to 1.12.0.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/master/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v1.11.2...v1.12.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-01 09:27:44 +03:00
dependabot-preview[bot] c1d148c3f3 Bump icalendar from 4.0.4 to 4.0.5
Bumps [icalendar](https://github.com/collective/icalendar) from 4.0.4 to 4.0.5.
- [Release notes](https://github.com/collective/icalendar/releases)
- [Changelog](https://github.com/collective/icalendar/blob/master/CHANGES.rst)
- [Commits](https://github.com/collective/icalendar/compare/4.0.4...4.0.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-01 09:20:30 +03:00
dependabot-preview[bot] 694b91798e Bump pyyaml from 5.3 to 5.3.1
Bumps [pyyaml](https://github.com/yaml/pyyaml) from 5.3 to 5.3.1.
- [Release notes](https://github.com/yaml/pyyaml/releases)
- [Changelog](https://github.com/yaml/pyyaml/blob/master/CHANGES)
- [Commits](https://github.com/yaml/pyyaml/compare/5.3...5.3.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-01 09:15:29 +03:00
Dmitry Belyaev 8712b81a53
+ get/set commands in README 2020-03-08 13:29:57 +03:00
Dmitry Belyaev 51005fb29e
fmt README 2020-03-08 13:17:54 +03:00
Dmitry Belyaev 6e7c3cb7b2
fmt sync_calendar 2020-03-08 13:10:42 +03:00
Dmitry Belyaev 0f9a8d7a74
lint sync 2020-03-07 18:34:31 +03:00
Dmitry Belyaev 0161d65c16
lint ical 2020-03-07 18:29:35 +03:00
Dmitry Belyaev 9e74772852
lint gcal 2020-03-07 18:26:37 +03:00
Dmitry Belyaev 8d64869f06
lint manage_calendars 2020-03-07 18:14:34 +03:00
Dmitry Belyaev ab00cb09c8
+ manage_calendars: list hidden & deleted 2020-03-07 18:05:51 +03:00
Dmitry Belyaev b0a39a1b8c
manage_calendars: use nextPageToken for list
By default maximum number of entries returned on one result page is 100
2020-03-07 17:54:16 +03:00
Dmitry Belyaev 55b67469be
+ manage_calendars: get\set calendar properties 2020-03-07 17:41:05 +03:00
Dmitry Belyaev c17d3cd0ea
manage_calendars: no config file required 2020-03-07 16:21:48 +03:00
Dmitry Belyaev 9aad7e1910
make service even when config is None 2020-03-07 16:14:47 +03:00
dependabot-preview[bot] 41cc6b4159 Bump google-auth from 1.11.0 to 1.11.2
Bumps [google-auth](https://github.com/googleapis/google-auth-library-python) from 1.11.0 to 1.11.2.
- [Release notes](https://github.com/googleapis/google-auth-library-python/releases)
- [Changelog](https://github.com/googleapis/google-auth-library-python/blob/master/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-auth-library-python/compare/v1.11.0...v1.11.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-01 11:45:06 +03:00
Dmitry Belyaev 5d37aa2a33
disable cache_discovery
to suppress errors in logs:
file_cache is unavailable when using oauth2client >= 4.0.0

https://github.com/googleapis/google-api-python-client/issues/299
https://github.com/googleapis/google-api-python-client/issues/325
2020-02-25 22:43:45 +03:00
35 changed files with 2776 additions and 624 deletions

View File

@ -1 +0,0 @@
ref-names: $Format:%D$

1
.gitattributes vendored
View File

@ -1 +0,0 @@
.git_archival.txt export-subst

9
.github/dependabot.yml vendored Normal file
View File

@ -0,0 +1,9 @@
version: 2
updates:
- package-ecosystem: pip
directory: "/"
schedule:
interval: monthly
time: '02:00'
open-pull-requests-limit: 10
target-branch: develop

33
.github/workflows/codeql-analysis.yml vendored Normal file
View File

@ -0,0 +1,33 @@
name: "CodeQL"
on:
push:
branches: [develop, ]
pull_request:
# The branches below must be a subset of the branches above
branches: [develop]
schedule:
- cron: '0 12 10 * *'
jobs:
analyse:
name: Analyse
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
# We must fetch at least the immediate parents so that if this is
# a pull request then we can checkout the head.
fetch-depth: 2
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
# Override language selection by uncommenting this and choosing your languages
with:
languages: python
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2

View File

@ -13,30 +13,47 @@ on:
jobs:
build:
runs-on: ubuntu-18.04
runs-on: ubuntu-latest
strategy:
max-parallel: 4
matrix:
python-version: [3.5, 3.6, 3.7, 3.8]
python-version: ['3.9', '3.10', '3.11', '3.12']
steps:
- uses: actions/checkout@v1
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v1
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Upgrade pip
run: python -m pip install --upgrade pip
- name: Install Poetry
uses: snok/install-poetry@v1
- name: Install deps
run: poetry install --with dev
- name: Lint with flake8
run: |
pip install flake8
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
poetry run flake8 sync_ics2gcal --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
poetry run flake8 sync_ics2gcal --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest
run: poetry run pytest -v
- name: Check type annotations with mypy
run: |
pip install pytest
pytest -v
mkdir mypy_report
poetry run mypy --pretty --html-report mypy_report/ .
- name: Check type annotations with mypy strict mode (not failing)
run: |
poetry run mypy --strict --pretty . || true
- name: Check formatting with black
run: poetry run black --check --diff --color .
- name: Upload mypy report
uses: actions/upload-artifact@v2
with:
name: mypy_report
path: mypy_report/

View File

@ -8,19 +8,21 @@ jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v1
uses: actions/setup-python@v2
with:
python-version: '3.x'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install setuptools setuptools_scm setuptools_scm_git_archive wheel twine
- name: Build and publish
- name: Upgrade pip
run: python -m pip install --upgrade pip
- name: Install Poetry
uses: snok/install-poetry@v1
- name: Install deps
run: poetry install --with dev
- name: Build
run: poetry build
- name: Publish
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.pypi_token }}
POETRY_PYPI_TOKEN_PYPI: ${{ secrets.pypi_token }}
run: |
python setup.py sdist bdist_wheel
twine upload dist/*
poetry publish -n

49
.github/workflows/reviewdog.yml vendored Normal file
View File

@ -0,0 +1,49 @@
name: reviewdog
on:
pull_request:
branches:
- master
- develop
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.x
- name: Upgrade pip
run: python -m pip install --upgrade pip
- name: Install Poetry
uses: snok/install-poetry@v1
- name: Install deps
run: poetry install --with dev
- name: setup mypy
run: |
mkdir tmp_bin/
echo "#!/bin/sh" > tmp_bin/mypy
echo "poetry run mypy \$@" >> tmp_bin/mypy
chmod +x tmp_bin/mypy
echo "$(pwd)/tmp_bin" >> $GITHUB_PATH
- uses: tsuyoshicho/action-mypy@v3
with:
reporter: github-pr-review
level: warning
- name: format with black
run: poetry run black .
- name: suggester / black
uses: reviewdog/action-suggester@v1
with:
tool_name: black

11
.gitignore vendored
View File

@ -2,8 +2,17 @@ config.yml
service-account.json
*.pyc
my-test*.ics
.vscode/*
.vscode/
.idea/
.venv/
.pytest_cache/
.mypy_cache/
/dist/
/*.egg-info/
/build/
/.eggs/
venv/
mypy_report/
tmp_bin/
docs/build/

16
.readthedocs.yml Normal file
View File

@ -0,0 +1,16 @@
version: 2
build:
os: ubuntu-22.04
tools:
python: "3.12"
jobs:
post_create_environment:
- pip install poetry
post_install:
# VIRTUAL_ENV needs to be set manually for now.
# See https://github.com/readthedocs/readthedocs.org/pull/11152/
- VIRTUAL_ENV=$READTHEDOCS_VIRTUALENV_PATH poetry install --with docs
sphinx:
configuration: docs/source/conf.py

View File

@ -1,10 +0,0 @@
language: python
python:
- "3.5"
- "3.6"
- "3.7"
- "3.8"
script:
- pytest -v

View File

@ -1,7 +0,0 @@
include pyproject.toml
# Include the README
include *.md
# Include the license file
include LICENSE

View File

@ -1,10 +1,8 @@
# sync_ics2gcal
[![PyPI version](https://badge.fury.io/py/sync-ics2gcal.svg)](https://badge.fury.io/py/sync-ics2gcal)
[![Build Status](https://travis-ci.org/b4tman/sync_ics2gcal.svg?branch=master)](https://travis-ci.org/b4tman/sync_ics2gcal)
[![Dependabot Status](https://api.dependabot.com/badges/status?host=github&repo=b4tman/sync_ics2gcal)](https://dependabot.com)
[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fb4tman%2Fsync_ics2gcal.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Fb4tman%2Fsync_ics2gcal?ref=badge_shield)
![Python package status](https://github.com/b4tman/sync_ics2gcal/workflows/Python%20package/badge.svg)
[![Documentation Status](https://readthedocs.org/projects/sync-ics2gcal/badge/?version=latest)](https://sync-ics2gcal.readthedocs.io/en/latest/?badge=latest)
Python scripts for sync .ics file with Google calendar
@ -12,21 +10,26 @@ Python scripts for sync .ics file with Google calendar
To install from [PyPI](https://pypi.org/project/sync-ics2gcal/) with [pip](https://pypi.python.org/pypi/pip), run:
```
```sh
pip install sync-ics2gcal
```
Or download source code and install using poetry:
Or download source code and install:
```
python setup.py install
```sh
# install poetry
pip install poetry
# install project and deps to virtualenv
poetry install
# run
poetry run sync-ics2gcal
```
## Configuration
### Create application in Google API Console
1. Create a new project: https://console.developers.google.com/project
1. Create a new project: [console.developers.google.com/project](https://console.developers.google.com/project)
2. Choose the new project from the top right project dropdown (only if another project is selected)
3. In the project Dashboard, choose "Library"
4. Find and Enable "Google Calendar API"
@ -38,15 +41,20 @@ python setup.py install
10. Edit service account and click "Create key", choose JSON and download key file.
### Create working directory
For example: `/home/user/myfolder`.
1. Save service account key in file `service-account.json`.
2. Download [sample config](https://github.com/b4tman/sync_ics2gcal/blob/develop/sample-config.yml) and save to file `config.yml`. For example:
```
```sh
wget https://raw.githubusercontent.com/b4tman/sync_ics2gcal/develop/sample-config.yml -O config.yml
```
3. *(Optional)* Place source `.ics` file, `my-calendar.ics` for example.
### Configuration parameters
* `start_from` - start date:
* full format datetime, `2018-04-03T13:23:25.000001Z` for example
* or just `now`
@ -55,36 +63,41 @@ wget https://raw.githubusercontent.com/b4tman/sync_ics2gcal/develop/sample-confi
* `google_id` - target google calendar id, `my-calendar@group.calendar.google.com` for example
* `source` - source `.ics` filename, `my-calendar.ics` for example
## Usage
### Manage calendars
```
manage-ics2gcal <subcommand> [-h] [options]
```sh
manage-ics2gcal GROUP | COMMAND
```
subcomands:
**GROUPS**:
* **property** - get/set properties (see [CalendarList resource](https://developers.google.com/calendar/v3/reference/calendarList#resource)), subcommands:
- **get** - get calendar property
- **set** - set calendar property
**COMMANDS**:
* **list** - list calendars
* **create** - create calendar
* **add_owner** - add owner to calendar
* **remove** - remove calendar
* **rename** - rename calendar
Use **-h** for more info.
### Sync calendar
just type:
```
```sh
sync-ics2gcal
```
## How it works
![How it works](how-it-works.png)
## License
[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fb4tman%2Fsync_ics2gcal.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fb4tman%2Fsync_ics2gcal?ref=badge_large)
Documentation is available at [sync-ics2gcal.readthedocs.io](https://sync-ics2gcal.readthedocs.io).

20
docs/Makefile Normal file
View File

@ -0,0 +1,20 @@
# Minimal makefile for Sphinx documentation
#
# You can set these variables from the command line, and also
# from the environment for the first two.
SPHINXOPTS ?=
SPHINXBUILD ?= poetry run sphinx-build
SOURCEDIR = source
BUILDDIR = build
# Put it first so that "make" without argument is like "make help".
help:
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
.PHONY: help Makefile
# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)

35
docs/make.bat Normal file
View File

@ -0,0 +1,35 @@
@ECHO OFF
pushd %~dp0
REM Command file for Sphinx documentation
if "%SPHINXBUILD%" == "" (
set SPHINXBUILD=poetry run sphinx-build
)
set SOURCEDIR=source
set BUILDDIR=build
%SPHINXBUILD% >NUL 2>NUL
if errorlevel 9009 (
echo.
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
echo.installed, then set the SPHINXBUILD environment variable to point
echo.to the full path of the 'sphinx-build' executable. Alternatively you
echo.may add the Sphinx directory to PATH.
echo.
echo.If you don't have Sphinx installed, grab it from
echo.https://www.sphinx-doc.org/
exit /b 1
)
if "%1" == "" goto help
%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
goto end
:help
%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
:end
popd

40
docs/source/conf.py Normal file
View File

@ -0,0 +1,40 @@
# Configuration file for the Sphinx documentation builder.
#
# For the full list of built-in configuration values, see the documentation:
# https://www.sphinx-doc.org/en/master/usage/configuration.html
# -- Project information -----------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
import importlib
from typing import List
project = "sync_ics2gcal"
copyright = "2023, b4tman"
author = "b4tman"
version = importlib.metadata.version("sync_ics2gcal")
release = version
# -- General configuration ---------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
extensions = [
"myst_parser",
"sphinx.ext.autodoc",
"sphinx_design",
"sphinx.ext.viewcode",
"sphinx_copybutton",
"sphinx.ext.githubpages",
]
templates_path = ["_templates"]
exclude_patterns: List[str] = []
source_suffix = [".rst", ".md"]
# -- Options for HTML output -------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output
html_theme = "sphinx_rtd_theme"
html_static_path = ["_static"]

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

22
docs/source/index.rst Normal file
View File

@ -0,0 +1,22 @@
.. sync_ics2gcal documentation master file, created by
sphinx-quickstart on Sat Aug 20 22:19:59 2023.
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
Welcome to sync_ics2gcal's documentation!
=========================================
.. toctree::
:maxdepth: 2
:caption: Contents:
readme_link
reference
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`

7
docs/source/modules.rst Normal file
View File

@ -0,0 +1,7 @@
sync_ics2gcal
=============
.. toctree::
:maxdepth: 4
sync_ics2gcal

View File

@ -0,0 +1,3 @@
```{include} ../../README.md
```

View File

@ -0,0 +1,6 @@
-------------
Reference
-------------
.. include:: modules.rst

View File

@ -0,0 +1,53 @@
sync\_ics2gcal package
======================
Submodules
----------
sync\_ics2gcal.gcal module
--------------------------
.. automodule:: sync_ics2gcal.gcal
:members:
:undoc-members:
:show-inheritance:
sync\_ics2gcal.ical module
--------------------------
.. automodule:: sync_ics2gcal.ical
:members:
:undoc-members:
:show-inheritance:
sync\_ics2gcal.manage\_calendars module
---------------------------------------
.. automodule:: sync_ics2gcal.manage_calendars
:members:
:undoc-members:
:show-inheritance:
sync\_ics2gcal.sync module
--------------------------
.. automodule:: sync_ics2gcal.sync
:members:
:undoc-members:
:show-inheritance:
sync\_ics2gcal.sync\_calendar module
------------------------------------
.. automodule:: sync_ics2gcal.sync_calendar
:members:
:undoc-members:
:show-inheritance:
Module contents
---------------
.. automodule:: sync_ics2gcal
:members:
:undoc-members:
:show-inheritance:

1487
poetry.lock generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,3 +1,67 @@
[tool.poetry]
name = "sync_ics2gcal"
version = "0.1.4"
description = "Sync ics file with Google calendar"
authors = ["Dmitry Belyaev <b4tm4n@mail.ru>"]
license = "MIT"
readme = "README.md"
homepage = "https://github.com/b4tman/sync_ics2gcal"
repository = "https://github.com/b4tman/sync_ics2gcal"
keywords = ["icalendar", "sync", "google", "calendar"]
classifiers = [
'License :: OSI Approved :: MIT License',
'Operating System :: OS Independent',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.11',
'Programming Language :: Python :: 3.12',
]
[tool.poetry.dependencies]
python = "^3.9"
google-auth = "2.29.0"
google-api-python-client = "2.127.0"
icalendar = "5.0.12"
pytz = "2024.1"
PyYAML = "6.0.1"
fire = "0.6.0"
[tool.poetry.group.dev]
optional = true
[tool.poetry.group.docs]
optional = true
[tool.poetry.group.dev.dependencies]
pytest = ">=7.4,<9.0"
flake8 = ">=5.0.4,<8.0.0"
black = ">=23.7,<25.0"
mypy = ">=0.960"
types-python-dateutil = "^2.8.19"
types-pytz = ">=2021.3.8"
types-PyYAML = "^6.0.12"
lxml = ">=4.9.3,<6.0.0"
[tool.poetry.group.docs.dependencies]
sphinx = ">=7.1,<7.4"
myst-parser = ">=2,<4"
sphinx-rtd-theme = ">=1.2.2,<3.0.0"
sphinx-copybutton = "^0.5.2"
sphinx-design = "^0.5.0"
[tool.poetry.scripts]
sync-ics2gcal = "sync_ics2gcal.sync_calendar:main"
manage-ics2gcal = "sync_ics2gcal.manage_calendars:main"
[build-system]
requires = ["setuptools>=40.8.0", "wheel", "setuptools_scm"]
build-backend = "setuptools.build_meta"
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
[[tool.mypy.overrides]]
module = [
'icalendar',
'google.*',
'googleapiclient',
'fire'
]
ignore_missing_imports = true

View File

@ -1,5 +0,0 @@
google-auth==1.11.0
google-api-python-client==1.7.11
icalendar==4.0.4
pytz==2019.3
PyYAML==5.3

View File

@ -1,7 +0,0 @@
[metadata]
license_files = LICENSE
[options]
setup_requires =
setuptools_scm
setuptools_scm_git_archive

View File

@ -1,44 +0,0 @@
import setuptools
with open('README.md', 'r') as fh:
long_description = fh.read()
setuptools.setup(
name='sync-ics2gcal',
author='Dmitry Belyaev',
author_email='b4tm4n@mail.ru',
license='MIT',
description='Sync ics file with Google calendar',
long_description=long_description,
long_description_content_type='text/markdown',
url='https://github.com/b4tman/sync_ics2gcal',
use_scm_version={
'fallback_version': '0.1',
'local_scheme': 'no-local-version'
},
setup_requires=['setuptools_scm', 'setuptools_scm_git_archive'],
packages=setuptools.find_packages(exclude=['tests']),
classifiers=[
'License :: OSI Approved :: MIT License',
'Operating System :: OS Independent',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: 3.8',
],
python_requires='>=3.5',
install_requires = [
'google-auth>=1.5.0',
'google-api-python-client>=1.7.0',
'icalendar>=4.0.1',
'pytz',
'PyYAML>=3.13'
],
entry_points={
"console_scripts": [
"sync-ics2gcal = sync_ics2gcal.sync_calendar:main",
"manage-ics2gcal = sync_ics2gcal.manage_calendars:main",
]
}
)

View File

@ -1,14 +1,44 @@
from .ical import (
CalendarConverter,
EventConverter
)
from .ical import CalendarConverter, EventConverter, DateDateTime
from .gcal import (
GoogleCalendarService,
GoogleCalendar
GoogleCalendar,
EventData,
EventList,
EventTuple,
EventDataKey,
EventDateOrDateTime,
EventDate,
EventDateTime,
EventsSearchResults,
ACLRule,
ACLScope,
CalendarData,
BatchRequestCallback,
)
from .sync import (
CalendarSync
)
from .sync import CalendarSync, ComparedEvents
__all__ = [
"ical",
"gcal",
"sync",
"CalendarConverter",
"EventConverter",
"DateDateTime",
"GoogleCalendarService",
"GoogleCalendar",
"EventData",
"EventList",
"EventTuple",
"EventDataKey",
"EventDateOrDateTime",
"EventDate",
"EventDateTime",
"EventsSearchResults",
"ACLRule",
"ACLScope",
"CalendarData",
"CalendarSync",
"ComparedEvents",
]

View File

@ -1,5 +1,17 @@
import logging
import sys
from datetime import datetime
from typing import (
List,
Dict,
Any,
Callable,
Tuple,
Optional,
Union,
TypedDict,
Literal,
NamedTuple,
)
import google.auth
from google.oauth2 import service_account
@ -7,7 +19,80 @@ from googleapiclient import discovery
from pytz import utc
class GoogleCalendarService():
class EventDate(TypedDict, total=False):
date: str
timeZone: str
class EventDateTime(TypedDict, total=False):
dateTime: str
timeZone: str
EventDateOrDateTime = Union[EventDate, EventDateTime]
class ACLScope(TypedDict, total=False):
type: str
value: str
class ACLRule(TypedDict, total=False):
scope: ACLScope
role: str
class CalendarData(TypedDict, total=False):
id: str
summary: str
description: str
timeZone: str
class EventData(TypedDict, total=False):
id: str
summary: str
description: str
start: EventDateOrDateTime
end: EventDateOrDateTime
iCalUID: str
location: str
status: str
created: str
updated: str
sequence: int
transparency: str
visibility: str
EventDataKey = Union[
Literal["id"],
Literal["summary"],
Literal["description"],
Literal["start"],
Literal["end"],
Literal["iCalUID"],
Literal["location"],
Literal["status"],
Literal["created"],
Literal["updated"],
Literal["sequence"],
Literal["transparency"],
Literal["visibility"],
]
EventList = List[EventData]
EventTuple = Tuple[EventData, EventData]
class EventsSearchResults(NamedTuple):
exists: List[EventTuple]
new: List[EventData]
BatchRequestCallback = Callable[[str, Any, Optional[Exception]], None]
class GoogleCalendarService:
"""class for make google calendar service Resource
Returns:
@ -15,254 +100,304 @@ class GoogleCalendarService():
"""
@staticmethod
def default():
def default() -> discovery.Resource:
"""make service Resource from default credentials (authorize)
( https://developers.google.com/identity/protocols/application-default-credentials )
( https://googleapis.dev/python/google-auth/latest/reference/google.auth.html#google.auth.default )
Returns:
service Resource
"""
scopes = ['https://www.googleapis.com/auth/calendar']
scopes = ["https://www.googleapis.com/auth/calendar"]
credentials, _ = google.auth.default(scopes=scopes)
service = discovery.build('calendar', 'v3', credentials=credentials)
service = discovery.build(
"calendar", "v3", credentials=credentials, cache_discovery=False
)
return service
@staticmethod
def from_srv_acc_file(service_account_file):
"""make service Resource from service account filename (authorize)
def from_srv_acc_file(service_account_file: str) -> discovery.Resource:
"""make service Resource from service account filename (authorize)"""
Returns:
service Resource
"""
scopes = ['https://www.googleapis.com/auth/calendar']
credentials = service_account.Credentials.from_service_account_file(service_account_file)
scopes = ["https://www.googleapis.com/auth/calendar"]
credentials = service_account.Credentials.from_service_account_file(
service_account_file
)
scoped_credentials = credentials.with_scopes(scopes)
service = discovery.build('calendar', 'v3', credentials=scoped_credentials)
service = discovery.build(
"calendar", "v3", credentials=scoped_credentials, cache_discovery=False
)
return service
@staticmethod
def from_config(config):
def from_config(config: Optional[Dict[str, str]] = None) -> discovery.Resource:
"""make service Resource from config dict
Arguments:
config -- dict() config with keys:
(optional) service_account: - service account filename
if key not in dict then default credentials will be used
( https://developers.google.com/identity/protocols/application-default-credentials )
Returns:
service Resource
**config** -- config with keys:
(optional) service_account: - service account filename
if key not in dict then default credentials will be used
( https://developers.google.com/identity/protocols/application-default-credentials )
-- **None**: default credentials will be used
"""
if 'service_account' in config:
service = GoogleCalendarService.from_srv_acc_file(config['service_account'])
if config is not None and "service_account" in config:
service_account_filename: str = config["service_account"]
service = GoogleCalendarService.from_srv_acc_file(service_account_filename)
else:
service = GoogleCalendarService.default()
return service
def select_event_key(event):
def select_event_key(event: EventData) -> Optional[str]:
"""select event key for logging
Arguments:
event -- event resource
Returns:
key name or None if no key found
"""
key = None
if 'iCalUID' in event:
key = 'iCalUID'
elif 'id' in event:
key = 'id'
key: Optional[str] = None
if "iCalUID" in event:
key = "iCalUID"
elif "id" in event:
key = "id"
return key
class GoogleCalendar():
"""class to interact with calendar on google
"""
class GoogleCalendar:
"""class to interact with calendar on Google"""
logger = logging.getLogger('GoogleCalendar')
logger = logging.getLogger("GoogleCalendar")
def __init__(self, service, calendarId):
self.service = service
self.calendarId = calendarId
def __init__(self, service: discovery.Resource, calendar_id: Optional[str]):
self.service: discovery.Resource = service
self.calendar_id: str = str(calendar_id)
def _make_request_callback(self, action, events_by_req):
def _make_request_callback(
self, action: str, events_by_req: EventList
) -> BatchRequestCallback:
"""make callback for log result of batch request
Arguments:
action -- action name
events_by_req -- list of events ordered by request id
Returns:
callback function
"""
def callback(request_id, response, exception):
event = events_by_req[int(request_id)]
key = select_event_key(event)
def callback(
request_id: str, response: Any, exception: Optional[Exception]
) -> None:
event: EventData = events_by_req[int(request_id)]
event_key: Optional[str] = select_event_key(event)
key: str = event_key if event_key is not None else ""
if exception is not None:
self.logger.error('failed to %s event with %s: %s, exception: %s',
action, key, event.get(key), str(exception))
self.logger.error(
"failed to %s event with %s: %s, exception: %s",
action,
key,
event.get(key),
str(exception),
)
else:
resp_key = select_event_key(response)
resp_key: Optional[str] = select_event_key(response)
if resp_key is not None:
event = response
key = resp_key
self.logger.info('event %s ok, %s: %s',
action, key, event.get(key))
self.logger.info("event %s ok, %s: %s", action, key, event.get(key))
return callback
def list_events_from(self, start):
""" list events from calendar, where start date >= start
"""
fields = 'nextPageToken,items(id,iCalUID,updated)'
events = []
page_token = None
timeMin = utc.normalize(start.astimezone(utc)).replace(
tzinfo=None).isoformat() + 'Z'
def list_events_from(self, start: datetime) -> EventList:
"""list events from calendar, where start date >= start"""
fields: str = "nextPageToken,items(id,iCalUID,updated)"
events: EventList = []
page_token: Optional[str] = None
time_min: str = (
utc.normalize(start.astimezone(utc)).replace(tzinfo=None).isoformat() + "Z"
)
while True:
response = self.service.events().list(calendarId=self.calendarId, pageToken=page_token,
singleEvents=True, timeMin=timeMin, fields=fields).execute()
if 'items' in response:
events.extend(response['items'])
page_token = response.get('nextPageToken')
response = (
self.service.events()
.list(
calendarId=self.calendar_id,
pageToken=page_token,
singleEvents=True,
timeMin=time_min,
fields=fields,
)
.execute()
)
if "items" in response:
events.extend(response["items"])
page_token = response.get("nextPageToken")
if not page_token:
break
self.logger.info('%d events listed', len(events))
self.logger.info("%d events listed", len(events))
return events
def find_exists(self, events):
""" find existing events from list, by 'iCalUID' field
def find_exists(self, events: EventList) -> EventsSearchResults:
"""find existing events from list, by 'iCalUID' field
Arguments:
events {list} -- list of events
Returns:
tuple -- (events_exist, events_not_found)
EventsSearchResults -- (events_exist, events_not_found)
events_exist - list of tuples: (new_event, exists_event)
"""
fields = 'items(id,iCalUID,updated)'
events_by_req = []
exists = []
not_found = []
fields: str = "items(id,iCalUID,updated)"
events_by_req: EventList = []
exists: List[EventTuple] = []
not_found: EventList = []
def list_callback(request_id, response, exception):
found = False
event = events_by_req[int(request_id)]
def list_callback(
request_id: str, response: Any, exception: Optional[Exception]
) -> None:
found: bool = False
cur_event: EventData = events_by_req[int(request_id)]
if exception is None:
found = ([] != response['items'])
found = [] != response["items"]
else:
self.logger.error('exception %s, while listing event with UID: %s', str(
exception), event['iCalUID'])
self.logger.error(
"exception %s, while listing event with UID: %s",
str(exception),
cur_event["iCalUID"],
)
if found:
exists.append(
(event, response['items'][0]))
exists.append((cur_event, response["items"][0]))
else:
not_found.append(events_by_req[int(request_id)])
batch = self.service.new_batch_http_request(callback=list_callback)
i = 0
i: int = 0
for event in events:
events_by_req.append(event)
batch.add(self.service.events().list(calendarId=self.calendarId,
iCalUID=event['iCalUID'], showDeleted=True, fields=fields), request_id=str(i))
batch.add(
self.service.events().list(
calendarId=self.calendar_id,
iCalUID=event["iCalUID"],
showDeleted=True,
fields=fields,
),
request_id=str(i),
)
i += 1
batch.execute()
self.logger.info('%d events exists, %d not found',
len(exists), len(not_found))
return exists, not_found
self.logger.info("%d events exists, %d not found", len(exists), len(not_found))
return EventsSearchResults(exists, not_found)
def insert_events(self, events):
""" insert list of events
def insert_events(self, events: EventList) -> None:
"""insert list of events
Arguments:
events - events list
"""
fields = 'id'
events_by_req = []
fields: str = "id"
events_by_req: EventList = []
insert_callback = self._make_request_callback('insert', events_by_req)
insert_callback = self._make_request_callback("insert", events_by_req)
batch = self.service.new_batch_http_request(callback=insert_callback)
i = 0
i: int = 0
for event in events:
events_by_req.append(event)
batch.add(self.service.events().insert(
calendarId=self.calendarId, body=event, fields=fields), request_id=str(i))
batch.add(
self.service.events().insert(
calendarId=self.calendar_id, body=event, fields=fields
),
request_id=str(i),
)
i += 1
batch.execute()
def patch_events(self, event_tuples):
""" patch (update) events
def patch_events(self, event_tuples: List[EventTuple]) -> None:
"""patch (update) events
Arguments:
event_tuples -- list of tuples: (new_event, exists_event)
"""
fields = 'id'
events_by_req = []
fields: str = "id"
events_by_req: EventList = []
patch_callback = self._make_request_callback('patch', events_by_req)
patch_callback = self._make_request_callback("patch", events_by_req)
batch = self.service.new_batch_http_request(callback=patch_callback)
i = 0
i: int = 0
for event_new, event_old in event_tuples:
if 'id' not in event_old:
if "id" not in event_old:
continue
events_by_req.append(event_new)
batch.add(self.service.events().patch(
calendarId=self.calendarId, eventId=event_old['id'], body=event_new), fields=fields, request_id=str(i))
batch.add(
self.service.events().patch(
calendarId=self.calendar_id, eventId=event_old["id"], body=event_new
),
fields=fields,
request_id=str(i),
)
i += 1
batch.execute()
def update_events(self, event_tuples):
""" update events
def update_events(self, event_tuples: List[EventTuple]) -> None:
"""update events
Arguments:
event_tuples -- list of tuples: (new_event, exists_event)
"""
fields = 'id'
events_by_req = []
fields: str = "id"
events_by_req: EventList = []
update_callback = self._make_request_callback('update', events_by_req)
update_callback = self._make_request_callback("update", events_by_req)
batch = self.service.new_batch_http_request(callback=update_callback)
i = 0
i: int = 0
for event_new, event_old in event_tuples:
if 'id' not in event_old:
if "id" not in event_old:
continue
events_by_req.append(event_new)
batch.add(self.service.events().update(
calendarId=self.calendarId, eventId=event_old['id'], body=event_new, fields=fields), request_id=str(i))
batch.add(
self.service.events().update(
calendarId=self.calendar_id,
eventId=event_old["id"],
body=event_new,
fields=fields,
),
request_id=str(i),
)
i += 1
batch.execute()
def delete_events(self, events):
""" delete events
def delete_events(self, events: EventList) -> None:
"""delete events
Arguments:
events -- list of events
"""
events_by_req = []
events_by_req: EventList = []
delete_callback = self._make_request_callback('delete', events_by_req)
delete_callback = self._make_request_callback("delete", events_by_req)
batch = self.service.new_batch_http_request(callback=delete_callback)
i = 0
i: int = 0
for event in events:
events_by_req.append(event)
batch.add(self.service.events().delete(
calendarId=self.calendarId, eventId=event['id']), request_id=str(i))
batch.add(
self.service.events().delete(
calendarId=self.calendar_id, eventId=event["id"]
),
request_id=str(i),
)
i += 1
batch.execute()
def create(self, summary, timeZone=None):
def create(self, summary: str, time_zone: Optional[str] = None) -> Any:
"""create calendar
Arguments:
@ -275,44 +410,35 @@ class GoogleCalendar():
calendar Resource
"""
calendar = {'summary': summary}
if timeZone is not None:
calendar['timeZone'] = timeZone
calendar = CalendarData(summary=summary)
if time_zone is not None:
calendar["timeZone"] = time_zone
created_calendar = self.service.calendars().insert(body=calendar).execute()
self.calendarId = created_calendar['id']
self.calendar_id = created_calendar["id"]
return created_calendar
def delete(self):
"""delete calendar
"""
def delete(self) -> None:
"""delete calendar"""
self.service.calendars().delete(calendarId=self.calendarId).execute()
self.service.calendars().delete(calendarId=self.calendar_id).execute()
def make_public(self):
"""make calendar puplic
"""
def make_public(self) -> None:
"""make calendar public"""
rule_public = {
'scope': {
'type': 'default',
},
'role': 'reader'
}
return self.service.acl().insert(calendarId=self.calendarId, body=rule_public).execute()
rule_public = ACLRule(scope=ACLScope(type="default"), role="reader")
self.service.acl().insert(
calendarId=self.calendar_id, body=rule_public
).execute()
def add_owner(self, email):
def add_owner(self, email: str) -> None:
"""add calendar owner by email
Arguments:
email -- email to add
"""
rule_owner = {
'scope': {
'type': 'user',
'value': email,
},
'role': 'owner'
}
return self.service.acl().insert(calendarId=self.calendarId, body=rule_owner).execute()
rule_owner = ACLRule(scope=ACLScope(type="user", value=email), role="owner")
self.service.acl().insert(
calendarId=self.calendar_id, body=rule_owner
).execute()

View File

@ -1,12 +1,25 @@
import datetime
import logging
from typing import Union, Dict, Callable, Optional, Mapping, TypedDict
from icalendar import Calendar, Event
from pytz import utc
from .gcal import (
EventData,
EventList,
EventDateOrDateTime,
EventDateTime,
EventDate,
EventDataKey,
)
def format_datetime_utc(value):
DateDateTime = Union[datetime.date, datetime.datetime]
def format_datetime_utc(value: DateDateTime) -> str:
"""utc datetime as string from date or datetime value
Arguments:
value -- date or datetime value
@ -14,54 +27,57 @@ def format_datetime_utc(value):
utc datetime value as string in iso format
"""
if not isinstance(value, datetime.datetime):
value = datetime.datetime(
value.year, value.month, value.day, tzinfo=utc)
value = datetime.datetime(value.year, value.month, value.day, tzinfo=utc)
value = value.replace(microsecond=1)
return utc.normalize(value.astimezone(utc)).replace(tzinfo=None).isoformat() + 'Z'
return utc.normalize(value.astimezone(utc)).replace(tzinfo=None).isoformat() + "Z"
def gcal_date_or_dateTime(value, check_value=None):
"""date or dateTime to gcal (start or end dict)
def gcal_date_or_datetime(
value: DateDateTime, check_value: Optional[DateDateTime] = None
) -> EventDateOrDateTime:
"""date or datetime to gcal (start or end dict)
Arguments:
value -- date or datetime value
check_value - date or datetime to choise result type (if not None)
value: date or datetime
check_value: optional for choose result type
Returns:
dict { 'date': ... } or { 'dateTime': ... }
{ 'date': ... } or { 'dateTime': ... }
"""
if check_value is None:
check_value = value
result = {}
result: EventDateOrDateTime
if isinstance(check_value, datetime.datetime):
result['dateTime'] = format_datetime_utc(value)
result = EventDateTime(dateTime=format_datetime_utc(value))
else:
if isinstance(check_value, datetime.date):
if isinstance(value, datetime.datetime):
value = datetime.date(value.year, value.month, value.day)
result['date'] = value.isoformat()
result = EventDate(date=value.isoformat())
return result
class EventConverter(Event):
class EventConverter(Event): # type: ignore
"""Convert icalendar event to google calendar resource
( https://developers.google.com/calendar/v3/reference/events#resource-representations )
"""
def _str_prop(self, prop):
def _str_prop(self, prop: str) -> str:
"""decoded string property
Arguments:
prop - propperty name
prop - property name
Returns:
string value
"""
return self.decoded(prop).decode(encoding='utf-8')
return str(self.decoded(prop).decode(encoding="utf-8"))
def _datetime_str_prop(self, prop):
def _datetime_str_prop(self, prop: str) -> str:
"""utc datetime as string from property
Arguments:
@ -73,8 +89,8 @@ class EventConverter(Event):
return format_datetime_utc(self.decoded(prop))
def _gcal_start(self):
""" event start dict from icalendar event
def _gcal_start(self) -> EventDateOrDateTime:
"""event start dict from icalendar event
Raises:
ValueError -- if DTSTART not date or datetime
@ -83,10 +99,10 @@ class EventConverter(Event):
dict
"""
value = self.decoded('DTSTART')
return gcal_date_or_dateTime(value)
value = self.decoded("DTSTART")
return gcal_date_or_datetime(value)
def _gcal_end(self):
def _gcal_end(self) -> EventDateOrDateTime:
"""event end dict from icalendar event
Raises:
@ -95,25 +111,31 @@ class EventConverter(Event):
dict
"""
result = None
if 'DTEND' in self:
value = self.decoded('DTEND')
result = gcal_date_or_dateTime(value)
elif 'DURATION' in self:
start_val = self.decoded('DTSTART')
duration = self.decoded('DURATION')
result: EventDateOrDateTime
if "DTEND" in self:
value = self.decoded("DTEND")
result = gcal_date_or_datetime(value)
elif "DURATION" in self:
start_val = self.decoded("DTSTART")
duration = self.decoded("DURATION")
end_val = start_val + duration
result = gcal_date_or_dateTime(end_val, check_value=start_val)
result = gcal_date_or_datetime(end_val, check_value=start_val)
else:
raise ValueError('no DTEND or DURATION')
raise ValueError("no DTEND or DURATION")
return result
def _put_to_gcal(self, gcal_event, prop, func, ics_prop=None):
"""get property from ical event if exist, and put to gcal event
def _put_to_gcal(
self,
gcal_event: EventData,
prop: EventDataKey,
func: Callable[[str], str],
ics_prop: Optional[str] = None,
) -> None:
"""get property from ical event if existed, and put to gcal event
Arguments:
gcal_event -- dest event
gcal_event -- destination event
prop -- property name
func -- function to convert
ics_prop -- ical property name (default: {None})
@ -124,61 +146,56 @@ class EventConverter(Event):
if ics_prop in self:
gcal_event[prop] = func(ics_prop)
def to_gcal(self):
def convert(self) -> EventData:
"""Convert
Returns:
dict - google calendar#event resource
"""
event = {
'iCalUID': self._str_prop('UID')
}
event: EventData = EventData(
iCalUID=self._str_prop("UID"),
start=self._gcal_start(),
end=self._gcal_end(),
)
event['start'] = self._gcal_start()
event['end'] = self._gcal_end()
self._put_to_gcal(event, 'summary', self._str_prop)
self._put_to_gcal(event, 'description', self._str_prop)
self._put_to_gcal(event, 'location', self._str_prop)
self._put_to_gcal(event, 'created', self._datetime_str_prop)
self._put_to_gcal(event, "summary", self._str_prop)
self._put_to_gcal(event, "description", self._str_prop)
self._put_to_gcal(event, "location", self._str_prop)
self._put_to_gcal(event, "created", self._datetime_str_prop)
self._put_to_gcal(event, "updated", self._datetime_str_prop, "LAST-MODIFIED")
self._put_to_gcal(
event, 'updated', self._datetime_str_prop, 'LAST-MODIFIED')
self._put_to_gcal(
event, 'transparency', lambda prop: self._str_prop(prop).lower(), 'TRANSP')
event, "transparency", lambda prop: self._str_prop(prop).lower(), "TRANSP"
)
return event
class CalendarConverter():
"""Convert icalendar events to google calendar resources
"""
class CalendarConverter:
"""Convert icalendar events to google calendar resources"""
logger = logging.getLogger('CalendarConverter')
logger = logging.getLogger("CalendarConverter")
def __init__(self, calendar=None):
self.calendar = calendar
def __init__(self, calendar: Optional[Calendar] = None):
self.calendar: Optional[Calendar] = calendar
def load(self, filename):
""" load calendar from ics file
"""
with open(filename, 'r', encoding='utf-8') as f:
def load(self, filename: str) -> None:
"""load calendar from ics file"""
with open(filename, "r", encoding="utf-8") as f:
self.calendar = Calendar.from_ical(f.read())
self.logger.info('%s loaded', filename)
self.logger.info("%s loaded", filename)
def loads(self, string):
""" load calendar from ics string
"""
def loads(self, string: str) -> None:
"""load calendar from ics string"""
self.calendar = Calendar.from_ical(string)
def events_to_gcal(self):
"""Convert events to google calendar resources
"""
def events_to_gcal(self) -> EventList:
"""Convert events to google calendar resources"""
ics_events = self.calendar.walk(name='VEVENT')
self.logger.info('%d events readed', len(ics_events))
calendar: Calendar = self.calendar
ics_events = calendar.walk(name="VEVENT")
self.logger.info("%d events read", len(ics_events))
result = list(
map(lambda event: EventConverter(event).to_gcal(), ics_events))
self.logger.info('%d events converted', len(result))
result = list(map(lambda event: EventConverter(event).convert(), ics_events))
self.logger.info("%d events converted", len(result))
return result

View File

@ -1,103 +1,154 @@
import argparse
import datetime
import logging.config
from typing import Optional, Dict, Any, List
import fire
import yaml
from pytz import utc
from . import GoogleCalendar, GoogleCalendarService
def parse_args():
parser = argparse.ArgumentParser(
description="manage google calendars in service account")
command_subparsers = parser.add_subparsers(help='command', dest='command')
command_subparsers.add_parser('list', help='list calendars')
parser_create = command_subparsers.add_parser(
'create', help='create calendar')
parser_create.add_argument(
'summary', action='store', help='new calendar summary')
parser_create.add_argument('--timezone', action='store',
default=None, required=False, help='new calendar timezone')
parser_create.add_argument(
'--public', default=False, action='store_true', help='make calendar public')
parser_add_owner = command_subparsers.add_parser(
'add_owner', help='add owner to calendar')
parser_add_owner.add_argument('id', action='store', help='calendar id')
parser_add_owner.add_argument(
'owner_email', action='store', help='new owner email')
parser_remove = command_subparsers.add_parser(
'remove', help='remove calendar')
parser_remove.add_argument(
'id', action='store', help='calendar id to remove')
parser_rename = command_subparsers.add_parser(
'rename', help='rename calendar')
parser_rename.add_argument(
'id', action='store', help='calendar id')
parser_rename.add_argument(
'summary', action='store', help='new summary')
args = parser.parse_args()
if args.command is None:
parser.print_usage()
return args
def load_config(filename: str) -> Optional[Dict[str, Any]]:
result: Optional[Dict[str, Any]] = None
try:
with open(filename, "r", encoding="utf-8") as f:
result = yaml.safe_load(f)
except FileNotFoundError:
pass
def load_config():
with open('config.yml', 'r', encoding='utf-8') as f:
result = yaml.safe_load(f)
return result
def list_calendars(service):
response = service.calendarList().list(fields='items(id,summary)').execute()
for calendar in response.get('items'):
print('{summary}: {id}'.format_map(calendar))
class PropertyCommands:
"""get/set google calendar properties"""
def __init__(self, _service: Any) -> None:
self._service = _service
def get(self, calendar_id: str, property_name: str) -> None:
"""get calendar property
Args:
calendar_id: calendar id
property_name: property key
"""
response = (
self._service.calendarList()
.get(calendarId=calendar_id, fields=property_name)
.execute()
)
print(response.get(property_name))
def set(self, calendar_id: str, property_name: str, property_value: str) -> None:
"""set calendar property
Args:
calendar_id: calendar id
property_name: property key
property_value: property value
"""
body = {property_name: property_value}
response = (
self._service.calendarList()
.patch(body=body, calendarId=calendar_id)
.execute()
)
print(response)
def create_calendar(service, summary, timezone, public):
calendar = GoogleCalendar(service, None)
calendar.create(summary, timezone)
if public:
calendar.make_public()
print('{}: {}'.format(summary, calendar.calendarId))
class Commands:
"""manage google calendars in service account"""
def __init__(self, config: str = "config.yml"):
"""
Args:
config(str): config filename
"""
self._config: Optional[Dict[str, Any]] = load_config(config)
if self._config is not None and "logging" in self._config:
logging.config.dictConfig(self._config["logging"])
self._service = GoogleCalendarService.from_config(self._config)
self.property = PropertyCommands(self._service)
def list(self, show_hidden: bool = False, show_deleted: bool = False) -> None:
"""list calendars
Args:
show_hidden: show hidden calendars
show_deleted: show deleted calendars
"""
fields: str = "nextPageToken,items(id,summary)"
calendars: List[Dict[str, Any]] = []
page_token: Optional[str] = None
while True:
calendars_api = self._service.calendarList()
response = calendars_api.list(
fields=fields,
pageToken=page_token,
showHidden=show_hidden,
showDeleted=show_deleted,
).execute()
if "items" in response:
calendars.extend(response["items"])
page_token = response.get("nextPageToken")
if page_token is None:
break
for calendar in calendars:
print("{summary}: {id}".format_map(calendar))
def create(
self, summary: str, timezone: Optional[str] = None, public: bool = False
) -> None:
"""create calendar
Args:
summary: new calendar summary
timezone: new calendar timezone
public: make calendar public
"""
calendar = GoogleCalendar(self._service, None)
calendar.create(summary, timezone)
if public:
calendar.make_public()
print("{}: {}".format(summary, calendar.calendar_id))
def add_owner(self, calendar_id: str, email: str) -> None:
"""add owner to calendar
Args:
calendar_id: calendar id
email: new owner email
"""
calendar = GoogleCalendar(self._service, calendar_id)
calendar.add_owner(email)
print("to {} added owner: {}".format(calendar_id, email))
def remove(self, calendar_id: str) -> None:
"""remove calendar
Args:
calendar_id: calendar id
"""
calendar = GoogleCalendar(self._service, calendar_id)
calendar.delete()
print("removed: {}".format(calendar_id))
def rename(self, calendar_id: str, summary: str) -> None:
"""rename calendar
Args:
calendar_id: calendar id
summary:
"""
calendar = {"summary": summary}
self._service.calendars().patch(body=calendar, calendarId=calendar_id).execute()
print("{}: {}".format(summary, calendar_id))
def add_owner(service, id, owner_email):
calendar = GoogleCalendar(service, id)
calendar.add_owner(owner_email)
print('to {} added owner: {}'.format(id, owner_email))
def main() -> None:
fire.Fire(Commands, name="manage-ics2gcal")
def remove_calendar(service, id):
calendar = GoogleCalendar(service, id)
calendar.delete()
print('removed: {}'.format(id))
def rename_calendar(service, id, summary):
calendar = {'summary': summary}
service.calendars().patch(body=calendar, calendarId=id).execute()
print('{}: {}'.format(summary, id))
def main():
args = parse_args()
config = load_config()
if 'logging' in config:
logging.config.dictConfig(config['logging'])
service = GoogleCalendarService.from_config(config)
if 'list' == args.command:
list_calendars(service)
elif 'create' == args.command:
create_calendar(service, args.summary, args.timezone, args.public)
elif 'add_owner' == args.command:
add_owner(service, args.id, args.owner_email)
elif 'remove' == args.command:
remove_calendar(service, args.id)
elif 'rename' == args.command:
rename_calendar(service, args.id, args.summary)
if __name__ == '__main__':
if __name__ == "__main__":
main()

0
sync_ics2gcal/py.typed Normal file
View File

View File

@ -1,111 +1,144 @@
import datetime
import dateutil.parser
import logging
import operator
from typing import List, Dict, Set, Tuple, Union, Callable, NamedTuple
import dateutil.parser
from pytz import utc
from .gcal import (
GoogleCalendar,
EventData,
EventList,
EventTuple,
EventDataKey,
EventDateOrDateTime,
EventDate,
)
from .ical import CalendarConverter, DateDateTime
class CalendarSync():
"""class for syncronize calendar with google
"""
logger = logging.getLogger('CalendarSync')
class ComparedEvents(NamedTuple):
"""Compared events"""
def __init__(self, gcalendar, converter):
self.gcalendar = gcalendar
self.converter = converter
added: EventList
changed: List[EventTuple]
deleted: EventList
class CalendarSync:
"""class for synchronize calendar with Google"""
logger = logging.getLogger("CalendarSync")
def __init__(self, gcalendar: GoogleCalendar, converter: CalendarConverter):
self.gcalendar: GoogleCalendar = gcalendar
self.converter: CalendarConverter = converter
self.to_insert: EventList = []
self.to_update: List[EventTuple] = []
self.to_delete: EventList = []
@staticmethod
def _events_list_compare(items_src, items_dst, key='iCalUID'):
""" compare list of events by key
def _events_list_compare(
items_src: EventList, items_dst: EventList, key: EventDataKey = "iCalUID"
) -> ComparedEvents:
"""compare list of events by key
Arguments:
items_src {list of dict} -- source events
items_dst {list of dict} -- dest events
items_dst {list of dict} -- destination events
key {str} -- name of key to compare (default: {'iCalUID'})
Returns:
tuple -- (items_to_insert,
items_to_update,
items_to_delete)
ComparedEvents -- (added, changed, deleted)
"""
def get_key(item): return item[key]
def get_key(item: EventData) -> str:
return str(item[key])
keys_src = set(map(get_key, items_src))
keys_dst = set(map(get_key, items_dst))
keys_src: Set[str] = set(map(get_key, items_src))
keys_dst: Set[str] = set(map(get_key, items_dst))
keys_to_insert = keys_src - keys_dst
keys_to_update = keys_src & keys_dst
keys_to_delete = keys_dst - keys_src
def items_by_keys(items, key_name, keys):
return list(filter(lambda item: item[key_name] in keys, items))
def items_by_keys(items: EventList, keys: Set[str]) -> EventList:
return list(filter(lambda item: get_key(item) in keys, items))
items_to_insert = items_by_keys(items_src, key, keys_to_insert)
items_to_delete = items_by_keys(items_dst, key, keys_to_delete)
items_to_insert = items_by_keys(items_src, keys_to_insert)
items_to_delete = items_by_keys(items_dst, keys_to_delete)
to_upd_src = items_by_keys(items_src, key, keys_to_update)
to_upd_dst = items_by_keys(items_dst, key, keys_to_update)
to_upd_src = items_by_keys(items_src, keys_to_update)
to_upd_dst = items_by_keys(items_dst, keys_to_update)
to_upd_src.sort(key=get_key)
to_upd_dst.sort(key=get_key)
items_to_update = list(zip(to_upd_src, to_upd_dst))
return items_to_insert, items_to_update, items_to_delete
return ComparedEvents(items_to_insert, items_to_update, items_to_delete)
def _filter_events_to_update(self):
""" filter 'to_update' events by 'updated' datetime
"""
def _filter_events_to_update(self) -> None:
"""filter 'to_update' events by 'updated' datetime"""
def filter_updated(event_tuple):
def filter_updated(event_tuple: EventTuple) -> bool:
new, old = event_tuple
return dateutil.parser.parse(new['updated']) > dateutil.parser.parse(old['updated'])
if "updated" not in new or "updated" not in old:
return True
new_date = dateutil.parser.parse(new["updated"])
old_date = dateutil.parser.parse(old["updated"])
return new_date > old_date
self.to_update = list(filter(filter_updated, self.to_update))
@staticmethod
def _filter_events_by_date(events, date, op):
""" filter events by start datetime
def _filter_events_by_date(
events: EventList,
date: DateDateTime,
op: Callable[[DateDateTime, DateDateTime], bool],
) -> EventList:
"""filter events by start datetime
Arguments:
events -- events list
date {datetime} -- datetime to compare
op {operator} -- comparsion operator
op {operator} -- comparison operator
Returns:
list of filtred events
list of filtered events
"""
def filter_by_date(event):
def filter_by_date(event: EventData) -> bool:
date_cmp = date
event_start = event['start']
event_date = None
event_start: EventDateOrDateTime = event["start"]
event_date: Union[DateDateTime, str, None] = None
compare_dates = False
if 'date' in event_start:
event_date = event_start['date']
if "date" in event_start:
event_date = event_start["date"] # type: ignore
compare_dates = True
elif 'dateTime' in event_start:
event_date = event_start['dateTime']
event_date = dateutil.parser.parse(event_date)
elif "dateTime" in event_start:
event_date = event_start["dateTime"] # type: ignore
event_date = dateutil.parser.parse(str(event_date))
if compare_dates:
date_cmp = datetime.date(date.year, date.month, date.day)
event_date = datetime.date(event_date.year, event_date.month, event_date.day)
event_date = datetime.date(
event_date.year, event_date.month, event_date.day
)
return op(event_date, date_cmp)
return list(filter(filter_by_date, events))
@staticmethod
def _tz_aware_datetime(date):
"""make tz aware datetime from datetime/date (utc if no tzinfo)
def _tz_aware_datetime(date: DateDateTime) -> datetime.datetime:
"""make tz aware datetime from datetime/date (utc if no tz-info)
Arguments:
date - date or datetime / with or without tzinfo
date - date or datetime / with or without tz-info
Returns:
datetime with tzinfo
datetime with tz-info
"""
if not isinstance(date, datetime.datetime):
@ -114,8 +147,8 @@ class CalendarSync():
date = date.replace(tzinfo=utc)
return date
def prepare_sync(self, start_date):
"""prepare sync lists by comparsion of events
def prepare_sync(self, start_date: DateDateTime) -> None:
"""prepare sync lists by comparison of events
Arguments:
start_date -- date/datetime to start sync
@ -128,46 +161,52 @@ class CalendarSync():
# divide source events by start datetime
events_src_pending = CalendarSync._filter_events_by_date(
events_src, start_date, operator.ge)
events_src, start_date, operator.ge
)
events_src_past = CalendarSync._filter_events_by_date(
events_src, start_date, operator.lt)
events_src, start_date, operator.lt
)
events_src = None
# first events comparsion
self.to_insert, self.to_update, self.to_delete = CalendarSync._events_list_compare(
events_src_pending, events_dst)
events_src_pending, events_dst = None, None
# first events comparison
(
self.to_insert,
self.to_update,
self.to_delete,
) = CalendarSync._events_list_compare(events_src_pending, events_dst)
# find in events 'to_delete' past events from source, for update (move to past)
_, add_to_update, self.to_delete = CalendarSync._events_list_compare(
events_src_past, self.to_delete)
events_src_past, self.to_delete
)
self.to_update.extend(add_to_update)
events_src_past = None
# find if events 'to_insert' exists in gcalendar, for update them
add_to_update, self.to_insert = self.gcalendar.find_exists(
self.to_insert)
add_to_update, self.to_insert = self.gcalendar.find_exists(self.to_insert)
self.to_update.extend(add_to_update)
add_to_update = None
# exclude outdated events from 'to_update' list, by 'updated' field
self._filter_events_to_update()
self.logger.info('prepared to sync: ( insert: %d, update: %d, delete: %d )',
len(self.to_insert), len(self.to_update), len(self.to_delete))
self.logger.info(
"prepared to sync: ( insert: %d, update: %d, delete: %d )",
len(self.to_insert),
len(self.to_update),
len(self.to_delete),
)
def apply(self):
"""apply sync (insert, update, delete), using prepared lists of events
"""
def clear(self) -> None:
"""clear prepared sync lists (insert, update, delete)"""
self.to_insert.clear()
self.to_update.clear()
self.to_delete.clear()
def apply(self) -> None:
"""apply sync (insert, update, delete), using prepared lists of events"""
self.gcalendar.insert_events(self.to_insert)
self.gcalendar.update_events(self.to_update)
self.gcalendar.delete_events(self.to_delete)
self.logger.info('sync done')
self.clear()
self.to_insert, self.to_update, self.to_delete = [], [], []
self.logger.info("sync done")

View File

@ -1,51 +1,53 @@
from typing import Dict, Any, Union
import yaml
import dateutil.parser
import datetime
import logging
import logging.config
from . import (
CalendarConverter,
GoogleCalendarService,
GoogleCalendar,
CalendarSync
)
from . import CalendarConverter, GoogleCalendarService, GoogleCalendar, CalendarSync
def load_config():
with open('config.yml', 'r', encoding='utf-8') as f:
ConfigDate = Union[str, datetime.datetime]
def load_config() -> Dict[str, Any]:
with open("config.yml", "r", encoding="utf-8") as f:
result = yaml.safe_load(f)
return result
return result # type: ignore
def get_start_date(date_str):
result = datetime.datetime(1,1,1)
if 'now' == date_str:
def get_start_date(date: ConfigDate) -> datetime.datetime:
if isinstance(date, datetime.datetime):
return date
if "now" == date:
result = datetime.datetime.utcnow()
else:
result = dateutil.parser.parse(date_str)
result = dateutil.parser.parse(date)
return result
def main():
def main() -> None:
config = load_config()
if 'logging' in config:
logging.config.dictConfig(config['logging'])
if "logging" in config:
logging.config.dictConfig(config["logging"])
calendarId = config['calendar']['google_id']
ics_filepath = config['calendar']['source']
calendar_id: str = config["calendar"]["google_id"]
ics_filepath: str = config["calendar"]["source"]
start = get_start_date(config['start_from'])
start = get_start_date(config["start_from"])
converter = CalendarConverter()
converter.load(ics_filepath)
service = GoogleCalendarService.from_config(config)
gcalendar = GoogleCalendar(service, calendarId)
gcalendar = GoogleCalendar(service, calendar_id)
sync = CalendarSync(gcalendar, converter)
sync.prepare_sync(start)
sync.apply()
if __name__ == '__main__':
if __name__ == "__main__":
main()

View File

@ -1,93 +1,146 @@
import datetime
from typing import Tuple, Any
import pytest
from pytz import timezone, utc
from sync_ics2gcal import CalendarConverter
from sync_ics2gcal.ical import format_datetime_utc
uid = "UID:uisgtr8tre93wewe0yr8wqy@test.com"
only_start_date = uid + """
only_start_date = (
uid
+ """
DTSTART;VALUE=DATE:20180215
"""
date_val = only_start_date + """
)
date_val = (
only_start_date
+ """
DTEND;VALUE=DATE:20180217
"""
date_duration = only_start_date + """
)
date_duration = (
only_start_date
+ """
DURATION:P2D
"""
datetime_utc_val = uid + """
)
datetime_utc_val = (
uid
+ """
DTSTART;VALUE=DATE-TIME:20180319T092001Z
DTEND:20180321T102501Z
"""
datetime_utc_duration = uid + """
)
datetime_utc_duration = (
uid
+ """
DTSTART;VALUE=DATE-TIME:20180319T092001Z
DURATION:P2DT1H5M
"""
created_updated = date_val + """
)
created_updated = (
date_val
+ """
CREATED:20180320T071155Z
LAST-MODIFIED:20180326T120235Z
"""
)
def ics_test_cal(content):
def ics_test_cal(content: str) -> str:
return "BEGIN:VCALENDAR\r\n{}END:VCALENDAR\r\n".format(content)
def ics_test_event(content):
def ics_test_event(content: str) -> str:
return ics_test_cal("BEGIN:VEVENT\r\n{}END:VEVENT\r\n".format(content))
def test_empty_calendar():
def test_empty_calendar() -> None:
converter = CalendarConverter()
converter.loads(ics_test_cal(""))
evnts = converter.events_to_gcal()
assert evnts == []
def test_empty_event():
def test_empty_event() -> None:
converter = CalendarConverter()
converter.loads(ics_test_event(""))
with pytest.raises(KeyError):
converter.events_to_gcal()
def test_event_no_end():
def test_event_no_end() -> None:
converter = CalendarConverter()
converter.loads(ics_test_event(only_start_date))
with pytest.raises(ValueError):
converter.events_to_gcal()
@pytest.fixture(params=[
("date", ics_test_event(date_val), '2018-02-15', '2018-02-17'),
("date", ics_test_event(date_duration), '2018-02-15', '2018-02-17'),
("dateTime", ics_test_event(datetime_utc_val),
'2018-03-19T09:20:01.000001Z', '2018-03-21T10:25:01.000001Z'),
("dateTime", ics_test_event(datetime_utc_duration), '2018-03-19T09:20:01.000001Z', '2018-03-21T10:25:01.000001Z')],
ids=['date values', 'date duration',
'datetime utc values', 'datetime utc duration']
@pytest.fixture(
params=[
("date", ics_test_event(date_val), "2018-02-15", "2018-02-17"),
("date", ics_test_event(date_duration), "2018-02-15", "2018-02-17"),
(
"dateTime",
ics_test_event(datetime_utc_val),
"2018-03-19T09:20:01.000001Z",
"2018-03-21T10:25:01.000001Z",
),
(
"dateTime",
ics_test_event(datetime_utc_duration),
"2018-03-19T09:20:01.000001Z",
"2018-03-21T10:25:01.000001Z",
),
],
ids=[
"date values",
"date duration",
"datetime utc values",
"datetime utc duration",
],
)
def param_events_start_end(request):
def param_events_start_end(request: Any) -> Any:
return request.param
def test_event_start_end(param_events_start_end):
def test_event_start_end(param_events_start_end: Tuple[str, str, str, str]) -> None:
(date_type, ics_str, start, end) = param_events_start_end
converter = CalendarConverter()
converter.loads(ics_str)
events = converter.events_to_gcal()
assert len(events) == 1
event = events[0]
assert event['start'] == {
date_type: start
}
assert event['end'] == {
date_type: end
}
assert event["start"] == {date_type: start}
assert event["end"] == {date_type: end}
def test_event_created_updated():
def test_event_created_updated() -> None:
converter = CalendarConverter()
converter.loads(ics_test_event(created_updated))
events = converter.events_to_gcal()
assert len(events) == 1
event = events[0]
assert event['created'] == '2018-03-20T07:11:55.000001Z'
assert event['updated'] == '2018-03-26T12:02:35.000001Z'
assert event["created"] == "2018-03-20T07:11:55.000001Z"
assert event["updated"] == "2018-03-26T12:02:35.000001Z"
@pytest.mark.parametrize(
"value,expected_str",
[
(
datetime.datetime(2022, 6, 3, 13, 52, 15, 1, utc),
"2022-06-03T13:52:15.000001Z",
),
(
datetime.datetime(2022, 6, 3, 13, 52, 15, 1, timezone("Europe/Moscow")),
"2022-06-03T11:22:15.000001Z",
),
(datetime.date(2022, 6, 3), "2022-06-03T00:00:00.000001Z"),
],
ids=["utc", "with timezone", "date"],
)
def test_format_datetime_utc(value: datetime.datetime, expected_str: str) -> None:
assert format_datetime_utc(value) == expected_str

View File

@ -3,92 +3,97 @@ import hashlib
import operator
from copy import deepcopy
from random import shuffle
from typing import Union, List, Dict, Optional, AnyStr
import dateutil.parser
import pytest
from pytz import timezone, utc
from sync_ics2gcal import CalendarSync
from sync_ics2gcal import CalendarSync, DateDateTime
from sync_ics2gcal.gcal import EventDateOrDateTime, EventData, EventList
def sha1(string):
if isinstance(string, str):
string = string.encode('utf8')
def sha1(s: AnyStr) -> str:
h = hashlib.sha1()
h.update(string)
h.update(str(s).encode("utf8") if isinstance(s, str) else s)
return h.hexdigest()
def gen_events(start, stop, start_time, no_time=False):
def gen_events(
start: int,
stop: int,
start_time: DateDateTime,
no_time: bool = False,
) -> EventList:
duration: datetime.timedelta
date_key: str
date_end: str
if no_time:
start_time = datetime.date(
start_time.year, start_time.month, start_time.day)
start_time = datetime.date(start_time.year, start_time.month, start_time.day)
duration = datetime.date(1, 1, 2) - datetime.date(1, 1, 1)
date_key = "date"
suff = ''
date_end = ""
else:
start_time = utc.normalize(
start_time.astimezone(utc)).replace(tzinfo=None)
duration = datetime.datetime(
1, 1, 1, 2) - datetime.datetime(1, 1, 1, 1)
start_time = utc.normalize(start_time.astimezone(utc)).replace(tzinfo=None) # type: ignore
duration = datetime.datetime(1, 1, 1, 2) - datetime.datetime(1, 1, 1, 1)
date_key = "dateTime"
suff = 'Z'
date_end = "Z"
result = []
result: EventList = []
for i in range(start, stop):
event_start = start_time + (duration * i)
event_end = event_start + duration
updated = event_start
updated: DateDateTime = event_start
if no_time:
updated = datetime.datetime(
updated.year, updated.month, updated.day, 0, 0, 0, 1, tzinfo=utc)
updated.year, updated.month, updated.day, 0, 0, 0, 1, tzinfo=utc
)
event = {
'summary': 'test event __ {}'.format(i),
'location': 'la la la {}'.format(i),
'description': 'test TEST -- test event {}'.format(i),
event: EventData = {
"summary": "test event __ {}".format(i),
"location": "la la la {}".format(i),
"description": "test TEST -- test event {}".format(i),
"iCalUID": "{}@test.com".format(sha1("test - event {}".format(i))),
"updated": updated.isoformat() + 'Z',
"created": updated.isoformat() + 'Z'
"updated": updated.isoformat() + "Z",
"created": updated.isoformat() + "Z",
"start": {date_key: event_start.isoformat() + date_end}, # type: ignore
"end": {date_key: event_end.isoformat() + date_end}, # type: ignore
}
event['start'] = {date_key: event_start.isoformat() + suff}
event['end'] = {date_key: event_end.isoformat() + suff}
result.append(event)
return result
def gen_list_to_compare(start, stop):
result = []
def gen_list_to_compare(start: int, stop: int) -> EventList:
result: EventList = []
for i in range(start, stop):
result.append({'iCalUID': 'test{:06d}'.format(i)})
result.append({"iCalUID": "test{:06d}".format(i)})
return result
def get_start_date(event):
event_start = event['start']
start_date = None
def get_start_date(event: EventData) -> DateDateTime:
event_start: EventDateOrDateTime = event["start"]
start_date: Optional[str] = None
is_date = False
if 'date' in event_start:
start_date = event_start['date']
if "date" in event_start:
start_date = event_start["date"] # type: ignore
is_date = True
if 'dateTime' in event_start:
start_date = event_start['dateTime']
if "dateTime" in event_start:
start_date = event_start["dateTime"] # type: ignore
result = dateutil.parser.parse(start_date)
result: DateDateTime = dateutil.parser.parse(str(start_date))
if is_date:
result = datetime.date(result.year, result.month, result.day)
return result
def test_compare():
part_len = 20
def test_compare() -> None:
part_len: int = 20
# [1..2n]
lst_src = gen_list_to_compare(1, 1 + part_len * 2)
# [n..3n]
lst_dst = gen_list_to_compare(
1 + part_len, 1 + part_len * 3)
lst_dst = gen_list_to_compare(1 + part_len, 1 + part_len * 3)
lst_src_rnd = deepcopy(lst_src)
lst_dst_rnd = deepcopy(lst_dst)
@ -96,15 +101,14 @@ def test_compare():
shuffle(lst_src_rnd)
shuffle(lst_dst_rnd)
to_ins, to_upd, to_del = CalendarSync._events_list_compare(
lst_src_rnd, lst_dst_rnd)
to_ins, to_upd, to_del = CalendarSync._events_list_compare(lst_src_rnd, lst_dst_rnd)
assert len(to_ins) == part_len
assert len(to_upd) == part_len
assert len(to_del) == part_len
assert sorted(to_ins, key=lambda x: x['iCalUID']) == lst_src[:part_len]
assert sorted(to_del, key=lambda x: x['iCalUID']) == lst_dst[part_len:]
assert sorted(to_ins, key=lambda x: x["iCalUID"]) == lst_src[:part_len]
assert sorted(to_del, key=lambda x: x["iCalUID"]) == lst_dst[part_len:]
to_upd_ok = list(zip(lst_src[part_len:], lst_dst[:part_len]))
assert len(to_upd) == len(to_upd_ok)
@ -112,35 +116,29 @@ def test_compare():
assert item in to_upd
@pytest.mark.parametrize("no_time", [True, False], ids=['date', 'dateTime'])
def test_filter_events_by_date(no_time):
msk = timezone('Europe/Moscow')
@pytest.mark.parametrize("no_time", [True, False], ids=["date", "dateTime"])
def test_filter_events_by_date(no_time: bool) -> None:
msk = timezone("Europe/Moscow")
now = utc.localize(datetime.datetime.utcnow())
msk_now = msk.normalize(now.astimezone(msk))
part_len = 5
if no_time:
duration = datetime.date(
1, 1, 2) - datetime.date(1, 1, 1)
duration = datetime.date(1, 1, 2) - datetime.date(1, 1, 1)
else:
duration = datetime.datetime(
1, 1, 1, 2) - datetime.datetime(1, 1, 1, 1)
duration = datetime.datetime(1, 1, 1, 2) - datetime.datetime(1, 1, 1, 1)
date_cmp = msk_now + (duration * part_len)
date_cmp: DateDateTime = msk_now + (duration * part_len)
if no_time:
date_cmp = datetime.date(
date_cmp.year, date_cmp.month, date_cmp.day)
date_cmp = datetime.date(date_cmp.year, date_cmp.month, date_cmp.day)
events = gen_events(
1, 1 + (part_len * 2), msk_now, no_time)
events = gen_events(1, 1 + (part_len * 2), msk_now, no_time)
shuffle(events)
events_pending = CalendarSync._filter_events_by_date(
events, date_cmp, operator.ge)
events_past = CalendarSync._filter_events_by_date(
events, date_cmp, operator.lt)
events_pending = CalendarSync._filter_events_by_date(events, date_cmp, operator.ge)
events_past = CalendarSync._filter_events_by_date(events, date_cmp, operator.lt)
assert len(events_pending) == 1 + part_len
assert len(events_past) == part_len - 1
@ -152,26 +150,52 @@ def test_filter_events_by_date(no_time):
assert get_start_date(event) < date_cmp
def test_filter_events_to_update():
msk = timezone('Europe/Moscow')
def test_filter_events_to_update() -> None:
msk = timezone("Europe/Moscow")
now = utc.localize(datetime.datetime.utcnow())
msk_now = msk.normalize(now.astimezone(msk))
one_hour = datetime.datetime(
1, 1, 1, 2) - datetime.datetime(1, 1, 1, 1)
one_hour = datetime.datetime(1, 1, 1, 2) - datetime.datetime(1, 1, 1, 1)
date_upd = msk_now + (one_hour * 5)
count = 10
events_old = gen_events(1, 1 + count, msk_now)
events_new = gen_events(1, 1 + count, date_upd)
sync1 = CalendarSync(None, None)
sync1 = CalendarSync(None, None) # type: ignore
sync1.to_update = list(zip(events_new, events_old))
sync1._filter_events_to_update()
sync2 = CalendarSync(None, None)
sync2 = CalendarSync(None, None) # type: ignore
sync2.to_update = list(zip(events_old, events_new))
sync2._filter_events_to_update()
assert len(sync1.to_update) == count
assert sync2.to_update == []
def test_filter_events_no_updated() -> None:
"""
test filtering events that not have 'updated' field
such events should always pass the filter
"""
now = datetime.datetime.utcnow()
yesterday = now - datetime.timedelta(days=-1)
count = 10
events_old = gen_events(1, 1 + count, now)
events_new = gen_events(1, 1 + count, now)
# 1/2 updated=yesterday, 1/2 no updated field
i = 0
for event in events_new:
if 0 == i % 2:
event["updated"] = yesterday.isoformat() + "Z"
else:
del event["updated"]
i += 1
sync = CalendarSync(None, None) # type: ignore
sync.to_update = list(zip(events_old, events_new))
sync._filter_events_to_update()
assert len(sync.to_update) == count // 2