Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Version 1.0 broken when setup.py installed #120

Closed
flacjacket opened this issue Feb 9, 2019 · 5 comments
Closed

Version 1.0 broken when setup.py installed #120

flacjacket opened this issue Feb 9, 2019 · 5 comments

Comments

@flacjacket
Copy link
Contributor

In qtile, we use cairocffi, and the tests have started to fail with

libqtile/drawer.py:33: in <module>
    import cairocffi
.tox/py36/lib/python3.6/site-packages/cairocffi/__init__.py:17: in <module>
    from ._generated.ffi import ffi
E   ModuleNotFoundError: No module named 'cairocffi._generated.ffi'

The _generated folder that is built does not have a __init__.py generated in it, so I'm not sure how this is importable. Looking at it on my own machine, I get:

In [1]: import cairocffi

In [2]: cairocffi._generated
Out[2]: <module 'cairocffi._generated' (namespace)>

so the _generated is not a module.

@liZe
Copy link
Member

liZe commented Feb 11, 2019

The _generated folder that is built does not have a __init__.py generated in it, so I'm not sure how this is importable.

__init.py__ files are not mandatory since Python 3.3, so it shouldn't be a problem with 3.6. Is your cairocffi module installed with pip?

@flacjacket
Copy link
Contributor Author

It is installed in our tests via pip (see the our tox.ini), but we wind up with problems importing the module. See:
https://travis-ci.org/qtile/qtile/jobs/490956510

@liZe
Copy link
Member

liZe commented Feb 12, 2019

I've found where the problem comes from. You import cairocffi.ffi_build in libqtile/pango_ffi_build.py (called by scripts/ffibuild in tox.ini). Importing this module deletes the generated ffi modules.

You shouldn't import this module that's not part of the public API. But importing this module shouldn't delete the generated modules 😄. I'll try to find a solution for that.

@liZe liZe closed this as completed in 07802d7 Feb 12, 2019
@liZe
Copy link
Member

liZe commented Feb 12, 2019

@flacjacket It works now (at least for me).

Note for later: We won't distribute wheels anymore. As we need to compile ffi modules during the installation, it doesn't really make sense.

@flacjacket
Copy link
Contributor Author

Ah, thanks for the fix! We do rely on importing cairocffi.ffi_build to be able to build our pangocairo bindings, so I'm glad you could figure it out

netbsd-srcmastr referenced this issue in NetBSD/pkgsrc Apr 30, 2024
Version 1.7.0
.............

Released on 2024-04-27

* Drop Python 3.7 support, add Python 3.12 support
* `#221 <https://github.com/Kozea/cairocffi/pull/225>`_:
  Add environment variable to set folder where DLLs are installed on Windows
* `#225 <https://github.com/Kozea/cairocffi/pull/225>`_:
  Use Ruff instead of Flake8 and isort


Version 1.6.1
.............

Released on 2023-07-24

* `#217 <https://github.com/Kozea/cairocffi/issues/217>`_:
  Repair installation with PyInstaller


Version 1.6.0
.............

Released on 2023-06-12

**This version uses a new CFFI mode that may break your program.**

CairoCFFI now uses Flit for packaging and is also distributed as a Python
wheel.

Please test carefully and don’t hesitate to report issues before using it in
production.

* `#216 <https://github.com/Kozea/cairocffi/pull/216>`_:
  Use ABI-level in-line CFFI mode


Version 1.5.1
.............

Released on 2023-04-15

* `#212 <https://github.com/Kozea/cairocffi/issues/212>`_:
  Bring back XCB support during wheel generation


Version 1.5.0
.............

Released on 2023-03-17

* `#106 <https://github.com/Kozea/cairocffi/issues/106>`_,
  `#200 <https://github.com/Kozea/cairocffi/issues/200>`_:
  Fallback to manual PNG file creation on hardened systems
* `#210 <https://github.com/Kozea/cairocffi/pull/210>`_:
  Use pyproject.toml for packaging and remove other useless files


Version 1.4.0
.............

Released on 2022-09-23

* `#205 <https://github.com/Kozea/cairocffi/pull/205>`_:
  Use pikepdf to parse generated PDF
* `#171 <https://github.com/Kozea/cairocffi/pull/171>`_:
  Don’t use deprecated pytest-runner anymore


Version 1.3.0
.............

Released on 2021-10-04

* `2cd512d <https://github.com/Kozea/cairocffi/commit/2cd512d>`_:
  Drop Python 3.6 support
* `#196 <https://github.com/Kozea/cairocffi/pull/196>`_:
  Fix import `constants.py` import
* `#169 <https://github.com/Kozea/cairocffi/pull/169>`_:
  Add extra library name "cairo-2.dll"
* `#178 <https://github.com/Kozea/cairocffi/pull/178>`_:
  Workaround for testing date string with cairo 1.17.4
* `#186 <https://github.com/Kozea/cairocffi/pull/186>`_:
  Fix link in documentation
* `#195 <https://github.com/Kozea/cairocffi/pull/195>`_:
  Fix typo in documentation
* `#184 <https://github.com/Kozea/cairocffi/pull/184>`_,
  `a4fc2a7 <https://github.com/Kozea/cairocffi/commit/a4fc2a7>`_:
  Clean .gitignore


Version 1.2.0
.............

Released on 2020-10-29

* `#152 <https://github.com/Kozea/cairocffi/pull/152>`_:
  Add NumPy support
* `#143 <https://github.com/Kozea/cairocffi/issues/143>`_:
  Make write_to_png function work on hardened systems
* `#156 <https://github.com/Kozea/cairocffi/pull/156>`_:
  Use major version name to open shared libraries
* `#165 <https://github.com/Kozea/cairocffi/pull/165>`_:
  Don’t list setuptools as required for installation


Version 1.1.0
.............

Released on 2019-09-05

* `#135 <https://github.com/Kozea/cairocffi/pull/135>`_,
  `#127 <https://github.com/Kozea/cairocffi/pull/127>`_,
  `#119 <https://github.com/Kozea/cairocffi/pull/119>`_:
  Clean the way external libraries are found
* `#126 <https://github.com/Kozea/cairocffi/pull/126>`_:
  Remove const char* elements from cdef
* Support Cairo features up to 1.17.2
* Fix documentation generation


Version 1.0.2
.............

Released on 2019-02-15

* `#123 <https://github.com/Kozea/cairocffi/issues/123>`_:
  Rely on a recent version of setuptools to handle VERSION


Version 1.0.1
.............

Released on 2019-02-12

* `#120 <https://github.com/Kozea/cairocffi/issues/120>`_:
  Don't delete _generated modules on ffi_build import


Version 1.0.0
.............

Released on 2019-02-08

6 years after its first release, cairocffi can now be considered as stable.

* Drop Python 2.6, 2.7 and 3.4 support
* Test with Python 3.7
* Clean code, tests and packaging
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants