Skip to content

Directory structure and pyproject.toml #2

Description

@SashankBhamidi
calendaring-sync/
├── src/
│   └── calendaring_sync/
│       ├── __init__.py
│       ├── state.py          -- state store (ETag, sync-token, JMAP State)
│       ├── cache.py          -- local cache of calendar objects
│       ├── conflict.py       -- conflict detection and classification
│       ├── adapters/
│       │   ├── __init__.py
│       │   ├── caldav.py     -- CalDAV adapter (optional dep: python-caldav)
│       │   └── jmap.py       -- JMAP adapter (optional dep: calendaring-jmap)
│       └── storage/
│           ├── __init__.py
│           ├── base.py       -- abstract StorageBackend
│           ├── sqlite.py     -- default SQLite backend
│           └── memory.py     -- in-memory backend for tests
├── tests/
│   ├── test_state.py
│   ├── test_cache.py
│   ├── test_conflict.py
│   └── adapters/
│       ├── test_caldav.py
│       └── test_jmap.py
├── docs/
├── pyproject.toml
└── .gitignore

pyproject.toml:

  • hatchling build, version from hatch-vcs
  • core deps: none (stdlib only for state.py, cache.py, conflict.py)
  • optional: caldav = ["python-caldav>=3.0"], jmap = ["calendaring-jmap>=1.0"]
  • dev: pytest, ruff, coverage, python-caldav, calendaring-jmap
  • ruff line length 100

The core has no hard dependencies. A user who only needs the CalDAV adapter should not be forced to install calendaring-jmap.

See pycalendar/icalendar-anonymizer#12.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions