/usr/share/doc/python-attr/html/index.html is in python-attr-doc 17.4.0-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>attrs: Classes Without Boilerplate — attrs 17.4.0 documentation</title>
<link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: './',
VERSION: '17.4.0',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true,
SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="License and Credits" href="license.html" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
</head>
<body>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<div class="section" id="attrs-classes-without-boilerplate">
<h1><code class="docutils literal"><span class="pre">attrs</span></code>: Classes Without Boilerplate<a class="headerlink" href="#attrs-classes-without-boilerplate" title="Permalink to this headline">¶</a></h1>
<p>Release v17.4.0 (<a class="reference internal" href="changelog.html"><span class="doc">What’s new?</span></a>).</p>
<p><code class="docutils literal"><span class="pre">attrs</span></code> is the Python package that will bring back the <strong>joy</strong> of <strong>writing classes</strong> by relieving you from the drudgery of implementing object protocols (aka <a class="reference external" href="https://nedbatchelder.com/blog/200605/dunder.html">dunder</a> methods).</p>
<p>Its main goal is to help you to write <strong>concise</strong> and <strong>correct</strong> software without slowing down your code.</p>
<div class="section" id="getting-started">
<h2>Getting Started<a class="headerlink" href="#getting-started" title="Permalink to this headline">¶</a></h2>
<p><code class="docutils literal"><span class="pre">attrs</span></code> is a Python-only package <a class="reference external" href="https://pypi.org/project/attrs/">hosted on PyPI</a>.
The recommended installation method is <a class="reference external" href="https://pip.pypa.io/en/stable/">pip</a>-installing into a <a class="reference external" href="https://hynek.me/articles/virtualenv-lives/">virtualenv</a>:</p>
<div class="highlight-console"><div class="highlight"><pre><span></span><span class="gp">$</span> pip install attrs
</pre></div>
</div>
<p>The next three steps should bring you up and running in no time:</p>
<ul class="simple">
<li><a class="reference internal" href="overview.html"><span class="doc">Overview</span></a> will show you a simple example of <code class="docutils literal"><span class="pre">attrs</span></code> in action and introduce you to its philosophy.
Afterwards, you can start writing your own classes, understand what drives <code class="docutils literal"><span class="pre">attrs</span></code>’s design, and know what <code class="docutils literal"><span class="pre">@attr.s</span></code> and <code class="docutils literal"><span class="pre">attr.ib()</span></code> stand for.</li>
<li><a class="reference internal" href="examples.html"><span class="doc">attrs by Example</span></a> will give you a comprehensive tour of <code class="docutils literal"><span class="pre">attrs</span></code>’s features.
After reading, you will know about our advanced features and how to use them.</li>
<li>Finally <a class="reference internal" href="why.html"><span class="doc">Why not…</span></a> gives you a rundown of potential alternatives and why we think <code class="docutils literal"><span class="pre">attrs</span></code> is superior.
Yes, we’ve heard about <code class="docutils literal"><span class="pre">namedtuple</span></code>s!</li>
</ul>
<p>If you need any help while getting started, feel free to use the <code class="docutils literal"><span class="pre">python-attrs</span></code> tag on <a class="reference external" href="https://stackoverflow.com/questions/tagged/python-attrs">StackOverflow</a> and someone will surely help you out!</p>
</div>
<div class="section" id="day-to-day-usage">
<h2>Day-to-Day Usage<a class="headerlink" href="#day-to-day-usage" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>Once you’re comfortable with the concepts, our <a class="reference internal" href="api.html"><span class="doc">API Reference</span></a> contains all information you need to use <code class="docutils literal"><span class="pre">attrs</span></code> to its fullest.</li>
<li><code class="docutils literal"><span class="pre">attrs</span></code> is built for extension from the ground up.
<a class="reference internal" href="extending.html"><span class="doc">Extending</span></a> will show you the affordances it offers and how to make it a building block of your own projects.</li>
</ul>
</div>
<div class="section" id="testimonials">
<h2>Testimonials<a class="headerlink" href="#testimonials" title="Permalink to this headline">¶</a></h2>
<p><strong>Amber Hawkie Brown</strong>, Twisted Release Manager and Computer Owl:</p>
<blockquote>
<div>Writing a fully-functional class using attrs takes me less time than writing this testimonial.</div></blockquote>
<p><strong>Glyph Lefkowitz</strong>, creator of <a class="reference external" href="https://twistedmatrix.com/">Twisted</a>, <a class="reference external" href="https://pypi.python.org/pypi/Automat">Automat</a>, and other open source software, in <a class="reference external" href="https://glyph.twistedmatrix.com/2016/08/attrs.html">The One Python Library Everyone Needs</a>:</p>
<blockquote>
<div>I’m looking forward to is being able to program in Python-with-attrs everywhere.
It exerts a subtle, but positive, design influence in all the codebases I’ve see it used in.</div></blockquote>
<p><strong>Kenneth Reitz</strong>, author of <a class="reference external" href="http://www.python-requests.org/">requests</a>, Python Overlord at Heroku, <a class="reference external" href="https://twitter.com/hynek/status/866817877650751488">on paper no less</a>:</p>
<blockquote>
<div>attrs—classes for humans. I like it.</div></blockquote>
<p><strong>Łukasz Langa</strong>, prolific CPython core developer and Production Engineer at Facebook:</p>
<blockquote>
<div>I’m increasingly digging your attr.ocity. Good job!</div></blockquote>
</div>
<div class="section" id="getting-help">
<h2>Getting Help<a class="headerlink" href="#getting-help" title="Permalink to this headline">¶</a></h2>
<p>Please use the <code class="docutils literal"><span class="pre">python-attrs</span></code> tag on <a class="reference external" href="https://stackoverflow.com/questions/tagged/python-attrs">StackOverflow</a> to get help.</p>
<p>Answering questions of your fellow developers is also great way to help the project!</p>
</div>
<div class="section" id="project-information">
<h2>Project Information<a class="headerlink" href="#project-information" title="Permalink to this headline">¶</a></h2>
<p><code class="docutils literal"><span class="pre">attrs</span></code> is released under the <a class="reference external" href="https://choosealicense.com/licenses/mit/">MIT</a> license,
its documentation lives at <a class="reference external" href="http://www.attrs.org/">Read the Docs</a>,
the code on <a class="reference external" href="https://github.com/python-attrs/attrs">GitHub</a>,
and the latest release on <a class="reference external" href="https://pypi.org/project/attrs/">PyPI</a>.
It’s rigorously tested on Python 2.7, 3.4+, and PyPy.</p>
<p>If you’d like to contribute you’re most welcome and we’ve written <a class="reference external" href="http://www.attrs.org/en/latest/contributing.html">a little guide</a> to get you started!</p>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="license.html">License and Credits</a></li>
<li class="toctree-l1"><a class="reference internal" href="backward-compatibility.html">Backward Compatibility</a></li>
<li class="toctree-l1"><a class="reference internal" href="contributing.html">How To Contribute</a></li>
<li class="toctree-l1"><a class="reference internal" href="contributing.html#contributor-covenant-code-of-conduct">Contributor Covenant Code of Conduct</a></li>
<li class="toctree-l1"><a class="reference internal" href="changelog.html">Changelog</a></li>
</ul>
</div>
</div>
<hr class="docutils" />
<div class="section" id="full-table-of-contents">
<h2>Full Table of Contents<a class="headerlink" href="#full-table-of-contents" title="Permalink to this headline">¶</a></h2>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="overview.html">Overview</a><ul>
<li class="toctree-l2"><a class="reference internal" href="overview.html#philosophy">Philosophy</a></li>
<li class="toctree-l2"><a class="reference internal" href="overview.html#what-attrs-is-not">What <code class="docutils literal"><span class="pre">attrs</span></code> Is Not</a></li>
<li class="toctree-l2"><a class="reference internal" href="overview.html#on-the-attr-s-and-attr-ib-names">On the <code class="docutils literal"><span class="pre">attr.s</span></code> and <code class="docutils literal"><span class="pre">attr.ib</span></code> Names</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="why.html">Why not…</a><ul>
<li class="toctree-l2"><a class="reference internal" href="why.html#tuples">…tuples?</a></li>
<li class="toctree-l2"><a class="reference internal" href="why.html#namedtuples">…namedtuples?</a></li>
<li class="toctree-l2"><a class="reference internal" href="why.html#dicts">…dicts?</a></li>
<li class="toctree-l2"><a class="reference internal" href="why.html#hand-written-classes">…hand-written classes?</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="examples.html"><code class="docutils literal"><span class="pre">attrs</span></code> by Example</a><ul>
<li class="toctree-l2"><a class="reference internal" href="examples.html#basics">Basics</a></li>
<li class="toctree-l2"><a class="reference internal" href="examples.html#converting-to-collections-types">Converting to Collections Types</a></li>
<li class="toctree-l2"><a class="reference internal" href="examples.html#defaults">Defaults</a></li>
<li class="toctree-l2"><a class="reference internal" href="examples.html#validators">Validators</a></li>
<li class="toctree-l2"><a class="reference internal" href="examples.html#conversion">Conversion</a></li>
<li class="toctree-l2"><a class="reference internal" href="examples.html#metadata">Metadata</a></li>
<li class="toctree-l2"><a class="reference internal" href="examples.html#types">Types</a></li>
<li class="toctree-l2"><a class="reference internal" href="examples.html#slots">Slots</a></li>
<li class="toctree-l2"><a class="reference internal" href="examples.html#immutability">Immutability</a></li>
<li class="toctree-l2"><a class="reference internal" href="examples.html#other-goodies">Other Goodies</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="api.html">API Reference</a><ul>
<li class="toctree-l2"><a class="reference internal" href="api.html#core">Core</a></li>
<li class="toctree-l2"><a class="reference internal" href="api.html#helpers">Helpers</a></li>
<li class="toctree-l2"><a class="reference internal" href="api.html#validators">Validators</a></li>
<li class="toctree-l2"><a class="reference internal" href="api.html#converters">Converters</a></li>
<li class="toctree-l2"><a class="reference internal" href="api.html#deprecated-apis">Deprecated APIs</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="extending.html">Extending</a><ul>
<li class="toctree-l2"><a class="reference internal" href="extending.html#wrapping-the-decorator">Wrapping the Decorator</a></li>
<li class="toctree-l2"><a class="reference internal" href="extending.html#types">Types</a></li>
<li class="toctree-l2"><a class="reference internal" href="extending.html#metadata">Metadata</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="how-does-it-work.html">How Does It Work?</a><ul>
<li class="toctree-l2"><a class="reference internal" href="how-does-it-work.html#boilerplate">Boilerplate</a></li>
<li class="toctree-l2"><a class="reference internal" href="how-does-it-work.html#immutability">Immutability</a></li>
</ul>
</li>
</ul>
</div>
</div>
<div class="section" id="indices-and-tables">
<h2>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li><a class="reference internal" href="genindex.html"><span class="std std-ref">Index</span></a></li>
<li><a class="reference internal" href="search.html"><span class="std std-ref">Search Page</span></a></li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<p class="logo"><a href="#">
<img class="logo" src="_static/attrs_logo.svg" alt="Logo"/>
</a></p>
<h3><a href="#">Table Of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#"><code class="docutils literal"><span class="pre">attrs</span></code>: Classes Without Boilerplate</a><ul>
<li><a class="reference internal" href="#getting-started">Getting Started</a></li>
<li><a class="reference internal" href="#day-to-day-usage">Day-to-Day Usage</a></li>
<li><a class="reference internal" href="#testimonials">Testimonials</a></li>
<li><a class="reference internal" href="#getting-help">Getting Help</a></li>
<li><a class="reference internal" href="#project-information">Project Information</a></li>
<li><a class="reference internal" href="#full-table-of-contents">Full Table of Contents</a></li>
<li><a class="reference internal" href="#indices-and-tables">Indices and tables</a></li>
</ul>
</li>
</ul>
<div class="relations">
<h3>Related Topics</h3>
<ul>
<li><a href="#">Documentation overview</a><ul>
<li>Next: <a href="license.html" title="next chapter">License and Credits</a></li>
</ul></li>
</ul>
</div>
<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="search.html" method="get">
<div><input type="text" name="q" /></div>
<div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer">
©2018, Hynek Schlawack.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 1.6.7</a>
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.8</a>
</div>
</body>
</html>
|