{"push_id":953134653,"size":30,"distinct_size":1,"ref":"refs/heads/master","head":"fc9ab76efb14e09c97d493e827dcd25245642eaa","before":"b88afe36902277c933851bb0669cdcccdf2718dc","commits":[{"sha":"75cc5dd87f3d744909156446ababe1bf5dbe553b","author":{"email":"78e1233741fe4b6612496237321b228d016d4bd9@icloud.com","name":"daphtdazz"},"message":"ipython,components: Make various small improvements for ipython's benefit.","distinct":false,"url":"https://api.github.com/repos/daphtdazz/sipparty/commits/75cc5dd87f3d744909156446ababe1bf5dbe553b"},{"sha":"e68498a72b7c76130b8837483cf29eb1668639d5","author":{"email":"78e1233741fe4b6612496237321b228d016d4bd9@icloud.com","name":"daphtdazz"},"message":"siptransport: update transport class to use listen_for_me mechanism","distinct":false,"url":"https://api.github.com/repos/daphtdazz/sipparty/commits/e68498a72b7c76130b8837483cf29eb1668639d5"},{"sha":"cc51ffcc77b56deff90026fb856b72bd73b9e0b0","author":{"email":"78e1233741fe4b6612496237321b228d016d4bd9@icloud.com","name":"daphtdazz"},"message":"transport: implement listen_for_me and release_listen_address to move to a (even) higher level of abstraction of the transport.","distinct":false,"url":"https://api.github.com/repos/daphtdazz/sipparty/commits/cc51ffcc77b56deff90026fb856b72bd73b9e0b0"},{"sha":"4ca3794982c22883e731c78d2c62e293213bc338","author":{"email":"78e1233741fe4b6612496237321b228d016d4bd9@icloud.com","name":"daphtdazz"},"message":"run-uts: make sure we exit with a failure if the UTs exited with a failure.","distinct":false,"url":"https://api.github.com/repos/daphtdazz/sipparty/commits/4ca3794982c22883e731c78d2c62e293213bc338"},{"sha":"1f1ad4409aa56431ea39c72d466a91cc2eab1f0d","author":{"email":"78e1233741fe4b6612496237321b228d016d4bd9@icloud.com","name":"daphtdazz"},"message":"transport: get listen address and get send from address with cache","distinct":false,"url":"https://api.github.com/repos/daphtdazz/sipparty/commits/1f1ad4409aa56431ea39c72d466a91cc2eab1f0d"},{"sha":"6168cb21a8d8950909344e7c3e66e56e596f677f","author":{"email":"78e1233741fe4b6612496237321b228d016d4bd9@icloud.com","name":"daphtdazz"},"message":"transport: can receive data on a listen dgram socket","distinct":false,"url":"https://api.github.com/repos/daphtdazz/sipparty/commits/6168cb21a8d8950909344e7c3e66e56e596f677f"},{"sha":"c05c287be52292153556bddbfe0a099b19f25315","author":{"email":"78e1233741fe4b6612496237321b228d016d4bd9@icloud.com","name":"daphtdazz"},"message":"transport: listening connecting sending work basically","distinct":false,"url":"https://api.github.com/repos/daphtdazz/sipparty/commits/c05c287be52292153556bddbfe0a099b19f25315"},{"sha":"3211d71754bf3c3d94cd7d3af7c56cdd9c6b6513","author":{"email":"78e1233741fe4b6612496237321b228d016d4bd9@icloud.com","name":"daphtdazz"},"message":"siptransport: listen_for_me, add dialog handler and send message work.","distinct":false,"url":"https://api.github.com/repos/daphtdazz/sipparty/commits/3211d71754bf3c3d94cd7d3af7c56cdd9c6b6513"},{"sha":"e2b39c45a6e5d38840bae771520052df403ee6e9","author":{"email":"78e1233741fe4b6612496237321b228d016d4bd9@icloud.com","name":"daphtdazz"},"message":"transport,sdp,mediatransport,session: move to using the new Transport model for the media transport, and continue decoupling the SDP from the Session / MediaSession; all UTs pass except for party.","distinct":false,"url":"https://api.github.com/repos/daphtdazz/sipparty/commits/e2b39c45a6e5d38840bae771520052df403ee6e9"},{"sha":"9ffd9e0343ca0c2d563fd99c323a49a62286b2bf","author":{"email":"78e1233741fe4b6612496237321b228d016d4bd9@icloud.com","name":"daphtdazz"},"message":"party: basic party using UDP and IPv4 can make calls","distinct":false,"url":"https://api.github.com/repos/daphtdazz/sipparty/commits/9ffd9e0343ca0c2d563fd99c323a49a62286b2bf"},{"sha":"ac49024556511258241ea5da33980261c55d3c3b","author":{"email":"78e1233741fe4b6612496237321b228d016d4bd9@icloud.com","name":"daphtdazz"},"message":"transport: IPv6 UDP works ok.","distinct":false,"url":"https://api.github.com/repos/daphtdazz/sipparty/commits/ac49024556511258241ea5da33980261c55d3c3b"},{"sha":"28904f6925fb8608d992df25b8bed0a0611a46b8","author":{"email":"78e1233741fe4b6612496237321b228d016d4bd9@icloud.com","name":"daphtdazz"},"message":"transport: do not force the caller to provide a socket family when this is not really needed (we can just use the first one).","distinct":false,"url":"https://api.github.com/repos/daphtdazz/sipparty/commits/28904f6925fb8608d992df25b8bed0a0611a46b8"},{"sha":"98a3e143658c2ae021e93f034434e3ab290ff6c3","author":{"email":"78e1233741fe4b6612496237321b228d016d4bd9@icloud.com","name":"daphtdazz"},"message":"util: make sure FirstListItemProxy descriptor prevents caller from passing something that cannot be an attribute name","distinct":false,"url":"https://api.github.com/repos/daphtdazz/sipparty/commits/98a3e143658c2ae021e93f034434e3ab290ff6c3"},{"sha":"839a44961f967bb3ef918d366f924beafe036821","author":{"email":"78e1233741fe4b6612496237321b228d016d4bd9@icloud.com","name":"daphtdazz"},"message":"util: test FirstListItemProxy better.","distinct":false,"url":"https://api.github.com/repos/daphtdazz/sipparty/commits/839a44961f967bb3ef918d366f924beafe036821"},{"sha":"299ae03befc1c2d18e555d7f4d6ddd1654034f74","author":{"email":"78e1233741fe4b6612496237321b228d016d4bd9@icloud.com","name":"daphtdazz"},"message":"util: allow None values for list attributes for FirstListItemProxy descriptors.","distinct":false,"url":"https://api.github.com/repos/daphtdazz/sipparty/commits/299ae03befc1c2d18e555d7f4d6ddd1654034f74"},{"sha":"9f379205404657a729d864c1d562cdf6acf2d19e","author":{"email":"78e1233741fe4b6612496237321b228d016d4bd9@icloud.com","name":"daphtdazz"},"message":"vb: raise TypeError if attempt is made to bind through an object that is not a ValueBinder","distinct":false,"url":"https://api.github.com/repos/daphtdazz/sipparty/commits/9f379205404657a729d864c1d562cdf6acf2d19e"},{"sha":"b1dcc22a772d947719e9a9c4542bb54bea43d710","author":{"email":"78e1233741fe4b6612496237321b228d016d4bd9@icloud.com","name":"daphtdazz"},"message":"deepclass: avoid recursion in the repr method","distinct":false,"url":"https://api.github.com/repos/daphtdazz/sipparty/commits/b1dcc22a772d947719e9a9c4542bb54bea43d710"},{"sha":"e60aa7e8829312974f6cfa2963acd346ecb7c5d1","author":{"email":"78e1233741fe4b6612496237321b228d016d4bd9@icloud.com","name":"daphtdazz"},"message":"adapter: Initial implementation of the adapter design pattern with discovery, adaptable properties, and a heck of a lot of dynamic type creation...","distinct":false,"url":"https://api.github.com/repos/daphtdazz/sipparty/commits/e60aa7e8829312974f6cfa2963acd346ecb7c5d1"},{"sha":"4654bf935497399e43de319a0c5aded8bc166246","author":{"email":"78e1233741fe4b6612496237321b228d016d4bd9@icloud.com","name":"daphtdazz"},"message":"adapter: Add a generic AdaptToClass function, and show we can easily adapt a list attribute.","distinct":false,"url":"https://api.github.com/repos/daphtdazz/sipparty/commits/4654bf935497399e43de319a0c5aded8bc166246"},{"sha":"537666447f4e748b4b298d7388b27d11580fb30d","author":{"email":"78e1233741fe4b6612496237321b228d016d4bd9@icloud.com","name":"daphtdazz"},"message":"singleton: finally work out how to do singleton properly by wrapping the init function in a metaclass __new__ proc to avoid it being called multiply.","distinct":false,"url":"https://api.github.com/repos/daphtdazz/sipparty/commits/537666447f4e748b4b298d7388b27d11580fb30d"}]}