Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Windows path improvements #174

Closed
wants to merge 730 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
730 commits
Select commit Hold shift + click to select a range
b3eaed9
Correct package metadata in setup.py
MichaelAquilina Aug 2, 2017
f0e7f2e
Autoplay asciinema
MichaelAquilina Aug 2, 2017
04b0a99
Bump version to 0.1.30
MichaelAquilina Aug 2, 2017
1cb9490
Correct License entry
MichaelAquilina Aug 2, 2017
fdd109d
Bump version to 0.1.31
MichaelAquilina Aug 2, 2017
c106959
Minor correction to README
MichaelAquilina Aug 2, 2017
3a58801
Simplify pip cache declaration on travis
MichaelAquilina Aug 7, 2017
79973d0
Fix flake8 linter issues
MichaelAquilina Aug 10, 2017
1a51d53
Setup flake8-import-order
MichaelAquilina Aug 10, 2017
fbbcb38
Add basic working prototype of command to watch targets
MichaelAquilina Aug 2, 2017
5f6395c
Add read_delay and only run once per target hit
MichaelAquilina Aug 2, 2017
6acfb16
Revert change to sync_command
MichaelAquilina Aug 2, 2017
c1e585c
Add basic coverage test for daemon command
MichaelAquilina Aug 2, 2017
cf05be7
Add enum34 to requirements.txt
MichaelAquilina Aug 2, 2017
86f4cff
Add --read-delay parameter
MichaelAquilina Aug 2, 2017
84b58ad
Add basic support for syncing specific keys
MichaelAquilina Aug 3, 2017
1241fdf
Add conflicts option override
MichaelAquilina Aug 3, 2017
2f4eeaa
Add recursive INotify support
MichaelAquilina Aug 7, 2017
428c458
Numerous fixes and improvements
MichaelAquilina Aug 7, 2017
a0d99b3
Add support for displaying timestamps in log messages
MichaelAquilina Aug 8, 2017
a2a888b
Remove keys from command line for sync command
MichaelAquilina Aug 8, 2017
9c1e65d
Add tests for loglevel and timestamps
MichaelAquilina Aug 10, 2017
c0380de
Update help for daemon command
MichaelAquilina Aug 10, 2017
96dc6c9
Add tests for INotifyRecursive
MichaelAquilina Aug 10, 2017
5e11edd
Add a timeout to INotifyRecursive tests
MichaelAquilina Aug 10, 2017
606be43
Add tests for daemon command
MichaelAquilina Aug 10, 2017
dcbf38c
Add entry in README about daemon command
MichaelAquilina Aug 10, 2017
942a760
Make ignore_files and index lazy on S3SyncClient and add repr test for
MichaelAquilina Aug 10, 2017
9b6d496
Merge pull request #63 from MichaelAquilina/inotify_daemon
MichaelAquilina Aug 10, 2017
e46a05f
Bump version to 0.2.0
MichaelAquilina Aug 10, 2017
219a051
Bump to version 0.2.1
MichaelAquilina Aug 10, 2017
3fa27c6
Add build folder to .gitignore
MichaelAquilina Aug 11, 2017
981d639
Use "pip install ." instead of using setup.py directly
MichaelAquilina Aug 11, 2017
9c91668
Add filelock to requirements
MichaelAquilina Sep 26, 2017
ac056a0
Implement basic file locking on the LocalSyncClient
MichaelAquilina Sep 26, 2017
f5da9dd
Test local locking mechanism
MichaelAquilina Sep 26, 2017
cb11053
Lock client targets when running sync
MichaelAquilina Sep 26, 2017
2b037f7
Merge pull request #68 from MichaelAquilina/target_locking
MichaelAquilina Sep 26, 2017
c33a982
Bump version to 0.2.2
MichaelAquilina Sep 26, 2017
17e6ee1
Expand user paths when editing targets
MichaelAquilina Sep 26, 2017
1bcc9da
Bump version to 0.2.3
MichaelAquilina Sep 26, 2017
e3b0ce2
Show Stack Trace for exceptions if log level is DEBUG
MichaelAquilina Sep 27, 2017
266d7ec
Fix failing test and add new test for showing stack trace
MichaelAquilina Sep 27, 2017
64e1abc
Create and remove target lockfile
MichaelAquilina Sep 27, 2017
f765038
Bump version to 0.2.4
MichaelAquilina Sep 27, 2017
9693d7d
Print rather than log ls output so that it goes to stdout
MichaelAquilina Sep 28, 2017
2bbe16e
Update ls_command tests
MichaelAquilina Sep 28, 2017
fbf694f
Merge pull request #74 from MichaelAquilina/ls_command_stdout
MichaelAquilina Sep 28, 2017
2acf5ae
Fix minor error in README
MichaelAquilina Sep 28, 2017
8b25f15
Use capsys fixture in tests
MichaelAquilina Sep 29, 2017
c8393f2
Merge pull request #76 from MichaelAquilina/capsys_fixture
MichaelAquilina Sep 29, 2017
80d42d4
Use stdout for printing targets output
MichaelAquilina Sep 30, 2017
61b9865
Correct use of print
MichaelAquilina Sep 30, 2017
0a2042a
Reintroduce flake8 into CI
MichaelAquilina Sep 30, 2017
b53bd43
Explicitly specific folders to exclude from flake8 linting
MichaelAquilina Sep 30, 2017
049bc1e
Remove usage of DeferredFunction and move CLI code out of sync.py
MichaelAquilina Sep 30, 2017
acd0391
Add dry-run option for sync command
MichaelAquilina Sep 30, 2017
2bb7a82
TestResolution
MichaelAquilina Sep 30, 2017
038757a
Cleanup and fix all failing tests
MichaelAquilina Sep 30, 2017
f2df8dd
More tests for Resolution class
MichaelAquilina Sep 30, 2017
5745b04
Add conflict handler to cli client
MichaelAquilina Sep 30, 2017
ee59d60
Bump alpha version
MichaelAquilina Oct 2, 2017
b9f5efb
Singleton wrapper implementation of progressbar
MichaelAquilina Oct 4, 2017
8d8bcdc
Use start, update and complete callback
MichaelAquilina Oct 4, 2017
78f0aa3
Make string layout more clear for handle_conflict
MichaelAquilina Oct 4, 2017
494ec52
Move conflict_handler to constructor
MichaelAquilina Oct 8, 2017
5d457da
Add test for dry runs
MichaelAquilina Oct 8, 2017
7441850
Use constants for actions
MichaelAquilina Oct 8, 2017
a1c0824
Simplify conditional
MichaelAquilina Oct 8, 2017
dd828ce
Add test for callback
MichaelAquilina Oct 9, 2017
063bdd6
Add test_put_callback for s3 client
MichaelAquilina Oct 9, 2017
69c603f
Move Resolution class to its own file
MichaelAquilina Oct 9, 2017
1b23e11
test_get_resolution
MichaelAquilina Oct 9, 2017
136a04b
Test Handle Conflict
MichaelAquilina Oct 9, 2017
6a180f6
Add smoke test for progress bar callbacks
MichaelAquilina Oct 10, 2017
3328f6f
Merge pull request #78 from MichaelAquilina/isolate_cli_functionality
MichaelAquilina Oct 10, 2017
ec8d709
Remove colored from sync.py
MichaelAquilina Oct 27, 2017
00c6c88
test_action_callback
MichaelAquilina Oct 28, 2017
2b81ee2
Merge pull request #81 from MichaelAquilina/remove_colored_from_sync
MichaelAquilina Oct 28, 2017
ce66031
Add --no-colors option
epayet Oct 28, 2017
90182a8
Add Contributing section to readme
epayet Oct 29, 2017
0c0fd14
Move libmagic installation to Installation section
epayet Oct 29, 2017
a3b69df
Merge pull request #83 from epayet/readme-contributing
MichaelAquilina Oct 29, 2017
48ef2ea
Dont crash on most commands if config doesnt exist
MichaelAquilina Oct 30, 2017
93ded4c
Merge pull request #87 from MichaelAquilina/prebuilt_config
MichaelAquilina Oct 30, 2017
66832b8
Add --copy-target-credentials
MichaelAquilina Oct 30, 2017
45cdc4f
Merge pull request #88 from MichaelAquilina/copy_settings
MichaelAquilina Oct 30, 2017
60ef208
Move INotifyRecursive to its own file
MichaelAquilina Oct 30, 2017
4ac71bc
Move ProgressBar to its own file
MichaelAquilina Oct 30, 2017
5f9399e
Remove redundant code
MichaelAquilina Oct 30, 2017
98a2167
No need for ident on config dump
MichaelAquilina Oct 30, 2017
2d2dd00
Move show_diff to its own file
MichaelAquilina Oct 30, 2017
a091e41
Merge pull request #89 from MichaelAquilina/cleanup
MichaelAquilina Oct 30, 2017
7a73ea9
Only catch KeyboardInterrupts in the cli client
MichaelAquilina Oct 30, 2017
38bfcfa
Merge pull request #90 from MichaelAquilina/keyboard_interrupt_cli
MichaelAquilina Oct 30, 2017
892f22a
Ignore changes to .s4lock when running the daemon command
MichaelAquilina Nov 1, 2017
3deecce
Merge pull request #92 from MichaelAquilina/fix_daemon
MichaelAquilina Nov 1, 2017
f6be09f
Merge pull request #82 from epayet/no-colors
MichaelAquilina Nov 1, 2017
4686065
Move sync command to SyncCommand
MichaelAquilina Nov 1, 2017
b70099c
Move ls command to LsCommand
MichaelAquilina Nov 1, 2017
648bb36
Move targets command to TargetsCommand
MichaelAquilina Nov 1, 2017
4d440ef
Move add command to AddCommand
MichaelAquilina Nov 1, 2017
8189a42
Use fixture rather than yield_fixture
MichaelAquilina Nov 1, 2017
3562e00
Fix ciruclar import
MichaelAquilina Nov 1, 2017
ad58715
Move daemon command to DaemonCommand class
MichaelAquilina Nov 2, 2017
a9e4a0b
Move edit command to EditCommand class
MichaelAquilina Nov 2, 2017
e7d4a30
Move rm command to RmCommand class
MichaelAquilina Nov 2, 2017
55b000b
Commands base class
MichaelAquilina Nov 3, 2017
e5d81e5
Merge pull request #94 from MichaelAquilina/commands_as_classes
MichaelAquilina Nov 5, 2017
4a18f0a
Check that version output is non empty
MichaelAquilina Nov 5, 2017
640d258
Re-add missing entry point
MichaelAquilina Nov 5, 2017
af4ba41
Merge pull request #95 from MichaelAquilina/fix_missing_entry
MichaelAquilina Nov 5, 2017
d181ba9
pathlib backport now required for python 3.3 support
MichaelAquilina Nov 24, 2017
f42a0a6
Merge pull request #98 from MichaelAquilina/fix_python_33
MichaelAquilina Nov 24, 2017
829959a
Remove pathlib now that its been fixed in inotify_simple
MichaelAquilina Nov 24, 2017
f30b23c
Merge pull request #99 from MichaelAquilina/remove_pathlib
MichaelAquilina Nov 26, 2017
922cc47
Only display stack traces if log-level=DEBUG
MichaelAquilina Dec 6, 2017
9fb3151
Merge pull request #101 from MichaelAquilina/better_failures
MichaelAquilina Dec 23, 2017
19b1570
Bump version to 0.2.6
MichaelAquilina Dec 23, 2017
eca4d04
Fix failure when .s4lock is not found
MichaelAquilina Jan 24, 2018
6cbda56
Upgrade s4 to 0.2.7
MichaelAquilina Jan 24, 2018
cd9d129
Remove 3.7-dev from travis builds
MichaelAquilina Jan 24, 2018
8a46144
Dont crash on OSX because INotify is unsupported
MichaelAquilina Feb 24, 2018
6f81998
Add note in README about Daemon command support
MichaelAquilina Feb 24, 2018
5ce4fc1
Add comment about import catch in Daemon command
MichaelAquilina Feb 24, 2018
a804b72
Merge pull request #105 from MichaelAquilina/fix_macosx
MichaelAquilina Feb 24, 2018
96b5116
Upgrade s4 to 0.2.8
MichaelAquilina Feb 24, 2018
02e4bb2
Minor spelling fix
MichaelAquilina Feb 27, 2018
0359b60
Add mypy_cache to gitignore
MichaelAquilina Mar 12, 2018
c1695a4
Add information about configuration file location
MichaelAquilina Mar 12, 2018
aa73ec4
Correct rst formatting
MichaelAquilina Mar 12, 2018
977ad9f
Quote array expansion to prevent word splitting
MichaelAquilina Mar 21, 2018
01fdd6b
Add mypy and pytest cache to gitignore
MichaelAquilina Mar 21, 2018
c06ff31
Upgrade version to 0.2.9
MichaelAquilina Mar 21, 2018
6397864
Upgrade dev-requirements to the latest versions
MichaelAquilina Mar 21, 2018
ca4c5f4
Drop support for python 3.3
MichaelAquilina Mar 21, 2018
297a320
Add CHANGELOG.rst
MichaelAquilina Mar 21, 2018
d9ec57a
Remove python 3.3 from travis builds
MichaelAquilina Mar 21, 2018
4fa23c1
Merge pull request #107 from MichaelAquilina/0.2.9
MichaelAquilina Mar 21, 2018
f079c18
Add Sections to the beginning of the README
MichaelAquilina Apr 3, 2018
c387c39
Update CHANGELOG
MichaelAquilina Apr 3, 2018
e0003e9
Fix "Other Subcommands" title
MichaelAquilina Apr 3, 2018
043d9b6
Merge pull request #109 from MichaelAquilina/sections_readme
MichaelAquilina Apr 3, 2018
292cd40
Bump version to 0.2.10
MichaelAquilina Apr 3, 2018
0c83b5b
Fix rST on pypi
MichaelAquilina Apr 3, 2018
cae84dc
Use gzip compression by default for s3 indexes
MichaelAquilina Apr 11, 2018
cde67cc
Minor linter fix
MichaelAquilina Apr 12, 2018
fe91515
Return decompressed and decoded index
MichaelAquilina Apr 12, 2018
07d98f7
Bump version to 0.2.12
MichaelAquilina Apr 12, 2018
584590a
Correct content type for gzip
MichaelAquilina Apr 12, 2018
1c03978
Test loading different compression formats in s3 index
MichaelAquilina Apr 12, 2018
76825d9
Assume octect-streams are zlib compressed indexes
MichaelAquilina Apr 13, 2018
cfa1182
Merge pull request #112 from MichaelAquilina/use_gzip_s3
MichaelAquilina Apr 13, 2018
c764250
Remove unused py37 entry from tox.ini
MichaelAquilina Apr 13, 2018
2a72c28
Add command short aliases
MichaelAquilina May 8, 2018
e0282bd
Merge pull request #115 from MichaelAquilina/command_short_aliases
MichaelAquilina May 8, 2018
2aa5d94
Update CHANGELOG and bump version
MichaelAquilina May 8, 2018
e7ea6fd
Fix minor spelling error on CHANGELOG
MichaelAquilina May 8, 2018
312eee1
Add parameterized tests for command aliases
MichaelAquilina May 8, 2018
819fb32
Update CHANGELOG and bump version
MichaelAquilina May 8, 2018
ca31dde
Remove bin/s4
MichaelAquilina May 20, 2018
3b0c740
Add entry_point to setup.py
MichaelAquilina May 20, 2018
e3d7358
Several improvements to setup.py
MichaelAquilina May 20, 2018
f10d54e
Fix minor flake8 issue
MichaelAquilina May 20, 2018
cdc5594
Merge pull request #118 from MichaelAquilina/console_scripts
MichaelAquilina May 20, 2018
ae5d19e
Bump version to 0.2.15
MichaelAquilina May 20, 2018
64d91b7
Add ISSUE_TEMPLATE
MichaelAquilina Jun 8, 2018
5fb106c
Merge pull request #120 from MichaelAquilina/add_issue_template
MichaelAquilina Jun 8, 2018
0df3b0d
Replace fnmatch with pathspac for more thorough gitignore support
Jun 17, 2018
a1ade73
Reference item.name instead of item in path join
Jun 18, 2018
eed3910
Merge pull request #122 from troylar/replace_fnmatch_with_pathspec
MichaelAquilina Jun 18, 2018
d248487
Bump version to 0.2.16
MichaelAquilina Jun 18, 2018
a9a0a91
Update CHANGELOG
MichaelAquilina Jun 18, 2018
6e65baf
Match s4 version with git version and ensure entry in CHANGELOG
MichaelAquilina Jun 18, 2018
32377d7
Merge pull request #126 from MichaelAquilina/version_linting
MichaelAquilina Jun 18, 2018
e966007
Format all code using black
MichaelAquilina Jun 18, 2018
932e5ff
Merge pull request #128 from MichaelAquilina/black_formatted
MichaelAquilina Jun 18, 2018
f14748a
Add Snyk badge to README
MichaelAquilina Jun 26, 2018
5051c5a
Remove read the docs badge
MichaelAquilina Jun 26, 2018
0d0d767
Merge pull request #129 from MichaelAquilina/snyk_badge
MichaelAquilina Jun 26, 2018
1cb5467
Add missing main
MichaelAquilina Jun 29, 2018
71e63f3
Add docstrings explaining intended functionality of SyncClient methods
MichaelAquilina Jun 29, 2018
a920ac7
Add get_size method to LocalSyncClient
MichaelAquilina Jun 29, 2018
cb588d3
Calculate total size with ls output
MichaelAquilina Jun 29, 2018
5ced752
Merge pull request #131 from MichaelAquilina/total_size
MichaelAquilina Jun 29, 2018
702cd65
Bump version to 0.2.18
MichaelAquilina Jul 1, 2018
6a7a2c8
Remove extra dependencies from dev-requirements.txt
MichaelAquilina Jul 24, 2018
ef539e6
Migrate to CircleCI 2.0 for builds
MichaelAquilina Jul 24, 2018
49da4f2
Merge pull request #136 from MichaelAquilina/circleci
MichaelAquilina Jul 25, 2018
f216afc
Remove scandir and enum34 as dependencies
MichaelAquilina Jul 25, 2018
3167665
Merge pull request #141 from MichaelAquilina/reduce_dependencies
MichaelAquilina Jul 25, 2018
04d2f2f
Add monthly scheduled test
MichaelAquilina Jul 25, 2018
3a4a7dc
Merge pull request #142 from MichaelAquilina/scheduled_builds
MichaelAquilina Jul 25, 2018
591de4e
Add pyproject.toml
MichaelAquilina Jul 25, 2018
ca243d5
Add poetry dependencies
MichaelAquilina Jul 25, 2018
9e2a58f
Use poetry in CircleCI
MichaelAquilina Jul 25, 2018
c2e3d37
run pytest in poetry
MichaelAquilina Jul 25, 2018
da4985c
Remove setup.py
MichaelAquilina Jul 25, 2018
0e15df3
Install poetry for lint job
MichaelAquilina Jul 25, 2018
2297b0d
Add repository section to pyproject.toml
MichaelAquilina Jul 25, 2018
d616f3f
Add homepage and keywords entry to pyproject.toml
MichaelAquilina Jul 25, 2018
f7e978d
Fix python requires
MichaelAquilina Jul 25, 2018
3eec014
Fix description
MichaelAquilina Jul 25, 2018
8a80986
Update dependencies
MichaelAquilina Jul 25, 2018
74efffa
Add scripts entry
MichaelAquilina Jul 25, 2018
d6c22a1
Remove Snyk
MichaelAquilina Jul 25, 2018
c677d6e
Use poetry run to test s4 script
MichaelAquilina Jul 25, 2018
b76230d
Better visibility of version lint process
MichaelAquilina Jul 25, 2018
3e7d827
poetry install
MichaelAquilina Jul 25, 2018
8eba42c
poetry install --no-dev
MichaelAquilina Jul 25, 2018
3f0660a
lint pyproject version
MichaelAquilina Jul 25, 2018
6ee278a
Remove outdated Running locally section
MichaelAquilina Jul 25, 2018
77fca62
Merge pull request #143 from MichaelAquilina/poetry
MichaelAquilina Jul 25, 2018
a4b4f8f
Bump version to 0.2.19
MichaelAquilina Jul 25, 2018
aec2544
Add missing readme entry to pyproject.toml
MichaelAquilina Jul 26, 2018
cb849c8
Merge pull request #145 from MichaelAquilina/fix_missing_readme
MichaelAquilina Jul 26, 2018
1dcbd44
Bump version to 0.2.20
MichaelAquilina Jul 26, 2018
7006611
Remove unused logger fixture
MichaelAquilina Jul 26, 2018
d8ac8c9
Fix lint errors
MichaelAquilina Jul 26, 2018
15c7c26
Fix mistakes in test_sync
MichaelAquilina Jul 26, 2018
91824eb
Update dependencies
MichaelAquilina Jul 26, 2018
9d55c57
Merge pull request #146 from MichaelAquilina/test_fixes
MichaelAquilina Jul 26, 2018
7347eb8
Remove unused closure
MichaelAquilina Jul 26, 2018
e24e3d3
Introduce isort
MichaelAquilina Jul 26, 2018
14a8b5d
Merge pull request #147 from MichaelAquilina/more_cleanup
MichaelAquilina Jul 26, 2018
b30e807
Remove impossible to reach code
MichaelAquilina Jul 26, 2018
2a60d80
Merge pull request #148 from MichaelAquilina/increase_codecov
MichaelAquilina Jul 26, 2018
8af2e33
Add black badge to README
MichaelAquilina Jul 30, 2018
4413d16
Merge pull request #149 from MichaelAquilina/black_badge
MichaelAquilina Jul 30, 2018
9c0e16e
Minor changes to README
MichaelAquilina Aug 7, 2018
3dce065
Merge pull request #150 from MichaelAquilina/readme_update
MichaelAquilina Aug 7, 2018
e0d12bc
Fix broken poetry build
MichaelAquilina Oct 28, 2018
db89802
Merge pull request #158 from MichaelAquilina/fix_poetry
MichaelAquilina Oct 28, 2018
d0192a8
Dont support daemon command on Windows
MichaelAquilina Oct 28, 2018
2b5c3fd
Merge pull request #161 from MichaelAquilina/daemon_command_no_suppor…
MichaelAquilina Oct 28, 2018
85e53e3
Update to version 0.2.21
MichaelAquilina Oct 28, 2018
4af9dac
Add support for other services like Minio
MichaelAquilina Oct 28, 2018
b9ea661
Merge pull request #162 from MichaelAquilina/support_minio
MichaelAquilina Oct 28, 2018
c5c4ca9
Minor release 0.3.0
MichaelAquilina Oct 28, 2018
e505d16
Add Running from Source section to README
MichaelAquilina Oct 30, 2018
9912f76
Merge pull request #163 from MichaelAquilina/running_from_source
MichaelAquilina Oct 30, 2018
e9b306e
Improve behaviour of the add command
MichaelAquilina Oct 30, 2018
a91bc84
Numerous improvements to test involving get_input
MichaelAquilina Oct 30, 2018
1aa831e
Merge pull request #164 from MichaelAquilina/better_add_command
MichaelAquilina Oct 30, 2018
d5cb4ca
Upgrade to version 0.4.0
MichaelAquilina Oct 30, 2018
0dd2b1f
Update poetry lock file
MichaelAquilina Oct 30, 2018
ddffbe5
Merge remote-tracking branch 'upstream/windows_path_improvements' int…
Nov 22, 2018
d6d4a40
ANother update
Nov 22, 2018
17bd1c5
Change to use posixpath module instead os.path module to corretly han…
Nov 22, 2018
8d285c4
Fix error handling "putting" a file
Nov 22, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions s4/clients/local.py
Original file line number Diff line number Diff line change
Expand Up @@ -113,12 +113,13 @@ def put(self, key, sync_object, callback=None):
callback(len(data))
if len(data) < BUFFER_SIZE:
break
shutil.move(temp_path, path)
except Exception:
os.close(fd)
os.remove(temp_path)
raise
finally:
else:
os.close(fd)
shutil.move(temp_path, path)

self.set_remote_timestamp(key, sync_object.timestamp)

Expand Down
7 changes: 4 additions & 3 deletions s4/clients/s3.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import logging
import os
import zlib
import posixpath

import boto3
import magic
Expand Down Expand Up @@ -62,7 +63,7 @@ def is_ignored_key(key, ignore_files):
# This is because on Windows the path separator used (\\) does
# not generate correct paths on s3
def s3_path(*args):
return os.path.normpath("/".join(args))
return posixpath.normpath("/".join(args))


class S3SyncClient(SyncClient):
Expand Down Expand Up @@ -185,7 +186,7 @@ def get_local_keys(self):
return results

for obj in page["Contents"]:
key = os.path.relpath(obj["Key"], self.prefix)
key = posixpath.relpath(obj["Key"], self.prefix)
if not is_ignored_key(key, self.ignore_files):
results.append(key)
else:
Expand Down Expand Up @@ -227,7 +228,7 @@ def get_all_real_local_timestamps(self):
page_iterator = paginator.paginate(Bucket=self.bucket, Prefix=self.prefix)
for page in page_iterator:
for obj in page.get("Contents", []):
key = os.path.relpath(obj["Key"], self.prefix)
key = posixpath.relpath(obj["Key"], self.prefix)
if not is_ignored_key(key, self.ignore_files):
result[key] = utils.to_timestamp(obj["LastModified"])

Expand Down