Skip to content

Omitir directorio .overrides/logo para ln y mejoras #1840

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Oct 26, 2022
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 23 additions & 8 deletions conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,21 +13,28 @@
#
# $ sphinx-build -b html -d _build/doctrees -D language=es . _build/html

import sys, os, time
import sys
import os
import time
sys.path.append(os.path.abspath('cpython/Doc/tools/extensions'))
sys.path.append(os.path.abspath('cpython/Doc/includes'))

# Import all the Sphinx settings from cpython
# This import will trigger warnings on the 'Include/patchlevel.h'
# not being found, because it execute the content of the whole file,
# and there there is a local call to 'get_header_version' like the one
# we have in a few lines.
sys.path.insert(0, os.path.abspath('cpython/Doc'))
from conf import *

# Call patchlevel with the proper path to get the version from
# instead of hardcoding it
import patchlevel
version, release = patchlevel.get_header_version_info(os.path.abspath('cpython/Doc'))
from patchlevel import get_header_version_info
version, release = get_header_version_info(os.path.abspath('cpython/Doc'))

project = 'Python en Español'
copyright = '2001-%s, Python Software Foundation' % time.strftime('%Y')
year = time.strftime("%Y")
copyright = f'2001-{year}, Python Software Foundation'

html_theme_path = ['cpython/Doc/tools']
templates_path = ['cpython/Doc/tools/templates']
Expand Down Expand Up @@ -61,14 +68,18 @@
extensions = _extensions


if not os.environ.get('SPHINX_GETTEXT') == 'True':
if os.environ.get('SPHINX_GETTEXT') is None:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Me imagino que está explícito, por si tiene un valor, cual sea.

Suggested change
if os.environ.get('SPHINX_GETTEXT') is None:
if not os.environ.get('SPHINX_GETTEXT'):

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Era para hacerlo explícito la verdad, a pesar que tenemos cosas tan raras como:

>>> not None
True

era para dejar en claro que quería mirar si get retornaba None, explicando así que la variable no está definida.

El problema con usar not os.environ.get(...) es que si la variable está definida a nada, entrará, y la idea es que si alguien ya la definió por alguna razón, que no entre. Por ejemplo:

>>> import os
>>> r = os.environ.get("LALA")
>>> r
>>> r is None
True
>>> 

% export LALA=""
% export LELE=0

% python
>>> import os
>>> os.environ.get("LALA")
''
>>> os.environ.get("LELE")
'0'
>>> not os.environ.get("LALA")
True
>>> not os.environ.get("LELE")
False
>>> not os.environ.get("ALGO_QUE_NO_EXISTE")
True

pero para términos de este script, dudo que en algún momento alguien defina la variable a algo más :P pero es la costumbre de estar preparado para todo jaja

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Está bien chistoso porque justo el 0 arroja un False jajaja.
Igual pues, con que te regrese un '' o no esté (None) daría True, pero sí, igual y un poco exagerado, el is None está bastante explícito, bueno saberlo la verdad.

# Override all the files from ``.overrides`` directory
from pathlib import Path
overrides_paths = Path('.overrides')

for path in overrides_paths.glob('**/*.*'):
if path.name == 'README.rst' and path.parent == '.overrides':
continue
# Skip the files in the .overrides/logo directory
# to avoid ln issues.
if str(path.parent).endswith("logo"):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Creen que valga la pena colocar este if y el anterior como filtros, y sacar la acción del ln -nfs a una función separada o es demasiado?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

como estaban motivadas por cosas distintas, preferí dejarlo separado, mal que mal, lo del logo es bastante nuevo.
Pensé en dejarlo ahí mismo en el if anterior pero después nos quedaba una condición muy fea la verdad.

No sé si ganemos muchos con el tema de la función, total el archivo conf.py tiene como objetivo ser un archivo de configuración y si miras no hay funciones para nada aparte de setup que es la única función que nos importa ahí.

continue
destroot = str(path.parent).replace('.overrides', '').lstrip('/')
outputdir = Path('cpython/Doc') / destroot / path.name
os.system(f'ln -nfs `pwd`/{path.parent}/{path.name} {outputdir}')
Expand All @@ -85,6 +96,7 @@
_stdauthor, 'manual'),
]


def setup(app):

def add_contributing_banner(app, doctree):
Expand All @@ -101,10 +113,13 @@ def add_contributing_banner(app, doctree):
return

from docutils import nodes, core
from textwrap import dedent

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>`_. ' \
'Ayuda a acercar Python a más personas de habla hispana.'
message = dedent(f"""\
¡Ayúdanos a traducir la documentación oficial de Python al Español!
Puedes encontrar más información en `Como contribuir </es/{version}/CONTRIBUTING.html>`_.
Ayuda a acercar Python a más personas de habla hispana.
""")

paragraph = core.publish_doctree(message)[0]
banner = nodes.note(ids=['contributing-banner'])
Expand Down