Skip to content

Commit

Permalink
Merge pull request #134 from SamSchott/develop
Browse files Browse the repository at this point in the history
v1.0.0
  • Loading branch information
SamSchott authored May 6, 2020
2 parents f9010d8 + 367d565 commit 09417ee
Show file tree
Hide file tree
Showing 65 changed files with 3,831 additions and 2,185 deletions.
40 changes: 27 additions & 13 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,17 +1,35 @@
name: Python application
name: CI

on: [push, pull_request]

jobs:
build:
flake:
name: Lint with flake8
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.6
uses: actions/setup-python@v1
with:
python-version: 3.6
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install flake8
pip install .
- name: Lint with flake8
run: |
flake8 . --count --ignore=C901,W503 --max-line-length=127 --statistics
tests:
name: Run tests
strategy:
max-parallel: 1
fail-fast: false
matrix:
platform: [ubuntu-latest, macos-latest]
python-version: [3.6, 3.7, 3.8]

python-version: [3.6, ]
runs-on: ${{ matrix.platform }}

steps:
- uses: actions/checkout@v2
- name: Set up Python ${{ matrix.python-version }}
Expand All @@ -21,15 +39,11 @@ jobs:
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install --upgrade pytest
pip install .
- 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
# the GitHub editor is 127 chars wide
flake8 . --ignore=C901,W503 --max-line-length=127 --statistics
- name: Test with pytest
env:
DROPBOX_ID: ${{ secrets.DROPBOX_ID }}
DROPBOX_TOKEN: ${{ secrets.DROPBOX_TOKEN }}
run: |
pip install pytest
pytest
4 changes: 2 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,8 @@ celerybeat-schedule
# Environments
.env
.venv
env/
venv/
env*
venv*
ENV/
env.bak/
venv.bak/
Expand Down
77 changes: 75 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,76 @@
## v1.0.0

This is the first stable release of Maestral. There have been numerous bug fixes to error
handling and platform integration as well as a few bug fixes to syncing itself. There are
also a few outward facing changes: Pausing Maestral now cancels any pending sync jobs
instead of waiting for them to be completed. The macOS GUI switches from Qt to using a
native Cocoa interface and the macOS app bundle finally includes a full command line
interface.

#### Added:

- Command line tools are now bundled with the macOS app bundle and can be installed from
the settings window.
- Added support for config names with spaces.
- Switch from Qt to native Cocoa GUI on macOS.
- Expanded test suite to include sync tests.

#### Changed:

- Added '.dropbox' and '.dropbox.cache' to always excluded paths.
- Pausing sync now cancels all pending uploads and downloads.
- Quicker detection of connection problems.
- Faster sync of local deletions.
- The GUI now always launches a separate daemon process instead of an in-process daemon.
- Temporary files during a download are now stored inside the Dropbox directory at
'.maestral.cache'. This guarantees that temporary files always reside on the same
partition as the Dropbox folder itself.
- System tray icons are no longer installed in the platform theme in Linux. This is part of
a workaround for a Qt issue on Linux desktops which causes unnecessarily large pixmap
transfers over dBus when HiDPI support is enabled. Manually installed icons will still
be respected.
- Switch from implicit grant to PKCE OAuth2 flow.
- Added public API to link a Dropbox account: `Maestral.get_auth_url` and `Maestral.link`.
Frontends no longer need to import `maestral.oauth`.
- Moved all command line dialogs from the main API to the CLI module.
- Bumped watchdog requirement to >= 10.0.0 for more consistent error handling.
- Added explicit jeepny dependency for Linux. This is a dependency of keyring but we use
it by itself as well.
- Improved the reliability of ignoring file system events caused by Maestral itself.

#### Fixed:

- Fixes an issue where a dropped internet connection during startup could result in
continuous retries until the connection is finally established.
- Fixes an issue where downloads of newly included folders would not resume after being
interrupted.
- Fixes an issue which could lead to false conflicting copies of folders in some cases.
- Fixes the handling of inofify limit and permission errors when starting a file system
watch.
- Fixes handling of errors from too long file names.
- Handle errors due to file names which are not allowed on the local file system.
- Fixes handling of some uncaught insufficient disk space errors.
- Fixes incorrect autostart entries on macOS.
- Fixes a crash when running Maestral as a systemd service without python-systemd
installed.
- Fixes an issue when checking for updates if the list of releases from Github includes
dev releases.
- Fixes an issue where only remote changes would be listed in 'Recent changes' in the GUI.
- Fixes the alignment of comboboxes in the Qt GUI on macOS.
- Fixes a crash on macOS when no notification center is available, for instance in a
headless session or on Github test runners.
- Fixes a crash on Linux when the command line tool `notify-send` is not available.
- Fixes an issue where sync errors would have incomplete path information.
- Resolves an issue where indexing a large Dropbox folder with > 100,000 items would
continuously timeout and restart in some cases.

#### Removed:

- Removed migration code for versions < 0.6.3. If you want to update to v1.0.0, please
make sure to upgrade to at least version 0.6.3 first or unlink your Dropbox before
updating to v1.0.0.
- Removed u-msgpack dependency.

## v0.6.4

The release provides bug fixes and minor improvements to the command line and graphical
Expand Down Expand Up @@ -299,7 +372,7 @@ may be considered the first release candidate for a stable v1.0.0.
- Improves formatting of `maestral ls` output.
- Improves status notifications for large uploads: dynamically adapt the unit to show up
to four significant digits (e.g., "16MB/1.6GB" instead of "0/1.6GB").
- Reduces memory footprint of macOS app by stripping docstrings (at least 5MB in dropbox
- Reduces memory footprint of macOS app by stripping doc strings (at least 5MB in dropbox
package only).

#### Fixed:
Expand Down Expand Up @@ -327,7 +400,7 @@ perform an incremental update to v0.4.3 first (see Removed section).
- Show a progress dialog while checking for updates when requested by the user.
- Show an error message when the GUI cannot connect to or start a sync daemon.
- Reduces the memory footprint of the GUI by ~ 30 MB by avoiding Dropbox API imports and
deleting QWidgets when they are not visible.
deleting QtWidgets when they are not visible.
- Changing the log level (e.g., `maestral log level DEBUG`) no longer requires a restart
of the maestral daemon to become effective.
- `maestral set-dir` now takes the new path as an argument: `maestral set-dir PATH`. If
Expand Down
15 changes: 15 additions & 0 deletions ROADMAP.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@

#### Short term:

* Switch from implicit grant to PKCE OAuth flow as soon as Dropbox supports it (DONE).
* Snap package once core20 is released and kde-neon works on core20.
* CLI autocomplete for paths once there is better support from upstream `click`.
* Update macOS app bundle to Python 3.8 and Qt 5.14.

#### Long term:

* deb and rpm packages: either with Pyinstaller executable or as Python package.
* GUI support for multiple Dropbox accounts.
* Option to install command line scripts from macOS app bundle (DONE).
* Work with upstream `toga` to fix remaining issues for native macOS GUI,
notably memory leak in `rubicon.objc` (DONE).
14 changes: 8 additions & 6 deletions docs/_static/custom.css
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@

.wy-side-nav-search > a img.logo, .wy-side-nav-search .wy-dropdown > a img.logo {
display: block;
margin: 0 auto;
height: auto;
width: auto;
border-radius: 0;
max-width: 50%;
background:transparent
}

.wy-side-nav-search {
background-color: #9d9d9d;
}

.wy-side-nav-search input[type=text] {
border-color:#9d9d9d
}
4 changes: 4 additions & 0 deletions docs/api/cli.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,7 @@ Command line interface
.. automodule:: cli
:members:
:show-inheritance:

.. click:: cli:main
:prog: maestral
:show-nested:
7 changes: 7 additions & 0 deletions docs/api/config/base.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@

Config helper functions
=======================

.. automodule:: config.base
:members:
:show-inheritance:
10 changes: 10 additions & 0 deletions docs/api/config/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@

maestral.config
===============

.. toctree::
:maxdepth: 2

config.main <main>
config.user <user>
config.base <base>
7 changes: 7 additions & 0 deletions docs/api/config/main.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@

Config defaults
===============

.. automodule:: config.main
:members:
:show-inheritance:
7 changes: 7 additions & 0 deletions docs/api/config/user.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@

Config file management
======================

.. automodule:: config.user
:members:
:show-inheritance:
1 change: 1 addition & 0 deletions docs/api/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,4 @@ This section gives an overview of Maestral's modules:
maestral.daemon <daemon>
maestral.cli <cli>
utils/index
config/index
4 changes: 3 additions & 1 deletion docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,16 @@

extensions = [
'sphinx.ext.autodoc',
'sphinx.ext.napoleon',
'sphinx.ext.intersphinx',
'sphinx.ext.todo',
'sphinx.ext.coverage',
'sphinx.ext.mathjax',
'sphinx.ext.ifconfig',
'sphinx.ext.viewcode',
'sphinx.ext.githubpages',
'm2r'
'm2r',
'sphinx_click.ext',
]

templates_path = ['_templates']
Expand Down
25 changes: 16 additions & 9 deletions docs/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,26 @@ Welcome to Maestral's developer documentation
=============================================

This documentation provides an API reference for the maestral daemon.
It is intended for developers only. For a user manual and an overview
of Maestral's functionality, please refer to the `wiki
<https://github.com/SamSchott/maestral-dropbox/wiki>`_.
It is built from the current dev branch and is intended for developers.
For a user manual and an overview of Maestral's functionality, please
refer to the `wiki <https://github.com/SamSchott/maestral-dropbox/wiki>`_.

The following APIs should remain stable for frontends such as the GUI or CLI:

* maestral.main.Maestral
* maestral.constants
* maestral.daemon
* maestral.errors
* maestral.utils.appdirs
* maestral.utils.autostart

.. toctree::
:caption: Table of Contents
:maxdepth: 2

api/index
changelog

Indices and tables
==================
.. toctree::
:maxdepth: 1

* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`
changelog
1 change: 1 addition & 0 deletions docs/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,4 @@ six
u-msgpack-python
watchdog
m2r
sphinx-click
11 changes: 4 additions & 7 deletions maestral/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,17 @@
(c) Sam Schott; This work is licensed under a Creative Commons
Attribution-NonCommercial-NoDerivs 2.0 UK: England & Wales License.
The following APIs should remain stable for front ends:
The following APIs should remain stable for frontends:
* maestral.main.Maestral
* maestral.oauth
* maestral.constants
* maestral.daemon
* maestral.errors
* maestral.config.main
* maestral.utils.appdirs
* maestral.utils.backend
* maestral.utils.autostart
"""

__version__ = "0.6.4"
__author__ = "Sam Schott"
__url__ = "https://github.com/SamSchott/maestral"
__version__ = '1.0.0'
__author__ = 'Sam Schott'
__url__ = 'https://github.com/SamSchott/maestral'
Loading

0 comments on commit 09417ee

Please sign in to comment.