<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>The Wombelix Post - Python</title><link href="https://dominik.wombacher.cc/" rel="alternate"/><link href="/feeds/tag_python.atom.xml" rel="self"/><id>https://dominik.wombacher.cc/</id><updated>2021-10-09T00:00:00+02:00</updated><entry><title>Release: MoinMoin Wiki Container, powered by PyPy2</title><link href="https://dominik.wombacher.cc/posts/release-moinmoin-wiki-container-powered-by-pypy2.html" rel="alternate"/><published>2021-10-09T00:00:00+02:00</published><updated>2021-10-09T00:00:00+02:00</updated><author><name>Dominik Wombacher</name></author><id>tag:dominik.wombacher.cc,2021-10-09:/posts/release-moinmoin-wiki-container-powered-by-pypy2.html</id><summary type="html">&lt;!-- SPDX-FileCopyrightText: 2023 Dominik Wombacher &lt;dominik@wombacher.cc&gt; --&gt;
&lt;!--  --&gt;
&lt;!-- SPDX-License-Identifier: CC-BY-SA-4.0 --&gt;
&lt;p&gt;Today I published the first version of &lt;strong&gt;moinmoin-pypy2-container&lt;/strong&gt;,
a ready to use image to run MoinMoin Wiki, based on openSUSE Leap.&lt;/p&gt;
&lt;p&gt;It contains some enhancements regarding the intial wiki setup  ... &lt;a class="read-more" href="/posts/release-moinmoin-wiki-container-powered-by-pypy2.html"&gt; [read more]&lt;/a&gt;&lt;/p&gt;</summary><content type="html">&lt;!-- SPDX-FileCopyrightText: 2023 Dominik Wombacher &lt;dominik@wombacher.cc&gt; --&gt;
&lt;!--  --&gt;
&lt;!-- SPDX-License-Identifier: CC-BY-SA-4.0 --&gt;
&lt;p&gt;Today I published the first version of &lt;strong&gt;moinmoin-pypy2-container&lt;/strong&gt;,
a ready to use image to run MoinMoin Wiki, based on openSUSE Leap.&lt;/p&gt;
&lt;p&gt;It contains some enhancements regarding the intial wiki setup to make it
easier to get started and already ships with a pre-configured nginx.&lt;/p&gt;
&lt;p&gt;Latest stable release of &lt;a class="reference external" href="https://moinmo.in"&gt;MoinMoin&lt;/a&gt;
was 8th November 2020 and requires Python 2, development of the successor
&lt;a class="reference external" href="https://github.com/moinwiki/moin"&gt;moin2&lt;/a&gt; is ongoing but wasn't released yet.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;moin2&lt;/strong&gt; supports Python 3, but there is still a lot to do and the Project could use some
&lt;a class="reference external" href="https://github.com/moinwiki/moin/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22"&gt;help&lt;/a&gt;,
what about a &lt;a class="reference external" href="https://github.com/moinwiki/moin/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22"&gt;good first issue&lt;/a&gt;?&lt;/p&gt;
&lt;p&gt;It might be that User still want to keep using the latest stable
release and wait with the migration for a while.&lt;/p&gt;
&lt;p&gt;Besides minor enhancements, the main goal of &lt;strong&gt;moinmoin-pypy2-container&lt;/strong&gt;
is to provide a easy to use alternative to keep using MoinMoin.&lt;/p&gt;
&lt;p&gt;The official Python 2 Runtime is &lt;a class="reference external" href="https://www.python.org/doc/sunset-python-2/"&gt;End-of-Life&lt;/a&gt;.
But PyPy will support Python 2 &lt;a class="reference external" href="https://doc.pypy.org/en/latest/faq.html#how-long-will-pypy-support-python2"&gt;&amp;quot;forever&amp;quot;&lt;/a&gt;
and still provide updates in future.&lt;/p&gt;
&lt;p&gt;Please check the &lt;strong&gt;README&lt;/strong&gt; in the below linked Source code Repository
for further details about the &lt;em&gt;features&lt;/em&gt; and &lt;em&gt;usage&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;The repository is available on
&lt;a class="reference external" href="https://codeberg.org/wombelix/moinmoin-pypy2-container"&gt;Codeberg&lt;/a&gt; (Primary),
&lt;a class="reference external" href="https://gitlab.com/wombelix/moinmoin-pypy2-container"&gt;Gitlab&lt;/a&gt; (Mirror),
&lt;a class="reference external" href="https://github.com/wombelix/moinmoin-pypy2-container"&gt;Github&lt;/a&gt; (Mirror).&lt;/p&gt;
&lt;p&gt;Pre-build Container Images can be downloaded from
&lt;a class="reference external" href="https://quay.io/repository/wombelix/moinmoin-pypy2?tab=info"&gt;quay.io&lt;/a&gt;.&lt;/p&gt;
</content><category term="Code"/><category term="MoinMoin"/><category term="Wiki"/><category term="Container"/><category term="PyPy"/><category term="Python"/><category term="openSUSE"/></entry><entry><title>Installing static site generator Pelican inclusive Plugins with pipx</title><link href="https://dominik.wombacher.cc/posts/installing-static-site-generator-pelican-inclusive-plugins-with-pipx.html" rel="alternate"/><published>2021-09-25T00:00:00+02:00</published><updated>2021-09-25T00:00:00+02:00</updated><author><name>Dominik Wombacher</name></author><id>tag:dominik.wombacher.cc,2021-09-25:/posts/installing-static-site-generator-pelican-inclusive-plugins-with-pipx.html</id><summary type="html">&lt;!-- SPDX-FileCopyrightText: 2023 Dominik Wombacher &lt;dominik@wombacher.cc&gt; --&gt;
&lt;!--  --&gt;
&lt;!-- SPDX-License-Identifier: CC-BY-SA-4.0 --&gt;
&lt;p&gt;Quick one, after re-installing my Notebook, I had to configure lot of things again and I wasn't happy with my earlier Python venv setup.&lt;/p&gt;
&lt;p&gt;I was taking a deeper look  ... &lt;a class="read-more" href="/posts/installing-static-site-generator-pelican-inclusive-plugins-with-pipx.html"&gt; [read more]&lt;/a&gt;&lt;/p&gt;</summary><content type="html">&lt;!-- SPDX-FileCopyrightText: 2023 Dominik Wombacher &lt;dominik@wombacher.cc&gt; --&gt;
&lt;!--  --&gt;
&lt;!-- SPDX-License-Identifier: CC-BY-SA-4.0 --&gt;
&lt;p&gt;Quick one, after re-installing my Notebook, I had to configure lot of things again and I wasn't happy with my earlier Python venv setup.&lt;/p&gt;
&lt;p&gt;I was taking a deeper look into pipx and I think that's way easier to use.
It just take care about a venv per package that I'm going to install, I don't have to take care about anything on my own.&lt;/p&gt;
&lt;p&gt;I tried it and after learning about the &lt;em&gt;inject&lt;/em&gt; feature, mentioned by
&lt;a class="reference external" href="https://github.com/getpelican/pelican/issues/2554#issuecomment-485136726"&gt;cs01 in a GitHub Issue&lt;/a&gt;
(Archive: &lt;a class="reference external" href="https://web.archive.org/web/20200920144105/https://github.com/getpelican/pelican/issues/2554"&gt;[1]&lt;/a&gt;,
&lt;a class="reference external" href="https://archive.today/2021.09.28-125020/https://github.com/getpelican/pelican/issues/2554"&gt;[2]&lt;/a&gt;)
it was no problem to install Pelican including some Plugins via pipx:&lt;/p&gt;
&lt;pre class="code text literal-block"&gt;
pipx install pelican
pipx inject pelican pelican-pdf
pipx inject pelican markdown
pipx inject pelican pelican-read-more

&lt;/pre&gt;
</content><category term="Misc"/><category term="Pelican"/><category term="Python"/><category term="pipx"/></entry><entry><title>pipx behave different than pip if package already exists</title><link href="https://dominik.wombacher.cc/posts/pipx-behave-different-than-pip-if-package-already-exists.html" rel="alternate"/><published>2021-09-23T00:00:00+02:00</published><updated>2021-09-23T00:00:00+02:00</updated><author><name>Dominik Wombacher</name></author><id>tag:dominik.wombacher.cc,2021-09-23:/posts/pipx-behave-different-than-pip-if-package-already-exists.html</id><summary type="html">&lt;!-- SPDX-FileCopyrightText: 2023 Dominik Wombacher &lt;dominik@wombacher.cc&gt; --&gt;
&lt;!--  --&gt;
&lt;!-- SPDX-License-Identifier: CC-BY-SA-4.0 --&gt;
&lt;p&gt;I decided to put as much as possible of my local config into an Ansible Playbook.
Makes it easier to track what I install and change, also to setup from  ... &lt;a class="read-more" href="/posts/pipx-behave-different-than-pip-if-package-already-exists.html"&gt; [read more]&lt;/a&gt;&lt;/p&gt;</summary><content type="html">&lt;!-- SPDX-FileCopyrightText: 2023 Dominik Wombacher &lt;dominik@wombacher.cc&gt; --&gt;
&lt;!--  --&gt;
&lt;!-- SPDX-License-Identifier: CC-BY-SA-4.0 --&gt;
&lt;p&gt;I decided to put as much as possible of my local config into an Ansible Playbook.
Makes it easier to track what I install and change, also to setup from scratch should it necessary.&lt;/p&gt;
&lt;p&gt;In the past I mainly used &lt;cite&gt;pip&lt;/cite&gt; in combination with &lt;cite&gt;venv&lt;/cite&gt; to install Python stuff.
Changing for most of it to &lt;cite&gt;pipx&lt;/cite&gt; seems logical, it will take care about the necessary &lt;em&gt;venvs&lt;/em&gt; on it's own.&lt;/p&gt;
&lt;p&gt;Just had to learn that the return code of &lt;cite&gt;pip&lt;/cite&gt; is &lt;strong&gt;0&lt;/strong&gt; but from &lt;cite&gt;pipx&lt;/cite&gt; it's &lt;strong&gt;1&lt;/strong&gt; in case a package already exists.&lt;/p&gt;
&lt;p&gt;Why does it matter? Not the most elegant solution but I decided to just use &lt;cite&gt;command&lt;/cite&gt; to trigger &lt;em&gt;pip&lt;/em&gt; / &lt;em&gt;pipx&lt;/em&gt; from my Playbook:&lt;/p&gt;
&lt;pre class="code yaml literal-block"&gt;
&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-nt"&gt;name&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;Python Package Installation (pip)&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nt"&gt;command&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-s"&gt;&amp;quot;python3&lt;/span&gt;&lt;span class="pygments-nv"&gt; &lt;/span&gt;&lt;span class="pygments-s"&gt;-m&lt;/span&gt;&lt;span class="pygments-nv"&gt; &lt;/span&gt;&lt;span class="pygments-s"&gt;pip&lt;/span&gt;&lt;span class="pygments-nv"&gt; &lt;/span&gt;&lt;span class="pygments-s"&gt;install&lt;/span&gt;&lt;span class="pygments-nv"&gt; &lt;/span&gt;&lt;span class="pygments-s"&gt;--user&lt;/span&gt;&lt;span class="pygments-nv"&gt; &lt;/span&gt;&lt;span class="pygments-s"&gt;{{&lt;/span&gt;&lt;span class="pygments-nv"&gt; &lt;/span&gt;&lt;span class="pygments-s"&gt;item&lt;/span&gt;&lt;span class="pygments-nv"&gt; &lt;/span&gt;&lt;span class="pygments-s"&gt;}}&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nt"&gt;changed_when&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;false&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nt"&gt;loop&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;pipx&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;nox&lt;/span&gt;&lt;span class="pygments-w"&gt;

&lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-nt"&gt;name&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;Python Package Installation (pipx)&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nt"&gt;command&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-s"&gt;&amp;quot;pipx&lt;/span&gt;&lt;span class="pygments-nv"&gt; &lt;/span&gt;&lt;span class="pygments-s"&gt;install&lt;/span&gt;&lt;span class="pygments-nv"&gt; &lt;/span&gt;&lt;span class="pygments-s"&gt;{{&lt;/span&gt;&lt;span class="pygments-nv"&gt; &lt;/span&gt;&lt;span class="pygments-s"&gt;item&lt;/span&gt;&lt;span class="pygments-nv"&gt; &lt;/span&gt;&lt;span class="pygments-s"&gt;}}&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nt"&gt;changed_when&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;false&lt;/span&gt;&lt;span class="pygments-w"&gt;
  &lt;/span&gt;&lt;span class="pygments-nt"&gt;loop&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;poetry&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;duplicity&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;pre-commit&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;No problem with &lt;cite&gt;pip&lt;/cite&gt;, but &lt;cite&gt;pipx&lt;/cite&gt; failed after the first run.&lt;/p&gt;
&lt;p&gt;There was an older &lt;a class="reference external" href="https://github.com/pypa/pipx/issues/125"&gt;GitHub Issue&lt;/a&gt;, based on the comments,
&lt;cite&gt;pipx&lt;/cite&gt; was supposed to behave smilar as &lt;cite&gt;pip&lt;/cite&gt; and also use return code 0 since v0.13 already.
After some research I found the &lt;a class="reference external" href="https://github.com/pypa/pipx/pull/560"&gt;Pull Request&lt;/a&gt;
that reverted the earlier change during some re-factoring.&lt;/p&gt;
&lt;p&gt;Thanks to the great improvements in that PR, it was just a very small change necessary to restore the
functionality introduced in &lt;a class="reference external" href="https://github.com/pypa/pipx/commit/11b853e9c6926b32133b27822516b2a5b4f35411"&gt;Commit 11b853e&lt;/a&gt;:&lt;/p&gt;
&lt;pre class="code diff literal-block"&gt;
&lt;span class="pygments-gh"&gt;diff --git a/docs/changelog.md b/docs/changelog.md&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gh"&gt;index 0a95ce15..67d14929 100644&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gd"&gt;--- a/docs/changelog.md&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+++ b/docs/changelog.md&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gu"&gt;&amp;#64;&amp;#64; -1,6 +1,7 &amp;#64;&amp;#64;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;dev&lt;span class="pygments-w"&gt;

 &lt;/span&gt;- Fixed `pipx list` output phrasing to convey that python version displayed is the one with which package was installed.&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+- Fixed `pipx install` to provide return code 0 if venv already exists, similar to pip’s behavior. (#736)&lt;/span&gt;&lt;span class="pygments-w"&gt;

 &lt;/span&gt;0.16.4&lt;span class="pygments-w"&gt;

&lt;/span&gt;&lt;span class="pygments-gh"&gt;diff --git a/src/pipx/constants.py b/src/pipx/constants.py&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gh"&gt;index 4fe2d58b..11fc013f 100644&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gd"&gt;--- a/src/pipx/constants.py&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+++ b/src/pipx/constants.py&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gu"&gt;&amp;#64;&amp;#64; -21,7 +21,7 &amp;#64;&amp;#64;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;# pipx shell exit codes&lt;span class="pygments-w"&gt;
 &lt;/span&gt;EXIT_CODE_OK = ExitCode(0)&lt;span class="pygments-w"&gt;
 &lt;/span&gt;EXIT_CODE_INJECT_ERROR = ExitCode(1)&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gd"&gt;-EXIT_CODE_INSTALL_VENV_EXISTS = ExitCode(1)&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+EXIT_CODE_INSTALL_VENV_EXISTS = ExitCode(0)&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;EXIT_CODE_LIST_PROBLEM = ExitCode(1)&lt;span class="pygments-w"&gt;
 &lt;/span&gt;EXIT_CODE_UNINSTALL_VENV_NONEXISTENT = ExitCode(1)&lt;span class="pygments-w"&gt;
 &lt;/span&gt;EXIT_CODE_UNINSTALL_ERROR = ExitCode(1)&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gh"&gt;diff --git a/tests/test_install.py b/tests/test_install.py&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gh"&gt;index 941f4c01..0eb2d9cc 100644&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gd"&gt;--- a/tests/test_install.py&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+++ b/tests/test_install.py&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gu"&gt;&amp;#64;&amp;#64; -109,7 +109,7 &amp;#64;&amp;#64; def test_install_no_packages_found(pipx_temp_env, capsys):&lt;/span&gt;&lt;span class="pygments-w"&gt;

 &lt;/span&gt;def test_install_same_package_twice_no_force(pipx_temp_env, capsys):&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    assert not run_pipx_cli([&amp;quot;install&amp;quot;, &amp;quot;pycowsay&amp;quot;])&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gd"&gt;-    assert run_pipx_cli([&amp;quot;install&amp;quot;, &amp;quot;pycowsay&amp;quot;])&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+    assert not run_pipx_cli([&amp;quot;install&amp;quot;, &amp;quot;pycowsay&amp;quot;])&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    captured = capsys.readouterr()&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    assert (&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;quot;'pycowsay' already seems to be installed. Not modifying existing installation&amp;quot;&lt;span class="pygments-w"&gt;
&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;Related Pull Request: &lt;a class="reference external" href="https://github.com/pypa/pipx/pull/736"&gt;https://github.com/pypa/pipx/pull/736&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Merged into &lt;cite&gt;pipx/main&lt;/cite&gt; on 25th September 2021&lt;/p&gt;
&lt;p&gt;That's a good example why I love and prefer Open Source, I could fix the Problem on my own and share the improvement with the community, within a few days it was already merged and will be part of the next Release.&lt;/p&gt;
</content><category term="Code"/><category term="Python"/><category term="Code"/><category term="pipx"/><category term="pip"/></entry><entry><title>Pelican Plugin: read-more</title><link href="https://dominik.wombacher.cc/posts/pelican-plugin-read-more.html" rel="alternate"/><published>2021-04-05T00:00:00+02:00</published><updated>2021-04-05T00:00:00+02:00</updated><author><name>Dominik Wombacher</name></author><id>tag:dominik.wombacher.cc,2021-04-05:/posts/pelican-plugin-read-more.html</id><summary type="html">&lt;!-- SPDX-FileCopyrightText: 2023 Dominik Wombacher &lt;dominik@wombacher.cc&gt; --&gt;
&lt;!--  --&gt;
&lt;!-- SPDX-License-Identifier: CC-BY-SA-4.0 --&gt;
&lt;p&gt;The read-more Pelican Plugin was the second one I helped to migrate to the &lt;a class="reference external" href="https://github.com/pelican-plugins"&gt;new Structure / GitHub Organization&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;After a specified length, it adds a &lt;em&gt;"read more"&lt;/em&gt; link the the  ... &lt;a class="read-more" href="/posts/pelican-plugin-read-more.html"&gt; [read more]&lt;/a&gt;&lt;/p&gt;</summary><content type="html">&lt;!-- SPDX-FileCopyrightText: 2023 Dominik Wombacher &lt;dominik@wombacher.cc&gt; --&gt;
&lt;!--  --&gt;
&lt;!-- SPDX-License-Identifier: CC-BY-SA-4.0 --&gt;
&lt;p&gt;The read-more Pelican Plugin was the second one I helped to migrate to the &lt;a class="reference external" href="https://github.com/pelican-plugins"&gt;new Structure / GitHub Organization&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;After a specified length, it adds a &lt;em&gt;&amp;quot;read more&amp;quot;&lt;/em&gt; link the the Posts Overview, you can see it on this Blog in action for example.&lt;/p&gt;
&lt;p&gt;The Configuration is very easy, the Plugin supports a few Parameter for your pelican.conf File.&lt;/p&gt;
&lt;p&gt;It can by installed by running &lt;code&gt;python -m pip install pelican-read-more&lt;/code&gt;, the Source is available on &lt;a class="reference external" href="https://github.com/pelican-plugins/read-more"&gt;https://github.com/pelican-plugins/read-more&lt;/a&gt;&lt;/p&gt;
</content><category term="Code"/><category term="Pelican"/><category term="Plugin"/><category term="Python"/></entry><entry><title>Proudly present: My first accepted Pull Request for Pelican</title><link href="https://dominik.wombacher.cc/posts/proudly-present-my-first-accepted-pull-request-for-pelican.html" rel="alternate"/><published>2021-03-03T00:00:00+01:00</published><updated>2021-03-03T00:00:00+01:00</updated><author><name>Dominik Wombacher</name></author><id>tag:dominik.wombacher.cc,2021-03-03:/posts/proudly-present-my-first-accepted-pull-request-for-pelican.html</id><summary type="html">&lt;!-- SPDX-FileCopyrightText: 2023 Dominik Wombacher &lt;dominik@wombacher.cc&gt; --&gt;
&lt;!--  --&gt;
&lt;!-- SPDX-License-Identifier: CC-BY-SA-4.0 --&gt;
&lt;p&gt;As already mentioned in my Post &lt;a class="reference external" href="https://dominik.wombacher.cc/posts/migration-from-wordpress-to-pelican.html"&gt;Migration from Wordpress to Pelican&lt;/a&gt;
the fact that Pelican is written in Python and provide a Plugin system was important for me. So I  ... &lt;a class="read-more" href="/posts/proudly-present-my-first-accepted-pull-request-for-pelican.html"&gt; [read more]&lt;/a&gt;&lt;/p&gt;</summary><content type="html">&lt;!-- SPDX-FileCopyrightText: 2023 Dominik Wombacher &lt;dominik@wombacher.cc&gt; --&gt;
&lt;!--  --&gt;
&lt;!-- SPDX-License-Identifier: CC-BY-SA-4.0 --&gt;
&lt;p&gt;As already mentioned in my Post &lt;a class="reference external" href="https://dominik.wombacher.cc/posts/migration-from-wordpress-to-pelican.html"&gt;Migration from Wordpress to Pelican&lt;/a&gt;
the fact that Pelican is written in Python and provide a Plugin system was important for me. So I can adjust the Code and also give
something back to the &lt;a class="reference external" href="https://www.getpelican.com"&gt;Pelican Community&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The Project is moving away from their &lt;a class="reference external" href="https://www.github.com/getpelican/pelican-plugins"&gt;monolithic Plugin Repository&lt;/a&gt; to a
separate &lt;a class="reference external" href="https://www.github.com/pelican-plugins/"&gt;Organization Namespace&lt;/a&gt; were every Plugin has it's own Repository and
get published to &lt;a class="reference external" href="https://www.pypi.org"&gt;PyPI&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Due to the fact that i wanted to use the &lt;a class="reference external" href="https://www.github.com/pelican-plugins/pdf"&gt;PDF Generator&lt;/a&gt; but it wasn't yet migrated,
i decided to &lt;a class="reference external" href="https://github.com/getpelican/pelican-plugins/issues/1328"&gt;contribute&lt;/a&gt;
(Archive: &lt;a class="reference external" href="https://web.archive.org/web/20210303101921/https://github.com/getpelican/pelican-plugins/issues/1328"&gt;[1]&lt;/a&gt;,
&lt;a class="reference external" href="https://archive.today/2021.03.03-101922/https://github.com/getpelican/pelican-plugins/issues/1328"&gt;[2]&lt;/a&gt;)
and assist with updating and migrating this Plugin.&lt;/p&gt;
&lt;p&gt;Today I proudly present: &lt;a class="reference external" href="https://github.com/pelican-plugins/pdf/pull/1"&gt;My first accepted Pull Request for Pelican (PDF Plugin)&lt;/a&gt;
(Archive: &lt;a class="reference external" href="https://web.archive.org/web/20210303100907/https://github.com/pelican-plugins/pdf/pull/1"&gt;[1]&lt;/a&gt;,
&lt;a class="reference external" href="https://archive.today/2021.03.03-100750/https://github.com/pelican-plugins/pdf/pull/1"&gt;[2]&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;There is still room for improvement and i'm working on further fixes and features, but it's a starting Point.&lt;/p&gt;
&lt;p&gt;You find at the bottom of every Article and Page a PDF Download Link, the linked PDF file was generated by the mentioned Plugin.&lt;/p&gt;
</content><category term="Code"/><category term="Pelican"/><category term="Python"/><category term="Contribution"/></entry></feed>