Skip to content

v4.0.0

Compare
Choose a tag to compare
@antonplagemann antonplagemann released this 22 Dec 20:27
· 80 commits to main since this release
caae23b

Feature Release

Changes from v3.2.0:

New features:

  • Added full docker 🐳 support with automatic deployments

Breaking changes:

  • Changed config from python file (conf.py) to .env file (for update instructions see below)

Bugfixes:

  • Fixed missing gender error #29
  • Fixed an issue where a raw birthday format produced an exception instead of beeing skipped
  • Fixed an issue where some contacts have been unintentionally skipped during delta sync
  • Fixed an issue where a new Google token would not have a refresh_token for non-interactive token refresh
  • Fixed an issue where OAuth scopes have been parsed wrong during Google token refresh
  • Fixed an issue where a deleted contact does not get removed from the database (=> failing database check)
  • Fixed a rare issue where database check could fail
  • Fixed and improved some logging issues

Background changes (no effects on functionality):

  • Added instructions for setting up a GCP People API project
  • Added fully automated tests of every command and environment using GitHub Actions
  • Added SonarCloud SAST CI
  • Added CodeQL SAST CI
  • Added a new command-line switch for specifying config location path
  • Introduced black codestyle
  • Introduced flake8 linting
  • Introduced bandit security check
  • Introduced mypy type checking
  • Introduced isort import sorting
  • Reduced code complexity and duplication
  • Introduced snake_case naming convention
  • Added custom exceptions (better error handling)
  • Changed initial Google authorization flow from local_webserver to console (more robust)
  • Changed pickling format from binary to base64 to be readable characters (file updates automatically on next script run)

Update instructions from v3.x.x:

  • Automatic: Do a pip install -r requirements.txt, then run GMSync.py -u once. This converts your conf.py into a .env file and moves your credential files into the right subfolders.
  • Manual: Create a new .env file (use .env.example as template). Then move your credentials.json and token.pickle files into a new data subfolder. Do a pip install -r requirements.txt afterwards.