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

Tests should pass on Windows #821

Closed
liZe opened this issue Mar 10, 2019 · 76 comments
Closed

Tests should pass on Windows #821

liZe opened this issue Mar 10, 2019 · 76 comments
Labels
Milestone

Comments

@liZe
Copy link
Member

@liZe liZe commented Mar 10, 2019

I've open a branch dedicated for tests on Windows: travis-windows. Thanks to the amazing work of @Tontyna for #587, only 3 tests don't pass:

The third one is easy to understand: the fonts included in this Windows flavor (Windows Server, version 1803) probably don't include a condensed variant, we should try to update SANS_FONT. The first one can be complicated. The second one is a mystery.

@liZe liZe added the feature label Mar 10, 2019
@liZe
Copy link
Member Author

@liZe liZe commented Mar 10, 2019

Recent versions of Windows server don't include Arial Narrow according to the official list.

liZe added a commit that referenced this issue Mar 10, 2019
Related to #821.
@liZe
Copy link
Member Author

@liZe liZe commented Mar 10, 2019

Oh, and we get random crashes 😢

@liZe
Copy link
Member Author

@liZe liZe commented Mar 10, 2019

Installing DejaVu seems to fix the 3 tests, but the build hangs. I'll try another build.

@Tontyna
Copy link
Contributor

@Tontyna Tontyna commented Mar 10, 2019

Can we know which script or batch or shell or whatever doesnt stop? choco? powershell? msys? py? The PATH doesn't count as a secret, doesnt it?

@Tontyna
Copy link
Contributor

@Tontyna Tontyna commented Mar 10, 2019

BTW: I'm used to see semicolons as path delimiters on Windows. Though it seems to work, export "PATH=$PATH:C:\tools\msys64\mingw64\bin" looks strange to me...

@Tontyna
Copy link
Contributor

@Tontyna Tontyna commented Mar 10, 2019

I recollect that it's extremely important to terminate the initial msys shell by killing it via the red cross close button of the window, cf. the warning in the log of choco install msys2. There's no sign of termination, looks like choco starts the system upgrade right away.

@liZe
Copy link
Member Author

@liZe liZe commented Mar 10, 2019

The PATH doesn't count as a secret, doesnt it?

It doesn't, but as we have company-wide secret variables, I can try to disable this.

BTW: I'm used to see semicolons as path delimiters on Windows. Though it seems to work, export "PATH=$PATH:C:\tools\msys64\mingw64\bin" looks strange to me...

I can change that.

Can we know which script or batch or shell or whatever doesnt stop? choco? powershell? msys? py?

No idea. What's strange is that builds used to finish.

@Tontyna
Copy link
Contributor

@Tontyna Tontyna commented Mar 10, 2019

Had a brief glance at the travis builds and got the impression that the "No output has been received in the last 10m0s" happens since build 1183 aka "Try to install msys2 with chocolatey"

@liZe
Copy link
Member Author

@liZe liZe commented Mar 11, 2019

It doesn't, but as we have company-wide secret variables, I can try to disable this.

It doesn't work.

Had a brief glance at the travis builds and got the impression that the "No output has been received in the last 10m0s" happens since build 1183 aka "Try to install msys2 with chocolatey"

Yes, that's what I've found too. No idea why.

@Tontyna
Copy link
Contributor

@Tontyna Tontyna commented Mar 11, 2019

@Tontyna
Copy link
Contributor

@Tontyna Tontyna commented Mar 11, 2019

Looks like `"/NoUpdate"`` doesnt prevent the system upgrade.

BTW: WeasyPrint doesn't require MSYS2 -- it's just a convenient (?) way to retrieve the latest DLLs and accessories. Is there a way to bypass MSYS and just unpack zipped GTK3 packages?

@liZe
Copy link
Member Author

@liZe liZe commented Mar 11, 2019

Looks like `"/NoUpdate"`` doesnt prevent the system upgrade.

Yes, and that's strange.

BTW: WeasyPrint doesn't require MSYS2 -- it's just a convenient (?) way to retrieve the latest DLLs and accessories. Is there a way to bypass MSYS and just unpack zipped GTK3 packages?

I'd like to stay as close as possible to one of the documented ways to install WeasyPrint. As the GTK+ installer seems to be an interactive wizard, it's probably more simple to use MSYS2.

I'll try to download MSYS2 instead of installing it with chocolatey, that's what I used to do by the way.

@Tontyna
Copy link
Contributor

@Tontyna Tontyna commented Mar 11, 2019

OMG, msys really wants this system upgrade...

@liZe
Copy link
Member Author

@liZe liZe commented Mar 11, 2019

OMG, msys really wants this system upgrade...

Well, I've done this manually as upgrading is the "right" way to do according to the documentation. Using --noconfirm --ask 20 should work. If it doesn't, I'll remove the update 👼.

@liZe
Copy link
Member Author

@liZe liZe commented Mar 11, 2019

Oh. Segmentation fault + the build hangs.

@Tontyna
Copy link
Contributor

@Tontyna Tontyna commented Mar 11, 2019

I see...

Maybe staying with choco install msys2 and issuing a taskkill /im C:\tools\msys64\msys2.exe afterwards could do the trick?

@Tontyna
Copy link
Contributor

@Tontyna Tontyna commented Mar 11, 2019

... or whatever task needs to be killed ...

@Tontyna
Copy link
Contributor

@Tontyna Tontyna commented Mar 11, 2019

The task to kill is probably C:\tools\msys64\usr\bin\bash.exe

@liZe
Copy link
Member Author

@liZe liZe commented Mar 11, 2019

@Tontyna
Copy link
Contributor

@Tontyna Tontyna commented Mar 11, 2019

🎉 👍 🎉 👍 🎉 👍

Will --ask 20 stay with us?

@liZe
Copy link
Member Author

@liZe liZe commented Mar 11, 2019

Less than 9 minutes is much better than 15~20 minutes. I think that we can forget the system upgrade.

I now have to clean this and include the change in master.

Will --ask 20 stay with us?

I don't think it's needed, I'll try to remove it.

Thanks a lot for your hard work, I sincerely didn't think that tests would ever pass on Windows. Having now tests passing on CI is unbelievable. I just wanted to clean branches during the weekend and didn't want to remove travis-window before one last attempt…

@Tontyna
Copy link
Contributor

@Tontyna Tontyna commented Mar 11, 2019

I'd like to stay as close as possible to one of the documented ways to install WeasyPrint.

The (slightly modified) commands from the travis-for-windows yml could become the third way to install WeasyPrint -- at least for people having 7z, the wget part can be done with powershell.

@liZe
Copy link
Member Author

@liZe liZe commented Mar 11, 2019

The (slightly modified) commands from the travis-for-windows yml could become the third way to install WeasyPrint -- at least for people having 7z, the wget part can be done with powershell.

You're right. I'm trying to clean the commands.

Using chocolatey to install Python + MSYS2 is not a bad idea, don't you think? There's even a one-liner available to install it from cmd.exe or powershell.

I've allowed features because of frequent segmentation faults. Do you get them too on your system?

Last question: I can't launch tests with py setup.py test because Python doesn't find setuptools (and other modules I think). Do you have an idea why?

@Tontyna
Copy link
Contributor

@Tontyna Tontyna commented Mar 11, 2019

Using chocolatey to install Python + MSYS2 is not a bad idea

If chocolatey was a standard/widespread tool. Me myself refused to install it, forgot why I didn't like it 😬

Until now I experienced no segfaults, but I'm launching test via setup.py.

The answer to your last question is "Yes", to provide a solution I'll have to setup an environment that's similar to the one on travis -- will do that this evening, must leave for office now...

@Tontyna
Copy link
Contributor

@Tontyna Tontyna commented Mar 11, 2019

Some things I'm pondering on:

  • The msys installation still prompts for "kill the shell"

  • What (and where) is py?

  • By instaling gtk3 via msys2, we install another Python, including a python3.exe in the C:\msys64\mingw64\bin folder we inject into the PATH. But AFAIK no pip.exe and no python.exe.

  • I don't know how choco does its job en detail, but in the installation log it tells us:

    Environment Vars (like PATH) have changed. Close/reopen your shell to see the changes (or in powershell/cmd.exe just type refreshenv).

    Since the pip commands work this might be no problem. And once the Python executable is found the PATH doesnt matter (besides for finding our beloved Cairo etc.)

  • On Windows, there is a python.exe in the Python3 root, so env: PYTHON=python is worth a try.

  • Nevertheless: Both Pythons, whether msys or choco, updated or not updated, come with setuptools in their site-packages folder. Finding or not finding a module is a question of being in Python's sys.path, special effort is required to exclude the site-packages from the sys.path -- so I'm asking again: What is py?

Won't be able to create a local environment like the one on Travis to reproduce the failures. The only means to find out what Travis is suffering from is putting investigative commands into travis.yml.

@liZe
Copy link
Member Author

@liZe liZe commented Mar 11, 2019

  • What (and where) is py?

I don't know. The official Python documentation uses py too, and it seems to be normal for everyone.

  • By instaling gtk3 via msys2, we install another Python, including a python3.exe in the C:\msys64\mingw64\bin folder we inject into the PATH. But AFAIK no pip.exe and no python.exe.

Good to know.

  • Since the pip commands work this might be no problem. And once the Python executable is found the PATH doesnt matter

I agree.

  • On Windows, there is a python.exe in the Python3 root, so env: PYTHON=python is worth a try.

I've already tried, but I think that it launches a Python (2?) version with no pip. I should try python3.

  • Nevertheless: Both Pythons, whether msys or choco, updated or not updated, come with setuptools in their site-packages folder. Finding or not finding a module is a question of being in Python's sys.path, special effort is required to exclude the site-packages from the sys.path -- so I'm asking again: What is py?

👽 (X-Files music)

Won't be able to create a local environment like the one on Travis to reproduce the failures. The only means to find out what Travis is suffering from is putting investigative commands into travis.yml.

I'll try to answer these questions soon.

@Tontyna
Copy link
Contributor

@Tontyna Tontyna commented Mar 11, 2019

We definitely need some commands that show the PATH resp. the location of our executables: a WHERE py, a WHERE pip-- extension not required.
When we know where pip is, we'll know where the Python executable is...

And I'd like to run a Python script echoing the sys.path.

@Tontyna
Copy link
Contributor

@Tontyna Tontyna commented Mar 11, 2019

I'd expected that python3 launches the MSYS Python, but obviously it doesn't...

🐑 🐑 🐑

@Tontyna
Copy link
Contributor

@Tontyna Tontyna commented Mar 11, 2019

Please somebody tell me why WHERE pip fails!?

Oh stupid me, there isn't a pip.exe! py -m pip executes the Python module in site-packages/pip

@liZe
Copy link
Member Author

@liZe liZe commented Mar 11, 2019

Oh no, only looked like it worked

Did you see it work too once?

@Tontyna
Copy link
Contributor

@Tontyna Tontyna commented Mar 11, 2019

Did you see it work too once?

No. Not really. Was an imagination, probably wishful thinking

@Tontyna
Copy link
Contributor

@Tontyna Tontyna commented Mar 11, 2019

Another oddity: The "language: C++" in our windows builds? I recall that I read something somewhere about virtual environments that Travis provides for "language: python". Maybe, maybe, maybe?

@Tontyna
Copy link
Contributor

@Tontyna Tontyna commented Mar 11, 2019

Besides the question why pytest was able to find/install cairocffi etc. but setuptools organizes eggs -- am I right that e.g. cairocffi via pip comes with precompiled binaries (wheel) but the eggs need a compiler?

@liZe
Copy link
Member Author

@liZe liZe commented Mar 11, 2019

No. Not really. Was an imagination, probably wishful thinking

Then I'm really, really tired…

@Tontyna
Copy link
Contributor

@Tontyna Tontyna commented Mar 12, 2019

No more ideas, too. Maybe tomorrow...

@liZe
Copy link
Member Author

@liZe liZe commented Mar 12, 2019

Another oddity: The "language: C++" in our windows builds? I recall that I read something somewhere about virtual environments that Travis provides for "language: python". Maybe, maybe, maybe?

It's not supported for Windows. At least MacOS images provide a "generic" language, but Windows forces to pick one at random.

Besides the question why pytest was able to find/install cairocffi etc. but setuptools organizes eggs -- am I right that e.g. cairocffi via pip comes with precompiled binaries (wheel) but the eggs need a compiler?

Pytest is not able to find dependencies, I had to call python -m pip install . to install them before calling pytest.

When setup.py is called, it doesn't use pip to install dependencies, it uses the old easy_install / distutils mix based on eggs (built from sources during installation), a kind of deprecated package format. Why? Because Pip (and even setuptools) isn't included in the standard library.

Pip is able to install wheels, another (more recent) package format where everything is supposed to be compiled. BUT. As cairocffi needs to be linked to cairo at install time, providing a wheel for cairocffi is not a good idea, that's why only sources are provided.

Why does this fail on Windows? We'll find out tomorrow. Have a good night! 🌔 🐑

@Tontyna
Copy link
Contributor

@Tontyna Tontyna commented Mar 12, 2019

Did you see it work too once?

I did! I did! In build 1223: Try something else, where PYTHON=/c/Python37/python was introduced. The verbose "$PYTHON -v setup.py test" failed (reason for failing not logged), but The command "$PYTHON setup.py test" exited with 0.

In the next commit "Finally fix the script part" you removed the verbose command and the non-verbose "$PYTHON setup.py test" fails, reason seems to be: Access is denied, yepp, that's the error we get in all subsequent commits:

error: [WinError 5] Access is denied: 'C:\\Users\\travis\\AppData\\Local\\Temp\\easy_install-j_bsvg3m\\cairocffi-1.0.2\\.eggs\\cffi-1.12.2-py3.7-win-amd64.egg\\_cffi_backend.cp37-win_amd64.pyd'

Get the impression that in "Try something else" the (first, dummy) verbose command prepared/unpacked/installed fine until cairocffi collapsed due to missing access rights.
The second call to setup.py had cairocffi (and the requirements for cairocffi and the right to access them) in place and was able to continue with the (unproblematic) installation of the remaining requirements.

I recall having the same phenomenon in a MSYS shell -- was unable to install all requirements for WeasyPrint in one go/one Python session, packages that require pycs (pycparser, cairocffi) interrupted, but could be installed manually/step by step/by repeating.

@liZe
Copy link
Member Author

@liZe liZe commented Mar 12, 2019

I did! I did!

Of course WE DID!

Get the impression that in "Try something else" the (first, dummy) verbose command prepared/unpacked/installed fine until cairocffi collapsed due to missing access rights.
The second call to setup.py had cairocffi (and the requirements for cairocffi and the right to access them) in place and was able to continue with the (unproblematic) installation of the remaining requirements.

I agree.

I've read somewhere that upgrading cffi may help. Let's try.

@Tontyna
Copy link
Contributor

@Tontyna Tontyna commented Mar 12, 2019

WOW! 🎉

@Tontyna
Copy link
Contributor

@Tontyna Tontyna commented Mar 12, 2019

Being an inquisitive being I'd like to know:
Is there a build that logs the output of $PYTHON -c "import sys;print(sys.path)"where $PYTHON=py?
I'm wondering why py was able to pip install/update everything, including setuptools, but afterwards unable to find setuptools.
Actually I assume that using py and not /c/Python37/python is the recommended $PYTHON.
Yes, yes, it works now ... but ...

@liZe
Copy link
Member Author

@liZe liZe commented Mar 12, 2019

I've read somewhere that upgrading cffi may help. Let's try.

For the record: https://www.reddit.com/r/Python/comments/3bt1k3/pip_install_access_denied_on_windows/

WOW!

🎉

Is there a build that logs the output of $PYTHON -c "import sys;print(sys.path)"where $PYTHON=py?

https://travis-ci.org/Kozea/WeasyPrint/jobs/504928359

I'm wondering why py was able to pip install/update everything, including setuptools, but afterwards unable to find setuptools.

I'm wondering too…

@Tontyna
Copy link
Contributor

@Tontyna Tontyna commented Mar 12, 2019

Really strange:

  • py -m <module> ... uses the Python3 installed by chocolatey in /C/Python37
  • py -c "<commands>" ditto takes that Python3
  • py <scriptfile.py> decides to use the minimalist Python2 from chocolatey's MSYS-department

Don't know what a command line switch got to do witch such a weird behavior, but maybe if we decided to follow choco's advice and execute refreshenv ?

@liZe liZe closed this in b02602f Mar 12, 2019
@liZe liZe added this to the 46 milestone Mar 12, 2019
@liZe
Copy link
Member Author

@liZe liZe commented Mar 12, 2019

but maybe if we decided to follow choco's advice and execute refreshenv ?

I've tried, but it said that the command was unknown. Having bash instead of cmd or powershell makes things harder sometimes.

@liZe
Copy link
Member Author

@liZe liZe commented Mar 12, 2019

Until now I experienced no segfaults, but I'm launching test via setup.py.

It actually seems to solve the problem. Why? Another mystery.

@Tontyna
Copy link
Contributor

@Tontyna Tontyna commented Mar 12, 2019

And mysteries aren't meant to be explored, but exist to be humbly contemplated aka wait & see.

@Tontyna
Copy link
Contributor

@Tontyna Tontyna commented Mar 12, 2019

However. Voting for a backslash-free, bashy PATH:

  - if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then export "PATH=$PATH:/c/msys64/mingw64/bin"; fi

We can append our part as long as there is no OSError: dlopen() failed to load a library

@Tontyna
Copy link
Contributor

@Tontyna Tontyna commented Mar 12, 2019

I got it! I mean: I got what py.exe is and why it refused to find setuptools.
It's a tool to launch Python with the ability to "correctly select the most appropriate version of Python", says the doc. It's not on my system because I dont like launchers, especially launchers that go into C:\Windows, so I unchecked the corresponding checkmark during Python installation. And completely forgot about it.

I'm a notorious Windows user, but often I was longing for shebangs. Tonight, with py.exe my wish came true. The first line in setup.py looks like this:

#!/usr/bin/env python

No reason to curse, no reason to cry, no reason to complain. We got what we ordered. See PEP 397

Of course it's still a mystery to me how that shebang empowered py to detect "the most appropriate version of Python" in C:/ProgramData/chocolatey/lib/mingw/tools/install/mingw64, but obviously it did.

@liZe
Copy link
Member Author

@liZe liZe commented Mar 13, 2019

No reason to curse, no reason to cry, no reason to complain. We got what we ordered. See PEP 397

Oh 🙄. I would never have imagined something like this. When you understand that py.exe is a launcher and not an interpreter, everything makes sense. I couldn't help thinking that it's a really strange solution … until I realized that on my linux distribution (Gentoo), the linux executable is just a launcher choosing one of the versions of Python installed on the system. We may look very different, but we're all the same.

@Tontyna
Copy link
Contributor

@Tontyna Tontyna commented Mar 14, 2019

💣 segfault in Job 1233.5

We expected that, didnt we?

@liZe
Copy link
Member Author

@liZe liZe commented Mar 14, 2019

We expected that, didnt we?

At least it solves a mystery.

@Tontyna
Copy link
Contributor

@Tontyna Tontyna commented Mar 14, 2019

The advice given in docs.travis-ci is:

Fix the problem by clearing the cache or removing the cache key from your .travis.yml (you can add it back in a subsequent commit).

Any idea how to do that?

@liZe
Copy link
Member Author

@liZe liZe commented Mar 14, 2019

Any idea how to do that?

It seems that cache has to be set up manually and that we don't use it.

To be honest, I'm not that surprised to see WeasyPrint tests crash as I'm not sure that we do what we have to do concerning the C interfaces. I've already seen WeasyPrint crash on Linux on multithreaded environments. Cairo and Pango are said to be thread-safe, but I'm not sure that the way we use them is very safe. As Pytest shares imports and some configuration stuff through the whole testing suite, it's easy to meet race conditions creating random segmentation faults.

@Tontyna
Copy link
Contributor

@Tontyna Tontyna commented Mar 14, 2019

So let's forget about it? Until in real life #167 strikes again?

@liZe
Copy link
Member Author

@liZe liZe commented Mar 14, 2019

So let's forget about it? Until in real life #167 strikes again?

Exactly. If segmentation faults are too frequent, I'll mark Windows tests as not mandatory (as they used to be).

netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this issue Oct 9, 2019
Version 50
----------

Released on 2019-09-19.

New features:

* `#209 <https://github.com/Kozea/WeasyPrint/issues/209>`_:
  Make ``break-*`` properties work inside tables
* `#661 <https://github.com/Kozea/WeasyPrint/issues/661>`_:
  Make blocks with ``overflow: auto`` grow to include floating children

Bug fixes:

* `#945 <https://github.com/Kozea/WeasyPrint/issues/945>`_:
  Don't break pages between a list item and its marker
* `#727 <https://github.com/Kozea/WeasyPrint/issues/727>`_:
  Avoid tables lost between pages
* `#831 <https://github.com/Kozea/WeasyPrint/issues/831>`_:
  Ignore auto margins on flex containers
* `#923 <https://github.com/Kozea/WeasyPrint/issues/923>`_:
  Fix a couple of crashes when splitting a line twice
* `#896 <https://github.com/Kozea/WeasyPrint/issues/896>`_:
  Fix skip stack order when using a reverse flex direction

Contributors:

- grewn0uille
- Guillaume Ayoub

Version 49
----------

Released on 2019-09-11.

Performance:

* Speed and memory use have been largely improved.

New features:

* `#700 <https://github.com/Kozea/WeasyPrint/issues/700>`_:
  Handle ``::marker`` pseudo-selector
* `135dc06c <https://github.com/Kozea/WeasyPrint/commit/135dc06c>`_:
  Handle ``recto`` and ``verso`` parameters for page breaks
* `#907 <https://github.com/Kozea/WeasyPrint/pull/907>`_:
  Provide a clean way to build layout contexts

Bug fixes:

* `#937 <https://github.com/Kozea/WeasyPrint/issues/937>`_:
  Fix rendering of tables with empty lines and rowspans
* `#897 <https://github.com/Kozea/WeasyPrint/issues/897>`_:
  Don't crash when small columns are wrapped in absolute blocks
* `#913 <https://github.com/Kozea/WeasyPrint/issues/913>`_:
  Fix a test about gradient colors
* `#924 <https://github.com/Kozea/WeasyPrint/pull/924>`_:
  Fix title for document with attachments
* `#917 <https://github.com/Kozea/WeasyPrint/issues/917>`_:
  Fix tests with Pango 1.44
* `#919 <https://github.com/Kozea/WeasyPrint/issues/919>`_:
  Fix padding and margin management for column flex boxes
* `#901 <https://github.com/Kozea/WeasyPrint/issues/901>`_:
  Fix width of replaced boxes with no intrinsic width
* `#906 <https://github.com/Kozea/WeasyPrint/issues/906>`_:
  Don't respect table cell width when content doesn't fit
* `#927 <https://github.com/Kozea/WeasyPrint/pull/927>`_:
  Don't use deprecated ``logger.warn`` anymore
* `a8662794 <https://github.com/Kozea/WeasyPrint/commit/a8662794>`_:
  Fix margin collapsing between caption and table wrapper
* `87d9e84f <https://github.com/Kozea/WeasyPrint/commit/87d9e84f>`_:
  Avoid infinite loops when rendering columns
* `789b80e6 <https://github.com/Kozea/WeasyPrint/commit/789b80e6>`_:
  Only use in flow children to set columns height
* `615e298a <https://github.com/Kozea/WeasyPrint/commit/615e298a>`_:
  Don't include floating elements each time we try to render a column
* `48d8632e <https://github.com/Kozea/WeasyPrint/commit/48d8632e>`_:
  Avoid not in flow children to compute column height
* `e7c452ce <https://github.com/Kozea/WeasyPrint/commit/e7c452ce>`_:
  Fix collapsing margins for columns
* `fb0887cf <https://github.com/Kozea/WeasyPrint/commit/fb0887cf>`_:
  Fix crash when using currentColor in gradients
* `f66df067 <https://github.com/Kozea/WeasyPrint/commit/f66df067>`_:
  Don't crash when using ex units in word-spacing in letter-spacing
* `c790ff20 <https://github.com/Kozea/WeasyPrint/commit/c790ff20>`_:
  Don't crash when properties needing base URL use var functions
* `d63eac31 <https://github.com/Kozea/WeasyPrint/commit/d63eac31>`_:
  Don't crash with object-fit: non images with no intrinsic size

Documentation:

* `#900 <https://github.com/Kozea/WeasyPrint/issues/900>`_:
  Add documentation about semantic versioning
* `#692 <https://github.com/Kozea/WeasyPrint/issues/692>`_:
  Add a snippet about PDF magnification
* `#899 <https://github.com/Kozea/WeasyPrint/pull/899>`_:
  Add .NET wrapper link
* `#893 <https://github.com/Kozea/WeasyPrint/pull/893>`_:
  Fixed wrong nested list comprehension example
* `#902 <https://github.com/Kozea/WeasyPrint/pull/902>`_:
  Add ``state`` to the ``make_bookmark_tree`` documentation
* `#921 <https://github.com/Kozea/WeasyPrint/pull/921>`_:
  Fix typos in the documentation
* `#328 <https://github.com/Kozea/WeasyPrint/issues/328>`_:
  Add CSS sample for forms

Contributors:

- grewn0uille
- Guillaume Ayoub
- Raphael Gaschignard
- Stani
- Szmen
- Thomas Dexter
- Tontyna

Version 48
----------

Released on 2019-07-08.

Dependencies:

* CairoSVG 2.4.0+ is now needed

New features:

* `#891 <https://github.com/Kozea/WeasyPrint/pull/891>`_:
  Handle ``text-overflow``
* `#878 <https://github.com/Kozea/WeasyPrint/pull/878>`_:
  Handle ``column-span``
* `#855 <https://github.com/Kozea/WeasyPrint/pull/855>`_:
  Handle all the ``text-decoration`` features
* `#238 <https://github.com/Kozea/WeasyPrint/issues/238>`_:
  Don't repeat background images when it's not needed
* `#875 <https://github.com/Kozea/WeasyPrint/issues/875>`_:
  Handle ``object-fit`` and ``object-position``
* `#870 <https://github.com/Kozea/WeasyPrint/issues/870>`_:
  Handle ``bookmark-state``

Bug fixes:

* `#686 <https://github.com/Kozea/WeasyPrint/issues/686>`_:
  Fix column balance when children are not inline
* `#885 <https://github.com/Kozea/WeasyPrint/issues/885>`_:
  Actually use the content box to resolve flex items percentages
* `#867 <https://github.com/Kozea/WeasyPrint/issues/867>`_:
  Fix rendering of KaTeX output, including (1) set row baseline of tables when
  no cells are baseline-aligned, (2) set baseline for inline tables, (3) don't
  align lines larger than their parents, (4) force CairoSVG to respect image
  size defined by CSS.
* `#873 <https://github.com/Kozea/WeasyPrint/issues/873>`_:
  Set a minimum height for empty list elements with outside marker
* `#811 <https://github.com/Kozea/WeasyPrint/issues/811>`_:
  Don't use translations to align flex items
* `#851 <https://github.com/Kozea/WeasyPrint/issues/851>`_,
  `#860 <https://github.com/Kozea/WeasyPrint/issues/860>`_:
  Don't cut pages when content overflows a very little bit
* `#862 <https://github.com/Kozea/WeasyPrint/issues/862>`_:
  Don't crash when using UTC dates in metadata

Documentation:

* `#854 <https://github.com/Kozea/WeasyPrint/issues/854>`_:
  Add a "Tips & Tricks" section

Contributors:

- Gabriel Corona
- Guillaume Ayoub
- Manuel Barkhau
- Nathan de Maestri
- grewn0uille
- theopeek

Version 47
----------

Released on 2019-04-12.

New features:

* `#843 <https://github.com/Kozea/WeasyPrint/pull/843>`_:
  Handle CSS variables
* `#846 <https://github.com/Kozea/WeasyPrint/pull/846>`_:
  Handle ``:nth()`` page selector
* `#847 <https://github.com/Kozea/WeasyPrint/pull/847>`_:
  Allow users to use a custom SSL context for HTTP requests

Bug fixes:

* `#797 <https://github.com/Kozea/WeasyPrint/issues/797>`_:
  Fix underlined justified text
* `#836 <https://github.com/Kozea/WeasyPrint/issues/836>`_:
  Fix crash when flex items are replaced boxes
* `#835 <https://github.com/Kozea/WeasyPrint/issues/835>`_:
  Fix ``margin-break: auto``

Version 46
----------

Released on 2019-03-20.

New features:

* `#771 <https://github.com/Kozea/WeasyPrint/issues/771>`_:
  Handle ``box-decoration-break``
* `#115 <https://github.com/Kozea/WeasyPrint/issues/115>`_:
  Handle ``margin-break``
* `#821 <https://github.com/Kozea/WeasyPrint/issues/821>`_:
  Continuous integration includes tests on Windows

Bug fixes:

* `#765 <https://github.com/Kozea/WeasyPrint/issues/765>`_,
  `#754 <https://github.com/Kozea/WeasyPrint/issues/754>`_,
  `#800 <https://github.com/Kozea/WeasyPrint/issues/800>`_:
  Fix many crashes related to the flex layout
* `#783 <https://github.com/Kozea/WeasyPrint/issues/783>`_:
  Fix a couple of crashes with strange texts
* `#827 <https://github.com/Kozea/WeasyPrint/pull/827>`_:
  Named strings and counters are case-sensitive
* `#823 <https://github.com/Kozea/WeasyPrint/pull/823>`_:
  Shrink min/max-height/width according to box-sizing
* `#728 <https://github.com/Kozea/WeasyPrint/issues/728>`_,
  `#171 <https://github.com/Kozea/WeasyPrint/issues/171>`_:
  Don't crash when fixed boxes are nested
* `#610 <https://github.com/Kozea/WeasyPrint/issues/610>`_,
  `#828 <https://github.com/Kozea/WeasyPrint/issues/828>`_:
  Don't crash when preformatted text lines end with a space
* `#808 <https://github.com/Kozea/WeasyPrint/issues/808>`_,
  `#387 <https://github.com/Kozea/WeasyPrint/issues/387>`_:
  Fix position of some images
* `#813 <https://github.com/Kozea/WeasyPrint/issues/813>`_:
  Don't crash when long preformatted text lines end with ``\n``

Documentation:

* `#815 <https://github.com/Kozea/WeasyPrint/pull/815>`_:
  Add documentation about custom ``url_fetcher``
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this issue Oct 18, 2019
Version 50
----------

Released on 2019-09-19.

New features:

* `#209 <https://github.com/Kozea/WeasyPrint/issues/209>`_:
  Make ``break-*`` properties work inside tables
* `#661 <https://github.com/Kozea/WeasyPrint/issues/661>`_:
  Make blocks with ``overflow: auto`` grow to include floating children

Bug fixes:

* `#945 <https://github.com/Kozea/WeasyPrint/issues/945>`_:
  Don't break pages between a list item and its marker
* `#727 <https://github.com/Kozea/WeasyPrint/issues/727>`_:
  Avoid tables lost between pages
* `#831 <https://github.com/Kozea/WeasyPrint/issues/831>`_:
  Ignore auto margins on flex containers
* `#923 <https://github.com/Kozea/WeasyPrint/issues/923>`_:
  Fix a couple of crashes when splitting a line twice
* `#896 <https://github.com/Kozea/WeasyPrint/issues/896>`_:
  Fix skip stack order when using a reverse flex direction

Contributors:

- grewn0uille
- Guillaume Ayoub

Version 49
----------

Released on 2019-09-11.

Performance:

* Speed and memory use have been largely improved.

New features:

* `#700 <https://github.com/Kozea/WeasyPrint/issues/700>`_:
  Handle ``::marker`` pseudo-selector
* `135dc06c <https://github.com/Kozea/WeasyPrint/commit/135dc06c>`_:
  Handle ``recto`` and ``verso`` parameters for page breaks
* `#907 <https://github.com/Kozea/WeasyPrint/pull/907>`_:
  Provide a clean way to build layout contexts

Bug fixes:

* `#937 <https://github.com/Kozea/WeasyPrint/issues/937>`_:
  Fix rendering of tables with empty lines and rowspans
* `#897 <https://github.com/Kozea/WeasyPrint/issues/897>`_:
  Don't crash when small columns are wrapped in absolute blocks
* `#913 <https://github.com/Kozea/WeasyPrint/issues/913>`_:
  Fix a test about gradient colors
* `#924 <https://github.com/Kozea/WeasyPrint/pull/924>`_:
  Fix title for document with attachments
* `#917 <https://github.com/Kozea/WeasyPrint/issues/917>`_:
  Fix tests with Pango 1.44
* `#919 <https://github.com/Kozea/WeasyPrint/issues/919>`_:
  Fix padding and margin management for column flex boxes
* `#901 <https://github.com/Kozea/WeasyPrint/issues/901>`_:
  Fix width of replaced boxes with no intrinsic width
* `#906 <https://github.com/Kozea/WeasyPrint/issues/906>`_:
  Don't respect table cell width when content doesn't fit
* `#927 <https://github.com/Kozea/WeasyPrint/pull/927>`_:
  Don't use deprecated ``logger.warn`` anymore
* `a8662794 <https://github.com/Kozea/WeasyPrint/commit/a8662794>`_:
  Fix margin collapsing between caption and table wrapper
* `87d9e84f <https://github.com/Kozea/WeasyPrint/commit/87d9e84f>`_:
  Avoid infinite loops when rendering columns
* `789b80e6 <https://github.com/Kozea/WeasyPrint/commit/789b80e6>`_:
  Only use in flow children to set columns height
* `615e298a <https://github.com/Kozea/WeasyPrint/commit/615e298a>`_:
  Don't include floating elements each time we try to render a column
* `48d8632e <https://github.com/Kozea/WeasyPrint/commit/48d8632e>`_:
  Avoid not in flow children to compute column height
* `e7c452ce <https://github.com/Kozea/WeasyPrint/commit/e7c452ce>`_:
  Fix collapsing margins for columns
* `fb0887cf <https://github.com/Kozea/WeasyPrint/commit/fb0887cf>`_:
  Fix crash when using currentColor in gradients
* `f66df067 <https://github.com/Kozea/WeasyPrint/commit/f66df067>`_:
  Don't crash when using ex units in word-spacing in letter-spacing
* `c790ff20 <https://github.com/Kozea/WeasyPrint/commit/c790ff20>`_:
  Don't crash when properties needing base URL use var functions
* `d63eac31 <https://github.com/Kozea/WeasyPrint/commit/d63eac31>`_:
  Don't crash with object-fit: non images with no intrinsic size

Documentation:

* `#900 <https://github.com/Kozea/WeasyPrint/issues/900>`_:
  Add documentation about semantic versioning
* `#692 <https://github.com/Kozea/WeasyPrint/issues/692>`_:
  Add a snippet about PDF magnification
* `#899 <https://github.com/Kozea/WeasyPrint/pull/899>`_:
  Add .NET wrapper link
* `#893 <https://github.com/Kozea/WeasyPrint/pull/893>`_:
  Fixed wrong nested list comprehension example
* `#902 <https://github.com/Kozea/WeasyPrint/pull/902>`_:
  Add ``state`` to the ``make_bookmark_tree`` documentation
* `#921 <https://github.com/Kozea/WeasyPrint/pull/921>`_:
  Fix typos in the documentation
* `#328 <https://github.com/Kozea/WeasyPrint/issues/328>`_:
  Add CSS sample for forms

Contributors:

- grewn0uille
- Guillaume Ayoub
- Raphael Gaschignard
- Stani
- Szmen
- Thomas Dexter
- Tontyna

Version 48
----------

Released on 2019-07-08.

Dependencies:

* CairoSVG 2.4.0+ is now needed

New features:

* `#891 <https://github.com/Kozea/WeasyPrint/pull/891>`_:
  Handle ``text-overflow``
* `#878 <https://github.com/Kozea/WeasyPrint/pull/878>`_:
  Handle ``column-span``
* `#855 <https://github.com/Kozea/WeasyPrint/pull/855>`_:
  Handle all the ``text-decoration`` features
* `#238 <https://github.com/Kozea/WeasyPrint/issues/238>`_:
  Don't repeat background images when it's not needed
* `#875 <https://github.com/Kozea/WeasyPrint/issues/875>`_:
  Handle ``object-fit`` and ``object-position``
* `#870 <https://github.com/Kozea/WeasyPrint/issues/870>`_:
  Handle ``bookmark-state``

Bug fixes:

* `#686 <https://github.com/Kozea/WeasyPrint/issues/686>`_:
  Fix column balance when children are not inline
* `#885 <https://github.com/Kozea/WeasyPrint/issues/885>`_:
  Actually use the content box to resolve flex items percentages
* `#867 <https://github.com/Kozea/WeasyPrint/issues/867>`_:
  Fix rendering of KaTeX output, including (1) set row baseline of tables when
  no cells are baseline-aligned, (2) set baseline for inline tables, (3) don't
  align lines larger than their parents, (4) force CairoSVG to respect image
  size defined by CSS.
* `#873 <https://github.com/Kozea/WeasyPrint/issues/873>`_:
  Set a minimum height for empty list elements with outside marker
* `#811 <https://github.com/Kozea/WeasyPrint/issues/811>`_:
  Don't use translations to align flex items
* `#851 <https://github.com/Kozea/WeasyPrint/issues/851>`_,
  `#860 <https://github.com/Kozea/WeasyPrint/issues/860>`_:
  Don't cut pages when content overflows a very little bit
* `#862 <https://github.com/Kozea/WeasyPrint/issues/862>`_:
  Don't crash when using UTC dates in metadata

Documentation:

* `#854 <https://github.com/Kozea/WeasyPrint/issues/854>`_:
  Add a "Tips & Tricks" section

Contributors:

- Gabriel Corona
- Guillaume Ayoub
- Manuel Barkhau
- Nathan de Maestri
- grewn0uille
- theopeek

Version 47
----------

Released on 2019-04-12.

New features:

* `#843 <https://github.com/Kozea/WeasyPrint/pull/843>`_:
  Handle CSS variables
* `#846 <https://github.com/Kozea/WeasyPrint/pull/846>`_:
  Handle ``:nth()`` page selector
* `#847 <https://github.com/Kozea/WeasyPrint/pull/847>`_:
  Allow users to use a custom SSL context for HTTP requests

Bug fixes:

* `#797 <https://github.com/Kozea/WeasyPrint/issues/797>`_:
  Fix underlined justified text
* `#836 <https://github.com/Kozea/WeasyPrint/issues/836>`_:
  Fix crash when flex items are replaced boxes
* `#835 <https://github.com/Kozea/WeasyPrint/issues/835>`_:
  Fix ``margin-break: auto``

Version 46
----------

Released on 2019-03-20.

New features:

* `#771 <https://github.com/Kozea/WeasyPrint/issues/771>`_:
  Handle ``box-decoration-break``
* `#115 <https://github.com/Kozea/WeasyPrint/issues/115>`_:
  Handle ``margin-break``
* `#821 <https://github.com/Kozea/WeasyPrint/issues/821>`_:
  Continuous integration includes tests on Windows

Bug fixes:

* `#765 <https://github.com/Kozea/WeasyPrint/issues/765>`_,
  `#754 <https://github.com/Kozea/WeasyPrint/issues/754>`_,
  `#800 <https://github.com/Kozea/WeasyPrint/issues/800>`_:
  Fix many crashes related to the flex layout
* `#783 <https://github.com/Kozea/WeasyPrint/issues/783>`_:
  Fix a couple of crashes with strange texts
* `#827 <https://github.com/Kozea/WeasyPrint/pull/827>`_:
  Named strings and counters are case-sensitive
* `#823 <https://github.com/Kozea/WeasyPrint/pull/823>`_:
  Shrink min/max-height/width according to box-sizing
* `#728 <https://github.com/Kozea/WeasyPrint/issues/728>`_,
  `#171 <https://github.com/Kozea/WeasyPrint/issues/171>`_:
  Don't crash when fixed boxes are nested
* `#610 <https://github.com/Kozea/WeasyPrint/issues/610>`_,
  `#828 <https://github.com/Kozea/WeasyPrint/issues/828>`_:
  Don't crash when preformatted text lines end with a space
* `#808 <https://github.com/Kozea/WeasyPrint/issues/808>`_,
  `#387 <https://github.com/Kozea/WeasyPrint/issues/387>`_:
  Fix position of some images
* `#813 <https://github.com/Kozea/WeasyPrint/issues/813>`_:
  Don't crash when long preformatted text lines end with ``\n``

Documentation:

* `#815 <https://github.com/Kozea/WeasyPrint/pull/815>`_:
  Add documentation about custom ``url_fetcher``
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
2 participants