Jason R. Coombs e4cbd4d 

Jason R. Coombs 67d4767 

Jason R. Coombs e2ecb1c 

Jason R. Coombs 2db9057 

Jason R. Coombs 69bdcd3 

Jason R. Coombs 911941b 

Jason R. Coombs 2db9057 

Jason R. Coombs 911941b 

Jason R. Coombs 6a4c517 

Jason R. Coombs 911941b 
Jason R. Coombs 6a4c517 
Jason R. Coombs 18ccf50 

Jason R. Coombs d2ee227 

Jason R. Coombs fee9e1b 

Jason R. Coombs 5162521 

Jason R. Coombs 0b081d7 

Jason R. Coombs 223050d 

Jason R. Coombs de3192a 

Jason R. Coombs c727d68 

Jason R. Coombs de3192a 
Jason R. Coombs c727d68 

Jason R. Coombs a845600 

Jason R. Coombs 27da6b7 

Jason R. Coombs a845600 

Jason R. Coombs 27da6b7 

Jason R. Coombs 168b92b 

Jason R. Coombs cba8f5d 

Jason R. Coombs e1d558f 

Jason R. Coombs a12f9fe 

Jason R. Coombs 46dfb06 

Jason R. Coombs 3e8a7b0 
Jason R. Coombs fd09d43 

Jason R. Coombs 3e8a7b0 

Jason R. Coombs fd09d43 

Jason R. Coombs 74b125c 

Jason R. Coombs fd09d43 

Jason R. Coombs 74b125c 

Jason R. Coombs d21ca62 

Jason R. Coombs ad8cde7 

Jason R. Coombs dd9da15 


* Removed deprecated arguments to ServerConnection.connect. See notes on the
  3.3 release on how to use the connect_factory parameter if your application
  requires ssl, ipv6, or other connection customization.


* Filter out disconnected sockets when processing input.


* Created two new exceptions in `irc.client`: `MessageTooLong` and
* Use explicit exceptions instead of ValueError when sending data.


* SingleServerIRCBot now accepts keyword arguments which are passed through
  to the `ServerConnection.connect` method. One can use this to use SSL for

    factory = irc.connection.Factory(wrapper=ssl.wrap_socket)
    bot =, connect_factory = factory)


* Issue #6: Fix AttributeError when legacy parameters are passed to
* Issue #7: Fix TypeError on `iter(LineBuffer)`.


3.4 never worked - the decoding customization feature was improperly
implemented and never tested.

* The ServerConnection now allows custom classes to be supplied to customize
  the decoding of incoming lines. For example, to disable the decoding of
  incoming lines,
  replace the `buffer_class` on the ServerConnection with a version that
  passes through the lines directly::

    irc.client.ServerConnection.buffer_class = irc.client.LineBuffer

  This fixes #5.


*Broken Release*


* Added `connection` module with a Factory for creating socket connections.
* Added `connect_factory` parameter to the ServerConnection.

It's now possible to create connections with custom SSL parameters or other
socket wrappers. For example, to create a connection with a custom SSL cert::

    import ssl
    import irc.client
    import irc.connection
    import functools

    irc = irc.client.IRC()
    server = irc.server()
    wrapper = functools.partial(ssl.wrap_socket, ssl_cert=my_cert())
    server.connect(connect_factory = irc.connection.Factory(wrapper=wrapper))

With this release, many of the parameters to `ServerConnection.connect` are
now deprecated:

    - localaddress
    - localport
    - ssl
    - ipv6

Instead, one should pass the appropriate values to a `connection.Factory`
instance and pass that factory to the .connect method. Backwards-compatibility
will be maintained for these parameters until the release of irc 4.0.


* Restore Python 2.6 compatibility.


* Protect from UnicodeDecodeError when decoding data on the wire when data is
  not properly encoded in ASCII or UTF-8.


* Additional branch protected by mutex.


* Implemented thread safety via a reentrant lock guarding shared state in IRC


* Fix some issues with bytes/unicode on Python 3


* Distribute using setuptools rather than paver.
* Minor tweaks for Python 3 support. Now installs on Python 3.


* Added error checking when sending a message - for both message length and
  embedded carriage returns. Fixes #4.
* Updated README.


* Improved Unicode support. Fixes failing tests and errors lowering Unicode
  channel names.
* Issue #3541414 - The ServerConnection and DCCConnection now encode any
  strings as UTF-8 before transmitting.
* Issue #3527371 - Updated strings.FoldedCase to support comparison against
  objects of other types.
* Shutdown the sockets before closing.

Applications that are currently encoding unicode as UTF-8 before passing the
strings to `ServerConnection.send_raw` need to be updated to send Unicode


This release officially deprecates 2.0.1-2.0.3 in favor of 3.0.

* Re-release of irc 2.0 (without the changes from 2.0.1-2.0.3) for
  correct compatibility indication.


* DelayedCommands now use the local time for calculating 'at' and 'due'
  times. This will be more friendly for simple servers. Servers that expect
  UTC times should either run in UTC or override to
  return an appropriate time object for 'now'. For example::

    def startup_bot(): = irc.client.DelayedCommand.utcnow


* Added irc.client.PeriodicCommandFixedDelay. Schedule this command
  to have a function executed at a specific time and then at periodic
  intervals thereafter.


* Removed `irclib` and `ircbot` legacy modules.


* Fix file saving using on Windows. Fixes #2863199.
* Created NickMask class from nm_to_* functions. Now if a source is
  a NickMask, one can access the .nick, .host, and .user attributes.
* Use correct attribute for saved connect args. Fixes #3523057.


* Added ServerConnection.reconnect method. Fixes #3515580.


* Added missing events. Fixes #3515578.


* Moved functionality from irclib module to irc.client module.
* Moved functionality from ircbot module to module.
* Retained irclib and ircbot modules for backward-compatibility. These
  will be removed in 1.0.
* Renamed project to simply 'irc'.

To support the new module structure, simply replace references to the irclib
module with irc.client and ircbot module with This project will
support that interface through all versions of irc 1.x, so if you've made
these changes, you can safely depend on `irc >= 0.7, <2.0dev`.


* Fixed failing test where DelayedCommands weren't being sorted properly.
  DelayedCommand a now subclass of the DateTime object, where the command's
  due time is the datetime. Fixed issue #3518508.


* Fixed incorrect usage of Connection.execute_delayed (again).


* Minimum Python requirement is now Python 2.6. Python 2.3 and earlier should use 0.5.0
  or earlier.
* Removed incorrect usage of Connection.execute_delayed. Added Connection.execute_every.
  Fixed issue 3516241.
* Use new-style classes.