Compare commits

..

4 Commits

Author SHA1 Message Date
d940735453 Mark version 1.25 as released today 2022-02-25 15:45:55 +01:00
7d71067b3d Use BAT version 1.11 for UDIM support 2022-02-25 15:45:55 +01:00
b0b804410d Bumped version to 1.25 2022-02-25 15:45:55 +01:00
d55f2dcee1 Compatibility with Blender 3.1 / Python 3.10
Blender 3.1 will be shipped with Python 3.10, which made some backward-
incompatible changes in its asyncio module (the removal of the `loop`
parameter from various functions).

Depending on which Python version is used in Blender, the add-on now
passes (or not) the `loop` parameter, retaining backward compatibility.
2022-02-25 15:45:52 +01:00
6 changed files with 27 additions and 10 deletions

View File

@ -1,6 +1,12 @@
# Blender Cloud changelog
## Version 1.25 (2022-02-25)
- Compatibility with Blender 3.1 (Python 3.10).
- Bump blender-asset-tracer to version 1.11, for UDIM support.
## Version 1.24 (2022-02-04)
- Bump blender-asset-tracer version 1.8 → 1.10, for fixing a bug where files were doubly-compressed.

View File

@ -21,7 +21,7 @@
bl_info = {
"name": "Blender Cloud",
"author": "Sybren A. Stüvel, Francesco Siddi, Inês Almeida, Antony Riakiotakis",
"version": (1, 24),
"version": (1, 25),
"blender": (2, 80, 0),
"location": "Addon Preferences panel, and Ctrl+Shift+Alt+A anywhere for texture browser",
"description": "Texture library browser and Blender Sync. Requires the Blender ID addon "

View File

@ -56,8 +56,11 @@ def setup_asyncio_executor():
from . import pillar
# Python 3.8 deprecated the 'loop' parameter, 3.10 removed it.
kwargs = {"loop": loop} if sys.version_info < (3, 8) else {}
# No more than this many Pillar calls should be made simultaneously
pillar.pillar_semaphore = asyncio.Semaphore(3, loop=loop)
pillar.pillar_semaphore = asyncio.Semaphore(3, **kwargs)
def kick_async_loop(*args) -> bool:

View File

@ -25,6 +25,7 @@ import logging
from contextlib import closing, contextmanager
import urllib.parse
import pathlib
import sys
import requests.adapters
import requests.packages.urllib3.util.retry
@ -261,14 +262,17 @@ async def pillar_call(pillar_func, *args, caching=True, **kwargs):
)
loop = asyncio.get_event_loop()
# Python 3.8 deprecated the 'loop' parameter, 3.10 removed it.
kwargs = {"loop": loop} if sys.version_info < (3, 8) else {}
# Use explicit calls to acquire() and release() so that we have more control over
# how long we wait and how we handle timeouts.
try:
await asyncio.wait_for(pillar_semaphore.acquire(), timeout=10, loop=loop)
await asyncio.wait_for(pillar_semaphore.acquire(), timeout=10, **kwargs)
except asyncio.TimeoutError:
log.info("Waiting for semaphore to call %s", pillar_func.__name__)
try:
await asyncio.wait_for(pillar_semaphore.acquire(), timeout=50, loop=loop)
await asyncio.wait_for(pillar_semaphore.acquire(), timeout=50, **kwargs)
except asyncio.TimeoutError:
raise RuntimeError("Timeout waiting for Pillar Semaphore!")
@ -648,9 +652,11 @@ async def fetch_texture_thumbs(
for texture_node in texture_nodes
)
# Python 3.8 deprecated the 'loop' parameter, 3.10 removed it.
kwargs = {"loop": asyncio.get_event_loop()} if sys.version_info < (3, 8) else {}
# raises any exception from failed handle_texture_node() calls.
loop = asyncio.get_event_loop()
await asyncio.gather(*coros, loop=loop)
await asyncio.gather(*coros, **kwargs)
log.info("fetch_texture_thumbs: Done downloading texture thumbnails")
@ -929,8 +935,10 @@ async def download_texture(
)
downloaders.append(dlr)
loop = asyncio.get_event_loop()
return await asyncio.gather(*downloaders, return_exceptions=True, loop=loop)
# Python 3.8 deprecated the 'loop' parameter, 3.10 removed it.
kwargs = {"loop": asyncio.get_event_loop()} if sys.version_info < (3, 8) else {}
return await asyncio.gather(*downloaders, return_exceptions=True, **kwargs)
async def upload_file(

View File

@ -3,7 +3,7 @@
lockfile==0.12.2
pillarsdk==1.8.0
wheel==0.29.0
blender-asset-tracer==1.10
blender-asset-tracer==1.11
# Secondary requirements:
asn1crypto==0.24.0

View File

@ -250,7 +250,7 @@ setup(
},
name="blender_cloud",
description="The Blender Cloud addon allows browsing the Blender Cloud from Blender.",
version="1.24",
version="1.25",
author="Sybren A. Stüvel",
author_email="sybren@stuvel.eu",
packages=find_packages("."),