1## 1.6.0 2 3* Resolve an internal source of potential flakiness on the bind/close port 4 checks when used in active environments by calling `.shutdown()` before 5 `.close()`. 6 7## 1.6.0b1 8 9* Add `-h` and `--help` text to the command line tool. 10* The command line interface now defaults to associating the returned port 11 with its parent process PID (usually the calling script) when no argument 12 was given as that makes more sense. 13* When portpicker is used as a command line tool from a script, if a port is 14 chosen without a portserver it can now be kept bound to a socket by a 15 child process for a user specified timeout. When successful, this helps 16 minimize race conditions as subsequent portpicker CLI invocations within 17 the timeout window cannot choose the same port. 18* Some pylint based refactorings to portpicker and portpicker\_test. 19* Drop 3.6 from our CI test matrix and metadata. It probably still works 20 there, but expect our unittests to include 3.7-ism's in the future. We'll 21 *attempt* to avoid modern constructs in portpicker.py itself but zero 22 guarantees. Using an old Python? Use an old portpicker. 23 24## 1.5.2 25 26* Do not re-pick a known used (not-yet-returned) port when running stand alone 27 without a portserver. 28 29## 1.5.1 30 31* When not using a portserver *(you really should)*, try the `bind(0)` 32 approach before hunting for random unused ports. More reliable per 33 https://github.com/google/python_portpicker/issues/16. 34 35## 1.5.0 36 37* Add portserver support to Windows using named pipes. To create or connect to 38 a server, prefix the name of the server with `@` (e.g. 39 `@unittest-portserver`). 40 41## 1.4.0 42 43* Use `async def` instead of `@asyncio.coroutine` in order to support 3.10. 44* The portserver now checks for and rejects pid values that are out of range. 45* Declare a minimum Python version of 3.6 in the package config. 46* Rework `portserver_test.py` to launch an actual portserver process instead 47 of mocks. 48 49## 1.3.9 50 51* No portpicker or portserver code changes 52* Fixed the portserver test on recent Python 3.x versions. 53* Switched to setup.cfg based packaging. 54* We no longer declare ourselves Python 2.7 or 3.3-3.5 compatible. 55 56## 1.3.1 57 58* Fix a race condition in `pick_unused_port()` involving the free ports set. 59 60## 1.3.0 61 62* Adds an optional `portserver_address` parameter to `pick_unused_port()` so 63 that callers can specify their own regardless of `os.environ`. 64* `pick_unused_port()` now raises `NoFreePortFoundError` when no available 65 port could be found rather than spinning in a loop trying forever. 66* Fall back to `socket.AF_INET` when `socket.AF_UNIX` support is not available 67 to communicate with a portserver. 68 69## 1.2.0 70 71* Introduced `add_reserved_port()` and `return_port()` APIs to allow ports to 72 be recycled and allow users to bring ports of their own. 73 74## 1.1.1 75 76* Changed default port range to 15000-24999 to avoid ephemeral ports. 77* Portserver bugfix. 78 79## 1.1.0 80 81* Renamed portpicker APIs to use PEP8 style function names in code and docs. 82* Legacy CapWords API name compatibility is maintained (and explicitly 83 tested). 84 85## 1.0.1 86 87* Code reindented to use 4 space indents and run through 88 [YAPF](https://github.com/google/yapf) for consistent style. 89* Not packaged for release. 90 91## 1.0.0 92 93* Original open source release. 94