internlm/SWE-Fixer-Train-110K huggingface dataset:
Repository: piskvorky/gensim

Issue:
Fix paper reference
The linked pdf file is not available anymore (404).
https://github.com/RaRe-Technologies/gensim/blob/70fc15985572bc10cd4424a1ac7fd8650389d43f/gensim/models/lsimodel.py#L325


Discussion:

Resolving patch:
diff --git a/gensim/models/lsimodel.py b/gensim/models/lsimodel.py
--- a/gensim/models/lsimodel.py
+++ b/gensim/models/lsimodel.py
@@ -322,7 +322,7 @@ class LsiModel(interfaces.TransformationABC, basemodel.BaseTopicModel):
     <https://en.wikipedia.org/wiki/Latent_semantic_analysis#Latent_semantic_indexing>`_.
 
     The decomposition algorithm is described in `"Fast and Faster: A Comparison of Two Streamed
-    Matrix Decomposition Algorithms" <https://nlp.fi.muni.cz/~xrehurek/nips/rehurek_nips.pdf>`_.
+    Matrix Decomposition Algorithms" <https://arxiv.org/pdf/1102.5597.pdf>`_.
 
     Notes
     -----
@@ -333,7 +333,7 @@ class LsiModel(interfaces.TransformationABC, basemodel.BaseTopicModel):
     See Also
     --------
     `FAQ about LSI matrices
-    <https://github.com/piskvorky/gensim/wiki/Recipes-&-FAQ#q4-how-do-you-output-the-u-s-vt-matrices-of-lsi>`_.
+    <https://github.com/RaRe-Technologies/gensim/wiki/Recipes-&-FAQ#q4-how-do-you-output-the-u-s-vt-matrices-of-lsi>`_.
 
     Examples
     --------


Test patch:
Repository: piskvorky/gensim

Issue:
lsi_dispatcher is not working from command-line when not specifying maxsize argument
#### Problem description

When running `lsi_dispatcher` from the command-line, if you don't specify the `maxsize` argument explicitly, you get an error for the missing positional argument:

```
usage: lsi_dispatcher.py [-h] maxsize
lsi_dispatcher.py: error: the following arguments are required: maxsize
```

According to the documentation, this argument should be optional.

The issue seems to be that the nargs argument to `add_argument` is missing:

```python
    parser.add_argument(
        'maxsize', type=int, help='Maximum number of jobs to be kept pre-fetched in the queue.', default=MAX_JOBS_QUEUE
    )
 ```
In order to make this argument optional, this should be:

```python
    parser.add_argument(
        'maxsize', nargs='?', type=int, help='Maximum number of jobs to be kept pre-fetched in the queue.', default=MAX_JOBS_QUEUE
    )
```

#### Steps/code/corpus to reproduce

Include full tracebacks, logs and datasets if necessary. Please keep the examples minimal ("minimal reproducible example").

If your problem is with a specific Gensim model (word2vec, lsimodel, doc2vec, fasttext, ldamodel etc), include the following:

```python
$ python3 -m gensim.models.lsi_dispatcher
usage: lsi_dispatcher.py [-h] maxsize
lsi_dispatcher.py: error: the following arguments are required: maxsize
```

#### Versions

```python
Linux-5.4.0-67-generic-x86_64-with-glibc2.2
Python 3.8.5 (default, Jan 27 2021, 15:41:15) 
[GCC 9.3.0]
Bits 64
NumPy 1.19.4
SciPy 1.6.0
gensim 4.0.1
FAST_VERSION 1
```



Discussion:
Thanks Rob. 

Quite possible – the distributed stuff in Gensim is not under automated testing.

Are you able to open a PR?
Sure, I can do that.
See PR #3106. I hope I did it right. :-) 

Resolving patch:
diff --git a/gensim/models/lsi_dispatcher.py b/gensim/models/lsi_dispatcher.py
--- a/gensim/models/lsi_dispatcher.py
+++ b/gensim/models/lsi_dispatcher.py
@@ -278,7 +278,11 @@ def exit(self):
     logging.basicConfig(format='%(asctime)s - %(levelname)s - %(message)s', level=logging.INFO)
     parser = argparse.ArgumentParser(description=__doc__[:-135], formatter_class=argparse.RawTextHelpFormatter)
     parser.add_argument(
-        'maxsize', type=int, help='Maximum number of jobs to be kept pre-fetched in the queue.', default=MAX_JOBS_QUEUE
+        'maxsize',
+        nargs='?',
+        type=int,
+        help='Maximum number of jobs to be kept pre-fetched in the queue.',
+        default=MAX_JOBS_QUEUE,
     )
     args = parser.parse_args()
 


Test patch:
Repository: piskvorky/gensim

Issue:
Broken hyperlink in doc2vec tutorial
The tutorial in the link inside the documentation for doc2vec  [here](https://radimrehurek.com/gensim/models/doc2vec.html#gensim.models.doc2vec.LabeledSentence) redirect to GitHub, but in that page the tutorial was removed. 

[here](https://github.com/RaRe-Technologies/gensim/blob/develop/docs/notebooks/doc2vec-lee.ipynb)

Best, 
Andrea



Discussion:
Thanks – can you open a PR, to update the link?
Ahh, I can send the PR but i am not able to figure out where exactly i should change that URL? Thanks;
Edit-: Is it [this](https://github.com/RaRe-Technologies/gensim/blob/develop/gensim/models/doc2vec.py) one?


Resolving patch:
diff --git a/gensim/models/doc2vec.py b/gensim/models/doc2vec.py
--- a/gensim/models/doc2vec.py
+++ b/gensim/models/doc2vec.py
@@ -21,7 +21,7 @@
 <https://papers.nips.cc/paper/5021-distributed-representations-of-words-and-phrases-and-their-compositionality.pdf>`_.
 
 For a usage example, see the `Doc2vec tutorial
-<https://github.com/RaRe-Technologies/gensim/blob/develop/docs/notebooks/doc2vec-lee.ipynb>`_.
+<https://radimrehurek.com/gensim/auto_examples/tutorials/run_doc2vec_lee.html#sphx-glr-auto-examples-tutorials-run-doc2vec-lee-py>`_.
 
 **Make sure you have a C compiler before installing Gensim, to use the optimized doc2vec routines** (70x speedup
 compared to plain NumPy implementation, https://rare-technologies.com/parallelizing-word2vec-in-python/).


Test patch:
Repository: piskvorky/gensim

Issue:
Fix FastText documentation to reflect changed parameter names
The docstring of `gensim.models.fasttext.FastText` says:

> size (int, optional) – Dimensionality of the word vectors.

Should be changed to:

> **vector_size** (int, optional) – Dimensionality of the word vectors.
Fix FastText documentation to reflect changed parameter names
The docstring of `gensim.models.fasttext.FastText` says:

> size (int, optional) – Dimensionality of the word vectors.

Should be changed to:

> **vector_size** (int, optional) – Dimensionality of the word vectors.


Discussion:
Thank you. Are you interested in making a PR?
@mpenkov I would love to work on this and create a PR for the same.
Thank you. Are you interested in making a PR?
@mpenkov I would love to work on this and create a PR for the same.

Resolving patch:
diff --git a/gensim/models/fasttext.py b/gensim/models/fasttext.py
--- a/gensim/models/fasttext.py
+++ b/gensim/models/fasttext.py
@@ -301,7 +301,7 @@ def __init__(self, sentences=None, corpus_file=None, sg=0, hs=0, vector_size=100
             uninitialized).
         min_count : int, optional
             The model ignores all words with total frequency lower than this.
-        size : int, optional
+        vector_size : int, optional
             Dimensionality of the word vectors.
         window : int, optional
             The maximum distance between the current and predicted word within a sentence.


Test patch:
Repository: piskvorky/gensim

Issue:
Gensim 4.0 loading Phraser trained from Gensim 3.x
<!--
**IMPORTANT**:

- Use the [Gensim mailing list](https://groups.google.com/forum/#!forum/gensim) to ask general or usage questions. Github issues are only for bug reports.
- Check [Recipes&FAQ](https://github.com/RaRe-Technologies/gensim/wiki/Recipes-&-FAQ) first for common answers.

Github bug reports that do not include relevant information and context will be closed without an answer. Thanks!
-->

#### Problem description

Gensim 4.0 cannot load Phraser model from Gensim 3.x

#### Steps/code/corpus to reproduce

```python
gemsim.model.load("saved_phraser.pkl") 
```
Will not be able to load phraser trained in gensim 3.x due to a bug in source code. See below.

#### Versions
This line of code from 4.0.1 (and also current development branch) need to be fixed:
https://github.com/RaRe-Technologies/gensim/blob/4.0.1/gensim/models/phrases.py#L367

```python
model.phrasegrams = {
  str(model.delimiter.join(component), encoding='utf8'): score
  for key, val in phrasegrams.items()
}
```
The existing code will only keep the first phrase. To upgrade and load all phrases, it should be replaced with:

```python
model.phrasegrams = {
  str(model.delimiter.join(key), encoding='utf8'): val
  for key, val in phrasegrams.items()
}
```



Discussion:
You're right, thanks. Can you open a PR?


Resolving patch:
diff --git a/gensim/models/phrases.py b/gensim/models/phrases.py
--- a/gensim/models/phrases.py
+++ b/gensim/models/phrases.py
@@ -364,7 +364,7 @@ def load(cls, *args, **kwargs):
                 }
             elif isinstance(component, tuple):  # 3.8 => 4.0: phrasegram keys are strings, not tuples with bytestrings
                 model.phrasegrams = {
-                    str(model.delimiter.join(component), encoding='utf8'): score
+                    str(model.delimiter.join(key), encoding='utf8'): val
                     for key, val in phrasegrams.items()
                 }
         except StopIteration:


Test patch:
Repository: piskvorky/gensim

Issue:
Use coveralls
While contributing in gensim I felt a need of an automated system which can confirm whether I have written tests corresponding to **every line of code** I wrote. I propose the immediate use of https://coveralls.io/ for ensuring this. 

Here is coveralls in action - https://coveralls.io/github/jellAIfish/omega?branch=master for my own repository.


Discussion:
Thank you @markroxor, it will be really good if you add an instruction (or provide links) how to add it to project.
First you need to link the organization with https://coveralls.io and activate coveralls for your repository.

I am using travis and tox configurations similar to that of gensim with little modifications since they are very efficient.

Here is the tox configuration https://github.com/jellAIfish/omega/blob/master/tox.ini#L22
Here goes the travis config https://github.com/jellAIfish/omega/blob/master/.travis.yml
and the .coveragerc file https://github.com/jellAIfish/omega/blob/master/.coveragerc
An official example is here - https://github.com/codecov/example-python

Resolving patch:
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -268,6 +268,7 @@ def run(self):
 # packages included for build-testing everywhere
 core_testenv = [
     'pytest',
+    'pytest-cov',
 #    'pytest-rerunfailures',  # disabled 2020-08-28 for <https://github.com/pytest-dev/pytest-rerunfailures/issues/128>
     'mock',
     'cython',


Test patch:
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -53,9 +53,18 @@ jobs:
         run: ulimit -c unlimited -S  # enable core dumps
       - name: Run tox tests
         run: tox -e ${{ matrix.tox }}
+      - name: Upload coverage to Codecov
+        if: matrix.os == 'ubuntu-20.04' && matrix.python == '3.8'
+        uses: codecov/codecov-action@v2
+        with:
+          fail_ci_if_error: true
+          files: ./coverage.xml
+          verbose: true
+
+
       - name: Collect corefile
         if: ${{ failure() }}
         run: |
           pwd
           COREFILE=$(find . -maxdepth 1 -name "core*" | head -n 1)
-          if [[ -f "$COREFILE" ]]; then EXECFILE=$(gdb -c "$COREFILE" -batch | grep "Core was generated" | tr -d "\`" | cut -d' ' -f5); file "$COREFILE"; gdb -c "$COREFILE" "$EXECFILE" -x continuous_integration/debug.gdb -batch; fi
+          if [[ -f "$COREFILE" ]]; then EXECFILE=$(gdb -c "$COREFILE" -batch | grep "Core was generated" | tr -d "\`" | cut -d' ' -f5); file "$COREFILE"; gdb -c "$COREFILE" "$EXECFILE" -x continuous_integration/debug.gdb -batch; fi
\ No newline at end of file
Repository: piskvorky/gensim

Issue:
Migrate setup.py from distutils to setuptools
distutils is going away in a future version of Python

https://docs.python.org/3/whatsnew/3.10.html#distutils-deprecated


Discussion:

Resolving patch:
diff --git a/gensim/corpora/dictionary.py b/gensim/corpora/dictionary.py
--- a/gensim/corpora/dictionary.py
+++ b/gensim/corpora/dictionary.py
@@ -331,7 +331,7 @@ def filter_extremes(self, no_below=5, no_above=0.5, keep_n=100000, keep_tokens=N
         After the pruning, resulting gaps in word ids are shrunk.
         Due to this gap shrinking, **the same word may have a different word id before and after the call
         to this function!** See :class:`gensim.models.VocabTransform` and the
-        `dedicated FAQ entry <https://github.com/RaRe-Technologies/gensim/wiki/Recipes-&-FAQ#q8-how-can-i-filter-a-saved-corpus-and-its-corresponding-dictionary>`_ on how
+        `dedicated FAQ entry <https://github.com/RaRe-Technologies/gensim/wiki/Recipes-&-FAQ#q8-how-can-i-filter-a-saved-corpus-and-its-corresponding-dictionary>`_ on how  # noqa
         to transform a corpus built with a dictionary before pruning.
 
         Examples
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -10,15 +10,13 @@
     python ./setup.py install
 """
 
-import distutils.cmd
-import distutils.log
 import itertools
 import os
 import platform
 import shutil
 import sys
 
-from setuptools import Extension, find_packages, setup
+from setuptools import Extension, find_packages, setup, distutils
 from setuptools.command.build_ext import build_ext
 
 c_extensions = {


Test patch:
Repository: piskvorky/gensim

Issue:
Parsing Error in Docs
#### Problem description

There seems to be a parsing error in [modesl.fasttext,FastTextKeyedVectors docs](https://radimrehurek.com/gensim/models/fasttext.html#gensim.models.fasttext.FastTextKeyedVectors).

It is in between `bucket_word` and `__getitem__` attributes.
![doc error](https://user-images.githubusercontent.com/57797966/165233852-fc93c467-3c07-4131-bf9f-59420aa9042a.PNG)




Discussion:
Yeah, that's weird. Are you able to find the cause and submit a PR @MattYoon ? Thanks.
Actually, reading the misformatted text, I think we can remove it completely.

Because there's not enough information in there to make it actionable ("*may be decorated with extra attributes that associate with core attributes*" – what?), which makes it bad documentation.

@mattyoon can you open a PR?

Resolving patch:
diff --git a/gensim/models/fasttext.py b/gensim/models/fasttext.py
--- a/gensim/models/fasttext.py
+++ b/gensim/models/fasttext.py
@@ -968,11 +968,6 @@ def __init__(self, vector_size, min_n, max_n, bucket, count=0, dtype=REAL):
         buckets_word : list of np.array
             For each key (by its index), report bucket slots their subwords map to.
 
-        When used in training, FastTextKeyedVectors may be decorated with
-        extra attributes that closely associate with its core attributes,
-        such as the experimental vectors_vocab_lockf and vectors_ngrams_lockf
-        training-update-dampening factors.
-
         """
         super(FastTextKeyedVectors, self).__init__(vector_size=vector_size, count=count, dtype=dtype)
         self.min_n = min_n


Test patch:
Repository: piskvorky/gensim

Issue:
How to load 3.8.3 gensim word2vec model by new version 4.2.0 gensim model
<!--
**IMPORTANT**:

- Use the [Gensim mailing list](https://groups.google.com/forum/#!forum/gensim) to ask general or usage questions. Github issues are only for bug reports.
- Check [Recipes&FAQ](https://github.com/RaRe-Technologies/gensim/wiki/Recipes-&-FAQ) first for common answers.

Github bug reports that do not include relevant information and context will be closed without an answer. Thanks!
-->

## Problem description

Hi! I have been using gensim 3.8.1 and want to use the latest version, gensim 4.2.0.

I have been able to load models made with older gensim versions, but when I changed to the latest version, I can no longer load them.
This is the error code.

```zsh
Exception has occurred: AttributeError
Can't get attribute 'Vocab' on <module 'gensim.models.word2vec' from '/PATH'>
```

I would like to know if there is some way to load older models.

## Versions

python 3.8.9
gensim 4.2.0


Discussion:
Can you show the loading code, plus the full exception?
Sorry I forgot to paste the code. Here is the minimum code which error occurs.
```Python
import gensim

model_path='latest-ja-word2vec-gensim-model/word2vec.gensim.model'

model = gensim.models.Word2Vec.load(model_path)
```

I use the pretrained japanese model from this [url](http://public.shiroyagi.s3.amazonaws.com/latest-ja-word2vec-gensim-model.zip) by curl.
I can replicate this, thanks for reporting.

And I can see what happened too – we added the legacy `Vocab` structure to the `keyedvectors.py` module, but not to `word2vec.py` module. Apparently some models need that too.

The fix is trivial. In `word2vec.py`:

```python
# replace this line:
from gensim.models.keyedvectors import KeyedVectors, pseudorandom_weak_vector
# with this line:
from gensim.models.keyedvectors import KeyedVectors, pseudorandom_weak_vector, Vocab
```

@Atsuyoshi-Funahashi can you open a PR with the fix above? We'll include this fix in the next release.
In the meantime, you can apply the fix = add the `Vocab` import to `word2vec.py` yourself.

Thank you! I could fix the error by this change.
OK, I create the PR.
I want to push by my different account, so please give [this account](https://github.com/funasshi) permission.
You don't need any special permissions to open a PR – simply [create the PR](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request) and we will review it.

Resolving patch:
diff --git a/gensim/models/word2vec.py b/gensim/models/word2vec.py
--- a/gensim/models/word2vec.py
+++ b/gensim/models/word2vec.py
@@ -200,6 +200,9 @@
 from gensim.models.keyedvectors import KeyedVectors, pseudorandom_weak_vector
 from gensim import utils, matutils
 
+# This import is required by pickle to load models stored by Gensim < 4.0, such as Gensim 3.8.3.
+from gensim.models.keyedvectors import Vocab  # noqa
+
 from smart_open.compression import get_supported_extensions
 
 logger = logging.getLogger(__name__)


Test patch:
Repository: piskvorky/gensim

Issue:
AttributeError: 'dict' object has no attribute '__NUMPY_SETUP__'
Building gensim from source on Python 3.9 I consistently get this error:
```
  File "setup.py", line 108, in finalize_options
    __builtins__.__NUMPY_SETUP__ = False
AttributeError: 'dict' object has no attribute '__NUMPY_SETUP__'
```

My current workaround is this:
https://github.com/RaRe-Technologies/gensim/blob/919b4154a5696a544b87f792992f25f5e4d59d3e/setup.py#L109

```
        try:
            __builtins__.__NUMPY_SETUP__ = False
        except AttributeError:
            print("Cannot set '__builtins__.__NUMPY_SETUP__ = False' This is not needed if numpy is already installed.")
```



Discussion:
What platform?
Windows.
+1 same thing on mac M1
Noting this thread may be relevant: https://github.com/pyvista/pyacvd/pull/23#issue-1298467701
They dropped the `__builtins__.__NUMPY_SETUP__` as outdated.

Resolving patch:
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -96,19 +96,26 @@ class CustomBuildExt(build_ext):
     """Custom build_ext action with bootstrapping.
 
     We need this in order to use numpy and Cython in this script without
-    importing them at module level, because they may not be available yet.
+    importing them at module level, because they may not be available at that time.
     """
-    #
-    # Prevent numpy from thinking it is still in its setup process
-    # http://stackoverflow.com/questions/19919905/how-to-bootstrap-numpy-installation-in-setup-py
-    #
     def finalize_options(self):
         build_ext.finalize_options(self)
 
         import builtins
-        builtins.__NUMPY_SETUP__ = False
-
         import numpy
+
+        #
+        # Prevent numpy from thinking it is still in its setup process
+        # http://stackoverflow.com/questions/19919905/how-to-bootstrap-numpy-installation-in-setup-py
+        #
+        # Newer numpy versions don't support this hack, nor do they need it.
+        # https://github.com/pyvista/pyacvd/pull/23#issue-1298467701
+        #
+        try:
+            builtins.__NUMPY_SETUP__ = False
+        except Exception as ex:
+            print(f'could not use __NUMPY_SETUP__ hack (numpy version: {numpy.__version__}): {ex}')
+
         self.include_dirs.append(numpy.get_include())
 
         if need_cython():


Test patch:
Repository: piskvorky/gensim

Issue:
HTTP link provided instead of HTTPS
The text8 corpus link in the[ documentation](https://radimrehurek.com/gensim/models/word2vec.html) is http when it could be https. That's all.



Discussion:
Would you like to make a PR?

Resolving patch:
diff --git a/gensim/downloader.py b/gensim/downloader.py
--- a/gensim/downloader.py
+++ b/gensim/downloader.py
@@ -260,7 +260,7 @@ def info(name=None, show_only_latest=True, name_only=False):
          u'description': u'Cleaned small sample from wikipedia',
          u'file_name': u'text8.gz',
          u'parts': 1,
-         u'source': u'http://mattmahoney.net/dc/text8.zip'}
+         u'source': u'https://mattmahoney.net/dc/text8.zip'}
         >>>
         >>> api.info()  # retrieve information about all available datasets and models
 
diff --git a/gensim/models/word2vec.py b/gensim/models/word2vec.py
--- a/gensim/models/word2vec.py
+++ b/gensim/models/word2vec.py
@@ -2041,7 +2041,7 @@ def __iter__(self):
 
 class Text8Corpus:
     def __init__(self, fname, max_sentence_length=MAX_WORDS_IN_BATCH):
-        """Iterate over sentences from the "text8" corpus, unzipped from http://mattmahoney.net/dc/text8.zip."""
+        """Iterate over sentences from the "text8" corpus, unzipped from https://mattmahoney.net/dc/text8.zip."""
         self.fname = fname
         self.max_sentence_length = max_sentence_length
 
diff --git a/gensim/scripts/benchmark.py b/gensim/scripts/benchmark.py
--- a/gensim/scripts/benchmark.py
+++ b/gensim/scripts/benchmark.py
@@ -30,6 +30,6 @@
         print(globals()['__doc__'] % locals())
         sys.exit(1)
 
-    corpus = Text8Corpus(sys.argv[1])  # text8/text9 format from http://mattmahoney.net/dc/textdata.html
+    corpus = Text8Corpus(sys.argv[1])  # text8/text9 format from https://mattmahoney.net/dc/textdata.html
     cls = FastText
     cls(corpus, workers=12, epochs=1).save(f'/tmp/{cls.__name__}.gensim{__version__}')


Test patch:
Repository: piskvorky/gensim

Issue:
Inconsistent documentation for LdaSeqModel
<!--
**IMPORTANT**:

- Use the [Gensim mailing list](https://groups.google.com/g/gensim) to ask general or usage questions. Github issues are only for bug reports.
- Check [Recipes&FAQ](https://github.com/RaRe-Technologies/gensim/wiki/Recipes-&-FAQ) first for common answers.

Github bug reports that do not include relevant information and context will be closed without an answer. Thanks!
-->

#### Problem description

The code description of how to use `LdaSeqModel` does not match what the code example actually does. On https://radimrehurek.com/gensim/models/ldaseqmodel.html we have:

![image](https://github.com/RaRe-Technologies/gensim/assets/54182533/745341d7-4d01-4110-8a7e-d05aecc791a2)

according to the code example we have 9 documents, with 2, 4, and 3 documents respectively in each time slice,  while the text above claims otherwise. Also, the text is grammatically incorrect. 

#### Steps/code/corpus to reproduce


#### Versions

`gensim==4.3.1`



Discussion:

Resolving patch:
diff --git a/gensim/models/ldaseqmodel.py b/gensim/models/ldaseqmodel.py
--- a/gensim/models/ldaseqmodel.py
+++ b/gensim/models/ldaseqmodel.py
@@ -22,7 +22,7 @@
 Examples
 --------
 
-Set up a model using have 30 documents, with 5 in the first time-slice, 10 in the second, and 15 in the third
+Set up a model using 9 documents, with 2 in the first time-slice, 4 in the second, and 3 in the third
 
 .. sourcecode:: pycon
 


Test patch: