<commit_before>import types

from pelican import signals

def initialized(pelican):
    from pelican.settings import _DEFAULT_CONFIG
    _DEFAULT_CONFIG.setdefault('SUMMARY_BEGIN_MARKER',
                               '<!-- PELICAN_BEGIN_SUMMARY -->')
    _DEFAULT_CONFIG.setdefault('SUMMARY_END_MARKER',
                               '<!-- PELICAN_END_SUMMARY -->')
    if pelican:
        pelican.settings.setdefault('SUMMARY_BEGIN_MARKER',
                                    '<!-- PELICAN_BEGIN_SUMMARY -->')
        pelican.settings.setdefault('SUMMARY_END_MARKER',
                                    '<!-- PELICAN_END_SUMMARY -->')

def content_object_init(instance):
    # if summary is already specified, use it
    if 'summary' in instance.metadata:
        return

    try:
        content = instance.content
    except:
        # in some tests, this fails because a context has not been set
        return

    # monkey patch a new function around get_content that removes summary
    # markers
    prev_get_content = instance.get_content
    def get_content(self, siteurl):
        content = prev_get_content(siteurl)
        if self.settings['SUMMARY_BEGIN_MARKER']:
            content = content.replace(
                self.settings['SUMMARY_BEGIN_MARKER'], '', 1)
        if self.settings['SUMMARY_END_MARKER']:
            content = content.replace(
                self.settings['SUMMARY_END_MARKER'], '', 1)
        return content
    instance.get_content = types.MethodType(get_content, instance)
    
    # extract out our summary
    begin_summary = -1
    end_summary = -1
    if instance.settings['SUMMARY_BEGIN_MARKER']:
        begin_summary = content.find(instance.settings['SUMMARY_BEGIN_MARKER'])
    if instance.settings['SUMMARY_END_MARKER']:
        end_summary = content.find(instance.settings['SUMMARY_END_MARKER'])
    if begin_summary != -1 or end_summary != -1:
        # the beginning position has to take into account the length
        # of the marker
        begin_summary = (begin_summary + 
                         len(instance.settings['SUMMARY_BEGIN_MARKER'])
                         if begin_summary != -1 else 0)
        end_summary = end_summary if end_summary != -1 else None
        instance._summary = content[begin_summary:end_summary]

def register():
    signals.initialized.connect(initialized)
    signals.content_object_init.connect(content_object_init)<commit_msg>update summary plugin so that tests are fixed (hopefully)<commit_after>import types

from pelican import signals

def initialized(pelican):
    from pelican.settings import _DEFAULT_CONFIG
    _DEFAULT_CONFIG.setdefault('SUMMARY_BEGIN_MARKER',
                               '<!-- PELICAN_BEGIN_SUMMARY -->')
    _DEFAULT_CONFIG.setdefault('SUMMARY_END_MARKER',
                               '<!-- PELICAN_END_SUMMARY -->')
    if pelican:
        pelican.settings.setdefault('SUMMARY_BEGIN_MARKER',
                                    '<!-- PELICAN_BEGIN_SUMMARY -->')
        pelican.settings.setdefault('SUMMARY_END_MARKER',
                                    '<!-- PELICAN_END_SUMMARY -->')

def content_object_init(instance):
    # if summary is already specified, use it
    if 'summary' in instance.metadata:
        return

    def _get_content(self):
        content = self._content
        if self.settings['SUMMARY_BEGIN_MARKER']:
            content = content.replace(
                self.settings['SUMMARY_BEGIN_MARKER'], '', 1)
        if self.settings['SUMMARY_END_MARKER']:
            content = content.replace(
                self.settings['SUMMARY_END_MARKER'], '', 1)
        return content
    instance._get_content = types.MethodType(_get_content, instance)

    # extract out our summary
    if not hasattr(instance, '_summary'):
        content = instance._content
        begin_summary = -1
        end_summary = -1
        if instance.settings['SUMMARY_BEGIN_MARKER']:
            begin_summary = content.find(instance.settings['SUMMARY_BEGIN_MARKER'])
        if instance.settings['SUMMARY_END_MARKER']:
            end_summary = content.find(instance.settings['SUMMARY_END_MARKER'])
        if begin_summary != -1 or end_summary != -1:
            # the beginning position has to take into account the length
            # of the marker
            begin_summary = (begin_summary +
                            len(instance.settings['SUMMARY_BEGIN_MARKER'])
                            if begin_summary != -1 else 0)
            end_summary = end_summary if end_summary != -1 else None
            instance._summary = content[begin_summary:end_summary]

def register():
    signals.initialized.connect(initialized)
    signals.content_object_init.connect(content_object_init)
{'fraction_non_alphanumeric': 0.09167722855935784, 'fraction_numerical': 0.0038022813688212928, 'mean_word_length': 2.382142857142857, 'pattern_counts': {'":': 0, '<': 11, '<?xml version=': 0, '>': 11, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 4, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5494480', 'n_tokens_mistral': 1376, 'n_tokens_neox': 1262, 'n_words': 270}