{"push_id":578229664,"size":32,"distinct_size":0,"ref":"refs/heads/master","head":"5fd3bdc8bea1835f166d7f388aae2d22ee273e78","before":"2a0f8bcc19374f9c30684ba2299c90f9656830cb","commits":[{"sha":"5138af9032842a0e2e2fcbe246c02039b3038c96","author":{"email":"22b4468ae6dcf46c36c9622e292c7a3506bb0db4@inodes.org","name":"Angus Lees"},"message":"Use socket via composition rather than inheritance\n\nDue to layers of __getattr__ games, socket.socket isn't particularly\nsubclass friendly, and GreenSocket (from eventlet) is slightly worse.\n\nThis change just gives up on inheritance-for-implementation and\ndelegates socket methods to an arms-length object.\n\nNote this change sets explicit wrapper methods rather than relying on\n__getattr__ at run-time, since the latter won't support `super().foo`\ncalls if a subclass has overridden `foo`.\n\nIn particular, the new class can still be used in select() and friends\ndirectly due to the fileno() method.","distinct":false,"url":"https://api.github.com/repos/realPy/pyroute2/commits/5138af9032842a0e2e2fcbe246c02039b3038c96"},{"sha":"b87938326cc17389bf41787dde0f651a9ca1c1e6","author":{"email":"4b8373d016f277527198385ba72fda0feb5da015@svinota.eu","name":"Peter V. Saveliev"},"message":"Merge pull request #95 from anguslees/eventlet\n\nUse socket via composition rather than inheritance","distinct":false,"url":"https://api.github.com/repos/realPy/pyroute2/commits/b87938326cc17389bf41787dde0f651a9ca1c1e6"},{"sha":"8993fb22739b3f20da2431e3d86c2517acff2644","author":{"email":"4b8373d016f277527198385ba72fda0feb5da015@svinota.eu","name":"Peter V. Saveliev"},"message":"nlsocket: fix the eventlet patch to run w/ python3","distinct":false,"url":"https://api.github.com/repos/realPy/pyroute2/commits/8993fb22739b3f20da2431e3d86c2517acff2644"},{"sha":"5d3add506c9fb62c099e024149fee35337e79b2d","author":{"email":"4b8373d016f277527198385ba72fda0feb5da015@svinota.eu","name":"Peter V. Saveliev"},"message":"ipdb: daemon status on a running thread\n\nFIXME: one can not change the daemon status on a running thread.\nThere should be some other way to kick out the thread.\n\nBug-Url: https://github.com/svinota/pyroute2/issues/98","distinct":false,"url":"https://api.github.com/repos/realPy/pyroute2/commits/5d3add506c9fb62c099e024149fee35337e79b2d"},{"sha":"85dafd7c7082f9f220131ce3f73230aac42dd94f","author":{"email":"4b8373d016f277527198385ba72fda0feb5da015@svinota.eu","name":"Peter V. Saveliev"},"message":"tests: use `globals()` in examples, not only imports\n\nThis allows to run embedded code as well as external modules.","distinct":false,"url":"https://api.github.com/repos/realPy/pyroute2/commits/85dafd7c7082f9f220131ce3f73230aac42dd94f"},{"sha":"95cd1e7b3744c43ab51897a042c7eb7c7f2c28bf","author":{"email":"4b8373d016f277527198385ba72fda0feb5da015@svinota.eu","name":"Peter V. Saveliev"},"message":"tests: simple interface event as a shell script\n\nInstead of IPDB call — in the case of the nosetests IPDB here only\ncauses troubles, being threaded.\n\nProbably one should use IPRoute here, we'll see it, but a bit later.\n\nBug-Url: https://github.com/svinota/pyroute2/issues/98","distinct":false,"url":"https://api.github.com/repos/realPy/pyroute2/commits/95cd1e7b3744c43ab51897a042c7eb7c7f2c28bf"},{"sha":"d5684c23df12b595df6680ae998f966a515f0377","author":{"email":"4b8373d016f277527198385ba72fda0feb5da015@svinota.eu","name":"Peter V. Saveliev"},"message":"iwutil: the template","distinct":false,"url":"https://api.github.com/repos/realPy/pyroute2/commits/d5684c23df12b595df6680ae998f966a515f0377"},{"sha":"19402f6b092582c7bcea2eca38e5f04fb19d1fb2","author":{"email":"4b8373d016f277527198385ba72fda0feb5da015@svinota.eu","name":"Peter V. Saveliev"},"message":"common: provide a way to define own SocketBase class\n\nThe `socket.socket` class is not sublcass-friendly, and sometimes it is\nbetter to use a custom wrapper providing socket API, than the original\nsocket class.\n\nBut some projects, that use pyroute2, already have their own solutions,\nand providing the library-wide wrapper breaks the behaviour of these\nprojects.\n\nSo we provide a way to define a custom `SocketBase` class, that will be\nused as base for the `NetlinkSocket`.\n\nBug-Url: https://github.com/svinota/pyroute2/pull/94\nBug-Url: https://github.com/eventlet/eventlet/issues/198","distinct":false,"url":"https://api.github.com/repos/realPy/pyroute2/commits/19402f6b092582c7bcea2eca38e5f04fb19d1fb2"},{"sha":"c368de5883e1ed994d878a21480532ad20708c81","author":{"email":"4b8373d016f277527198385ba72fda0feb5da015@svinota.eu","name":"Peter V. Saveliev"},"message":"tests: check the socket API, not inheritance\n\nBug-Url: https://github.com/svinota/pyroute2/issues/96\nBug-Url: https://github.com/jpirko/lnst/issues/101","distinct":false,"url":"https://api.github.com/repos/realPy/pyroute2/commits/c368de5883e1ed994d878a21480532ad20708c81"},{"sha":"8aa60f7776cb6a7bb42dae7f5c71861447e69ce2","author":{"email":"4b8373d016f277527198385ba72fda0feb5da015@svinota.eu","name":"Peter V. Saveliev"},"message":"netns: make multiprocessing classes overridable\n\nJust in the same way as BaseSocket.\n\nBug-Url: https://github.com/svinota/pyroute2/issues/99","distinct":false,"url":"https://api.github.com/repos/realPy/pyroute2/commits/8aa60f7776cb6a7bb42dae7f5c71861447e69ce2"},{"sha":"ddf819d9bf345747de503ed6f8e3b6d088ffa0d9","author":{"email":"4b8373d016f277527198385ba72fda0feb5da015@svinota.eu","name":"Peter V. Saveliev"},"message":"netns: avoid proxy imports within the library\n\nBug-Url: https://github.com/svinota/pyroute2/issues/99","distinct":false,"url":"https://api.github.com/repos/realPy/pyroute2/commits/ddf819d9bf345747de503ed6f8e3b6d088ffa0d9"},{"sha":"01589ce5bbd3b447cb5aa86daa68b7914709c43b","author":{"email":"4b8373d016f277527198385ba72fda0feb5da015@svinota.eu","name":"Peter V. Saveliev"},"message":"pyroute2: defer root imports\n\nDefer root imports in order to make `pyroute2.config` changeable\nbefore any other code gets processed by the python interpreter.\n\nBug-Url: https://github.com/svinota/pyroute2/issues/99\nBug-Url: https://github.com/svinota/pyroute2/pull/94","distinct":false,"url":"https://api.github.com/repos/realPy/pyroute2/commits/01589ce5bbd3b447cb5aa86daa68b7914709c43b"},{"sha":"86d418e5a2b452f6ae7f1200b8b33695949a21dd","author":{"email":"4b8373d016f277527198385ba72fda0feb5da015@svinota.eu","name":"Peter V. Saveliev"},"message":"examples: remove outdated comment\n\nfrom `custom_socket_base`","distinct":false,"url":"https://api.github.com/repos/realPy/pyroute2/commits/86d418e5a2b452f6ae7f1200b8b33695949a21dd"},{"sha":"1c6dd4c6ad0b4a071658d36ededb704bce9fa0b8","author":{"email":"4b8373d016f277527198385ba72fda0feb5da015@svinota.eu","name":"Peter V. Saveliev"},"message":"Merge branch 'master' into nl80211\n\nConflicts:\n\tpyroute2/__init__.py","distinct":false,"url":"https://api.github.com/repos/realPy/pyroute2/commits/1c6dd4c6ad0b4a071658d36ededb704bce9fa0b8"},{"sha":"e7baeb0af9106fcf47a1049ef175eb4996d2c514","author":{"email":"4b8373d016f277527198385ba72fda0feb5da015@svinota.eu","name":"Peter V. Saveliev"},"message":"examples: use deferred import","distinct":false,"url":"https://api.github.com/repos/realPy/pyroute2/commits/e7baeb0af9106fcf47a1049ef175eb4996d2c514"},{"sha":"90134b29f29fc85082ce57bc2928b1ef38d31ebb","author":{"email":"4b8373d016f277527198385ba72fda0feb5da015@svinota.eu","name":"Peter V. Saveliev"},"message":"examples: prepare custom_socket_base for tests","distinct":false,"url":"https://api.github.com/repos/realPy/pyroute2/commits/90134b29f29fc85082ce57bc2928b1ef38d31ebb"},{"sha":"a62da30156457e61046e51a35daf24af50c2fe8f","author":{"email":"4b8373d016f277527198385ba72fda0feb5da015@svinota.eu","name":"Peter V. Saveliev"},"message":"Merge branch 'nl80211'","distinct":false,"url":"https://api.github.com/repos/realPy/pyroute2/commits/a62da30156457e61046e51a35daf24af50c2fe8f"},{"sha":"a19cb75c15fda5c44c108fe624b838d885a1900b","author":{"email":"4b8373d016f277527198385ba72fda0feb5da015@svinota.eu","name":"Peter V. Saveliev"},"message":"iwutil: add short comment","distinct":false,"url":"https://api.github.com/repos/realPy/pyroute2/commits/a19cb75c15fda5c44c108fe624b838d885a1900b"},{"sha":"7f2751c775cef362b40afa51d5e6491eb0aacae8","author":{"email":"4b8373d016f277527198385ba72fda0feb5da015@svinota.eu","name":"Peter V. Saveliev"},"message":"netns: separate `setns()` method\n\nBug-Url: https://github.com/svinota/pyroute2/issues/90","distinct":false,"url":"https://api.github.com/repos/realPy/pyroute2/commits/7f2751c775cef362b40afa51d5e6491eb0aacae8"},{"sha":"57447739bfa782e418f0450d4dc145dafd78af05","author":{"email":"4b8373d016f277527198385ba72fda0feb5da015@svinota.eu","name":"Peter V. Saveliev"},"message":"iproute: filter addresses by interface in `get_addr()`","distinct":false,"url":"https://api.github.com/repos/realPy/pyroute2/commits/57447739bfa782e418f0450d4dc145dafd78af05"}]}