committing toy edits made testing bzr to the svn repo was not what I wanted to do
[third_party/dnspython] / ChangeLog
1 2005-10-31  Bob Halley  <halley@dnspython.org>
2
3         * (Version 1.3.5 released)
4
5 2005-10-12  Bob Halley  <halley@dnspython.org>
6
7         * dns/zone.py: Zone.iterate_rdatasets() and Zone.iterate_rdatas()
8           did not have a default rdtype of dns.rdatatype.ANY as their
9           docstrings said they did.  They do now.
10
11 2005-10-06  Bob Halley  <halley@dnspython.org>
12
13         * dns/name.py: Added the parent() method, which returns the
14           parent of a name.
15
16 2005-10-01  Bob Halley  <halley@dnspython.org>
17
18         * dns/resolver.py: Added zone_for_name() helper, which returns
19           the name of the zone which contains the specified name.
20
21         * dns/resolver.py: Added get_default_resolver(), which returns
22           the default resolver, initializing it if necessary.
23
24 2005-09-29  Bob Halley  <halley@dnspython.org>
25
26         * dns/resolver.py (Resolver._compute_timeout): If time goes
27           backwards a little bit, ignore it.
28
29 2005-07-31  Bob Halley  <halley@dnspython.org>
30
31         * (Version 1.3.4 released)
32
33 2005-07-31  Bob Halley  <halley@dnspython.org>
34
35         * dns/message.py (make_response): Trying to respond to a response
36           threw a NameError while trying to throw a FormErr since it used
37           the wrong name for the FormErr exception.
38
39         * dns/query.py (_connect): We needed to ignore EALREADY too.
40
41         * dns/query.py: Optional "source" and "source_port" parameters
42           have been added to udp(), tcp(), and xfr().  Thanks to Ralf
43           Weber for suggesting the change and providing a patch.
44
45 2005-06-05  Bob Halley  <halley@dnspython.org>
46
47         * dns/query.py: The requirement that the "where" parameter be
48           an IPv4 or IPv6 address is now documented.
49
50 2005-06-04  Bob Halley  <halley@dnspython.org>
51
52         * dns/resolver.py: The resolver now does exponential backoff
53           each time it runs through all of the nameservers.
54
55         * dns/resolver.py: rcodes which indicate a nameserver is likely
56           to be a "permanent failure" for a query cause the nameserver
57           to be removed from the mix for that query.
58
59 2005-01-30  Bob Halley  <halley@dnspython.org>
60
61         * (Version 1.3.3 released)
62
63 2004-10-25  Bob Halley  <halley@dnspython.org>
64
65         * dns/rdtypes/ANY/TXT.py (TXT.from_text): The masterfile parser
66         incorrectly rejected TXT records where a value was not quoted.
67
68 2004-10-11  Bob Halley  <halley@dnspython.org>
69
70         * dns/message.py: Added make_response(), which creates a skeletal
71         response for the specified query.  Added opcode() and set_opcode()
72         convenience methods to the Message class.  Added the request_payload
73         attribute to the Message class.
74
75 2004-10-10  Bob Halley  <halley@dnspython.org>
76
77         * dns/zone.py (from_xfr): dns.zone.from_xfr() in relativization
78         mode incorrectly set zone.origin to the empty name.
79
80 2004-09-02  Bob Halley  <halley@dnspython.org>
81
82         * dns/name.py (Name.to_wire): The 'file' parameter to
83         Name.to_wire() is now optional; if omitted, the wire form will
84         be returned as the value of the function.
85
86 2004-08-14  Bob Halley  <halley@dnspython.org>
87
88         * dns/message.py (Message.find_rrset): find_rrset() now uses an
89         index, vastly improving the from_wire() performance of large
90         messages such as zone transfers.
91
92 2004-08-07  Bob Halley  <halley@dnspython.org>
93
94         * (Version 1.3.2 released)
95
96 2004-08-04  Bob Halley  <halley@dnspython.org>
97
98         * dns/query.py: sending queries to a nameserver via IPv6 now
99         works.
100         
101         * dns/inet.py (af_for_address): Add af_for_address(), which looks
102         at a textual-form address and attempts to determine which address
103         family it is.
104
105         * dns/query.py: the default for the 'af' parameter of the udp(),
106         tcp(), and xfr() functions has been changed from AF_INET to None,
107         which causes dns.inet.af_for_address() to be used to determine the
108         address family.  If dns.inet.af_for_address() can't figure it out,
109         we fall back to AF_INET and hope for the best.
110
111 2004-07-31  Bob Halley  <halley@dnspython.org>
112
113         * dns/rdtypes/ANY/NSEC.py (NSEC.from_text): The NSEC text format
114         does not allow specifying types by number, so we shouldn't either.
115
116         * dns/renderer.py: the renderer module didn't import random,
117         causing an exception to be raised if a query id wasn't provided
118         when a Renderer was created.
119
120         * dns/resolver.py (Resolver.query): the resolver wasn't catching
121         dns.exception.Timeout, so a timeout erroneously caused the whole
122         resolution to fail instead of just going on to the next server.
123
124 2004-06-16  Bob Halley  <halley@dnspython.org>
125
126         * dns/rdtypes/ANY/LOC.py (LOC.from_text): LOC milliseconds values
127         were converted incorrectly if the length of the milliseconds
128         string was less than 3.
129
130 2004-06-06  Bob Halley  <halley@dnspython.org>
131
132         * (Version 1.3.1 released)
133
134 2004-05-22  Bob Halley  <halley@dnspython.org>
135
136         * dns/update.py (Update.delete): We erroneously specified a
137         "deleting" value of dns.rdatatype.NONE instead of
138         dns.rdataclass.NONE when the thing being deleted was either an
139         Rdataset instance or an Rdata instance.
140
141         * dns/rdtypes/ANY/SSHFP.py: Added support for the proposed SSHFP
142         RR type.
143
144 2004-05-14  Bob Halley  <halley@dnspython.org>
145
146         * dns/rdata.py (from_text): The masterfile reader did not
147         accept the unknown RR syntax when used with a known RR type.
148
149 2004-05-08  Bob Halley  <halley@dnspython.org>
150
151         * dns/name.py (from_text): dns.name.from_text() did not raise
152         an exception if a backslash escape ended prematurely.
153
154 2004-04-09  Bob Halley  <halley@dnspython.org>
155
156         * dns/zone.py (_MasterReader._rr_line): The masterfile reader
157         erroneously treated lines starting with leading whitespace but
158         not having any RR definition as an error.  It now treats
159         them like a blank line (which is not an error).
160
161 2004-04-01  Bob Halley  <halley@dnspython.org>
162         
163         * (Version 1.3.0 released)
164
165 2004-03-19  Bob Halley  <halley@dnspython.org>
166
167         * Added support for new DNSSEC types RRSIG, NSEC, and DNSKEY.
168
169 2004-01-16  Bob Halley  <halley@dnspython.org>
170
171         * dns/query.py (_connect): Windows returns EWOULDBLOCK instead
172         of EINPROGRESS when trying to connect a nonblocking socket.
173
174 2003-11-13  Bob Halley  <halley@dnspython.org>
175
176         * dns/rdtypes/ANY/LOC.py (LOC.to_wire): We encoded and decoded LOC
177         incorrectly, since we were interpreting the values of altitiude,
178         size, hprec, and vprec in meters instead of centimeters.
179
180         * dns/rdtypes/IN/WKS.py (WKS.from_wire): The WKS protocol value is
181         encoded with just one octet, not two!
182
183 2003-11-09  Bob Halley  <halley@dnspython.org>
184
185         * dns/resolver.py (Cache.maybe_clean): The cleaner deleted items
186         from the dictionary while iterating it, causing a RuntimeError
187         to be raised.  Thanks to Mark R. Levinson for the bug report,
188         regression test, and fix.
189
190 2003-11-07  Bob Halley  <halley@dnspython.org>
191
192         * (Version 1.2.0 released)
193
194 2003-11-03  Bob Halley  <halley@dnspython.org>
195
196         * dns/zone.py (_MasterReader.read): The saved_state now includes
197         the default TTL.
198
199 2003-11-01  Bob Halley  <halley@dnspython.org>
200
201         * dns/tokenizer.py (Tokenizer.get): The tokenizer didn't
202         handle escaped delimiters.
203
204 2003-10-27  Bob Halley  <halley@dnspython.org>
205
206         * dns/resolver.py (Resolver.read_resolv_conf): If no nameservers
207         are configured in /etc/resolv.conf, the default nameserver
208         list should be ['127.0.0.1'].
209
210 2003-09-08  Bob Halley  <halley@dnspython.org>
211
212         * dns/resolver.py (Resolver._config_win32_fromkey): We didn't
213         catch WindowsError, which can happen if a key is not defined
214         in the registry.
215
216 2003-09-06  Bob Halley  <halley@dnspython.org>
217
218         * (Version 1.2.0b1 released)
219         
220 2003-09-05  Bob Halley  <halley@dnspython.org>
221
222         * dns/query.py: Timeout support has been overhauled to provide
223         timeouts under Python 2.2 as well as 2.3, and to provide more
224         accurate expiration.
225
226 2003-08-30  Bob Halley  <halley@dnspython.org>
227
228         * dns/zone.py: dns.exception.SyntaxError is raised for unknown
229         master file directives.
230
231 2003-08-28  Bob Halley  <halley@dnspython.org>
232
233         * dns/zone.py: $INCLUDE processing is now enabled/disabled using
234         the allow_include parameter.  The default is to process $INCLUDE
235         for from_file(), and to disallow $INCLUDE for from_text().  The
236         master reader now calls zone.check_origin_node() by default after
237         the zone has been read.  find_rdataset() called get_node() instead
238         of find_node(), which result in an incorrect exception.  The
239         relativization state of a zone is now remembered and applied
240         consistently when looking up names.  from_xfr() now supports
241         relativization like the _MasterReader.
242
243 2003-08-22  Bob Halley  <halley@dnspython.org>
244
245         * dns/zone.py: The _MasterReader now understands $INCLUDE.
246
247 2003-08-12  Bob Halley  <halley@dnspython.org>
248
249         * dns/zone.py: The _MasterReader now specifies the file and line
250         number when a syntax error occurs.  The BIND 8 TTL format is now
251         understood when loading a zone, though it will never be emitted.
252         The from_file() function didn't pass the zone_factory parameter
253         to from_text().
254
255 2003-08-10  Bob Halley  <halley@dnspython.org>
256
257         * (Version 1.1.0 released)
258
259 2003-08-07  Bob Halley  <halley@dnspython.org>
260
261         * dns/update.py (Update._add): A typo meant that _add would
262         fail if the thing being added was an Rdata object (as
263         opposed to an Rdataset or the textual form of an Rdata).
264
265 2003-08-05  Bob Halley  <halley@dnspython.org>
266
267         * dns/set.py: the simple Set class has been moved to its
268         own module, and augmented to support more set operations.
269
270 2003-08-04  Bob Halley  <halley@dnspython.org>
271
272         * Node and all rdata types have been "slotted".  This speeds
273         things up a little and reduces memory usage noticeably.
274
275 2003-08-02  Bob Halley  <halley@dnspython.org>
276
277         * (Version 1.1.0c1 released)
278
279 2003-08-02  Bob Halley  <halley@dnspython.org>
280
281         * dns/rdataset.py: SimpleSets now support more set options.
282         
283         * dns/message.py: Added the get_rrset() method.  from_file() now
284         allows Unicode filenames and turns on universal newline support if
285         it opens the file itself.
286
287         * dns/node.py: Added the delete_rdataset() and replace_rdataset()
288         methods.
289
290         * dns/zone.py: Added the delete_node(), delete_rdataset(), and
291         replace_rdataset() methods.  from_file() now allows Unicode
292         filenames and turns on universal newline support if it opens the
293         file itself.  Added a to_file() method.
294
295 2003-08-01  Bob Halley  <halley@dnspython.org>
296
297         * dns/opcode.py: Opcode from/to text converters now understand
298         numeric opcodes.  The to_text() method will return a numeric opcode
299         string if it doesn't know a text name for the opcode.
300         
301         * dns/message.py: Added set_rcode().  Fixed code where ednsflags
302         wasn't treated as a long.
303
304         * dns/rcode.py: ednsflags wasn't treated as a long.  Rcode from/to
305         text converters now understand numeric rcodes.  The to_text()
306         method will return a numeric rcode string if it doesn't know
307         a text name for the rcode.
308
309         * examples/reverse.py: Added a new example program that builds a
310         reverse (address-to-name) mapping table from the name-to-address
311         mapping specified by A RRs in zone files.
312
313         * dns/node.py: Added get_rdataset() method.
314
315         * dns/zone.py: Added get_rdataset() and get_rrset() methods.  Added
316         iterate_rdatas().
317
318 2003-07-31  Bob Halley  <halley@dnspython.org>
319
320         * dns/zone.py: Added the iterate_rdatasets() method which returns
321         a generator which yields (name, rdataset) tuples for all the
322         rdatasets in the zone matching the specified rdatatype.
323
324 2003-07-30  Bob Halley  <halley@dnspython.org>
325
326         * (Version 1.1.0b2 released)
327
328 2003-07-30  Bob Halley  <halley@dnspython.org>
329
330         * dns/zone.py: Added find_rrset() and find_rdataset() convenience
331         methods.  They let you retrieve rdata with the specified name
332         and type in one call.
333
334         * dns/node.py: Nodes no longer have names; owner names are
335         associated with nodes in the Zone object's nodes dictionary.
336
337         * dns/zone.py: Zone objects now implement more of the standard
338         mapping interface.  __iter__ has been changed to iterate the keys
339         rather than values to match the standard mapping interface's
340         behavior.
341
342 2003-07-20  Bob Halley  <halley@dnspython.org>
343
344         * dns/ipv6.py (inet_ntoa): Handle embedded IPv4 addresses.
345
346 2003-07-19  Bob Halley  <halley@dnspython.org>
347
348         * (Version 1.1.0b1 released)
349
350 2003-07-18  Bob Halley  <halley@dnspython.org>
351
352         * dns/tsig.py: The TSIG validation of TCP streams where not
353         every message is signed now works correctly.
354
355         * dns/zone.py: Zones can now be compared for equality and
356         inequality.  If the other object in the comparison is also
357         a zone, then "the right thing" happens; i.e. the zones are
358         equal iff.: they have the same rdclass, origin, and nodes.
359
360 2003-07-17  Bob Halley  <halley@dnspython.org>
361
362         * dns/message.py (Message.use_tsig): The method now allows for
363         greater control over the various fields in the generated signature
364         (e.g. fudge).
365         (_WireReader._get_section): UnknownTSIGKey is now raised if an
366         unknown key is encountered, or if a signed message has no keyring.
367
368 2003-07-16  Bob Halley  <halley@dnspython.org>
369
370         * dns/tokenizer.py (Tokenizer._get_char): get_char and unget_char
371         have been renamed to _get_char and _unget_char since they are not
372         useful to clients of the tokenizer.
373
374 2003-07-15  Bob Halley  <halley@dnspython.org>
375
376         * dns/zone.py (_MasterReader._rr_line): owner names were being
377         unconditionally relativized; it makes much more sense for them
378         to be relativized according to the relativization setting of
379         the reader.
380
381 2003-07-12  Bob Halley  <halley@dnspython.org>
382
383         * dns/resolver.py (Resolver.read_resolv_conf): The resolv.conf
384         parser did not allow blank / whitespace-only lines, nor did it
385         allow comments.  Both are now supported.
386
387 2003-07-11  Bob Halley  <halley@dnspython.org>
388
389         * dns/name.py (Name.to_digestable): to_digestable() now
390         requires an origin to be specified if the name is relative.
391         It will raise NeedAbsoluteNameOrOrigin if the name is
392         relative and there is either no origin or the origin is
393         itself relative.
394         (Name.split): returned the wrong answer if depth was 0 or depth
395         was the length of the name.  split() now does bounds checking
396         on depth, and raises ValueError if depth < 0 or depth > the length
397         of the name.
398
399 2003-07-10  Bob Halley  <halley@dnspython.org>
400
401         * dns/ipv6.py (inet_ntoa): The routine now minimizes its output
402         strings.  E.g. the IPv6 address
403         "0000:0000:0000:0000:0000:0000:0000:0001" is minimized to "::1".
404         We do not, however, make any effort to display embedded IPv4
405         addresses in the dot-quad notation.
406
407 2003-07-09  Bob Halley  <halley@dnspython.org>
408
409         * dns/inet.py: We now supply our own AF_INET and AF_INET6
410         constants since AF_INET6 may not always be available.  If the
411         socket module has AF_INET6, we will use it.  If not, we will
412         use our own value for the constant.
413
414         * dns/query.py: the functions now take an optional af argument
415         specifying the address family to use when creating the socket.
416
417         * dns/rdatatype.py (is_metatype): a typo caused the function
418         return true only for type OPT.
419
420         * dns/message.py: message section list elements are now RRsets
421         instead of Nodes.  This API change makes processing messages
422         easier for many applications.
423         
424 2003-07-07  Bob Halley  <halley@dnspython.org>
425
426         * dns/rrset.py: added.  An RRset is a named rdataset.
427
428         * dns/rdataset.py (Rdataset.__eq__): rdatasets may now be compared
429         for equality and inequality with other objects.  Rdataset instance
430         variables are now slotted.
431         
432         * dns/message.py: The wire format and text format readers are now
433         classes.  Variables related to reader state have been moved out
434         of the message class.
435
436 2003-07-06  Bob Halley  <halley@dnspython.org>
437
438         * dns/name.py (from_text): '@' was not interpreted as the empty
439         name.
440
441         * dns/zone.py: the master file reader derelativized names in rdata
442         relative to the zone's origin, not relative to the current origin.
443         The reader now deals with relativization in two steps.  The rdata
444         is read and derelativized using the current origin.  The rdata's
445         relativity is then chosen using the zone origin and the relativize
446         boolean.  Here's an example.
447
448                 $ORIGIN foo.example.
449                 $TTL 300
450                 bar MX 0 blaz
451
452         If the zone origin is example., and relativization is on, then
453         This fragment will become:
454
455                 bar.foo.example. 300 IN MX 0 blaz.foo.example.
456
457         after the first step (derelativization to current origin), and
458
459                 bar.foo 300 IN MX 0 blaz.foo
460
461         after the second step (relativiation to zone origin).
462         
463         * dns/namedict.py: added.
464
465         * dns/zone.py: The master file reader has been made into its
466         own class.  Reader-related instance variables have been moved
467         form the zone class into the reader class.
468         
469         * dns/zone.py: Add node_factory class attribute.  An application
470         can now subclass Zone and Node and have a zone whose nodes are of
471         the subclassed Node type.  The from_text(), from_file(), and
472         from_xfr() algorithms now take an optional zone_factory argument.
473         This allows the algorithms to be used to create zones whose class
474         is a subclass of Zone.
475
476
477 2003-07-04  Bob Halley  <halley@dnspython.org>
478
479         * dns/renderer.py: added new wire format rendering module and
480         converted message.py to use it.  Applications which want
481         fine-grained control over the conversion to wire format may call
482         the renderer directy, instead of having it called on their behalf
483         by the message code.
484
485 2003-07-02  Bob Halley  <halley@dnspython.org>
486
487         * dns/name.py (_validate_labels): The NameTooLong test was
488         incorrect.
489
490         * dns/message.py (Message.to_wire): dns.exception.TooBig is
491         now raised if the wire encoding exceeds the specified
492         maximum size.
493
494 2003-07-01  Bob Halley  <halley@dnspython.org>
495
496         * dns/message.py: EDNS encoding was broken.  from_text()
497         didn't parse rcodes, flags, or eflags correctly.  Comparing
498         messages with other types of objects didn't work.
499
500 2003-06-30  Bob Halley  <halley@dnspython.org>
501
502         * (Version 1.0.0 released)
503
504 2003-06-30  Bob Halley  <halley@dnspython.org>
505
506         * dns/rdata.py: Rdatas now implement rich comparisons instead of
507         __cmp__.
508
509         * dns/name.py: Names now implement rich comparisons instead of
510         __cmp__.
511
512         * dns/inet.py (inet_ntop): Always use our code, since the code
513         in the socket module doesn't support AF_INET6 conversions if
514         IPv6 sockets are not available on the system.
515
516         * dns/resolver.py (Answer.__init__): A dangling CNAME chain was
517         not raising NoAnswer.
518
519         * Added a simple resolver Cache class.
520
521         * Added an expiration attribute to answer instances.
522
523 2003-06-24  Bob Halley  <halley@dnspython.org>
524
525         * (Version 1.0.0b3 released)
526
527 2003-06-24  Bob Halley  <halley@dnspython.org>
528
529         * Renamed module "DNS" to "dns" to avoid conflicting with
530         PyDNS.
531
532 2003-06-23  Bob Halley  <halley@dnspython.org>
533
534         * The from_text() relativization controls now work the same way as
535         the to_text() controls.
536
537         * DNS/rdata.py: The parsing of generic rdata was broken.
538
539 2003-06-21  Bob Halley  <halley@dnspython.org>
540
541         * (Version 1.0.0b2 released)
542
543 2003-06-21  Bob Halley  <halley@dnspython.org>
544
545         * The Python 2.2 socket.inet_aton() doesn't seem to like
546         '255.255.255.255'.  We work around this.
547
548         * Fixed bugs in rdata to_wire() and from_wire() routines of a few
549         types.  These bugs were discovered by running the tests/zone.py
550         Torture1 test.
551         
552         * Added implementation of type APL.
553
554 2003-06-20  Bob Halley  <halley@dnspython.org>
555
556         * DNS/rdtypes/IN/AAAA.py: Use our own versions of inet_ntop and
557         inet_pton if the socket module doesn't provide them for us.
558
559         * The resolver now does a better job handling exceptions.  In
560         particular, it no longer eats all exceptions; rather it handles
561         those exceptions it understands, and leaves the rest uncaught.
562         
563         * Exceptions have been pulled into their own module.  Almost all
564         exceptions raised by the code are now subclasses of
565         DNS.exception.DNSException.  All form errors are subclasses of
566         DNS.exception.FormError (which is itself a subclass of
567         DNS.exception.DNSException).
568
569 2003-06-19  Bob Halley  <halley@dnspython.org>
570         
571         * Added implementations of types DS, NXT, SIG, and WKS.
572
573         * __cmp__ for type A and AAAA could produce incorrect results.
574
575 2003-06-18  Bob Halley  <halley@dnspython.org>
576
577         * Started test suites for zone.py and tokenizer.py.
578         
579         * Added implementation of type KEY.
580         
581         * DNS/rdata.py(_base64ify): \n could be emitted erroneously.
582
583         * DNS/rdtypes/ANY/SOA.py (SOA.from_text): The SOA RNAME field could
584         be set to the value of MNAME in common cases.
585
586         * DNS/rdtypes/ANY/X25.py: __init__ was broken.
587
588         * DNS/zone.py (from_text): $TTL handling erroneously caused the
589         next line to be eaten.
590
591         * DNS/tokenizer.py (Tokenizer.get): parsing was broken for empty
592         quoted strings.  Quoted strings didn't handle \ddd escapes.  Such
593         escapes are appear not to comply with RFC 1035, but BIND allows
594         them and they seem useful, so we allow them too.
595
596         * DNS/rdtypes/ANY/ISDN.py (ISDN.from_text): parsing was
597         broken for ISDN RRs without subaddresses.
598
599         * DNS/zone.py (from_file): from_file() didn't work because
600         some required parameters were not passed to from_text().
601
602 2003-06-17  Bob Halley  <halley@dnspython.org>
603
604         * (Version 1.0.0b1 released)
605
606 2003-06-17  Bob Halley  <halley@dnspython.org>
607
608         * Added implementation of type PX.
609         
610 2003-06-16  Bob Halley  <halley@dnspython.org>
611
612         * Added implementation of types CERT, GPOS, LOC, NSAP, NSAP-PTR.
613
614         * DNS/rdatatype.py (_by_value): A cut-and-paste error had broken
615         NSAP and NSAP-PTR.
616
617 2003-06-12  Bob Halley  <halley@dnspython.org>
618
619         * Created a tests directory and started adding tests.
620         
621         * Added "and its documentation" to the permission grant in the
622         license.
623
624 2003-06-12  Bob Halley  <halley@dnspython.org>
625
626         * DNS/name.py (Name.is_wild): is_wild() erroneously raised IndexError
627         if the name was empty.
628
629 2003-06-10  Bob Halley  <halley@dnspython.org>
630
631         * Added implementations of types AFSDB, X25, and ISDN.
632         
633         * The documentation associated with the various rdata types has been
634         improved.  In particular, instance variables are now described.
635
636 2003-06-09  Bob Halley  <halley@dnspython.org>
637
638         * Added implementations of types HINFO, RP, and RT.
639         
640         * DNS/message.py (make_query): Document that make_query() sets
641         flags to DNS.flags.RD, and chooses a random query id.
642
643 2003-06-05  Bob Halley  <halley@dnspython.org>
644
645         * (Version 1.0.0a2 released)
646         
647 2003-06-05  Bob Halley  <halley@dnspython.org>
648         
649         * DNS/node.py: removed __getitem__ and __setitem__, since
650         they are not used by the codebase and were not useful in
651         general either.
652
653         * DNS/message.py (from_file): from_file() now allows a
654         filename to be specified instead of a file object.
655
656         * DNS/rdataset.py: The is_compatible() method of the
657         DNS.rdataset.Rdataset class was deleted.
658
659 2003-06-04  Bob Halley  <halley@dnspython.org>
660
661         * DNS/name.py (class Name): Names are now immutable.
662
663         * DNS/name.py: the is_comparable() method has been removed, since
664         names are always comparable.
665
666         * DNS/resolver.py (Resolver.query): A query could run for up
667         to the lifetime + the timeout.  This has been corrected and the
668         query will now only run up to the lifetime.
669
670 2003-06-03  Bob Halley  <halley@dnspython.org>
671
672         * DNS/resolver.py: removed the 'new' function since it is not the
673         style of the library to have such a function.  Call
674         DNS.resolver.Resolver() to make a new resolver.
675
676 2003-06-03  Bob Halley  <halley@dnspython.org>
677
678         * DNS/resolver.py (Resolver._config_win32_fromkey): The DhcpServer
679         list is space separated, not comma separated.
680
681 2003-06-03  Bob Halley  <halley@dnspython.org>
682
683         * DNS/update.py: Added an update module to make generating updates
684         easier.
685
686 2003-06-03  Bob Halley  <halley@dnspython.org>
687
688         * Commas were missing in some of the __all__ entries in various
689         __init__.py files.
690
691 2003-05-30  Bob Halley  <halley@dnspython.org>
692
693         * (Version 1.0.0a1 released)