<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>howto Archives - Creatronix</title>
	<atom:link href="https://creatronix.de/tag/howto/feed/" rel="self" type="application/rss+xml" />
	<link>https://creatronix.de/tag/howto/</link>
	<description>My adventures in code &#38; business</description>
	<lastBuildDate>Thu, 10 Feb 2022 11:47:04 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>What is python pbr?</title>
		<link>https://creatronix.de/what-is-python-pbr/</link>
		
		<dc:creator><![CDATA[Jörn]]></dc:creator>
		<pubDate>Mon, 15 Nov 2021 17:05:57 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[pbr]]></category>
		<category><![CDATA[pypi]]></category>
		<category><![CDATA[release]]></category>
		<category><![CDATA[setup]]></category>
		<category><![CDATA[setuptools]]></category>
		<category><![CDATA[tag]]></category>
		<category><![CDATA[tutorial]]></category>
		<guid isPermaLink="false">https://creatronix.de/?p=4076</guid>

					<description><![CDATA[<p>In Distributing your own package on PyPi I&#8217;ve talked about setuptools and twine to upload a package to the Python Package Index. PBR is a nice little add-on to simplify the setup and the deplyoment of your packages. PBR stands for Python Build Reasonableness and it is A library for managing setuptools packaging needs in&#8230;</p>
<p>The post <a href="https://creatronix.de/what-is-python-pbr/">What is python pbr?</a> appeared first on <a href="https://creatronix.de">Creatronix</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>In <a href="https://creatronix.de/distributing-your-own-package-on-pypi/">Distributing your own package on PyPi</a> I&#8217;ve talked about setuptools and twine to upload a package to the Python Package Index.</p>
<p>PBR is a nice little add-on to simplify the setup and the deplyoment of your packages.<span id="more-4076"></span></p>
<p>PBR stands for <a href="https://docs.openstack.org/pbr/latest/">Python Build Reasonableness</a></p>
<p>and it is</p>
<blockquote><p>A library for managing <em>setuptools</em> packaging needs in a consistent manner.</p></blockquote>
<p>in their own words.</p>
<h2>Installation</h2>
<pre>pip install pbr</pre>
<h2>setup.py</h2>
<p>The first thing we can optimize is the structure of the setup.py file:</p>
<pre><span class="kn">from</span> <span class="nn">setuptools</span> <span class="kn">import</span> <span class="n">setup</span>

<span class="n">setup</span><span class="p">(</span>
    <span class="n">setup_requires</span><span class="o">=</span><span class="p">[</span><span class="s1">'pbr'</span><span class="p">],</span>
    <span class="n">pbr</span><span class="o">=</span><span class="kc">True</span><span class="p">
)</span></pre>
<h2>pyproject.toml</h2>
<p>We need to add a pyproject.toml with the following content:</p>
<pre>[build-system]
requires = ["pbr&gt;=5.7.0", "setuptools&gt;=36.6.0", "wheel"]
build-backend = "pbr.build"</pre>
<h2>setup.cfg</h2>
<p>We also add a setup.cfg file which will contain the package metadata:</p>
<pre>[metadata]
name = easy_pattern
author = Joern Boegeholz
author-email = boegeholz.joern@gmail.com
summary = A Pseudo-DSL for Python RegEx
description-file = README.md
home-page = https://github.com/jboegeholz/easypattern
license = MIT
classifier =
    Development Status :: 4 - Beta
    Intended Audience :: Developers
    Intended Audience :: Information Technology
    License :: OSI Approved :: MIT License
    Operating System :: OS Independent
    Programming Language :: Python
keywords =
    tutorial

[files]
packages =
    easy_pattern</pre>
<p>classifier is a list of <a href="https://pypi.org/pypi?%3Aaction=list_classifiers">&#8220;trove classifiers&#8221;</a></p>
<h2>Build a release</h2>
<p>Tag the current version:</p>
<pre>git tag -am "Version 0.3.0" 0.3.0</pre>
<p>build the distribution</p>
<pre>python setup.py sdist</pre>
<p>under dist you will now find the release easy_pattern-0.3.0.tar.gz</p>
<h2>Conclusion</h2>
<h3>Pros</h3>
<ul>
<li>Automatically generates version from git tag</li>
<li>Creates changelog</li>
</ul>
<h3>Cons</h3>
<ul>
<li>YAD &#8211; yet another dependency &amp; YACF &#8211; yet another config file</li>
</ul>
<h2>Source Code</h2>
<p>https://github.com/jboegeholz/easypattern</p>
<h2>Further reading</h2>
<p><a href="https://docs.openstack.org/pbr/latest/user/using.html#setup-py">https://docs.openstack.org/pbr/latest/user/using.html#setup-py</a></p>
<p>&nbsp;</p>
<p>The post <a href="https://creatronix.de/what-is-python-pbr/">What is python pbr?</a> appeared first on <a href="https://creatronix.de">Creatronix</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
