irclog.archive
— IRC log archive¶
-
irclog.archive.
STRPTIME_TO_GLOB
¶ The table for translating
strptime()
directives toglob
patterns.
-
irclog.archive.
STRPTIME_DIRECTIVE_PATTERN
¶ The
re
pattern object that matches tostrptime()
directives.>>> fmtstr = "%Y-%m-%d" >>> STRPTIME_DIRECTIVE_PATTERN.sub(lambda m: STRPTIME_TO_GLOB[m.group(0)], ... fmtstr) '[0-9][0-9][0-9][0-9]-[01][0-9]-[0-3][0-9]'
-
class
irclog.archive.
FilenamePattern
(pattern)[source]¶ Bases:
object
The glob-like, but specialized to IRC log files, filename pattern matcher.
>>> pattern = FilenamePattern("/logs/<server>" ... "/<channel>.<date:%Y-%m-%d>.log") >>> pattern.glob_pattern_string() '/logs/*/*.[0-9][0-9][0-9][0-9]-[01][0-9]-[0-3][0-9].log' >>> pattern.glob_pattern_string(server="Freenode") '/logs/Freenode/*.[0-9][0-9][0-9][0-9]-[01][0-9]-[0-3][0-9].log'
-
REPLACER_PATTERN
¶ The pattern of replacer e.g.
<date:%Y-%m-%d>
,<channel>
.replacer ::= "<"
name
[ ":"format
] ">" name ::= /[A-Za-z_]+/ format ::= /[^>]*/
-
replacers
¶ The list of replacers.
>>> pattern = FilenamePattern("/logs/<server>" ... "/<channel>.<date:%Y-%m-%d>.log") >>> list(pattern.replacers) ['server', 'channel', 'date']
-
replacer_pairs
¶ The list of replacers’
(name, format)
. (For replacers have no format,(name, None)
.)>>> pattern = FilenamePattern("/logs/<server>" ... "/<channel>.<date:%Y-%m-%d>.log") >>> list(pattern.replacer_pairs) [('server', None), ('channel', None), ('date', '%Y-%m-%d')]
-
replacer_dict
¶ The
dict
of replacers.>>> pattern = FilenamePattern("/logs/<server>" ... "/<channel>.<date:%Y-%m-%d>.log") >>> pattern.replacer_dict["server"] >>> pattern.replacer_dict["date"] '%Y-%m-%d' >>> pattern.replacer_dict["xyz"] Traceback (most recent call last): ... KeyError: 'xyz'
-
fill_replacers
(replacers, escape=None)[source]¶ Fills replacers with given values.
>>> pattern = FilenamePattern("/logs/<server>" ... "/<channel>.<date:%Y-%m-%d>.log") >>> import datetime >>> pattern.fill_replacers({"server": "Freenode", ... "channel": "#hongminhee", ... "date": datetime.date(2010, 8, 4)}) '/logs/Freenode/#hongminhee.2010-08-04.log'
When
escape
function has given, non-replacers are applied into the function:>>> pattern.fill_replacers({"server": "Freenode", ... "channel": "#hongminhee", ... "date": datetime.date(2010, 8, 4)}, ... escape=lambda x: x.upper()) '/LOGS/Freenode/#hongminhee.2010-08-04.LOG'
It may raise
KeyError
when too few replacers has given:>>> pattern.fill_replacers({"server": "Freenode"}) Traceback (most recent call last): ... KeyError: 'channel'
Parameters: replacers ( dict
, mapping object) – a mapping object of(replacer_name, str_to_replace)
Returns: a filled filename
-
glob_pattern_string
(**replacers)[source]¶ Generates a
glob
pattern string. It takes keyword arguments of replacers to fill also.>>> pattern = FilenamePattern("/logs/<server>" ... "/<channel>.<date:%Y-%m-%d>.log") >>> pattern.glob_pattern_string() '/logs/*/*.[0-9][0-9][0-9][0-9]-[01][0-9]-[0-3][0-9].log' >>> pattern.glob_pattern_string(server="Freenode") '/logs/Freenode/*.[0-9][0-9][0-9][0-9]-[01][0-9]-[0-3][0-9].log' >>> pattern.glob_pattern_string(channel="#hongminhee") '/logs/*/#hongminhee.[0-9][0-9][0-9][0-9]-[01][0-9]-[0-3][0-9].log' >>> import datetime >>> pattern.glob_pattern_string(date=datetime.date(2010, 8, 4)) '/logs/*/*.2010-08-04.log'
Parameters: **replacers – replacers to fill. keywords go replacer names and values fills them Returns: a glob pattern string
-
glob
(**replacers)[source]¶ Globs with the pattern.
Parameters: **replacers – replacers to fill. keywords go replacer names and values fills them Returns: a list
of all matched pathsSee also
- Module
glob
- Function
glob.glob()
- Module
-
iglob
(**replacers)[source]¶ Case-insensitive version of
glob()
.Parameters: **replacers – replacers to fill. keywords go replacer names and values fills them Returns: a list
of all matched pathsSee also
- Module
glob
- Function
glob.iglob()
- Module
-
re_pattern_string
(**replacers)[source]¶ Generates a
re
pattern string. It takes keyword arguments of replacers to fill also.>>> import datetime >>> pattern = FilenamePattern("/<server>/<channel>.<date:%Y%m%d>") >>> pattern.re_pattern_string(date=datetime.date(2010, 8, 4)) '^\\/(?P<server>.+?)\\/(?P<channel>.+?)\\.20100804$'
Parameters: **replacers – replacers to fill. keywords go replacer names and values fills them Returns: a re
pattern string
-
re_pattern
(**replacers)[source]¶ Generates a
re
pattern object. It takes keyword arguments of replacers to fill also.Parameters: **replacers – replacers to fill. keywords go replacer names and values fills them Returns: a re
patternNote
This method is the same to following code:
re.compile(file_pattern.re_pattern_string(**replacers))
-
-
class
irclog.archive.
BaseArchive
[source]¶ Bases:
object
Abstract base class for
Archive
,Server
andChannel
.-
ELEMENT_CLASS
¶ Should be implemented in the subclass.
-
ELEMNENT_TAG
¶ Should be implemented in the subclass.
-
pattern_replacers
¶ Should be implemented in the subclass.
-
-
class
irclog.archive.
Archive
(pattern)[source]¶ Bases:
irclog.archive.BaseArchive
Log archive.
Parameters: pattern ( FilenamePattern
,basestring
) – logs filename pattern e.g."/logs/<server>/<channel>.<date:%Y-%m-%d>.log"
-
decode_element_key
(element_key)¶ Decodes an element key string to element key.
Parameters: element_key ( basestring
) – an element key stringReturns: an element key
-
encode_element_key
(element_key)¶ Encodes am element key to element key string.
Parameters: element_key – an element key Returns: an element key string
-
-
class
irclog.archive.
Server
(archive, server)[source]¶ Bases:
irclog.archive.BaseArchive
IRC server.
Parameters: - archive (
Archive
) – an archive - server (
basestring
) – a server name
-
decode_element_key
(element_key)¶ Decodes an element key string to element key.
Parameters: element_key ( basestring
) – an element key stringReturns: an element key
-
encode_element_key
(element_key)¶ Encodes am element key to element key string.
Parameters: element_key – an element key Returns: an element key string
- archive (
-
class
irclog.archive.
Channel
(server, channel)[source]¶ Bases:
irclog.archive.BaseArchive
IRC channel or nick.
Parameters: - server (
Server
) – a server - channel (
basestring
) – a channel name or a nick
- server (
-
class
irclog.archive.
Log
(channel, date)[source]¶ Bases:
object
IRC log.
Parameters: - channel (
Channel
) – a channel logged - date (
datetime.date
) – a date logged
-
server
¶ The server.
-
archive
¶ The archive.
-
pattern
¶ The filename pattern.
-
yesterday_log
¶ The yesterday log of the same channel.
-
tomorrow_log
¶ The tomorrow log of the same channel.
-
filename
¶ The filename of the log. If not exists, it could be
None
.
-
file_size
¶ The size of the log file in bytes.
- channel (