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

Issue:
Expose Timeout Parameters in weaviate
Weaviate storage currently does not allow specifying the Timeout parameters.
Add the parameter to `WeaviateConfig` and used when creating the weaviate client


Discussion:

Resolving patch:
diff --git a/docarray/array/storage/weaviate/backend.py b/docarray/array/storage/weaviate/backend.py
--- a/docarray/array/storage/weaviate/backend.py
+++ b/docarray/array/storage/weaviate/backend.py
@@ -13,13 +13,13 @@
 import numpy as np
 import weaviate
 
-from ..base.backend import BaseBackendMixin
-from ..registry import _REGISTRY
 from .... import Document
 from ....helper import dataclass_from_dict, filter_dict
+from ..base.backend import BaseBackendMixin
+from ..registry import _REGISTRY
 
 if TYPE_CHECKING:
-    from ....typing import DocumentArraySourceType, ArrayType
+    from ....typing import ArrayType, DocumentArraySourceType
 
 
 @dataclass
@@ -35,6 +35,7 @@ class WeaviateConfig:
     n_dim: Optional[int] = None  # deprecated, not used anymore since weaviate 1.10
     ef: Optional[int] = None
     ef_construction: Optional[int] = None
+    timeout_config: Optional[Tuple[int, int]] = None
     max_connections: Optional[int] = None
 
 
@@ -72,7 +73,8 @@ def _init_storage(
         self._persist = bool(config.name)
 
         self._client = weaviate.Client(
-            f'{config.protocol}://{config.host}:{config.port}'
+            f'{config.protocol}://{config.host}:{config.port}',
+            timeout_config=config.timeout_config,
         )
         self._config = config
 


Test patch:
Repository: docarray/docarray

Issue:
Configure Distance Metric in Weaviate
As discussed over Slack, when Weaviate supports different distance metrics other than `cosine` they need to be configurable in doc array as well.


Discussion:
I will provide a PR for this.

Resolving patch:
diff --git a/docarray/array/storage/weaviate/backend.py b/docarray/array/storage/weaviate/backend.py
--- a/docarray/array/storage/weaviate/backend.py
+++ b/docarray/array/storage/weaviate/backend.py
@@ -45,6 +45,7 @@ class WeaviateConfig:
     flat_search_cutoff: Optional[int] = None
     cleanup_interval_seconds: Optional[int] = None
     skip: Optional[bool] = None
+    distance: Optional[str] = None
 
 
 class BackendMixin(BaseBackendMixin):
@@ -135,6 +136,7 @@ def _get_schema_by_name(self, cls_name: str) -> Dict:
             'flatSearchCutoff': self._config.flat_search_cutoff,
             'cleanupIntervalSeconds': self._config.cleanup_interval_seconds,
             'skip': self._config.skip,
+            'distance': self._config.distance,
         }
 
         return {


Test patch:
diff --git a/tests/unit/array/docker-compose.yml b/tests/unit/array/docker-compose.yml
--- a/tests/unit/array/docker-compose.yml
+++ b/tests/unit/array/docker-compose.yml
@@ -1,7 +1,7 @@
 version: "3.3"
 services:
   weaviate:
-    image: semitechnologies/weaviate:1.11.0
+    image: semitechnologies/weaviate:1.13.2
     ports:
       - "8080:8080"
     environment:
diff --git a/tests/unit/array/test_backend_configuration.py b/tests/unit/array/test_backend_configuration.py
--- a/tests/unit/array/test_backend_configuration.py
+++ b/tests/unit/array/test_backend_configuration.py
@@ -18,6 +18,7 @@ def test_weaviate_hnsw(start_storage):
             'flat_search_cutoff': 20000,
             'cleanup_interval_seconds': 1000,
             'skip': True,
+            'distance': 'l2-squared',
         },
     )
 
@@ -43,3 +44,4 @@ def test_weaviate_hnsw(start_storage):
     assert main_class.get('vectorIndexConfig', {}).get('flatSearchCutoff') == 20000
     assert main_class.get('vectorIndexConfig', {}).get('cleanupIntervalSeconds') == 1000
     assert main_class.get('vectorIndexConfig', {}).get('skip') is True
+    assert main_class.get('vectorIndexConfig', {}).get('distance') == 'l2-squared'
Repository: docarray/docarray

Issue:
add len on DocIndex
# Context

len(db) should return db.num_docs when db is a DocIndex


Discussion:

Resolving patch:
diff --git a/docarray/index/abstract.py b/docarray/index/abstract.py
--- a/docarray/index/abstract.py
+++ b/docarray/index/abstract.py
@@ -900,3 +900,6 @@ def _dict_list_to_docarray(self, dict_list: Sequence[Dict[str, Any]]) -> DocList
         doc_list = [self._convert_dict_to_doc(doc_dict, self._schema) for doc_dict in dict_list]  # type: ignore
         docs_cls = DocList.__class_getitem__(cast(Type[BaseDoc], self._schema))
         return docs_cls(doc_list)
+
+    def __len__(self) -> int:
+        return self.num_docs()


Test patch:
diff --git a/tests/index/base_classes/test_base_doc_store.py b/tests/index/base_classes/test_base_doc_store.py
--- a/tests/index/base_classes/test_base_doc_store.py
+++ b/tests/index/base_classes/test_base_doc_store.py
@@ -71,7 +71,7 @@ def python_type_to_db_type(self, x):
         return str
 
     _index = _identity
-    num_docs = _identity
+    num_docs = lambda n: 3
     _del_items = _identity
     _get_items = _identity
     execute_query = _identity
@@ -572,3 +572,9 @@ def test_validate_search_fields():
     # 'ten' is not a valid field
     with pytest.raises(ValueError):
         index._validate_search_field('ten')
+
+
+def test_len():
+    store = DummyDocIndex[SimpleDoc]()
+    count = len(store)
+    assert count == 3
Repository: docarray/docarray

Issue:
add json-array to save binaries
# Context

DocList.save_binary does not support json protocol. It should IMO


Discussion:

Resolving patch:
diff --git a/docarray/array/doc_list/io.py b/docarray/array/doc_list/io.py
--- a/docarray/array/doc_list/io.py
+++ b/docarray/array/doc_list/io.py
@@ -46,8 +46,8 @@
 T = TypeVar('T', bound='IOMixinArray')
 T_doc = TypeVar('T_doc', bound=BaseDoc)
 
-ARRAY_PROTOCOLS = {'protobuf-array', 'pickle-array'}
-SINGLE_PROTOCOLS = {'pickle', 'protobuf'}
+ARRAY_PROTOCOLS = {'protobuf-array', 'pickle-array', 'json-array'}
+SINGLE_PROTOCOLS = {'pickle', 'protobuf', 'json'}
 ALLOWED_PROTOCOLS = ARRAY_PROTOCOLS.union(SINGLE_PROTOCOLS)
 ALLOWED_COMPRESSIONS = {'lz4', 'bz2', 'lzma', 'zlib', 'gzip'}
 
@@ -180,6 +180,8 @@ def _write_bytes(
                 f.write(self.to_protobuf().SerializePartialToString())
             elif protocol == 'pickle-array':
                 f.write(pickle.dumps(self))
+            elif protocol == 'json-array':
+                f.write(self.to_json())
             elif protocol in SINGLE_PROTOCOLS:
                 f.write(
                     b''.join(
@@ -575,7 +577,11 @@ def _load_binary_all(
             else:
                 d = fp.read()
 
-        if protocol is not None and protocol in ('pickle-array', 'protobuf-array'):
+        if protocol is not None and protocol in (
+            'pickle-array',
+            'protobuf-array',
+            'json-array',
+        ):
             if _get_compress_ctx(algorithm=compress) is not None:
                 d = _decompress_bytes(d, algorithm=compress)
                 compress = None
@@ -590,6 +596,9 @@ def _load_binary_all(
         elif protocol is not None and protocol == 'pickle-array':
             return pickle.loads(d)
 
+        elif protocol is not None and protocol == 'json-array':
+            return cls.from_json(d)
+
         # Binary format for streaming case
         else:
             from rich import filesize


Test patch:
diff --git a/tests/units/array/test_array_save_load.py b/tests/units/array/test_array_save_load.py
--- a/tests/units/array/test_array_save_load.py
+++ b/tests/units/array/test_array_save_load.py
@@ -16,7 +16,7 @@ class MyDoc(BaseDoc):
 
 @pytest.mark.slow
 @pytest.mark.parametrize(
-    'protocol', ['pickle-array', 'protobuf-array', 'protobuf', 'pickle']
+    'protocol', ['pickle-array', 'protobuf-array', 'protobuf', 'pickle', 'json-array']
 )
 @pytest.mark.parametrize('compress', ['lz4', 'bz2', 'lzma', 'zlib', 'gzip', None])
 @pytest.mark.parametrize('show_progress', [False, True])
@@ -52,7 +52,7 @@ def test_array_save_load_binary(protocol, compress, tmp_path, show_progress):
 
 @pytest.mark.slow
 @pytest.mark.parametrize(
-    'protocol', ['pickle-array', 'protobuf-array', 'protobuf', 'pickle']
+    'protocol', ['pickle-array', 'protobuf-array', 'protobuf', 'pickle', 'json-array']
 )
 @pytest.mark.parametrize('compress', ['lz4', 'bz2', 'lzma', 'zlib', 'gzip', None])
 @pytest.mark.parametrize('show_progress', [False, True])
Repository: docarray/docarray

Issue:
Weaviate: Add more robust method to detect existing index
**Is your feature request related to a problem? Please describe.**
An index should be considered as exist when there is a schema with the exist name and properties.


**Describe the solution you'd like**
Use the client's `exists` instead of `contains` method to detect an existing index name.

**Describe alternatives you've considered**
NA

**Additional context**
Wait for weaviate/weaviate-python-client#232 to be implemented



Discussion:
FYI, support has been added.

we can do `client.schema.exists(INDEX_NAME)` 

Resolving patch:
diff --git a/docarray/index/backends/weaviate.py b/docarray/index/backends/weaviate.py
--- a/docarray/index/backends/weaviate.py
+++ b/docarray/index/backends/weaviate.py
@@ -225,9 +225,7 @@ def _create_schema(self) -> None:
         schema["properties"] = properties
         schema["class"] = self.index_name
 
-        # TODO: Use exists() instead of contains() when available
-        #       see https://github.com/weaviate/weaviate-python-client/issues/232
-        if self._client.schema.contains(schema):
+        if self._client.schema.exists(self.index_name):
             logging.warning(
                 f"Found index {self.index_name} with schema {schema}. Will reuse existing schema."
             )


Test patch:
Repository: docarray/docarray

Issue:
Weaviate: update text search to match latest client's requirements
Starting from 3.15.6, with_bm25 no longer expects a dictionary. 

See weaviate/weaviate-python-client#290 for details.


<!-- Edit the body of your new issue then click the ✓ "Create Issue" button in the top right of the editor. The first line will be the issue title. Assignees and Labels follow after a blank line. Leave an empty line before beginning the body of the issue. -->


Discussion:

Resolving patch:
diff --git a/docarray/index/backends/weaviate.py b/docarray/index/backends/weaviate.py
--- a/docarray/index/backends/weaviate.py
+++ b/docarray/index/backends/weaviate.py
@@ -599,7 +599,7 @@ def _text_search(
 
         results = (
             self._client.query.get(index_name, self.properties)
-            .with_bm25(bm25)
+            .with_bm25(**bm25)
             .with_limit(limit)
             .with_additional(["score", "vector"])
             .do()
@@ -620,7 +620,7 @@ def _text_search_batched(
 
             q = (
                 self._client.query.get(self.index_name, self.properties)
-                .with_bm25(bm25)
+                .with_bm25(**bm25)
                 .with_limit(limit)
                 .with_additional(["score", "vector"])
                 .with_alias(f'query_{i}')


Test patch:
Repository: python/python-docs-es

Issue:
Mejorar la guía de CONTRIBUTING
Tenemos una pequeña guía que explica el procedimiento. Sin embargo, estaría bueno mejorarla un poco para que sea más fácil de seguir para persona que no sepan mucho de github y demás herramientas: https://github.com/raulcd/python-docs-es/blob/3.7/CONTRIBUTING.rst


Discussion:
Vale, anoto esto aquí para que no se me olvide pero pondré una sección específica en el contributing, donde podemos añadir, si os parece, un FAQ, o más bien frequently faced problems.... ahaha y poner si acaso las cosas que pueden ocurrir:

En Mac, fallos al intentar make progress que dicen algo de un realpath son 99% posiblemente la falta de una librería, se soluciona haciendo: brew install coreutils
Deberiamos añadir las herramientas para que el build pase:
`powrap`, `pospell`, diccionarios, etc

Resolving patch:
diff --git a/conf.py b/conf.py
--- a/conf.py
+++ b/conf.py
@@ -33,10 +33,34 @@
 
 os.system('mkdir -p cpython/locales/es/')
 os.system('ln -nfs `pwd` cpython/locales/es/LC_MESSAGES')
+os.system('ln -nfs `pwd`/CONTRIBUTING.rst cpython/Doc/CONTRIBUTING.rst')
 
 gettext_compact = False
 locale_dirs = ['../locales', 'cpython/locales']  # relative to the sourcedir
 
 def setup(app):
+
+    def add_contributing_banner(app, doctree):
+        """
+        Insert a banner at the top of the index.
+
+        This way, we can easily communicate people to help with the translation,
+        pointing them to different resources.
+        """
+        from docutils import nodes, core
+
+        message = '¡Ayúdanos a traducir la documentación oficial de Python al Español! ' \
+        f'Puedes encontrar más información en `Como contribuir </es/{version}/CONTRIBUTING.html>`_  ' \
+        'y así ayudarnos a acercar Python a más personas de habla hispana.'
+
+        paragraph = core.publish_doctree(message)[0]
+        banner = nodes.warning(ids=['contributing-banner'])
+        banner.append(paragraph)
+
+        for document in doctree.traverse(nodes.document):
+            document.insert(0, banner)
+
     # Change the sourcedir programmatically because Read the Docs always call it with `.`
     app.srcdir = 'cpython/Doc'
+
+    app.connect('doctree-read', add_contributing_banner)


Test patch:
Repository: python/python-docs-es

Issue:
Revisar los `:role:!key`
Cuando hicimos la migración #27 aceptamos `:role:!key` como `:role:key`.

La única diferencia entre ellos es que el que tiene `!` no hace un link a la referencia.

Tenemos que revisar que queden consistentes nuevamente.


Discussion:

Resolving patch:
diff --git a/conf.py b/conf.py
--- a/conf.py
+++ b/conf.py
@@ -11,7 +11,7 @@
 #
 # This can be built locally using `sphinx-build` by running
 #
-#   $ sphinx-build -b html -n -d _build/doctrees -D language=es . _build/html
+#   $ sphinx-build -b html -d _build/doctrees -D language=es . _build/html
 
 import sys, os, time
 sys.path.append(os.path.abspath('cpython/Doc/tools/extensions'))
@@ -37,6 +37,12 @@
 os.system('ln -nfs `pwd` cpython/locales/es/LC_MESSAGES')
 
 
+exclude_patterns = [
+    # This file is not included and it not marked as :orphan:
+    'distutils/_setuptools_disclaimer.rst',
+    'README.rst',
+]
+
 if not os.environ.get('SPHINX_GETTEXT') == 'True':
     # Override all the files from ``.overrides`` directory
     import glob


Test patch:
Repository: python/python-docs-es

Issue:
Hay un par de warnings en sphinx que rompieron el build
He mergado algunas PRs y parece que el build en 3.8 se rompe al haber activado el fallo por warnings en sphinx. Si puedo luego lo miro, pero probablemente @humitos puede arreglarlo rápido.


Discussion:

Resolving patch:
diff --git a/conf.py b/conf.py
--- a/conf.py
+++ b/conf.py
@@ -33,8 +33,6 @@
 templates_path = ['cpython/Doc/tools/templates']
 html_static_path = ['cpython/Doc/tools/static']
 
-extensions.append('sphinx_autorun')
-
 os.system('mkdir -p cpython/locales/es/')
 os.system('ln -nfs `pwd` cpython/locales/es/LC_MESSAGES')
 
@@ -107,3 +105,22 @@ def add_contributing_banner(app, doctree):
     app.srcdir = 'cpython/Doc'
 
     app.connect('doctree-read', add_contributing_banner)
+
+    # Import the sphinx-autorun manually to avoid this warning
+    # TODO: Remove this code and use just ``extensions.append('sphinx_autorun')`` when
+    # that issue gets fixed
+    # See https://github.com/WhyNotHugo/sphinx-autorun/issues/17
+
+    # WARNING: the sphinx_autorun extension does not declare if it is safe for
+    # parallel reading, assuming it isn't - please ask the extension author to
+    # check and make it explicit
+    # WARNING: doing serial read
+    from sphinx_autorun import RunBlock, AutoRun
+    app.add_directive('runblock', RunBlock)
+    app.connect('builder-inited', AutoRun.builder_init)
+    app.add_config_value('autorun_languages', AutoRun.config, 'env')
+    return {
+        'version': '0.1',
+        'parallel_read_safe': True,
+        'parallel_write_safe': True,
+    }


Test patch:
diff --git a/library/test.po b/library/test.po
--- a/library/test.po
+++ b/library/test.po
@@ -15,7 +15,6 @@ msgstr ""
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: python-doc-es\n"
-"python.org)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
Repository: python/python-docs-es

Issue:
Translating `library/functions.po`
I will take care of this file


Discussion:
Done in #218 
No está acabado el fichero, entiendo que la issue debería quedarse abierta hasta que lo termine no? Mañana pensaba ponerme a seguir traduciendo, ya que los días anteriores me centré en reviews. Si acaso la próxima PR que hago del fichero la dejo en draft hasta que termine, te parece bien @humitos ?
Uy, perdón! Mala mía.

Sí, el issue lo dejamos abierto hasta que esté terminada la tarea.

Buena idea la de dejar el PR en Draft hasta que esté listo para review 👍
Puedes crear otra branch desde 3.8 (actualizada) y una nueva PR
Vale perfecto, hoy traduciré algún parrafito y haré eso de dejarlo como draft. Muchas gracias!

Resolving patch:
diff --git a/scripts/print_percentage_library.py b/scripts/print_percentage_library.py
new file mode 100755
--- /dev/null
+++ b/scripts/print_percentage_library.py
@@ -0,0 +1,23 @@
+#!/usr/bin/env python
+
+import glob
+import os
+
+import polib  # fades
+
+PO_DIR = os.path.abspath(
+    os.path.join(
+        os.path.dirname(__file__),
+        '..',
+    ))
+
+
+def main():
+    for pofilename in sorted(glob.glob(PO_DIR + '**/library/*.po')):
+        po = polib.pofile(pofilename)
+        file_per = po.percent_translated()
+        print(f"{pofilename} ::: {file_per}%")
+
+
+if __name__ == "__main__":
+    main()


Test patch:
Repository: python/python-docs-es

Issue:
Reemplazar 'PyCampES/python-docs-es' en links a repositorio 'python/python-docs-es'
Parece que se están realizando redirecciones en links del repositorio `PyCampES/python-docs-es` a `python/python-docs-es`. Me imagino que `PyCampES` sería la antigua organización que administraba este proyecto.

No vendría mal reemplazar los links para que apunten a este repositorio y nos ahorramos la redirección. Lo haría en un momento, pero prefiero abrir este issue para asegurarme que no se han mantenido así por alguna razón.


Discussion:

Resolving patch:
diff --git a/scripts/create_issue.py b/scripts/create_issue.py
--- a/scripts/create_issue.py
+++ b/scripts/create_issue.py
@@ -17,7 +17,7 @@
 
 g = Github(os.environ.get('GITHUB_TOKEN'))
 
-repo = g.get_repo('PyCampES/python-docs-es')
+repo = g.get_repo('python/python-docs-es')
 
 
 issues = repo.get_issues(state='all')


Test patch:
diff --git a/library/test.po b/library/test.po
--- a/library/test.po
+++ b/library/test.po
@@ -3,7 +3,7 @@
 # Maintained by the python-doc-es workteam.
 # docs-es@python.org /
 # https://mail.python.org/mailman3/lists/docs-es.python.org/
-# Check https://github.com/PyCampES/python-docs-es/blob/3.8/TRANSLATORS to
+# Check https://github.com/python/python-docs-es/blob/3.8/TRANSLATORS to
 # get the list of volunteers
 #
 msgid ""
Repository: python/python-docs-es

Issue:
Translate `library/signal.po`
This needs to reach 100% translated.

Current stats for `library/signal.po`:

- Fuzzy: 0
- Percent translated: 0%
- Entries: 0 / 119
- Untranslated: 119

Please, comment here if you want this file to be assigned to you and an member will assign it to you as soon as possible, so you can start working on it.

Remember to follow the steps in our [Contributing Guide](https://python-docs-es.readthedocs.io/page/CONTRIBUTING.html).


Discussion:
Quiero traducir este.. me lo podría asignar?

éxito con la traducción! :tada:
@VladimirGonzalez  te podemos ayudar en algo para poder continuar con este archivo? Si no tienes tiempo, lo podemos dejar libre para que otra persona continué con el.
Hola, buenos días.

¿Me podríais asignar esta tarea por favor?
Claro @alochimpasplum, éxito con la traducción!
Recuerda que estamos en el discord de HacktoberfestES si es que te inscribiste, si no, tenemos un grupo de telegram en caso de preguntas.
Gracias! Más tarde me meto al discord ☺

Resolving patch:
diff --git a/conf.py b/conf.py
--- a/conf.py
+++ b/conf.py
@@ -42,8 +42,9 @@
 
 # Extend settings from upstream
 _exclude_patterns = [
-    # This file is not included and it not marked as :orphan:
-    '*/distutils/_setuptools_disclaimer.rst',
+    # This file is not included and it's not marked as :orphan:
+    'distutils/_setuptools_disclaimer.rst',
+    'cpython/Doc/distutils/_setuptools_disclaimer.rst',
 ]
 if 'exclude_patterns' in globals():
     exclude_patterns += _exclude_patterns


Test patch:
Repository: python/python-docs-es

Issue:
Translate 'whatsnew/2.3.po'
This needs to reach 100% translated.

The rendered version of this file will be available at https://docs.python.org/es/3.8/whatsnew/2.3.html once translated.
Meanwhile, the English version is shown.

Current stats for `whatsnew/2.3.po`:

* Fuzzy: 0
* Percent translated: 0.0%
* Entries: 0 / 324
* Untranslated: 324

Please, comment here if you want this file to be assigned to you and an member will assign it to you as soon as possible, so you can start working on it.

Remember to follow the steps in our [Contributing Guide](https://python-docs-es.readthedocs.io/page/CONTRIBUTING.html).


Discussion:
Please assign me
Gracias @gomezgleonardob es bastante largo, asi que mucho éxito!
@gomezgleonardob ¿has podido traducir algunas entradas? Si es así, puedes subirlas asi vamos finalizando el archivo.

Resolving patch:
diff --git a/scripts/completed_files.py b/scripts/completed_files.py
old mode 100644
new mode 100755
diff --git a/scripts/print_percentage.py b/scripts/print_percentage.py
old mode 100644
new mode 100755


Test patch:
Repository: python/python-docs-es

Issue:
Translate 'library/base64.po'
This needs to reach 100% translated.

The rendered version of this file will be available at https://docs.python.org/es/3.10/library/base64.html once translated.
Meanwhile, the English version is shown.

Current stats for `library/base64.po`:

* Fuzzy: 4
* Percent translated: 90.9%
* Entries: 50 / 55
* Untranslated: 5

Please, comment here if you want this file to be assigned to you and an member will assign it to you as soon as possible, so you can start working on it.

Remember to follow the steps in our [Contributing Guide](https://python-docs-es.readthedocs.io/page/CONTRIBUTING.html).


Discussion:

Resolving patch:
diff --git a/scripts/translate.py b/scripts/translate.py
--- a/scripts/translate.py
+++ b/scripts/translate.py
@@ -42,6 +42,7 @@
     ":program:`[^`]+`",
     ":keyword:`[^`]+`",
     ":RFC:`[^`]+`",
+    ":rfc:`[^`]+`",
     ":doc:`[^`]+`",
     "``[^`]+``",
     "`[^`]+`__",


Test patch:
Repository: python/python-docs-es

Issue:
Translate 'library/http.server.po'
This needs to reach 100% translated.

The rendered version of this file will be available at https://docs.python.org/es/3.10/library/http.server.html once translated.
Meanwhile, the English version is shown.

Current stats for `library/http.server.po`:

* Fuzzy: 4
* Percent translated: 97.8%
* Entries: 87 / 89
* Untranslated: 2

Please, comment here if you want this file to be assigned to you and an member will assign it to you as soon as possible, so you can start working on it.

Remember to follow the steps in our [Contributing Guide](https://python-docs-es.readthedocs.io/page/CONTRIBUTING.html).


Discussion:

Resolving patch:
diff --git a/scripts/translate.py b/scripts/translate.py
--- a/scripts/translate.py
+++ b/scripts/translate.py
@@ -46,8 +46,8 @@
     "``[^`]+``",
     "`[^`]+`__",
     "`[^`]+`_",
-    "\*\*.+\*\*",  # bold text between **
-    "\*.+\*",  # italic text between *
+    "\*\*[^\*]+\*\*",  # bold text between **
+    "\*[^\*]+\*",  # italic text between *
 ]
 
 _exps = [re.compile(e) for e in _patterns]


Test patch: