Commit Graph
325 Commits
Author SHA1 Message Date
Sybren A. Stüvel 3b3fb0e3ef improve 'bat --help' message 2018-03-16 13:39:34 +01:00
Sybren A. Stüvel b78ca35786 Little bit of usage info in package description 2018-03-16 13:36:58 +01:00
Sybren A. Stüvel fd02b0165f Updated setup.py in preparation of first upload to pypi 2018-03-16 13:29:08 +01:00
Sybren A. Stüvel 53e22a4a2f Added GPL comment blocks with proper attibution. 2018-03-16 13:25:20 +01:00
Sybren A. Stüvel da9f04240e Added CHANGELOG and updated README 2018-03-16 12:31:50 +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 4f4a67784d Small cleanups
- No more shadowing of `blendfile` name.
- Removed unused import
- Formatting
2018-03-16 10:10:29 +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 d2e13750e9 Moved comment to correct location 2018-03-15 16:28:34 +01:00
Sybren A. Stüvel 88eb883989 Include subpackages in the distribution wheel. 2018-03-15 16:28:32 +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 73b264f6bc Allow relative project path 2018-03-14 16:06:21 +01:00
Sybren A. Stüvel 9ceb42af2f Moved some code into its own function 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 575a0921c1 bat.pack.queued_copy → bat.pack.filesystem 2018-03-09 17:04:29 +01:00
Sybren A. Stüvel ea832cd666 Added support for uploads to S3 by using the boto3 client. 2018-03-09 16:48:34 +01:00
Sybren A. Stüvel 4a0673918d Formatting 2018-03-09 16:31:01 +01:00
Sybren A. Stüvel 15ca2f98ab Better handling of KeyboardInterrupt to abort file transfers 2018-03-09 16:30:46 +01:00
Sybren A. Stüvel a2ca66a2f6 Nicer transfer queue iteration 2018-03-09 16:30:17 +01:00
Sybren A. Stüvel ef5c46eba5 Some mypy & test tweaks 2018-03-09 16:29:30 +01:00
Sybren A. Stüvel 53a2ca4373 Only set the log level on our own logger.
Otherwise debug logging will be completely swamped with logs from other
libraries. Maybe that's nice too at some point, but that would need another
CLI arg.
2018-03-09 16:28:31 +01:00
Sybren A. Stüvel 1a37cb5ba1 Moved common code to FileTransferer class
Many implementations will want to use the same queueing mechanism.
2018-03-09 15:08:50 +01:00
Sybren A. Stüvel 3ae39104a9 Allow subclasses of Packer to specify a different file transferer class 2018-03-09 14:25:43 +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 cc06a191a1 Added more annotations for mypy
Function declarations that have no type annotations at all will be skipped
by mypy. Adding an explicit `-> None` tells mypy to run on those functions
too.
2018-03-09 14:23:43 +01:00
Sybren A. Stüvel 4dc0dedff1 Removed version pinning from requirements-dev.txt + added mypy
The development should be done with recent versions, and if any issues
arise those should be fixed.
2018-03-09 13:51:12 +01:00
Sybren A. Stüvel 38978537bc Removed some unused code + different line wrap style 2018-03-09 13:04:26 +01:00
Sybren A. Stüvel 0778b3a6ec Defined file transferer abstract base class
This will allow for different file transfer classes uploading to different
services.
2018-03-09 13:04:14 +01:00
Sybren A. Stüvel ac3f6142b3 Move rewritten blend files instead of copying them
This will cause a nice speedup if the temporary directory happens to be on
the same file system as the target directory for the BAT Pack. This can be
influenced by setting an environment variable; see the documentation for
[tempfile.gettempdir](https://docs.python.org/3/library/tempfile.html#tempfile.gettempdir)
2018-03-09 12:47:50 +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 fdbbc3a20d Static type checking with mypy
This does introduce some not-so-nice things, like having to annotate each
`__init__` function with `-> None`. However, the benefits of having static
type checking in a complex bit of software like BAT outweigh the downsides.
2018-03-09 11:09:47 +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 d984870155 Don't repeat superclass name 2018-03-09 09:59:54 +01:00
Sybren A. Stüvel d10264695a Tweaked logging 2018-03-08 15:30:31 +01:00
Sybren A. Stüvel e03e0fb4d7 Reduced some log levels 2018-03-08 14:53:25 +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 898f79a951 Removed unused imports 2018-03-08 14:35:35 +01:00
Sybren A. Stüvel c80bb8232e Fix bad reference 2018-03-08 14:27:17 +01:00
Sybren A. Stüvel bfc1421df9 Updated README 2018-03-08 14:24:16 +01:00
Sybren A. Stüvel be747ffa6e Ignore build & dist dirs 2018-03-08 14:19:29 +01:00
Sybren A. Stüvel e9ee5b69ec Disallow BlendPath(str) 2018-03-08 14:18:07 +01:00
Sybren A. Stüvel f2f824ad85 Speed up BlendFileBlock instantiation with __slots__
Due to the huge number of BlendFileBlock objects created for packing a
production-size blend file, using slots here actually makes the
dependency tracer significantly (p<0.001) faster. In my test case the
speed improvement was 16% for a 'bam list' command.
2018-03-08 13:59:28 +01:00
Sybren A. Stüvel 88f23a4097 Also test bat pack --noop 2018-03-08 13:02:18 +01:00
Sybren A. Stüvel b6527ec1ee Moved file copy queue to separate module.
Also transformed into a threading.Thread subclass, rather than using a
function + module-global state variables.
2018-03-08 13:00:56 +01:00