mirror of
https://github.com/thp/pyotherside.git
synced 2025-01-28 23:52:55 +08:00
parent
45c6cee562
commit
29c5148598
2
.github/workflows/build.yaml
vendored
2
.github/workflows/build.yaml
vendored
@ -28,7 +28,7 @@ jobs:
|
||||
- name: Install dependencies (macOS)
|
||||
if: matrix.os == 'macos-latest'
|
||||
run: |
|
||||
brew install qt@5 python@3.8
|
||||
brew install qt@5 python@3.12
|
||||
echo PATH=/usr/local/opt/qt@5/bin:$PATH >> ${GITHUB_ENV}
|
||||
- run: qmake
|
||||
- run: make
|
||||
|
@ -11,7 +11,7 @@ Requirements
|
||||
------------
|
||||
|
||||
* Qt 5.1.0 or newer (Qt 6.x also supported)
|
||||
* Python 3.3.0 or newer
|
||||
* Python 3.8.0 or newer
|
||||
|
||||
|
||||
Building
|
||||
@ -28,7 +28,7 @@ make install
|
||||
To build against a specific Python version, use:
|
||||
|
||||
```
|
||||
qmake PYTHON_CONFIG=python3.3-config # use "qmake6" for Qt 6
|
||||
qmake PYTHON_CONFIG=python3.8-config # use "qmake6" for Qt 6
|
||||
make
|
||||
make install
|
||||
```
|
||||
|
@ -1169,7 +1169,7 @@ Building PyOtherSide
|
||||
The following build requirements have to be satisfied to build PyOtherSide:
|
||||
|
||||
* Qt 5.1.0 or newer (Qt 6.x also supported)
|
||||
* Python 3.3.0 or newer
|
||||
* Python 3.8.0 or newer
|
||||
|
||||
If you have the required build-dependencies installed, building and installing
|
||||
the PyOtherSide plugin should be as simple as:
|
||||
@ -1185,7 +1185,7 @@ pass a suitable ``python-config`` to ``qmake`` at configure time:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
qmake PYTHON_CONFIG=python3.3-config # For Qt 6, use "qmake6"
|
||||
qmake PYTHON_CONFIG=python3.8-config # For Qt 6, use "qmake6"
|
||||
make
|
||||
make install
|
||||
|
||||
@ -1199,6 +1199,8 @@ ChangeLog
|
||||
Version UNRELEASED (YYYY-MM-DD)
|
||||
-------------------------------
|
||||
|
||||
* Dropped support for Python < 3.8 (PR#131)
|
||||
* Added support for Python 3.12 (PR#131)
|
||||
* Support for Qt 6.5 and newer (backwards-incompatible ``Q_RETURN_ARG()`` change) (fixes #128)
|
||||
|
||||
Version 1.6.0 (2022-08-05)
|
||||
|
@ -16,32 +16,43 @@
|
||||
#
|
||||
|
||||
import sys
|
||||
from importlib import abc
|
||||
from importlib.util import spec_from_loader
|
||||
|
||||
import pyotherside
|
||||
|
||||
from importlib import abc
|
||||
|
||||
class PyOtherSideQtRCImporter(abc.MetaPathFinder, abc.SourceLoader):
|
||||
def find_module(self, fullname, path):
|
||||
if path is None or all(x.startswith('qrc:') for x in path):
|
||||
if self.get_filename(fullname):
|
||||
return self
|
||||
|
||||
def get_filename(self, fullname):
|
||||
basename = fullname.replace('.', '/')
|
||||
def get_filename(fullname):
|
||||
basename = fullname.replace(".", "/")
|
||||
|
||||
for import_path in sys.path:
|
||||
if not import_path.startswith('qrc:'):
|
||||
if not import_path.startswith("qrc:"):
|
||||
continue
|
||||
|
||||
for candidate in ('{}/{}.py', '{}/{}/__init__.py'):
|
||||
for candidate in ("{}/{}.py", "{}/{}/__init__.py"):
|
||||
filename = candidate.format(import_path, basename)
|
||||
if pyotherside.qrc_is_file(filename[len('qrc:'):]):
|
||||
if pyotherside.qrc_is_file(filename[len("qrc:") :]):
|
||||
return filename
|
||||
|
||||
def get_data(self, path):
|
||||
return pyotherside.qrc_get_file_contents(path[len('qrc:'):])
|
||||
|
||||
def module_repr(self, m):
|
||||
return "<module '{}' from '{}'>".format(m.__name__, m.__file__)
|
||||
class PyOtherSideQtRCLoader(abc.SourceLoader):
|
||||
def __init__(self, filepath):
|
||||
self.filepath = filepath
|
||||
|
||||
def get_data(self, path):
|
||||
return pyotherside.qrc_get_file_contents(self.filepath[len("qrc:") :])
|
||||
|
||||
def get_filename(self, fullname):
|
||||
return get_filename(fullname)
|
||||
|
||||
|
||||
class PyOtherSideQtRCImporter(abc.MetaPathFinder):
|
||||
def find_spec(self, fullname, path, target=None):
|
||||
if path is None:
|
||||
fname = get_filename(fullname)
|
||||
if fname:
|
||||
return spec_from_loader(fullname, PyOtherSideQtRCLoader(fname))
|
||||
return None
|
||||
|
||||
|
||||
sys.meta_path.append(PyOtherSideQtRCImporter())
|
||||
|
Loading…
x
Reference in New Issue
Block a user