339 Commits

Author SHA1 Message Date
Sybren A. Stüvel
acd5a18bed Import urllib3 from requests.packages.urllib3
This is for compatibility with Blender 2.79.
2019-04-18 12:04:03 +02:00
Sybren A. Stüvel
24eaacff84 Declare requests as dependency
It's used by the Shaman interface only, so other BAT functions could be
used without it as well.
2019-04-18 11:47:28 +02:00
Sybren A. Stüvel
5d376a8054 Allow testing with Tox 2019-04-18 11:43:18 +02:00
Sybren A. Stüvel
9fdfbc9bb3 Bumped version to 1.1 v1.1 2019-03-25 17:46:53 +01:00
Sybren A. Stüvel
be9798cb1c Marked version 1.1 as released 2019-03-25 17:46:38 +01:00
Sybren A. Stüvel
4f05b2d481 Updated URL to Shaman
The Shaman server as standalone component is no more, it's been integrated
into Flamenco Manager.
2019-03-25 17:46:28 +01:00
Sybren A. Stüvel
b418aaf3c4 Bumped version to 1.1.dev2 2019-03-20 13:58:23 +01:00
Sybren A. Stüvel
4964745dee Support Alembic files from linked library
We already supported Alembic files in the top-level blend file, but now we
also support finding Alembic files in linked-in libraries.
2019-03-20 13:57:44 +01:00
Sybren A. Stüvel
c718fb3a41 Support the Mesh Sequence Cache modifier (a.k.a. Alembic files) 2019-03-20 11:14:23 +01:00
Sybren A. Stüvel
6ac117cd37 Formatting 2019-03-20 11:12:47 +01:00
Sybren A. Stüvel
e9fcdb0191 Use exponential backoff when retrying HTTP connections 2019-03-06 16:21:30 +01:00
Sybren A. Stüvel
44ee553c0a Shaman: added some timeouts to HTTP requests 2019-03-06 16:00:46 +01:00
Sybren A. Stüvel
c2a8ff18f8 Bumped version to 1.1-dev1 2019-03-06 13:40:32 +01:00
Sybren A. Stüvel
10abeaea49 Fix ValueError when not requesting a checkout 2019-03-06 12:10:55 +01:00
Sybren A. Stüvel
dabb249e9b Python 3.5 fixes
`typing.Deque` was introduced in Python 3.6, so we can only use it when
we no longer support Blender 2.79.
2019-03-01 15:12:24 +01:00
Sybren A. Stüvel
8c822c5b76 Updated changelog 2019-03-01 14:32:50 +01:00
Sybren A. Stüvel
7a7304d7a3 Shaman: Include original filename when uploading file 2019-03-01 14:07:24 +01:00
Sybren A. Stüvel
a2f9a7b484 Shaman changed response does-not-existfile-unknown
Instead of 'does-not-exist' we'll now receive 'file-unknown' (see Shaman
commit 44efa6b39bddc703a14aa68316b092866813c38a)
2019-03-01 14:07:24 +01:00
Sybren A. Stüvel
b22b9da5d0 Shaman: Moved URL parsing into a separate function
This allows other code to just call that function, rather than copying
the behaviour.
2019-03-01 14:07:24 +01:00
Sybren A. Stüvel
f34bf7c66f When aborting, make sure the reason is available
This allows a GUI to display the reason of abortion.
2019-03-01 14:07:24 +01:00
Sybren A. Stüvel
6104bd6078 Shaman: Make checkout location available to the Packer 2019-03-01 14:07:24 +01:00
Sybren A. Stüvel
14417b2d73 Record bytes & files uploaded on Transferer 2019-03-01 14:07:24 +01:00
Sybren A. Stüvel
9074421ec3 Shaman server support
The Shaman server is a file storage system that identifies files by
SHA256sum and file length. BAT can send packs there by only uploading
changed/new files. The BAT pack is reproduced at the Shaman server's
checkout directory by creating symlinks to the files in its file
storage.

Retrying sending files:

When we can defer uploading a file (that is, when we have other files to
upload as well, and we could send the current file at a later moment) we
send an `X-Shaman-Can-Defer-Upload: true` header in the file upload
request. In that case, when someone else is already uploading that file,
a `208 Already Reported` response is sent and the connection is closed.
Python's Requests library unfortunately won't give us that response if
we're still streaming the request, and raise a ConnectionError exception
instead. This exception can mean two things:

- If the `X-Shaman-Can-Defer-Upload: true` header was sent: someone else
  is currently uploading that file, so defer it.
- If that header was not sent: that file is already completely uploaded
  and does not need to be uploaded again.

Instead of retrying each failed file, after a few failures we now just
resend the definition file to get a new list of files to upload, then
send those. This should considerably reduce the number of HTTP calls
when multiple clients are uploading the same set of files.
2019-03-01 14:07:24 +01:00
Sybren A. Stüvel
3dd4ff5ba6 Bumped version to 1.1-dev0 2019-03-01 14:07:12 +01:00
Sybren A. Stüvel
c8337f5098 Bumped version to 1.0
This is the same version as 0.99, just released as 1.0 to note the
maturity of the code (it's been used successfully for months at the Blender
Animation Studio).
v1.0
2019-03-01 14:03:55 +01:00
Sybren A. Stüvel
8dede717c6 Bumped version to 0.99 v0.99 2019-02-26 16:45:43 +01:00
Sybren A. Stüvel
add5cf930b Include error message with error status 2019-02-26 16:35:55 +01:00
Sybren A. Stüvel
03fb4da583 Convert target path from Path to str & PurePath
The target path is just read as string from the CLI now, to allow more
complex targets (such as URLs) that don't directly map to a path.

The Packer subclass now handles the conversion from that string to a
`pathlib.PurePath`, and specific subclasses & transfer classes can convert
those to a `pathlib.Path` to perform actual filesystem operations when
necessary.
2019-02-26 16:35:08 +01:00
Sybren A. Stüvel
754edd8711 Update dependencies 2019-02-26 16:35:08 +01:00
Sybren A. Stüvel
c4a0d5925a Use 'bat-' prefix when creating temporary directories 2019-02-26 16:35:08 +01:00
Sybren A. Stüvel
e9e1cfd8f5 Removed unused imports 2019-02-26 14:49:54 +01:00
Sybren A. Stüvel
d5d9c7f52f Clarified comment 2019-02-12 12:48:02 +01:00
Sybren A. Stüvel
dcc992f1cd Bumped version to 0.9 2019-02-12 12:31:51 +01:00
Sybren A. Stüvel
66681a69df Fixed crash where collection children are ID blocks instead of GR blocks
Not sure when/how that happens, but it happened on a lighting file of the
Spring project, when linking in a nested collection of which parts where
also linked in from other blend files.
2019-02-12 12:31:05 +01:00
Sybren A. Stüvel
bf7d2b1e27 Added some more unit tests for BlendPath 2019-02-04 15:42:40 +01:00
Sybren A. Stüvel
ee29184b3c Removed unused FileCopierPool class 2019-02-04 15:34:29 +01:00
Sybren A. Stüvel
1434a9ee5d Added --sha256 and --timing options to bat list
These are only temporary features for aiding in development.
2019-02-04 15:30:52 +01:00
Sybren A. Stüvel
55a14eca1b Removed some extraneous commas 2019-02-04 15:17:14 +01:00
Sybren A. Stüvel
daab1df826 Use a priority queue instead of repeatedly sorting a deque 2019-02-04 15:17:07 +01:00
Sybren A. Stüvel
efbd7c1cb2 Bumped version to 0.8 v0.8 2019-01-02 16:06:38 +01:00
Sybren A. Stüvel
f7fb4b13ca Test packing a blend file with Windows relative paths 2019-01-02 15:41:56 +01:00
Sybren A. Stüvel
b79a5dc491 Avoid repeating/constructing the same path 2019-01-02 15:39:09 +01:00
Sybren A. Stüvel
7df73d6c69 Configure test logging at import time (rather than at setup time) 2019-01-02 15:38:34 +01:00
Sybren A. Stüvel
20d7ea08cc Workaround for Windows failing on glob patterns in path.resolve()
Windows fails with an OSError when `somepath.resolve()` is called and
`somepath` contains a glob pattern. As a workaround, we now `resolve()`
the parent directory, and put the filename at its end. This only works
when the glob pattern is in the filename, which is the case for BAT-
generated globs.
2019-01-02 15:14:50 +01:00
Sybren A. Stüvel
d222fea960 Explicitly write pack-info.txt as UTF-8 2019-01-02 15:14:50 +01:00
Sybren A. Stüvel
772a5a1b1c Replace → with ->
Apparently Windows still isn't using UTF-8 by default, and fails when
handling these log entries.
2019-01-02 15:14:50 +01:00
Sybren A. Stüvel
5a41167a09 Missing test teardowns
This kept a file pointer open while trying to delete the file.
2019-01-02 15:14:50 +01:00
Sybren A. Stüvel
d81fe590db BlendPath: don't use os.path.join() for slash notations
The BlendPath should just use forward slashes, and not be depending on the
current platform.
2019-01-02 15:14:50 +01:00
Sybren A. Stüvel
0e392f27c9 BlendPath.__repr__ implemented 2019-01-02 15:14:50 +01:00
Sybren A. Stüvel
19216cb12e BlendPath.as_path() now refuses to convert blendfile-relative paths
When a path starts with b'//' it will not be converted to a PurePath, as
the handling of such filenames is platform dependent (Windows handles those
weirdly, like appending a slash to any path).
2019-01-02 15:14:50 +01:00