# Path: common/tool_connect.py
# class ToolConnect:
#     def __init__(self, server_name, port):
#     def _ill_formed_request(self, conn, data):
#     def wait_request(self):
#     def send_text_reply(self, conn, data):
#     def send_reply(self, conn, data):
#     def close(self):
# 
# Path: common/lifo_cache.py
# class LifoCacheMem(object):
# class LifoCache(LifoCacheMem):
#     def __init__(self, cache_size):
#     def get(self, key):
#     def set(self, key, data):
#     def stat_ratio(self, count, total = None):
#     def access_stat(self, as_type = None):
#     def __init__(self, cache_name, mem_cache_size = 4, disk_cache_size = 32):
#     def get(self, filename):
#     def set(self, filename, data):
#     def access_stat(self, as_type = None):
# 
# Path: common/common_html.py
# def get_head(title, css = None, html5 = False):
# 
# Path: common/utils.py
# def read_file(filename):
# def write_file(filename, text):
# def save_obj(filename, data):
# def load_obj(filename):
# def sha1(filename):
# def write_sha1(sha1, filename):
# def url_opener():
# def copy_file_from_url(url, out_file, expect_sha1 = None, max_retry = 4):
# def compress_file_data(out_filename, data, compress_type):
# def compress_file(out_filename, in_filename, compress_type):
# def uncompress_file(filename, compress_type):
# def _retry_on_eintr(func, *args):
# def safe_read(fd):
# def safe_write(fd, text):
# def print_traceback(*kwargs):
# def readline_backward(filename, buf_size=8192):
# 
# Path: common/job_queue.py
# class JobQueue:
#     def __init__(self, filename = None):
#     def put(self, *args):
#     def remove(self):
#     def get(self):
#     def copy_items(self, get_last = False):
#     def save(self, filename):
#     def empty(self):
#     def _load(self, filename):
#     def expect(func, data, *args):
#     def put_get_save_test():
#     def thread_test():
#         def thread1(jobs):
#         def thread2(jobs):
# 
# Path: common/pywikibot_utils.py
# def safe_put(page, text, comment):
#     if re.match("^[\s\n]*$", text):
#         return
# 
#     max_retry = 5
# 
#     retry_count = 0
#     while retry_count < max_retry:
#         retry_count += 1
#         try:
#             page.put(text, comment = comment)
#             break
#         except pywikibot.LockedPage:
#             print >> sys.stderr, "put error : Page %s is locked?!" % page.title(asUrl=True).encode("utf8")
#             utils.print_traceback()
#             break
#         except pywikibot.NoPage:
#             print >> sys.stderr, "put error : Page does not exist %s" % page.title(asUrl=True).encode("utf8")
#             utils.print_traceback()
#             break
#         except pywikibot.NoUsername:
#             print >> sys.stderr, "put error : No user name on wiki %s" % page.title(asUrl=True).encode("utf8")
#             utils.print_traceback()
#             break
#         except pywikibot.PageNotSaved:
#             print >> sys.stderr, "put error : Page not saved %s" % page.title(asUrl=True).encode("utf8") 
#             print >> sys.stderr, "text len: ", len(text)
#             utils.print_traceback()
#             print >> sys.stderr, "sleeping for:", 10 * retry_count
#             time.sleep(10 * retry_count)
#             continue
#         except pywikibot.OtherPageSaveError:
#             # this can occur for read-only DB because slave lag, so retry
#             # a few time
#             print >> sys.stderr, "put error : Page not saved %s" % page.title(asUrl=True).encode("utf8")
#             print >> sys.stderr, "retrying in", retry_count, "minute(s)"
#             time.sleep(retry_count * 60)
#             continue
#         except:
#             print >> sys.stderr, "put error: unknown exception"
#             utils.print_traceback()
#             time.sleep(10)
#             break
# 
#     if retry_count >= max_retry:
#         print >> sys.stderr, "unable to save page after", max_retry, "try, bailing out"
#         pass


import sys
import os
import re
import thread
import time
import align
import pywikibot
from common import tool_connect
from common import lifo_cache
from ws_namespaces import page as page_prefixes
from common import common_html
from common import utils
from common import job_queue
from common.pywikibot_utils import safe_put
            if group:
                titles = titles + "<pages index=\"%s\" from=%d to=%d />\n"%(group,pfrom,pto)
                group = False

            titles = titles + "{{"+pagetitle+"}}\n"

        #prepend br
        if content and content[0]=='\n':
            content = '<nowiki />\n'+content

        if pl.exists():
            old_text = pl.get()
            refs = pl.getReferences(onlyTemplateInclusion = True)
            numrefs = 0
            for ref in refs:
                numrefs += 1

            #first and last pages : check if they are transcluded
            if numrefs > 0 :
                m = re.match("<noinclude>(.*?)</noinclude>(.*)<noinclude>(.*?)</noinclude>",old_text,re.MULTILINE|re.DOTALL)
                if m and (i == 0 or i == (len(bl)/2 -1)):
                    print "creating sections"
                    old_text = m.group(2)
                    if i == 0:
                        first_part = old_text
                        second_part = content
                        fromsection="fromsection=s2 "
                        fromsection_page = ref
                    else:
                        first_part = content

# Path: common/tool_connect.py
# class ToolConnect:
#     def __init__(self, server_name, port):
#     def _ill_formed_request(self, conn, data):
#     def wait_request(self):
#     def send_text_reply(self, conn, data):
#     def send_reply(self, conn, data):
#     def close(self):
# 
# Path: common/lifo_cache.py
# class LifoCacheMem(object):
# class LifoCache(LifoCacheMem):
#     def __init__(self, cache_size):
#     def get(self, key):
#     def set(self, key, data):
#     def stat_ratio(self, count, total = None):
#     def access_stat(self, as_type = None):
#     def __init__(self, cache_name, mem_cache_size = 4, disk_cache_size = 32):
#     def get(self, filename):
#     def set(self, filename, data):
#     def access_stat(self, as_type = None):
# 
# Path: common/common_html.py
# def get_head(title, css = None, html5 = False):
# 
# Path: common/utils.py
# def read_file(filename):
# def write_file(filename, text):
# def save_obj(filename, data):
# def load_obj(filename):
# def sha1(filename):
# def write_sha1(sha1, filename):
# def url_opener():
# def copy_file_from_url(url, out_file, expect_sha1 = None, max_retry = 4):
# def compress_file_data(out_filename, data, compress_type):
# def compress_file(out_filename, in_filename, compress_type):
# def uncompress_file(filename, compress_type):
# def _retry_on_eintr(func, *args):
# def safe_read(fd):
# def safe_write(fd, text):
# def print_traceback(*kwargs):
# def readline_backward(filename, buf_size=8192):
# 
# Path: common/job_queue.py
# class JobQueue:
#     def __init__(self, filename = None):
#     def put(self, *args):
#     def remove(self):
#     def get(self):
#     def copy_items(self, get_last = False):
#     def save(self, filename):
#     def empty(self):
#     def _load(self, filename):
#     def expect(func, data, *args):
#     def put_get_save_test():
#     def thread_test():
#         def thread1(jobs):
#         def thread2(jobs):
# 
# Path: common/pywikibot_utils.py
# def safe_put(page, text, comment):
#     if re.match("^[\s\n]*$", text):
#         return
# 
#     max_retry = 5
# 
#     retry_count = 0
#     while retry_count < max_retry:
#         retry_count += 1
#         try:
#             page.put(text, comment = comment)
#             break
#         except pywikibot.LockedPage:
#             print >> sys.stderr, "put error : Page %s is locked?!" % page.title(asUrl=True).encode("utf8")
#             utils.print_traceback()
#             break
#         except pywikibot.NoPage:
#             print >> sys.stderr, "put error : Page does not exist %s" % page.title(asUrl=True).encode("utf8")
#             utils.print_traceback()
#             break
#         except pywikibot.NoUsername:
#             print >> sys.stderr, "put error : No user name on wiki %s" % page.title(asUrl=True).encode("utf8")
#             utils.print_traceback()
#             break
#         except pywikibot.PageNotSaved:
#             print >> sys.stderr, "put error : Page not saved %s" % page.title(asUrl=True).encode("utf8") 
#             print >> sys.stderr, "text len: ", len(text)
#             utils.print_traceback()
#             print >> sys.stderr, "sleeping for:", 10 * retry_count
#             time.sleep(10 * retry_count)
#             continue
#         except pywikibot.OtherPageSaveError:
#             # this can occur for read-only DB because slave lag, so retry
#             # a few time
#             print >> sys.stderr, "put error : Page not saved %s" % page.title(asUrl=True).encode("utf8")
#             print >> sys.stderr, "retrying in", retry_count, "minute(s)"
#             time.sleep(retry_count * 60)
#             continue
#         except:
#             print >> sys.stderr, "put error: unknown exception"
#             utils.print_traceback()
#             time.sleep(10)
#             break
# 
#     if retry_count >= max_retry:
#         print >> sys.stderr, "unable to save page after", max_retry, "try, bailing out"
#         pass


# Path: match_and_split/match_and_split.py
import sys
import os
import re
import thread
import time
import align
import pywikibot
from common import tool_connect
from common import lifo_cache
from ws_namespaces import page as page_prefixes
from common import common_html
from common import utils
from common import job_queue
from common.pywikibot_utils import safe_put

            if group:
                titles = titles + "<pages index=\"%s\" from=%d to=%d />\n"%(group,pfrom,pto)
                group = False

            titles = titles + "{{"+pagetitle+"}}\n"

        #prepend br
        if content and content[0]=='\n':
            content = '<nowiki />\n'+content

        if pl.exists():
            old_text = pl.get()
            refs = pl.getReferences(onlyTemplateInclusion = True)
            numrefs = 0
            for ref in refs:
                numrefs += 1

            #first and last pages : check if they are transcluded
            if numrefs > 0 :
                m = re.match("<noinclude>(.*?)</noinclude>(.*)<noinclude>(.*?)</noinclude>",old_text,re.MULTILINE|re.DOTALL)
                if m and (i == 0 or i == (len(bl)/2 -1)):
                    print "creating sections"
                    old_text = m.group(2)
                    if i == 0:
                        first_part = old_text
                        second_part = content
                        fromsection="fromsection=s2 "
                        fromsection_page = ref
                    else:
                        first_part = content

                        second_part = old_text