Sybren A. Stüvel
dfa07e19cc
Fix T55007: Support fluid simulation cache files
...
This also adds support for entire directory paths to be assets, in
addition to globs and numbered file sequences.
2018-06-05 15:12:10 +02:00
Sybren A. Stüvel
8d1bd89583
Allow packing to ZIP files
2018-03-22 10:06:48 +01:00
Sybren A. Stüvel
e53470d898
Add a pack-info.txt file at the top of the BAT Pack
...
This file explains which blend file this pack was created for.
2018-03-21 16:33:41 +01:00
Sybren A. Stüvel
f7150c0d29
Allow aborting a pack operation.
...
For this to work well I also had to remove the sorting of blocks in
trace.deps(). The sorting caused the first `yield` to be executed only
after each blend file was opened, which means that the consuming for-loop
takes a long time to hit its first iteration. As a result, it would respond
slowly to abort requests. By not sorting the first `yield` is much sooner,
resolving this issue.
2018-03-16 12:12:15 +01:00
Sybren A. Stüvel
889f3abd25
Implemented reporting callbacks.
...
Both the dependency Tracer class and the Packer class now support a
callback object, where the latter is a subclass of the former.
For file transfers running in a separate thread, there is a thread-safe
wrapper for progress callbacks. This wrapper can be called from any thread,
and calls the wrapped callback object from the main thread. This way the
callback implementation itself doesn't have to worry about threading
issues.
2018-03-15 17:59:55 +01:00
Sybren A. Stüvel
59189aab5f
Removed unused imports
2018-03-15 14:30:46 +01:00
Sybren A. Stüvel
6b51183095
Packer: store the output path of the blend file in the target directory
...
This allows the Flamenco Add-on to get the final path of the blend file.
2018-03-14 16:06:21 +01:00
Sybren A. Stüvel
8340df129d
BAT Pack can now exclude files based on glob patterns
2018-03-14 16:06:21 +01:00
Sybren A. Stüvel
0e9de7753c
Allow Packer to be used as context manager + test for rewriting img seqs
2018-03-14 12:50:27 +01:00
Sybren A. Stüvel
d2ac0fa919
Added test for Packer.close()
2018-03-14 12:30:18 +01:00
Sybren A. Stüvel
c9664ca045
Report missing files in Packer.strategise()
2018-03-14 12:24:26 +01:00
Sybren A. Stüvel
ef5c46eba5
Some mypy & test tweaks
2018-03-09 16:29:30 +01:00
Sybren A. Stüvel
4c3d288be9
Add mypy invocation to unit test
...
This way it's easy to run both the tests and mypy.
2018-03-09 14:24:06 +01:00
Sybren A. Stüvel
824ca4bcb7
Rewrite blend files in temporary directory, before copying
...
This allows us to later support uploading to a non-local filesystem, such
as Amazon S3 cloud storage, after path rewriting is complete.
2018-03-09 12:33:15 +01:00
Sybren A. Stüvel
384f1d5107
Compare float with assertAlmostEqual
2018-03-09 11:20:38 +01:00
Sybren A. Stüvel
632d01334c
Renamed module tracer → trace
...
This is consistent with the other module names.
2018-03-09 10:02:44 +01:00
Sybren A. Stüvel
e8f41f2735
Store rewrites in AssetAction
...
This is in preparation of interchanging copying and rewriting.
2018-03-09 10:00:46 +01:00
Sybren A. Stüvel
0dab872289
Truncate UTF-8 in a way that produces valid UTF-8.
2018-03-08 14:47:41 +01:00
Sybren A. Stüvel
e9ee5b69ec
Disallow BlendPath(str)
2018-03-08 14:18:07 +01:00
Sybren A. Stüvel
88f23a4097
Also test bat pack --noop
2018-03-08 13:02:18 +01:00
Sybren A. Stüvel
0df94c74cd
Also test Packer.execute()
2018-03-08 12:41:19 +01:00
Sybren A. Stüvel
b5418e1f5f
Removed Packer._packed_paths
...
The info in that dict is also available in Packer._actions[...].new_path
2018-03-08 11:15:38 +01:00
Sybren A. Stüvel
01a9392fc1
Added unit test for Packer.strategise()
2018-03-08 11:00:02 +01:00
Sybren A. Stüvel
ccdccd69cf
Speed up rewriting paths by reusing cached DNA structs & blocks
2018-03-08 10:59:45 +01:00
Sybren A. Stüvel
e2123f8090
Path rewriting for sequences seems to be working too.
2018-03-06 16:41:16 +01:00
Sybren A. Stüvel
71dd5bc11b
Path rewriting when packing.
...
Doesn't work with sequences, nor with split dirname/basename fields.
2018-03-06 16:06:36 +01:00
Sybren A. Stüvel
92f91b42cf
Added test case for Windows-style paths
2018-03-06 11:45:35 +01:00
Sybren A. Stüvel
8009ff1e47
Added block expansion
...
The expansion process follows pointers and library links to construct
the full set of actually-used data blocks. This set consists of all data
blocks in the initial blend file, and all *actually linked-to* data
blocks in linked blend files.
I've also removed non-recursive dependency listing.
2018-03-02 15:44:07 +01:00
Sybren A. Stüvel
7167d51730
Added BlendFileBlock.id_name property
...
Evaluated only once, so safe to call multiple times without producing
excessive disk I/O. Returns None instead of raising KeyError when there is
no (b'id', b'name') field.
2018-03-02 11:26:02 +01:00
Sybren A. Stüvel
f46e761f09
Removed base_index parameter in favour of explicit array handling
...
The `base_index` parameter is confusing and only works in a limited number
of cases. Having explicit functions to deal with those cases is preferred.
2018-03-01 12:50:22 +01:00
Sybren A. Stüvel
55302004ee
Test BlockUsage.files()
2018-02-28 16:51:27 +01:00
Sybren A. Stüvel
ca964181fe
Beginning of CLI interface + protection against infinite recursion.
2018-02-28 16:47:13 +01:00
Sybren A. Stüvel
8ae400acbe
Support particle simulation point cache data
...
Also see https://developer.blender.org/T53562
2018-02-28 14:11:48 +01:00
Sybren A. Stüvel
86af05e823
Added recursion into library blend files.
2018-02-28 12:42:27 +01:00
Sybren A. Stüvel
7541922b74
Also report library blocks.
...
Those are needed for recursive tracing of dependencies.
2018-02-28 11:55:10 +01:00
Sybren A. Stüvel
65b690e998
Added block walker implementations + tests
2018-02-27 17:30:28 +01:00
Sybren A. Stüvel
6b9c0a3f95
Support slash notation for BlendPath
...
This mimicks the slash notation of pathlib.Path
2018-02-27 17:29:44 +01:00
Sybren A. Stüvel
15cd74cda4
Start of dependency tracer work.
2018-02-26 18:16:15 +01:00
Sybren A. Stüvel
59c0b6df4c
Allow block.get() to return the dna.Field
...
This is needed by the upcoming dependency tracer.
2018-02-26 18:15:14 +01:00
Sybren A. Stüvel
a56e985cdc
Unify behaviour of block[path] and block.get(path)
2018-02-26 18:14:23 +01:00
Sybren A. Stüvel
bce5f4b670
Ported get_file_offset() and renamed to abs_offset()
2018-02-23 15:53:26 +01:00
Sybren A. Stüvel
55075c09b6
Ported get_data_hash() and renamed to hash()
2018-02-23 15:42:48 +01:00
Sybren A. Stüvel
db14cc5074
Test segfault
2018-02-23 14:46:47 +01:00
Sybren A. Stüvel
49d0f41b40
Test using BlendFile as context
2018-02-23 14:26:57 +01:00
Sybren A. Stüvel
9750a91571
Fixed file leak when opening corrupted file.
2018-02-23 14:26:57 +01:00
Sybren A. Stüvel
eb8281ea82
Fix leaking file object when loading non-blend file
2018-02-23 14:26:57 +01:00
Sybren A. Stüvel
8e0b135eb3
Fixed recompressing after modification
2018-02-23 14:26:57 +01:00
Sybren A. Stüvel
67751d9a3e
Fixed loading compressed files
2018-02-23 14:26:57 +01:00
Sybren A. Stüvel
b42a090f32
Support for modifying string/bytes fields.
2018-02-23 14:26:57 +01:00
Sybren A. Stüvel
934a8e210e
Clarified type refinement, simplified API, custom exception for get_pointer
...
Type refinement is now only done with BlendFileBlock.refine_type(), and
no longer with sdna_index_refine parameters to various functions. This
simplifies the API at the expense of having to call two simple functions
instead of one more complex one.
2018-02-23 14:26:57 +01:00