1 Commits

Author SHA1 Message Date
0ebde58845 Bump actions/setup-python from 4.3.0 to 4.5.0
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 4.3.0 to 4.5.0.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v4.3.0...v4.5.0)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-13 11:06:38 +00:00
8 changed files with 25 additions and 85 deletions

View File

@ -8,9 +8,3 @@ updates:
schedule:
# Check for updates to GitHub Actions every weekday
interval: "daily"
# Maintain dependencies for pip
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "weekly"

View File

@ -16,7 +16,7 @@ jobs:
fetch-depth: 0
- name: Set up Python
uses: actions/setup-python@v4.3.0
uses: actions/setup-python@v4.5.0
with:
python-version: '3.x'
@ -45,13 +45,15 @@ jobs:
path: dist/*.tar.gz
build-wheels:
name: Build Wheels on ${{ matrix.os }}
name: Build Wheels on ${{ matrix.os }} ${{ matrix.arch[0] }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
# macos-13 is an intel runner, macos-14 is apple silicon
os: [ubuntu-latest, windows-latest, macos-13, macos-14]
linux_arch: [ 'x86_64' ] #[suffix, mac, windows, linux] arch names
os: [ macos-11, windows-latest, ubuntu-latest ]
arch: [ ['x86', 'x86_64', 'AMD64', 'x86_64' ] ] #[suffix, mac, windows, linux] arch names
include:
- os: ubuntu-latest
arch: [ 'ARM', 'arm64', 'ARM64', 'aarch64' ]
steps:
- uses: actions/checkout@v3
@ -69,19 +71,17 @@ jobs:
sudo tar fvxz openmp-*.tar.gz -C /
- name: Install QEMU
# install QEMU if building for linux
# install QEMU if building for arm linux
uses: docker/setup-qemu-action@v2
if: runner.os == 'linux'
if: runner.os == 'linux' && matrix.arch[3] == 'aarch64'
with:
platforms: arm64
- name: Build wheels
uses: pypa/cibuildwheel@v2.18.1
uses: pypa/cibuildwheel@v2.11.2
env:
MACOSX_DEPLOYMENT_TARGET: "12"
CIBW_ARCHS_LINUX: 'x86_64 aarch64'
CIBW_ARCHS_MACOS: 'native'
CIBW_SKIP: 'cp37*'
MACOSX_DEPLOYMENT_TARGET: "10.15"
CIBW_ARCHS_LINUX: ${{ matrix.arch[3] }}
- name: Upload Wheels
uses: actions/upload-artifact@v3
@ -98,7 +98,7 @@ jobs:
- uses: actions/checkout@v3 # just need the changelog
- name: Set up Python
uses: actions/setup-python@v4.3.0
uses: actions/setup-python@v4.5.0
with:
python-version: '3.x'

View File

@ -2,33 +2,11 @@
All notable changes to this project will be documented in this file
## 0.2.1 - 2024-06-03
### Fixed
- Fixed broken transparency on palettized PNG files
### Changed
- Changed which wheels are built by the CI. There are no changes to OS or Python version compatibility if you compile from source.
- Stopped building Python 3.7 wheels
- Stopped building macOS universal wheels
- Wheels for macOS now require macOS 12 or later
- Included macOS ARM wheels
- Included Python 3.12 wheels
## 0.2.0 - 2023-06-21
## Unreleased
### Changed
- Updated Pybind11 to version 3.10, adding Python 3.11 support
- Updated install instructions in readme to reflect availability on PyPI
- Encode now skips .dds files in its input to prevent needless re-encoding
### Added
- Added the `-n` option for bc3 encoding to perform a BC3nm swizzle
## 0.1.3 - 2022-04-13

View File

@ -9,29 +9,12 @@ comparable to the original library.
## Installation
### From Wheel (Easiest)
To install, run
```shell
pip install quicktex
```
If you are on macOS, You need to install openMP from homebrew:
```shell
brew install libomp
```
### From Source
To build from source, first clone this repo and cd into it, then run:
To install, first clone this repo and cd into it, then run:
```shell
git submodule update --init
pip install .
```
and setuptools will take care of any dependencies for you.
If you are on macOS, it is recommended to first install openMP from homebrew to enable
@ -48,6 +31,8 @@ required dependencies for them, install with options like so:
pip install .[tests,stubs,docs]
```
Quicktex will be available on Pypi once it is out of alpha.
## Usage
```

View File

@ -46,7 +46,7 @@ docs = [
stubs = ["pybind11-stubgen"]
[project.urls]
Docs = "https://quicktex.readthedocs.io/en/latest/"
Docs = "https://quicktex.readthedocs.io/en/"
Source = "https://github.com/drewcassidy/quicktex"
Changelog = "https://github.com/drewcassidy/quicktex/blob/main/CHANGELOG.md"

View File

@ -40,7 +40,7 @@ def path_pairs(inputs, output, suffix, extension):
"""
if len(inputs) < 1:
raise click.BadArgumentUsage('No valid input files were provided.')
raise click.BadArgumentUsage('No input files were provided.')
inpaths = [pathlib.Path(i) for i in inputs]

View File

@ -36,8 +36,7 @@ def encode():
help="Output file or directory. If outputting to a file, input filenames must be only a single item. By default, files are decoded in place.",
)
@click.argument('filenames', nargs=-1, type=click.Path(exists=True, readable=True, dir_okay=False))
def encode_format(encoder, four_cc, flip, remove, suffix, output, filenames, swizzle=False):
filenames = [f for f in filenames if not f.endswith('.dds')]
def encode_format(encoder, four_cc, flip, remove, suffix, output, filenames):
path_pairs = common.path_pairs(filenames, output, suffix, '.dds')
with click.progressbar(
@ -49,11 +48,6 @@ def encode_format(encoder, four_cc, flip, remove, suffix, output, filenames, swi
if flip:
image = image.transpose(Image.FLIP_TOP_BOTTOM)
if swizzle:
bands = image.split()
one = Image.new('L', image.size, 0xFF)
image = Image.merge('RGBA', (one, bands[1], bands[1], bands[0]))
dds.encode(image, encoder, four_cc).save(outpath)
if remove:
@ -113,11 +107,8 @@ def encode_auto(level, black, threecolor, flip, remove, suffix, output, filename
bc1_encoder = quicktex.s3tc.bc1.BC1Encoder(level, mode)
bc3_encoder = quicktex.s3tc.bc3.BC3Encoder(level)
filenames = [f for f in filenames if not f.endswith('.dds')]
path_pairs = common.path_pairs(filenames, output, suffix, '.dds')
assert len(filenames) > 0
with click.progressbar(
path_pairs, show_eta=False, show_pos=True, item_show_func=lambda x: str(x[0]) if x else ''
) as bar:
@ -184,16 +175,9 @@ def encode_bc1(level, black, threecolor, **kwargs):
default=18,
help='Quality level to use. Higher values = higher quality, but slower.',
)
@click.option(
'-n/-N',
'--normal/--no-normal',
type=bool,
default=False,
help='Perform a BC3nm swizzle, copying the red channel into the alpha [default: no-normal]',
)
def encode_bc3(level, normal, **kwargs):
def encode_bc3(level, **kwargs):
"""Encode images to BC4 (RGBA, 8-bit interpolated alpha)."""
encode_format.callback(quicktex.s3tc.bc3.BC3Encoder(level), 'DXT5', swizzle=normal, **kwargs)
encode_format.callback(quicktex.s3tc.bc3.BC3Encoder(level), 'DXT5', **kwargs)
@click.command('bc4')

View File

@ -275,7 +275,6 @@ def read(path: os.PathLike) -> DDSFile:
def encode(image: Image.Image, encoder, four_cc: str, mip_count: typing.Optional[int] = None) -> DDSFile:
if image.mode != 'RGBA' or image.mode != 'RGBX':
mode = 'RGBA' if 'A' in image.mode else 'RGBX'
image.apply_transparency() # why is this necessary what
image = image.convert(mode)
sizes = quicktex.image_utils.mip_sizes(image.size, mip_count)