4.0.0
=====
- **Breaking change**: Requires pycares >= 5.0.0
- Added new ``query_dns()`` method returning native pycares 5.x ``DNSResult`` types
- Deprecated ``query()`` method - still works with backward-compatible result types
- Deprecated ``gethostbyname()`` method - use ``getaddrinfo()`` instead
- Added compatibility layer for pycares 4.x result types to ease migration
- Updated dependencies
  - Bumped pycares from 4.11.0 to 5.0.1 (#220)
  - Bumped pytest from 8.4.2 to 9.0.2 (#224)
  - Bumped pytest-asyncio from 1.2.0 to 1.3.0 (#223)
  - Bumped mypy from 1.19.0 to 1.19.1 (#219)
  - Bumped winloop from 0.3.1 to 0.4.0 (#210)
  - Bumped actions/upload-artifact from 5 to 6 (#222)
  - Bumped actions/download-artifact from 6.0.0 to 7.0.0 (#221)

3.6.1
=====
- Pin pycares to < 5

3.6.0
=====
- Fix resolver garbage collection during pending queries (#211)
  - Prevents resolver from being garbage collected while queries are in progress
- Socket callback optimizations (#172)
  - Improved performance for socket state handling
- Fixed RTD links (#176)
- Added Python 3.14 to the CI (#212)
- Updated dependencies
  - Bumped pycares from 4.9.0 to 4.11.0 (#186, #194)
  - Bumped pytest-asyncio from 1.0.0 to 1.2.0 (#181, #196)
  - Bumped pytest-cov from 6.2.1 to 7.0.0 (#193)
  - Bumped pytest from 8.4.0 to 8.4.2 (#171, #190)
  - Bumped mypy from 1.16.0 to 1.19.0 (#170, #179, #185, #195, #197, #207)
  - Bumped uvloop from 0.21.0 to 0.22.1 (#202)
  - Bumped winloop from 0.1.8 to 0.3.1 (#182, #183, #184, #187, #200, #201, #203)
  - Bumped actions/setup-python from 5 to 6 (#199)
  - Bumped actions/checkout from 4 to 6 (#188, #208)
  - Bumped actions/upload-artifact from 4 to 5 (#204)
  - Bumped actions/download-artifact from 4.3.0 to 6.0.0 (#205)

3.5.0
=====
- Added explicit close method (#166)
  - Allows proper cleanup of resources on demand
- Fixed return type signature for CNAME and SOA records (#162)
  - Corrected type annotations for better type checking
- Improved Windows event loop documentation (#163)
  - Provided more accurate information on supported event loops on Windows
- Added pre-commit configuration with ruff (#152)
  - Improved code quality and consistency
  - Reformatted code and normalized end-of-line characters (#155)
- Updated dependencies
  - Bumped pycares from 4.8.0 to 4.9.0 (#168)
  - Bumped pytest-asyncio from 0.26.0 to 1.0.0 (#167)
  - Bumped pytest-cov from 6.1.1 to 6.2.1 (#164)
  - Bumped pytest from 8.3.5 to 8.4.0 (#160)
  - Bumped mypy from 1.15.0 to 1.16.0 (#158)
  - Bumped dependabot/fetch-metadata from 2.3.0 to 2.4.0 (#159)

3.4.0
=====
- Added fallback to `sock_state_cb` if `event_thread` creation fails (#151)
  - Improved reliability on systems with exhausted inotify watches
  - Implemented transparent fallback mechanism to ensure DNS resolution continues to work
- Implemented strict typing (#138)
  - Added comprehensive type annotations
  - Improved mypy configuration
  - Added py.typed marker file
- Updated dependencies
  - Bumped pycares from 4.7.0 to 4.8.0 (#149)
- Added support for Python 3.13 (#153)
  - Updated CI configuration to test with Python 3.13

3.3.0
=====
- Used c-ares event thread when available (#145)
  - Significantly improved performance by using the c-ares event thread
- Dropped Python 3.8 support (#129)
- Updated CI infrastructure
  - Fixed release workflow for breaking changes in upload/download artifact (#148)
  - Added tests on push (#139)
  - Fixed test coverage (#140)
  - Updated CI configuration (#130)
  - Bumped actions/upload-artifact from 2 to 4 (#133)
  - Bumped actions/download-artifact from 4.1.7 to 4.2.1 (#131)
  - Bumped actions/download-artifact from 4.2.1 to 4.3.0 (#144)
  - Bumped actions/setup-python from 2 to 5 (#134)
  - Bumped actions/checkout from 2 to 4 (#132)
  - Bumped dependabot/fetch-metadata from 2.2.0 to 2.3.0 (#135)
- Updated dependencies
  - Bumped pycares from 4.4.0 to 4.6.0 (#137)
  - Bumped pycares from 4.5.0 to 4.6.1 (#143)
  - Bumped pycares from 4.6.1 to 4.7.0 (#146)
  - Bumped pytest-cov from 5.0.0 to 6.1.0 (#136)
  - Bumped pytest-cov from 6.1.0 to 6.1.1 (#142)

3.2.0
=====
- Added support for getnameinfo
- Added support for getaddrinfo (#118)
- Added Winloop as a valid EventLoop (#116)
- Fixed missing py.typed file for wheel
- Updated test_query_ptr test to use address with PTR record

3.1.1
=====
- Fixed timeout implementation
- Added tests to verify timeouts work correctly
- Added PEP-561 with py.typed

3.1.0
=====
- Added exception raising if the loop is the wrong type on Windows
- Fixed type annotations
- Fixed return type for resolver nameservers
- Updated supported Python versions
  - Added support for Python 3.10
  - Added testing for PyPy 3.9 and 3.10
- Improved CI
  - Skipped some Python versions on macOS tests
  - Skipped test_gethostbyaddr on Windows
  - Used WindowsSelectorEventLoopPolicy to run Windows tests
  - Used latest CI runner versions

3.0.0
=====
- Release wheels and source to PyPI with GH actions
- Try to make tests more resilient
- Don't build universal wheels
- Migrate CI to GH Actions
- Fix TXT CHAOS test
- Add support for CAA queries
- Support Python >= 3.6
- Bump pycares dependency
- Drop tasks.py
- Allow specifying dnsclass for queries
- Set URL to https
- Add license args in setup.py
- Converted Type Annotations to Py3 syntax Closes
- Only run mypy on cpython versions
- Also fix all type errors with latest mypy - pycares seems to have no typing / stubs so lets ignore it via `mypy.ini`
- setup: typing exists since Python 3.5
- Fix type annotation of gethostbyname()
- Updated README

2.0.0
=====
(changes since version 1.x)

- Drop support for Python < 3.5
- Add support for ANY queries
- Raise pycares dependency

2.0.0b2
=======
- Raise pycares dependency

2.0.0b1
=======
- Fix using typing on Python 3.7

2.0.0b0
=======
- Drop support for Python < 3.5
- Add support for ANY queries
- Raise pycares dependency

1.2.0
=====
- Add support for Python 3.7
- Fix CNAME test
- Add examples with `async` and `await`
- Fix Python version check
- Add gethostbyaddr

1.1.1
=====
- Use per-version requires for wheels

1.1.0
=====
- Add DNSResolver.gethostbyname()
- Build universal wheels

1.0.1
=====
- Fix including tests and ChangeLog in source distributions

1.0.0
=====
- Use pycares >= 1.0.0
- Fix tests

0.3.2
=====
- setup: Fix decoding in non-UTF-8 environments

0.3.1
=====
- Adapt to Trollius package rename
- Fixed stopping watching file descriptor

0.3.0
=====
- Add DNSResolver.cancel method
- Handle case when the Future returned by query() is cancelled

0.2.0
=====
- Add support for Trollius
- Don't make query() a coroutine, just return the future
- Raise ValueError if specified query type is invalid

0.1.0
=====
- Initial release

