jtriley / pystun

A Python STUN client for getting NAT type and external IP
https://github.com/jtriley/pystun
MIT License
436 stars 154 forks source link

Python 3.x compat, cleanup #8

Open abarnert opened 10 years ago

abarnert commented 10 years ago

I updated the code to be Python 3-compatible; it should run under any 2.6+/3.2+.

I smoke-tested with 2.6, 2.7, 3.3, and pre-3.5 trunk with CPython, and 2.7 and 3.2 with PyPy 2.3.1.

Rather than try to fix all the mixed-str-and-bytes stuff caused by trying to work with hex strings instead of raw bytes, I changed it to use struct.pack/unpack everywhere. I believe I caught and fixed at least one bug along the way where a hex string was sent in place of the bytes it represented. But I wouldn't be too surprised if I also added at least one bug. Unfortunately, there doesn't seem to be a test suite, and I'm not sure how to stress-test it myself.

I also cleaned up the code so that it passes PEP8 (no point adding an automated PEP8 test to just ignore the warnings…), and updated check.py so that it works with PEP8 1.3 and later.

jtriley commented 9 years ago

@abarnert We just merged some large project changes which most importantly includes scaffolding for a test suite, however, we still don't have enough test coverage yet. Ideally we'd have closer to full test coverage before merging this but for now we'll just have to eye-ball it and test by hand. With that said would you mind rebasing this PR against the latest develop branch? When that's done I'd like to have @Renelvon review this with me before merging. Thanks!

Renelvon commented 9 years ago

@abarnert You don't have to worry about Python 2.6 any longer; it isn't supported as of version 0.1.0. Hope that helps you implementing Python 3.x compatibility easier.

GF-Huang commented 5 years ago

Could you upload you packege to PyPi (pip) ?