rsclib 0.65__py3-none-any.whl → 0.67__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,706 @@
1
+ Metadata-Version: 2.1
2
+ Name: rsclib
3
+ Version: 0.67
4
+ Summary: Misc. basic stuff needed by RSCs tools
5
+ Home-page: http://rsclib.sourceforge.net/
6
+ Download-URL: http://downloads.sourceforge.net/project/rsclib/rsclib/0.67/rsclib-0.67.tar.gz
7
+ Author: Ralf Schlatterbeck
8
+ Author-email: Ralf Schlatterbeck <rsc@runtux.com>
9
+ License: GNU Library or Lesser General Public License (LGPL)
10
+ Project-URL: Homepage, https://github.com/schlatterbeck/rsclib
11
+ Project-URL: Bug Tracker, https://github.com/schlatterbeck/rsclib/issues
12
+ Platform: Any
13
+ Classifier: Development Status :: 5 - Production/Stable
14
+ Classifier: License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)
15
+ Classifier: Operating System :: OS Independent
16
+ Classifier: Programming Language :: Python
17
+ Classifier: Intended Audience :: Developers
18
+ Classifier: Programming Language :: Python :: 2
19
+ Classifier: Programming Language :: Python :: 2.7
20
+ Classifier: Programming Language :: Python :: 3
21
+ Classifier: Programming Language :: Python :: 3.5
22
+ Classifier: Programming Language :: Python :: 3.6
23
+ Classifier: Programming Language :: Python :: 3.7
24
+ Classifier: Programming Language :: Python :: 3.8
25
+ Classifier: Programming Language :: Python :: 3.9
26
+ Classifier: Programming Language :: Python :: 3.10
27
+ Classifier: Programming Language :: Python :: 3.11
28
+ Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4
29
+ Description-Content-Type: text/x-rst
30
+
31
+ rsclib: Utility Routines
32
+ ========================
33
+
34
+ :Author: Ralf Schlatterbeck <rsc@runtux.com>
35
+
36
+ The library includes various utility modules used in other projects.
37
+
38
+ - ast_call: A simple call manager using asterisk: This can be used to
39
+ originate a call and log all event associated to that call. So you
40
+ can find out the status of the call and optionally the dialstatus.
41
+ - ast_cdr: parser for CDR records in asterisk. We currently use
42
+ text-files only, this might be later extended for database use.
43
+ - ast_probe: Methods for checking for running asterisk
44
+ - Autosuper magic (originally from Guido van Rossums announcement of
45
+ Python 2.2): For refactoring it's a good idea that each class knows
46
+ its parents (that the parent is not hardcoded in the upcall),
47
+ achieved by adding a the __super attribute. Use as, e.g.,
48
+ self.__super.method for calling method in the parent.
49
+ - base_pickler: Allow to specify a dictionary of pickle exceptions, if
50
+ the value in the dictionary is in __dict__ when pickle is called, the
51
+ value in __dict__ is replaced with the value in the exception
52
+ dictionary.
53
+ - bero: A configurator for the `bero*fos`_ failover switch. See my
54
+ `blogpost`_ why I wrote that (short summary: to work around bugs in
55
+ the firmware of the device which are not addressed by the
56
+ configurator code that comes with the device).
57
+ - Config_File for python-syntax configuration files used in several of
58
+ my projects.
59
+ - crm: Tools for the cluster resource manager of the pacemaker high
60
+ availability project. We allow querying of nodes, resources and
61
+ errors for resources as well as resetting errors and migration of
62
+ resources.
63
+ - execute: module for executing commands and handling IO, this also
64
+ has a Lock and a Log mixin. Now there is also a framework for
65
+ executing processes in a pipeline, there can be fork-points in the
66
+ pipeline where the output of one process feeds several pipelines.
67
+ See test_exec.py, test2_exec.py and test3_exec.py.
68
+ - grepmime: search for pattern in email attachments (even if these are
69
+ encoded)
70
+ - inductance: Inductance calculation of air-cored cylindrical
71
+ flat-winded coil according to Robert Weaver
72
+ http://electronbunker.ca/CalcMethods3b.html
73
+ - IP_Address: IP v4 and v6 Addresses with subnet masking
74
+ - iter_recipes: magic with iterators
75
+ With some backwards-compatible implementations of Python's itertools
76
+ for earlier Python versions.
77
+ - isdn: model the status of Asterisk ISDN lines, either Linux Call
78
+ Router (LCR) ISDN lines or lines managed by DAHDI. Special case for
79
+ Xorcom modules which provide more information using Xorcom-specific
80
+ files in /proc than native DAHDI modules.
81
+ - lc_resonator: Frequency calculation for L-C resonator
82
+ - Math implements Euclids algorithm for greatest common divisor and as
83
+ a by-product the least common multiple
84
+ - nmap: A parser for output of nmap scans to (e.g. to generate tables
85
+ in TeX)
86
+ - ocf: small framework for writing OCF scripts for the heartbeat
87
+ cluster resource manager (probably also usable for the newer version
88
+ called pacemaker but for now only tested with the version in Debian
89
+ stable aka lenny).
90
+ - PDF_Signature: experimental code for checking signatures on adobe PDF
91
+ documents
92
+ - Phone: Parse phone numbers (Austria-specific)
93
+ - PM_Value: Possibly missing value, encapsulate a number which may be
94
+ missing and associated arithmetics.
95
+ - pycompat: Utilities for running under different python versions
96
+ - Rational: Implementation of Rational numbers
97
+ - stateparser: Simple state-machine parser class, this is used for
98
+ writing line-based parsers using a state machine. For an example
99
+ usage see nmap. After parsing the result can be pickled but we lose
100
+ the ability to continue parsing after reading from the pickled
101
+ result.
102
+ - sqlparser: Parse SQL dumps from postgreSQL and mysql and optionally
103
+ create an new (e.g. anonymized) sql dump
104
+ - timeout: A simple timeout mechanism using SIGALRM
105
+ - Tex_CSV_Writer: Write CVS files in a syntax that can be parsed by
106
+ TeX. Implements same interface as the csv module. Only implements
107
+ writing.
108
+ - trafficshape: Simple traffic shaping configuration: Currently
109
+ generates Linux tc commands for a traffic shaping config using hfsc
110
+ for shaping and sfq or red for the leaf qdiscs. We also provide a
111
+ translator from iptables mangle rules (for traffic marking) to tc
112
+ commands for filtering. This is needed if we want to do inbound
113
+ shaping. The Linux kernel doesn't support inbound shaping, so we need
114
+ to redirect all traffic to an ifb device. On that device we do
115
+ *outbound* shaping. Unfortunately when sending traffic to an ifb
116
+ device with a tc filter + action mirred command this occurs *before*
117
+ the PREROUTING chain. This means packets are not yet marked. So we
118
+ provide a parser to translate mangle rules in the PREROUTING chain to
119
+ appropriate tc commands. For implementing this we mark packets (using
120
+ the tc action xt (formerly known as ipt used for iptables marking, a
121
+ backward-compatibility option can be used) in the original device and
122
+ then use the marked information in the ifb device to send the traffic
123
+ to appropriate qdiscs. This supports a two-level approach: Rules in
124
+ iptables that match on a packet mark (using --mark) are translated to
125
+ tc commands in the ifb device (they depend on the mark already
126
+ present). All other rules are translated to a tc action xt (using -j
127
+ MARK) and a tc action mirred redirect (for sending the traffic to the
128
+ ifb device) for the *original* device (e.g. eth0 redirecting to
129
+ ifb0). The PREROUTING commands by default are directly taken from the
130
+ running kernel by default (using "iptables -t mangle -S -v")
131
+
132
+ .. _`bero*fos`: https://shop.beronet.com/product_info.php/cPath/56/products_id/159
133
+ .. _`blogpost`: http://blog.runtux.com/2009/04/09/81/
134
+
135
+ Resources
136
+ ---------
137
+
138
+ Download the source at https://sourceforge.net/projects/rsclib/
139
+ and install using the standard python setup, e.g.::
140
+
141
+ python setup.py install --prefix=/usr/local
142
+
143
+ Alternatively get it from pypi and/or install via pip.
144
+
145
+
146
+ Changes
147
+ -------
148
+
149
+ Version 0.67: Bugfixes in rational and iter_recipes.batched
150
+
151
+ - iter_recipes.batched now doesn't return an empty batch
152
+ - Rename Rational module to rational
153
+ - Fix division in rational module
154
+
155
+ Version 0.66: Hexdump parsing, iter_recipes.batched
156
+
157
+ - Add iter_recipes.batched which appears in Python 3.12
158
+ - Hexdump parsing is more tolerant now
159
+ - Some overlooked Python3 changes
160
+
161
+ Version 0.65: Use pyproject.toml
162
+
163
+ - Use new-style packaging with pyproject.toml, old-style setup.py is
164
+ still available
165
+ - Use console script entry points instead of explicit scripts in
166
+ directory bin
167
+
168
+ Version 0.64: Small execute.Log updates
169
+
170
+ - Add add_stderr_handler method to also log to stderr
171
+
172
+ Version 0.63: Python3 fixes
173
+
174
+ - Fix bytes_ord to also deal with a bytes object in python3
175
+
176
+ Version 0.62: Python3 fixes
177
+
178
+ - More Python3 fixes
179
+ - Update of stateparser
180
+ - hexdump/unhexdump
181
+
182
+ Version 0.61: sqlparser
183
+
184
+ - Allow filtering during reading of sql dump
185
+
186
+ Version 0.60: Python3 fixes
187
+
188
+ - hexdump
189
+ - xrange
190
+ - compatibility for bytes iterator
191
+
192
+ Version 0.59: sqlparser
193
+
194
+ - Support older postgresql versions, tested 9.6
195
+
196
+ Version 0.58: sqlparser
197
+
198
+ - Fix python3 string handling for sqlparser
199
+ - Small fix in stateparser
200
+
201
+ Version 0.57: isdn
202
+
203
+ - Add parsing of beronet GSM modules
204
+ - Support multiple bero devices with same numbering
205
+
206
+ Version 0.56: ast_call, isdn
207
+
208
+ - The ast_call now is brought to latest version of pyst and asterisk
209
+ - isdn module now supports remote isdn via isdn gateway
210
+ - various python3 fixes
211
+
212
+ Version 0.55: LOCKDIR
213
+
214
+ - Now it's possible to set the locking directory (default is still
215
+ /var/lock which is a symlink to /run/lock on modern systems) via
216
+ the environment variable LOCKDIR.
217
+
218
+ Version 0.54: inductance, sqlparser
219
+
220
+ - The sqlparser now can do round-tripping (some items are in
221
+ different order)
222
+ - More inductance formulae
223
+
224
+ Version 0.53: inductance, IPv4 address
225
+
226
+ - Bring inductance to metric units (output in F, input in m)
227
+ - Fix IPv4 address parsing when address contains less than 3 dots
228
+
229
+ Version 0.52: Small fixes
230
+
231
+ - Fix unicode problem in sqlparser
232
+
233
+ Version 0.51: Small fixes
234
+
235
+ - Fix IP addresses in boolean context
236
+ - Add supported python versions to setup.py
237
+
238
+ Version 0.50: Small additions
239
+
240
+ - Change Rational to no longer print mixed fractions by default
241
+ - Allow setting the locking filename for Lock_Mixin in execute
242
+
243
+ Version 0.49: Python3 compatibility
244
+
245
+ - Remove ETree, HTML_Parse, PDF_Parse, multipart_form: These are
246
+ better handled by libraries like BeautifulSoup or specific PDF
247
+ handling libs or the requests library
248
+ - Remove ldap_lib.py: This is now nicely supported by ldap3 which
249
+ also has a native iterator for paged search
250
+ - Remove Freshmeat.py: Freshmeat is more or less dead now and they
251
+ don't support an API-Test so it is very hard to get this right
252
+ - Put Firstname (with all the history) into its own package, note
253
+ that this needs more work to run against the latest version of the
254
+ website
255
+ - Lots of fixes for python3 compatibility: Where doctests existed
256
+ these pass now but there is still untested code and some code where
257
+ libaries are missing for python3 (pyst asterisk bindings and
258
+ openssl wrappers)
259
+
260
+ Version 0.48: Fixes for execute
261
+
262
+ - Now we really close all relevant ends of pipes in other processes
263
+ which avoids hangs
264
+ - Add logging to Process
265
+
266
+ Version 0.47: Fixes for IP_Address; pypi
267
+
268
+ - IP_Address: Relax inheritance checks when comparing IP_Address
269
+ instances
270
+ - Version uploaded to pypi and documented in README
271
+
272
+ Version 0.46: Additions to ast_probe; Bug-fix
273
+
274
+ - ast_probe now has methods for checking sip registry and reloading
275
+ the sip subsystem in asterisk
276
+ - Add a small script, ast_sip_check for checking sip registration on
277
+ an asterisk server and restart sip if some registrations are
278
+ missing.
279
+ - Config_File fixes the __getattr_ method to return an
280
+ AttributeError in case of failure
281
+
282
+ Version 0.45: Fix ISDN ports
283
+
284
+ String reprentation had leading unicode 'u'
285
+
286
+ - Fix string representation in ISDN ports
287
+
288
+ Version 0.44: Make line-waiting for bero configurable
289
+
290
+ For cluster resource berofos we make waiting for the L1 and L2 of the
291
+ ISDN line configurable. The hard-coded default was too low.
292
+
293
+ - New config-item ISDN_WAIT_UP
294
+
295
+ Version 0.43: Support new berofos firmware
296
+
297
+ The new berofos (failover switch) firmware has some new low-level
298
+ commands which we now accept when getting the device status.
299
+
300
+ - Fix bero.py to accept new low-level commands
301
+ - Add some more documentation to bero.py
302
+ - Add description of ast_probe in this README
303
+
304
+ Version 0.42: Feature enhancements
305
+
306
+ Add crm for pacemaker cluster management, new ast_probe for checking of
307
+ asterisk status. Fixes to ocf and ast_call.
308
+
309
+ - Add crm.py
310
+ - Add ast_probe.py
311
+ - Allow specification of parsed config (cfg) for Call_Manager in
312
+ ast_call.py
313
+ - Better resource monitoring for asterisk and dahdi in ocf.py
314
+ - fix ocf.py to use new classes in isdn.py
315
+ - isdn.py now doesn't probe asterisk for the isdn stack in use if it
316
+ finds a hint in the config-file
317
+
318
+ Version 0.41: Minor feature enhancements
319
+
320
+ Fixes to Freshmeat, pycompat, sql-dump parser.
321
+
322
+ - Fix parsing of escaped quotes in mysql dumps
323
+ - Freshmeat
324
+ - pycompat fixes
325
+
326
+ Version 0.40: Distribution bug-fix
327
+
328
+ Renaming of README lead to the missing file README.rst in the distro.
329
+
330
+ - Fix MANIFEST.in
331
+
332
+ Version 0.39: Minor feature enhancements
333
+
334
+ Fixes to hexdump, unicode issues (elementtree wrapper, stateparser).
335
+ Add some fixes to IP_Address comparison. The nmap output has changed in
336
+ recent versions, adapt to new format.
337
+
338
+ - Make address in hexdump configurable
339
+ - Bug-fix with comparison of sub-classes in IP_Address
340
+ - Unicode support in ETree
341
+ - Unicode support in stateparser
342
+ - Fix for trailing empty attributes in CSV output of PostgreSQL dumps
343
+ in sqlparser
344
+ - Unicode support in sqlparser (uses stateparser)
345
+ - Parse new nmap format
346
+ - Fix for configurable Releasetools location
347
+
348
+ Version 0.38: Minor feature enhancements
349
+
350
+ Fix boolean conversion of IP6_Address (and IP4_Address).
351
+
352
+ - IP6_Address would throw an error when trying a truth-test. Add
353
+ __nonzero__ (which always returns True even for the 0 Address)
354
+
355
+ Version 0.37: Minor feature enhancements
356
+
357
+ Change sort-order of IP_Address, make IP_Address immutable, use
358
+ metaclass magic to allow copy-constructor semantics.
359
+
360
+ - Sort order of IP_Address objects (both v4 and v6) now reverses the
361
+ order of the netmask: If the IP-Address part of the objects to
362
+ compare are the same, we used to sort by *inverse* netmask (putting
363
+ smaller networks with higher netmask first). We now reversed this to
364
+ be compatible with PostgrSQL cidr type objects.
365
+ - All attributes of IP_Address objects are now implemented as
366
+ properties to return the '_' variant of the attribute. Thus
367
+ IP_Address objects are (when using the public interface) immutable.
368
+ Since we already had a __hash__ method this effectively fixes the
369
+ interface to not allow mutation of objects that are in a dictionary.
370
+ - Allow calling the IP_Address constructors with another IP_Address
371
+ object. Since IP_Address objects are now immutable we use metaclass
372
+ trickery to return the passed object itself (instead of generating a
373
+ copy).
374
+
375
+ Version 0.36: Minor feature enhancements
376
+
377
+ Allow auto-coercion of comparison parameters. Add parent property and
378
+ is_sibling test.
379
+
380
+ - Now comparison operators and 'in' do auto coercion.
381
+ - Add parent property (next bigger network)
382
+ - Add is_sibling test (same parent)
383
+
384
+ Version 0.35: Minor feature enhancements
385
+
386
+ Add 'mask_len' as an alias of 'mask' to IP_Address.
387
+
388
+ - Need the network mask length (aka prefix length) sometimes as
389
+ mask_len (e.g. for FFM on github).
390
+
391
+ Version 0.34: Minor feature enhancements
392
+
393
+ Fix trafficshape to use new tc syntax. Add label to hexdump.
394
+
395
+ - The tc command has renamed the ``ipt`` action to ``xt`` (Linux
396
+ introduced xtables as a refactoring of iptables), the old ``ipt`` is
397
+ still available in ``iproute2`` but we make ``xt`` the default now.
398
+ A backward-compatibility parameter can be used to get the old
399
+ behavior.
400
+ - Add save-mark to iptables action parser.
401
+ - The hexdump class now can generate labels.
402
+
403
+ Version 0.33: Minor feature enhancements
404
+
405
+ More fixes for ast_call.
406
+
407
+ - Add parser for events from asterisk wireshark trace
408
+ - Add fail.log for 'real' test
409
+ - Don't double-register call with Call_Manager
410
+ - Allow explicit matching by account-code
411
+
412
+ Version 0.32: Minor feature enhancements
413
+
414
+ More fixes for ast_call.
415
+
416
+ - Regression test with pyst asterisk emulator
417
+ - Fix case where OriginateResponse immediately returns Failure
418
+ - Tests for cases where Hangup comes before or after the
419
+ OriginateResponse
420
+
421
+ Version 0.31: Minor feature enhancements
422
+
423
+ Fix ast_call for immediately failing calls. Fix dahdi channel
424
+ computation in isdn.py.
425
+
426
+ - Fix OriginateResponse handling in ast_call
427
+ - Fix dahdi channel computation, can't directly use the span, use the
428
+ basechan attribute
429
+
430
+ Version 0.30: Minor feature enhancements
431
+
432
+ Fix how dahdi vs. mISDN interpret what is called an interface and what
433
+ is called a port. In mISDN we can combine several ports (physical lines)
434
+ to an interface. In dahdi both are the same (a port is a span in dahdi).
435
+
436
+ - Remove parsing of B- and C- channels from dahdi isdn parser
437
+
438
+ Version 0.29: Minor feature enhancements
439
+
440
+ The lcr module is now named isdn. It can now handle isdn interfaces
441
+ managed by Asterisk DAHDI in addition to Linux Call Router (LCR).
442
+
443
+ Version 0.28: Minor feature enhancements
444
+
445
+ Fix inductance formula of Robert Weaver, thanks Robert for pointing me
446
+ to the correction you did on your new site! For most doctests in the
447
+ inductance module the error was in the lower percentage points.
448
+ Add an xxrange iterator to the iter_recipes that can replace pythons
449
+ native xrange iterator but works with long integers. Needed for some
450
+ operations on IPv6 addresses in the IP_Address module.
451
+
452
+ - Fix inductance calculation according to patch from Robert Weaver
453
+ - Add xxrange iterator to iter_recipes
454
+ - Use new xxrange instead of xrange in IP_Address module, add a test
455
+ that failed with large numbers for IPv6
456
+
457
+ Version 0.27: Minor feature enhancements
458
+
459
+ Add pageurl and pageinfo attributes to HTML_Parser.Page_Tree, other
460
+ enhancements to HTML_Parser. Add pickle support to parser classes.
461
+ Fix comparison of IP_Address classes.
462
+
463
+ - Add pageurl and pageinfo attributes to HTML_Parser.Page_Tree storing
464
+ information retrieved via geturl and info calls from urllib2.
465
+ - Parser classes in stateparser.py and HTML_Parse.py where not
466
+ pickleable, fixed by removing parser-specific attributes when calling
467
+ pickle. Note that the parsing cannot be continued after reading class
468
+ from a pickle.
469
+ - Add base_pickler module to allow pickle exceptions
470
+ - HTML_Parse: Make Parse_Error a ValueError
471
+ - HTML_Parse: Raise line number with exception
472
+ - HTML_Parse: Add a timeout
473
+ - HTML_Parse: raise Retries_Exceeded with url
474
+ - HTML_Parse: url parameter may now be None, not joined with site
475
+ parameter
476
+ - Add pageurl and pageinfo to HTML_Parse
477
+ - IP_Address: Fix comparison
478
+ - Slight refactoring of NMAP_Parser class
479
+
480
+ Version 0.26: Minor feature enhancements
481
+
482
+ Fix double-utf-8-encoding option for sqlparser. Enhance stderr handling
483
+ for exec_pipe.
484
+
485
+ - More detected broken encodings for fix_double_encode option
486
+ - execute.py: add error message from executed command to message raised
487
+ by exec_pipe, make stderr output available in non-failing case.
488
+
489
+ Version 0.25: Minor feature enhancements
490
+
491
+ Add sqlparser for parsing SQL dumps of PostgreSQL and mysql, add Phone
492
+ to parse phone numbers.
493
+
494
+ - sqlparser added
495
+ - Phone added for parsing phone numbers
496
+
497
+ Version 0.24: Minor feature enhancements
498
+
499
+ Better syntax checks and comparison operators for IP_Address, bug fixes
500
+ for parser and __str__ for IP_Address.IP6_Address
501
+
502
+ - IP_Address better syntax checks
503
+ - IP_Address __cmp__ and __eq__ improved for comparison with other types
504
+ - more regression tests for IP6_Address
505
+ - bug fixes in __str__ and parser of IP6_Address
506
+ - support for strict checking of netmask (all bits at right of netmask
507
+ must be zero if strict_mask is True)
508
+
509
+ Version 0.23: Minor feature enhancements
510
+
511
+ IP4_Address can now be put in a dict, add a subnets iterator for
512
+ IP4_Address. Factor IP_Address and add IP6_Address
513
+
514
+ - Add __hash__ for IP_Address
515
+ - The new subnets iterator for IP_Address iterates over all IPs in a
516
+ subnet. Optionally a netmask can be specified.
517
+ - Support for IPv6 addresses
518
+ - rename IP4_Address to IP_Address
519
+
520
+ Version 0.22: Minor feature enhancements
521
+
522
+ Allow unicode ip address input, hopefully make rsclib installable via pip.
523
+
524
+ - Address given to IP4_Address constructor now may be unicode
525
+ - Add download_url to setup.py to make installable via pip
526
+
527
+ Version 0.21: Minor feature enhancements
528
+
529
+ Fix autosuper: allow to inherit from non-autosuper classes, some small
530
+ fixes to ast_call and lcr parser. Fix ETree pretty-printing. Update
531
+ Freshmeat to new hostname. Add dotted netmaks parsing to IP4_Address.
532
+
533
+ - Since python2.6 constructor of "object" do not allow parameters, so
534
+ we need to strip these when doing the upcall from autosuper. This
535
+ fails when e.g. inheriting from a non-autosuper enabled class, e.g.,
536
+ class (With_Autosuper, dict)
537
+ in that case dict would get empty parameters. New implementation
538
+ finds out if our upcall is to "object", only in that case strip
539
+ parameters.
540
+ - ast_call now processes all queued unhandled events when a call is
541
+ matched.
542
+ - update regression test for ast_call.Call
543
+ - lcr parser: fix regex, port can have an empty name.
544
+ - Optimize call matching in ast_call: mark call as closed once we are
545
+ sure about the uniqueid. Add matching of Account-Code.
546
+ - Fix ETree pretty-printing: don't print unicode strings when arguments
547
+ are already converted
548
+ - freshmeat.net now is freecode.com (and the API redirects there),
549
+ update Freshmeat.py to new hostname (including .netrc credentials
550
+ with compatibility for old name).
551
+ - explicit mask paramter of IP4_Address can now be a dotted netmask.
552
+
553
+ Version 0.20: Not announced on freshmeat
554
+
555
+ Database value output for ast_cdr, added inductance calculation.
556
+
557
+ - ast_cdr: Add methods for database values of CDR records -- database
558
+ values of CDRs are different, they don't include start, end, answer
559
+ time-stamps but instead only a calldate, in addition the amaflags are
560
+ numerical in the database.
561
+ - added inductance calculation
562
+
563
+ Version 0.19: Not announced on freshmeat
564
+
565
+ Extend ETree with a walk method and implement small ldap library
566
+
567
+ - ETree: add walk method to walk the tree and call an optional pre- and
568
+ post-hook function
569
+ - ldap_lib: common ldap tasks for user and group search, and an
570
+ iterator for paged search (used with active directory).
571
+
572
+ Version 0.18: Not announced on freshmeat
573
+
574
+ Bugfix of ast_call and update for asterisk 1.6, small extension to
575
+ IP4_Address.
576
+
577
+ - ast_call: match calls via (unique) account code
578
+ - ast_call: State vs ChannelState parameter in Newstate event
579
+ - ast_call: handle immediate error from asterisk (e.g. Permission Denied)
580
+ - IP4_Address: add netblk (start and end address for address with
581
+ netmask)
582
+
583
+ Version 0.17: Not announced on freshmeat
584
+
585
+ Factor ETree (extended ElementTree) from HTML_Parse. New Freshmeat
586
+ module to get project information and submit new releases via the new
587
+ freshmeat REST API. New simple hexdump module.
588
+
589
+ - New ETree.py (extended ElementTree)
590
+ - New Freshmeat.py
591
+ - New hexdump.py
592
+ - adapt lcr module to new version of Linux Call Router
593
+
594
+ Version 0.16: Not announced on freshmeat
595
+
596
+ Add an iptables to tc translator for translating mangle rules in the
597
+ iptables PREROUTING chain to appropriate tc commands (using an ipt
598
+ action and mirred redirect actions).
599
+
600
+ - Add iptables to tc translator to trafficshape.py
601
+
602
+ Version 0.15: Not announced on freshmeat
603
+
604
+ Add a framework for traffic shaping with linux iproute (tc). Minor
605
+ updates to iter_recipes.
606
+
607
+ - Initial implementation of trafficshape.py
608
+ - Add iter_recipes.combinations from python2.6 manpage of itertools
609
+ for backward compatibility
610
+
611
+ Version 0.14: Not announced on freshmeat
612
+
613
+ Add a framework for process pipeline execution, processes can either be
614
+ python methods or external programs (with parameter list). They can be
615
+ connected in a pipe and there may be T-points in the pipe, where the
616
+ pipe forks into two or more pipelines fed by the output of one process.
617
+
618
+ - Add process pipeline framework
619
+ - HTML_Parse now has an explicit translate hook for preprocessing the
620
+ html page before parsing it. This defaults to the old behaviour of
621
+ filtering out common characters in broken HTML.
622
+ - Add nmap parser (e.g. to generate TeX tables from an nmap scan)
623
+ - Fix Lock_Mixin in execute module to remove lockfile at exit,
624
+ this used to rely on __del__ which breaks in certain cases.
625
+ - add file upload to HTML_Parse
626
+
627
+ Version 0.13: Not announced on freshmeat
628
+
629
+ Bug-Fix Release: Fix signal handler in timeout.py
630
+
631
+ - fix signal handler timeout.py
632
+
633
+ Version 0.12: Not announced on freshmeat
634
+
635
+ Add a simple timeout mechanism using SIGALRM.
636
+
637
+ - add timeout.py
638
+
639
+ Version 0.11: Not announced on freshmeat
640
+
641
+ Add a parser for CDR records in asterisk. We currently use text-files
642
+ only, this might be later extended for database use. Some fixes for
643
+ ast_call, make call-handling more robust (some race conditions would
644
+ identify events of other calls as belonging to our initiated call).
645
+ Add an execute module for executing commands and handling IO, this also
646
+ has a Lock and a Log mixin. Add ocf.py, a small framework for writing
647
+ OCF scripts for the heartbeat cluster resource manager (probably also
648
+ usable for the newer version called pacemaker but for now only tested
649
+ with the version in Debian stable aka lenny). Add lcr.py to model the
650
+ status of Linux Call Router ISDN lines.
651
+
652
+ - add ast_cdr.py
653
+ - fix ast_call.py
654
+ - fix up-chaining in stateparser.py
655
+ - add execute.py
656
+ - add ocf.py
657
+ - add lcr.py
658
+
659
+ Version 0.10: Not announced on freshmeat
660
+
661
+ add ast_call for asterisk auto-dialling, small fixes to IP4_Address, add
662
+ bero*fos configurator, experimental code for checking PDF signature
663
+
664
+ - add ast_call.py
665
+ - Firstname: don't look up names with len < 2
666
+ - IP4_Address: some aliases for common functions
667
+ - IP4_Address: add __cmp__
668
+ - bero.py: bero*fos configurator
669
+ - HTML_Parse updated for python 2.5
670
+ - stateparser update: use self.matrix by default
671
+ - PDF_Signature: experimental code for checking signatures on adobe PDF
672
+ documents
673
+ - iter_recipes: some magic with iterators
674
+
675
+ Version 0.9: Not announced on freshmeat
676
+
677
+ Add binom to the Math package, add Firstname, Bug-Fix Release Rational
678
+
679
+ - binom (n, m) computes the binomial coefficient of n, m.
680
+ - Firstname: check if candidate is a first name candidate according to
681
+ popular web site.
682
+ - Rational: On division we could get a negative denominator -- fixed
683
+ - make Config_File a descendent of autosuper
684
+
685
+ Version 0.8: Not announced on freshmeat
686
+
687
+ Added more documentation.
688
+ State-machine parser stateparser implemented. Rational number arithmetic
689
+ package added.
690
+
691
+ - stateparser implemented (simple state-machine line-oriented
692
+ configurable parser)
693
+ - usage-example of IP4_Address prints debian /etc/network/interfaces
694
+ entry.
695
+ - Math added (Euclids algorithm, gcd, lcm)
696
+ - Rational number arithmetics
697
+ - cookie processing for HTML_Parse
698
+ - basic HTML auth for HTML_Parse
699
+ - HTML_Parse: move to urllib2
700
+
701
+ Version 0.7: Not announced on freshmeat
702
+
703
+ Small Python library with various things such as Configuration file
704
+ parsing (in Python syntax), HTML and PDF parsing.
705
+
706
+ - First Release version