Added simple doc examples and install info.

master
Michael P. Soulier 2010-07-14 13:28:53 -04:00
parent 74f6756671
commit e35cd2d60c
11 changed files with 298 additions and 174 deletions

358
ChangeLog
View File

@ -1,214 +1,244 @@
2010-05-10 Michael P. Soulier <msoulier@digitaltorque.ca>
* Fixing buffering issue in upload. Uploads work now.
* Updated README
* First working upload with new state machine. Not usable yet, upload fails to always send all data for some reason.
* Fixed an obvious error introduced with the dyn_file_func merge
2010-04-24 Michael P. Soulier <msoulier@digitaltorque.ca>
* Merge commit 'angry-elf/master' into merge
2010-07-12 Michael P. Soulier
74f6756: Playing with sphinx formatting
2010-02-18 Michael P. Soulier <msoulier@digitaltorque.ca>
* Taking patch from "Mike C. Fletcher" <mcfletch@vrplumber.com>, fixing a bad reference to dyn_func_file from a state object.
2010-07-11 Michael P. Soulier
1caa220: Latest doc updates
ad94976: Replacing epydoc output on website.
402b2ae: Adding initial Sphinx docs
2010-02-18 Alexey Loshkarev <elf2001@gmail.com>
* Fix dyn_file_func (was broken?) Fix error message (filename was not displayed)
2010-05-25 Michael P. Soulier
0b54068: Fixing typo in unit test
58623df: Adding support for input/output as stdin/stdout
2009-10-24 Michael P. Soulier <msoulier@digitaltorque.ca>
* Updated epydoc output for website.
2010-05-24 Michael P. Soulier
f4a3ff6: Fixing failure to set default blocksize if options were provided but blksize was not one of them.
2009-09-24 Michael P. Soulier <msoulier@digitaltorque.ca>
* Changed licenses to the MIT License
* Fixing some log messages and bad variable references.
2010-05-12 Patrick Oppenlander
1a2b556: fix incorrectly assigned state transition
360b0b9: fix divide by zero in speed calculation for short transfers
2009-08-18 Michael P. Soulier <msoulier@digitaltorque.ca>
* Updated resent_data in metrics.
* Fixed server metrics summary.
2010-05-10 Michael P. Soulier
3c40546: Updated site html formatting
9ed42a8: Website update
5f0e405: Updating notes
d4c15e1: Fixing the license in the setup.py
2f0c0db: Updated website
becb299: Updating metadata for 0.5.0 release
faebd44: Fixing buffering issue in upload. Uploads work now.
a071549: Updated README
2bb8326: First working upload with new state machine. Not usable yet, upload fails to always send all data for some reason.
4a4f53a: Fixed an obvious error introduced with the dyn_file_func merge
2009-08-16 Michael P. Soulier <msoulier@digitaltorque.ca>
* First successful download with both client and server.
* Did some rework for the state machine in a server context. Removed the handler framework in favour of a TftpContextServer used as the session.
* Fixing up some of the upload code.
2010-04-24 Michael P. Soulier
8a56d94: Merge commit 'angry-elf/master' into merge
2009-07-21 Michael P. Soulier <msoulier@digitaltorque.ca>
* Adding patch for dynamic content from Alex ? <yix@ya.ru>
2010-02-18 Michael P. Soulier
8343ccf: Taking patch from "Mike C. Fletcher" <mcfletch@vrplumber.com>, fixing a bad reference to dyn_func_file from a state object.
2009-04-10 Michael P. Soulier <msoulier@digitaltorque.ca>
* Fixing a merge error in rebase
* Fixed bug in tidport handling, and lack of OACK response.
* Fixing OACK handling with new state machine.
* Fixed TftpClient with new state machine.
* Started overhaul of state machine.
* Improving sample client output on error and fixing default blocksize when server ignores options.
* Merged upload patch.
2010-02-18 Alexey Loshkarev
72c4769: Fix dyn_file_func (was broken?) Fix error message (filename was not displayed)
2009-04-09 Michael P. Soulier <msoulier@digitaltorque.ca>
* Updating version in setup
2009-10-24 Michael P. Soulier
badf18f: Updated epydoc output for website.
2009-04-08 Michael P. Soulier <msoulier@digitaltorque.ca>
* Website update
2009-09-24 Michael P. Soulier
a80639c: Changed licenses to the MIT License
ce7fc32: Fixing some log messages and bad variable references.
2009-04-07 Michael P. Soulier <msoulier@digitaltorque.ca>
* Fixing bogus warnings in options handling.
* Merge branch 'master' of git@github.com:msoulier/tftpy
* Fixing tftproot configured for server as a relative path.
2009-08-18 Michael P. Soulier
781072b: Updated resent_data in metrics.
3ae3b31: Fixed server metrics summary.
2009-03-15 Michael P. Soulier <msoulier@digitaltorque.ca>
* Updated site with stylesheet
* Website update
2009-08-16 Michael P. Soulier
a6a18c1: First successful download with both client and server.
2009-03-14 Michael P. Soulier <msoulier@digitaltorque.ca>
* Adding website
2009-08-15 Michael P. Soulier
62b22fb: Did some rework for the state machine in a server context. Removed the handler framework in favour of a TftpContextServer used as the session.
2008-10-08 Michael P. Soulier <msoulier@digitaltorque.ca>
* Fixed the use of the tsize option in RRQ packets.
2009-06-20 Michael P. Soulier
03e4e74: Fixing up some of the upload code.
2008-10-05 Michael P. Soulier <msoulier@digitaltorque.ca>
* Rolling 0.4.6
2009-07-21 Michael P. Soulier
5ee5f63: Adding patch for dynamic content from Alex ? <yix@ya.ru>
2008-10-04 Michael P. Soulier <msoulier@digitaltorque.ca>
* Rebased tsize branch and added a --tsize option to the client. Now sending all packets to the progresshook, not just DAT packets, so that the client can see the OACK. Not yet making use of the returned tsize. Need to test this on a server that supports tsize.
* Adding transfer size option patch from Kuba Kończyk. Patch 2018609 in SF tracker.
2009-04-10 Michael P. Soulier
c61ca17: Fixing a merge error in rebase
410e14c: Fixed bug in tidport handling, and lack of OACK response.
874fef5: Fixing OACK handling with new state machine.
5072f6d: Fixed TftpClient with new state machine.
2008-10-03 Michael P. Soulier <msoulier@digitaltorque.ca>
* Merged from SVN trunk after register to PyPi
2009-04-08 Michael P. Soulier
e7a63bb: Started overhaul of state machine.
2008-10-04 msoulier <msoulier@63283fd4-ec1e-0410-9879-cb7f675518da>
* Updated for PyPi
2009-04-10 Michael P. Soulier
41bf3a2: Improving sample client output on error and fixing default blocksize when server ignores options.
bd2e195: Merged upload patch.
2008-07-30 Michael P. Soulier <msoulier@digitaltorque.ca>
* Adding upload patch from Lorenz Schori - patch 1897344 in SF tracker
2009-04-09 Michael P. Soulier
449f10a: Updating version in setup
2008-05-28 msoulier <msoulier@63283fd4-ec1e-0410-9879-cb7f675518da>
* Tagging 0.4.5.
* Updated for v0.4.5 release.
* Fix for bug 1967647, referencing self.sock instead of sock.
2009-04-08 Michael P. Soulier
40185e5: Website update
2008-05-20 msoulier <msoulier@63283fd4-ec1e-0410-9879-cb7f675518da>
* Fix for [ 1932310 ] security check always fail for windows.
* Fixed division by zero error in rate calculations in download function of client. Thanks to Stefaan Vanheesbeke for the report.
* Fix for bug [ 1932330 ] binary downloads fail in Windows.
2009-04-07 Michael P. Soulier
bc55a17: Fixing bogus warnings in options handling.
74c68b1: Merge branch 'master' of git@github.com:msoulier/tftpy
d058642: Fixing tftproot configured for server as a relative path.
2008-01-31 msoulier <msoulier@63283fd4-ec1e-0410-9879-cb7f675518da>
* Updated README.
* Updated ChangeLog
* Updating version to 0.4.4
2009-03-15 Michael P. Soulier
23b32d0: Updated site with stylesheet
0cfcea2: Website update
2007-12-16 msoulier <msoulier@63283fd4-ec1e-0410-9879-cb7f675518da>
* Fixing 1851544 - server not tolerant of unsupported options Thanks to Landon Jurgens for the report.
2009-03-14 Michael P. Soulier
abf0f1f: Adding website
2007-07-17 msoulier <msoulier@63283fd4-ec1e-0410-9879-cb7f675518da>
* Updated for 0.4.3 release.
2008-10-08 Michael P. Soulier
ca7a06a: Fixed the use of the tsize option in RRQ packets.
2007-07-16 msoulier <msoulier@63283fd4-ec1e-0410-9879-cb7f675518da>
* Removed redundant comparison.
* Fixing string/integer comparison. Thanks to Simon P. Ditner, bug #1755146.
2008-10-05 Michael P. Soulier
0a5df33: Rolling 0.4.6
2007-06-05 msoulier <msoulier@63283fd4-ec1e-0410-9879-cb7f675518da>
* Updated for 0.4.2
* Fixed unit test for factory
2008-10-04 Michael P. Soulier
07416bf: Rebased tsize branch and added a --tsize option to the client. Now sending all packets to the progresshook, not just DAT packets, so that the client can see the OACK. Not yet making use of the returned tsize. Need to test this on a server that supports tsize.
2007-03-31 msoulier <msoulier@63283fd4-ec1e-0410-9879-cb7f675518da>
* Updating docs for epydoc.
* Updated build process.
* Adding epydoc target.
2008-07-30 Michael P. Soulier
8a0162b: Adding transfer size option patch from Kuba Kończyk. Patch 2018609 in SF tracker.
2007-03-15 msoulier <msoulier@63283fd4-ec1e-0410-9879-cb7f675518da>
* Updated ChangeLog
2008-10-03 Michael P. Soulier
c408389: Merged from SVN trunk after register to PyPi
2007-02-23 msoulier <msoulier@63283fd4-ec1e-0410-9879-cb7f675518da>
* Simplifying use of optparse. Thanks to Steven Bethard for the suggestions.
2008-10-04 msoulier
65ef2d9: Updated for PyPi
2007-02-17 msoulier <msoulier@63283fd4-ec1e-0410-9879-cb7f675518da>
* Removed mention of sorceror's apprentice problem.
* Rearranged packaging a bit to fix an importing problem.
* Supplying a default blksize options in the server. Fix for 1633625.
2008-07-30 Michael P. Soulier
6730280: Adding upload patch from Lorenz Schori - patch 1897344 in SF tracker
2007-02-10 msoulier <msoulier@63283fd4-ec1e-0410-9879-cb7f675518da>
* Added a check for rogue packets in the server.
2008-05-28 msoulier
33b1353: Tagging 0.4.5.
936e4df: Updated for v0.4.5 release.
caff30d: Fix for bug 1967647, referencing self.sock instead of sock.
2007-02-09 msoulier <msoulier@63283fd4-ec1e-0410-9879-cb7f675518da>
* Making the lib backwards-compatible to Python 2.3.
2008-05-20 msoulier
70f22b1: Fix for [ 1932310 ] security check always fail for windows.
596af40: Fixed division by zero error in rate calculations in download function of client. Thanks to Stefaan Vanheesbeke for the report.
3b1bae3: Fix for bug [ 1932330 ] binary downloads fail in Windows.
2006-12-17 msoulier <msoulier@63283fd4-ec1e-0410-9879-cb7f675518da>
* Rolling to version 0.4.1.
* Restructuring single lib into a package.
* Restructuring single lib into a package.
* Restructuring single lib into a package.
* Restructuring single lib into a package.
* Fixing install location of library.
2008-01-31 msoulier
648564c: Updated README.
792df2d: Updated ChangeLog
941f5bf: Updating version to 0.4.4
2006-12-16 msoulier <msoulier@63283fd4-ec1e-0410-9879-cb7f675518da>
* Added server to package.
* Updated ChangeLog, and rolled version to 0.4
2007-12-16 msoulier
f8af287: Fixing 1851544 - server not tolerant of unsupported options Thanks to Landon Jurgens for the report.
2006-12-15 msoulier <msoulier@63283fd4-ec1e-0410-9879-cb7f675518da>
* Making server exit gracefully.
* Tweak to EOF handling in server.
* First working server tests with two clients.
* Added lots in the server to support a download, with timeouts. Not yet tested with a client, but the damn thing runs.
* Fixed a bug in handling block number rollovers.
2007-07-17 msoulier
89a8382: Updated for 0.4.3 release.
2006-12-14 msoulier <msoulier@63283fd4-ec1e-0410-9879-cb7f675518da>
* Got handling of file not found working in server.
* Starting on sample server.
* Successful test on basic select loop
2007-07-16 msoulier
2a98d72: Removed redundant comparison.
955ced3: Fixing string/integer comparison. Thanks to Simon P. Ditner, bug #1755146.
2006-12-11 msoulier <msoulier@63283fd4-ec1e-0410-9879-cb7f675518da>
* Added some security checks around the tftproot. Further fleshed-out the handler. Still not actually starting the transfer.
2007-06-05 msoulier
493dcac: Updated for 0.4.2
bb47795: Fixed unit test for factory
2006-12-10 msoulier <msoulier@63283fd4-ec1e-0410-9879-cb7f675518da>
* Fleshing out server handler implementation.
* Started on the server
2007-03-31 msoulier
d9665e1: Updating docs for epydoc.
b68ceca: Updated build process.
d8730c7: Adding epydoc target.
2006-12-09 msoulier <msoulier@63283fd4-ec1e-0410-9879-cb7f675518da>
* Added --debug option to sample client.
* Adding license
* Adding ChangeLog
* Bumped the version.
* Changed the port variables to something more intelligent.
* Fixing poor TID implementation.
2007-03-15 msoulier
0b41ffb: Updated ChangeLog
2006-10-25 msoulier <msoulier@63283fd4-ec1e-0410-9879-cb7f675518da>
* Added testcase for TftpPacketFactory.
2007-02-23 msoulier
8f5595c: Simplifying use of optparse. Thanks to Steven Bethard for the suggestions.
2006-10-13 msoulier <msoulier@63283fd4-ec1e-0410-9879-cb7f675518da>
* Implemented retries on download timeouts.
* Added some info statements regarding option negotiation.
* Updated testcases, fixed one error in decode_options
2007-02-17 msoulier
5c52975: Removed mention of sorceror's apprentice problem.
c8df0fd: Rearranged packaging a bit to fix an importing problem.
c7d86d3: Supplying a default blksize options in the server. Fix for 1633625.
2006-10-11 msoulier <msoulier@63283fd4-ec1e-0410-9879-cb7f675518da>
* Updated testcases
* Updated makefile
* Adding makefile
2007-02-10 msoulier
07906cd: Added a check for rogue packets in the server.
2006-10-10 msoulier <msoulier@63283fd4-ec1e-0410-9879-cb7f675518da>
* Moved LICENSE to COPYING
2007-02-09 msoulier
f53e68b: Making the lib backwards-compatible to Python 2.3.
2006-10-09 msoulier <msoulier@63283fd4-ec1e-0410-9879-cb7f675518da>
* Added test for WRQ packet
* Fixed broken decode, and adjusted the client options.
2006-12-17 msoulier
efd248f: Rolling to version 0.4.1.
95b6a72: Restructuring single lib into a package.
a1ad552: Restructuring single lib into a package.
c43a24c: Restructuring single lib into a package.
5e6d8fe: Restructuring single lib into a package.
6eb1501: Fixing install location of library.
2006-10-08 msoulier <msoulier@63283fd4-ec1e-0410-9879-cb7f675518da>
* Starting on unit tests
2006-12-16 msoulier
15023eb: Added server to package.
ac2faa3: Updated ChangeLog, and rolled version to 0.4
2006-10-05 msoulier <msoulier@63283fd4-ec1e-0410-9879-cb7f675518da>
* Fixed handling of port
* Updating for production
* Freezing 0.2
* Fixed poor EOF detection
* Got variable blocksizes working.
2006-12-15 msoulier
f79a1e9: Making server exit gracefully.
16ebbf2: Tweak to EOF handling in server.
7723705: First working server tests with two clients.
5cfbae3: Added lots in the server to support a download, with timeouts. Not yet tested with a client, but the damn thing runs.
d5b7276: Fixed a bug in handling block number rollovers.
2006-10-04 msoulier <msoulier@63283fd4-ec1e-0410-9879-cb7f675518da>
* Added confirmation of incoming traffic to known remote host.
* Restructured in preparation for tftp options
* Updated README
* Updated README
* Added seconds to logs
* Upping version to 0.2
* Added OACK packet, and factored-out client code.
2006-12-14 msoulier
7441f0a: Got handling of file not found working in server.
3b4d177: Starting on sample server.
94ef067: Successful test on basic select loop
2006-10-03 msoulier <msoulier@63283fd4-ec1e-0410-9879-cb7f675518da>
* Updated a comment
* Restructuring
* Restructuring
2006-12-11 msoulier
6f186f2: Added some security checks around the tftproot. Further fleshed-out the handler. Still not actually starting the transfer.
2006-12-10 msoulier
b5a96ec: Fleshing out server handler implementation.
fc2a587: Started on the server
2006-12-09 msoulier
aece5aa: Added --debug option to sample client.
204cce4: Adding license
4fc510b: Adding ChangeLog
07e2976: Bumped the version.
104dfe0: Changed the port variables to something more intelligent.
15c5a0f: Fixing poor TID implementation.
2006-10-25 msoulier
8e6cd77: Added testcase for TftpPacketFactory.
2006-10-13 msoulier
7486502: Implemented retries on download timeouts.
0528b1b: Added some info statements regarding option negotiation.
4c73041: Updated testcases, fixed one error in decode_options
2006-10-11 msoulier
f2b7d5d: Updated testcases
837344c: Updated makefile
08af50a: Adding makefile
2006-10-10 msoulier
99b3bbd: Moved LICENSE to COPYING
2006-10-09 msoulier
2e42f99: Added test for WRQ packet
6ebd6fc: Fixed broken decode, and adjusted the client options.
2006-10-08 msoulier
6db1b2c: Starting on unit tests
2006-10-05 msoulier
e771f67: Fixed handling of port
cb75a4b: Updating for production
19e8f0f: Freezing 0.2
0a13eb5: Fixed poor EOF detection
ed15161: Got variable blocksizes working.
2006-10-04 msoulier
c24bba2: Added confirmation of incoming traffic to known remote host.
c11ac3a: Restructured in preparation for tftp options
2827cf1: Updated README
c6094b0: Updated README
09de253: Added seconds to logs
82821e5: Upping version to 0.2
88c387b: Added OACK packet, and factored-out client code.

View File

@ -98,14 +98,14 @@ def main():
if not options.output:
options.output = os.path.basename(options.download)
tclient.download(options.download,
options.output,
progresshook)
options.output,
progresshook)
elif options.upload:
if not options.input:
options.input = os.path.basename(options.upload)
tclient.upload(options.upload,
options.input,
progresshook)
options.input,
progresshook)
except tftpy.TftpException, err:
sys.stderr.write("%s\n" % str(err))
sys.exit(1)

View File

@ -22,9 +22,37 @@ still work. Let me know if it doesn't.
Installation
============
If you download the source distribution, you can simply use distutils to
install, via::
python setup.py build
python setup.py install
Or, as this has been uploaded to pypi, you can use easy_install or pip::
easy_install tftpy
pip install tftpy
Once installed you should have the sample client and server scripts in bin,
and you should be able to import the `tftpy` module.
Examples
========
The simplest tftp client::
import tftpy
client = tftpy.TftpClient('tftp.digitaltorque.ca', 69)
client.download('remote_filename', 'local_filename')
The simplest tftp server::
import tftpy
server = tftpy.TftpServer('/tftpboot')
server.listen('0.0.0.0', 69)
See the sample client and server for slightly more complex examples.
API Documentation
=================

View File

@ -22,9 +22,37 @@ still work. Let me know if it doesn't.
Installation
============
If you download the source distribution, you can simply use distutils to
install, via::
python setup.py build
python setup.py install
Or, as this has been uploaded to pypi, you can use easy_install or pip::
easy_install tftpy
pip install tftpy
Once installed you should have the sample client and server scripts in bin,
and you should be able to import the `tftpy` module.
Examples
========
The simplest tftp client::
import tftpy
client = tftpy.TftpClient('tftp.digitaltorque.ca', 69)
client.download('remote_filename', 'local_filename')
The simplest tftp server::
import tftpy
server = tftpy.TftpServer('/tftpboot')
server.listen('0.0.0.0', 69)
See the sample client and server for slightly more complex examples.
API Documentation
=================

View File

@ -166,6 +166,18 @@ div.admonition p.admonition-title + p {
display: inline;
}
div.admonition p {
margin-bottom: 5px;
}
div.admonition pre {
margin-bottom: 5px;
}
div.admonition ul, div.admonition ol {
margin-bottom: 5px;
}
div.note {
background-color: #eee;
border: 1px solid #ccc;

View File

@ -255,7 +255,7 @@
</div>
<div class="footer">
&copy; Copyright 2010, Michael P. Soulier.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.4.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.5.
</div>
</body>
</html>

View File

@ -58,9 +58,35 @@ still work. Let me know if it doesn&#8217;t.</p>
</div>
<div class="section" id="installation">
<h1>Installation<a class="headerlink" href="#installation" title="Permalink to this headline"></a></h1>
<p>If you download the source distribution, you can simply use distutils to
install, via:</p>
<div class="highlight-python"><pre>python setup.py build
python setup.py install</pre>
</div>
<p>Or, as this has been uploaded to pypi, you can use easy_install or pip:</p>
<div class="highlight-python"><pre>easy_install tftpy
pip install tftpy</pre>
</div>
<p>Once installed you should have the sample client and server scripts in bin,
and you should be able to import the <cite>tftpy</cite> module.</p>
</div>
<div class="section" id="examples">
<h1>Examples<a class="headerlink" href="#examples" title="Permalink to this headline"></a></h1>
<p>The simplest tftp client:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="kn">import</span> <span class="nn">tftpy</span>
<span class="n">client</span> <span class="o">=</span> <span class="n">tftpy</span><span class="o">.</span><span class="n">TftpClient</span><span class="p">(</span><span class="s">&#39;tftp.digitaltorque.ca&#39;</span><span class="p">,</span> <span class="mi">69</span><span class="p">)</span>
<span class="n">client</span><span class="o">.</span><span class="n">download</span><span class="p">(</span><span class="s">&#39;remote_filename&#39;</span><span class="p">,</span> <span class="s">&#39;local_filename&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p>The simplest tftp server:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="kn">import</span> <span class="nn">tftpy</span>
<span class="n">server</span> <span class="o">=</span> <span class="n">tftpy</span><span class="o">.</span><span class="n">TftpServer</span><span class="p">(</span><span class="s">&#39;/tftpboot&#39;</span><span class="p">)</span>
<span class="n">server</span><span class="o">.</span><span class="n">listen</span><span class="p">(</span><span class="s">&#39;0.0.0.0&#39;</span><span class="p">,</span> <span class="mi">69</span><span class="p">)</span>
</pre></div>
</div>
<p>See the sample client and server for slightly more complex examples.</p>
</div>
<div class="section" id="api-documentation">
<h1>API Documentation<a class="headerlink" href="#api-documentation" title="Permalink to this headline"></a></h1>
@ -732,7 +758,7 @@ will commit to one of them once we interpret the initial packet.</p>
</div>
<div class="footer">
&copy; Copyright 2010, Michael P. Soulier.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.4.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.5.
</div>
</body>
</html>

View File

@ -118,7 +118,7 @@
</div>
<div class="footer">
&copy; Copyright 2010, Michael P. Soulier.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.4.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.5.
</div>
</body>
</html>

View File

@ -89,7 +89,7 @@
<div class="footer">
&copy; Copyright 2010, Michael P. Soulier.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.4.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.5.
</div>
<script type="text/javascript" src="searchindex.js"></script>

File diff suppressed because one or more lines are too long

View File

@ -3,7 +3,7 @@
from distutils.core import setup
setup(name='tftpy',
version='0.5.0',
version='0.5.1',
description='Python TFTP library',
author='Michael P. Soulier',
author_email='msoulier@digitaltorque.ca',