From 0fa0fec41d71e038d70a76acb27f3d71baf85b53 Mon Sep 17 00:00:00 2001 From: rockleona Date: Thu, 15 Feb 2024 17:23:31 +0800 Subject: [PATCH 1/4] feat: update summarize progress to table --- .github/workflows/summarize_progress.yml | 3 + .../dist/summarize_progress.md | 1022 +++++++++-------- .scripts/summarize_progress/main.py | 85 +- 3 files changed, 592 insertions(+), 518 deletions(-) diff --git a/.github/workflows/summarize_progress.yml b/.github/workflows/summarize_progress.yml index c2c35a6740..fffd0d5048 100644 --- a/.github/workflows/summarize_progress.yml +++ b/.github/workflows/summarize_progress.yml @@ -1,6 +1,9 @@ name: summarize_progress on: + push: + branches: + - 'feat/summarize-table' schedule: - cron: '30 23 * * 5' diff --git a/.scripts/summarize_progress/dist/summarize_progress.md b/.scripts/summarize_progress/dist/summarize_progress.md index 145d5cbe28..556feffcd5 100644 --- a/.scripts/summarize_progress/dist/summarize_progress.md +++ b/.scripts/summarize_progress/dist/summarize_progress.md @@ -1,498 +1,524 @@ -- // - - about.po-----------------------------✅ - - bugs.po------------------------------✅ - - contents.po--------------------------✅ - - copyright.po-------------------------✅ - - glossary.po--------------------------✅ - - license.po---------------------------✅ - - sphinx.po----------------------------✅ -- c-api/ - - abstract.po--------------------------✅ - - allocation.po------------------------✅ - - apiabiversion.po---------------------✅ - - arg.po-------------------------------Ongoing, 47.59 % - - bool.po------------------------------Ongoing, 90.91 % - - buffer.po----------------------------Ongoing, 14.91 % - - bytearray.po-------------------------✅ - - bytes.po-----------------------------Ongoing, 51.61 % - - call.po------------------------------Ongoing, 98.96 % - - capsule.po---------------------------Ongoing, 6.25 % - - cell.po------------------------------✅ - - code.po------------------------------Ongoing, 19.3 % - - codec.po-----------------------------✅ - - complex.po---------------------------✅ - - concrete.po--------------------------✅ - - contextvars.po-----------------------Ongoing, 6.67 % - - conversion.po------------------------Ongoing, 11.54 % - - coro.po------------------------------✅ - - datetime.po--------------------------Ongoing, 82.69 % - - descriptor.po------------------------✅ - - dict.po------------------------------Ongoing, 22.92 % - - exceptions.po------------------------Ongoing, 59.78 % - - file.po------------------------------✅ - - float.po-----------------------------Ongoing, 8.57 % - - frame.po-----------------------------❌, 💻 xingularity - - function.po--------------------------Ongoing, 67.65 % - - gcsupport.po-------------------------Ongoing, 2.0 % - - gen.po-------------------------------✅ - - import.po----------------------------Ongoing, 21.82 % - - index.po-----------------------------✅ - - init.po------------------------------Ongoing, 25.42 % - - init_config.po-----------------------Ongoing, 12.87 % - - intro.po-----------------------------Ongoing, 98.43 % - - iter.po------------------------------✅ - - iterator.po--------------------------Ongoing, 25.0 % - - list.po------------------------------✅ - - long.po------------------------------Ongoing, 13.85 % - - mapping.po---------------------------Ongoing, 11.11 % - - marshal.po---------------------------❌ - - memory.po----------------------------Ongoing, 25.65 % - - memoryview.po------------------------Ongoing, 27.27 % - - method.po----------------------------✅ - - module.po----------------------------Ongoing, 12.07 % - - none.po------------------------------Ongoing, 57.14 % - - number.po----------------------------Ongoing, 12.5 % - - objbuffer.po-------------------------✅ - - object.po----------------------------Ongoing, 12.0 % - - objimpl.po---------------------------❌ - - perfmaps.po--------------------------❌ - - refcounting.po-----------------------✅ - - reflection.po------------------------Ongoing, 12.5 % - - sequence.po--------------------------Ongoing, 10.0 % - - set.po-------------------------------Ongoing, 17.86 % - - slice.po-----------------------------Ongoing, 9.52 % - - stable.po----------------------------Ongoing, 83.72 % - - structures.po------------------------Ongoing, 30.86 % - - sys.po-------------------------------Ongoing, 10.53 % - - tuple.po-----------------------------Ongoing, 7.5 % - - type.po------------------------------Ongoing, 7.07 % - - typehints.po-------------------------✅ - - typeobj.po---------------------------Ongoing, 42.35 % - - unicode.po---------------------------Ongoing, 13.8 % - - utilities.po-------------------------✅ - - veryhigh.po--------------------------Ongoing, 3.51 % - - weakref.po---------------------------Ongoing, 8.33 % -- distributing/ - - index.po-----------------------------✅ -- extending/ - - building.po--------------------------Ongoing, 22.22 % - - embedding.po-------------------------Ongoing, 4.44 % - - extending.po-------------------------Ongoing, 5.56 % - - index.po-----------------------------✅ - - newtypes.po--------------------------Ongoing, 12.36 % - - newtypes_tutorial.po-----------------Ongoing, 0.82 % - - windows.po---------------------------❌ -- faq/ - - design.po----------------------------✅ - - extending.po-------------------------✅ - - general.po---------------------------✅ - - gui.po-------------------------------✅ - - index.po-----------------------------✅ - - installed.po-------------------------✅ - - library.po---------------------------✅ - - programming.po-----------------------Ongoing, 98.72 % - - windows.po---------------------------✅ -- howto/ - - annotations.po-----------------------✅ - - argparse.po--------------------------Ongoing, 57.61 %, 💻 sweslo17 - - clinic.po----------------------------✅ - - cporting.po--------------------------Ongoing, 20.0 % - - curses.po----------------------------Ongoing, 17.14 % - - descriptor.po------------------------Ongoing, 10.17 % - - enum.po------------------------------❌ - - functional.po------------------------Ongoing, 7.25 % - - index.po-----------------------------✅ - - instrumentation.po-------------------✅ - - ipaddress.po-------------------------Ongoing, 10.42 % - - isolating-extensions.po--------------❌ - - logging-cookbook.po------------------Ongoing, 1.63 % - - logging.po---------------------------Ongoing, 11.06 % - - perf_profiling.po--------------------❌, 💻 mattwang44 - - pyporting.po-------------------------Ongoing, 13.83 % - - regex.po-----------------------------Ongoing, 20.91 % - - sockets.po---------------------------Ongoing, 98.28 % - - sorting.po---------------------------✅ - - unicode.po---------------------------Ongoing, 3.31 % - - urllib2.po---------------------------Ongoing, 16.67 % -- includes/ - - wasm-notavail.po---------------------❌ -- installing/ - - index.po-----------------------------✅ -- library/ - - 2to3.po------------------------------Ongoing, 32.23 % - - __future__.po------------------------✅ - - __main__.po--------------------------Ongoing, 3.7 % - - _thread.po---------------------------Ongoing, 9.62 % - - abc.po-------------------------------✅ - - aifc.po------------------------------Ongoing, 22.22 % - - allos.po-----------------------------✅ - - archiving.po-------------------------✅ - - argparse.po--------------------------Ongoing, 12.13 % - - array.po-----------------------------✅ - - ast.po-------------------------------Ongoing, 2.98 %, 💻 mattwang44 - - asyncio-api-index.po-----------------Ongoing, 97.0 % - - asyncio-dev.po-----------------------✅ - - asyncio-eventloop.po-----------------Ongoing, 6.6 %, 💻 xchux - - asyncio-exceptions.po----------------✅ - - asyncio-extending.po-----------------❌ - - asyncio-future.po--------------------✅ - - asyncio-llapi-index.po---------------✅ - - asyncio-platforms.po-----------------✅ - - asyncio-policy.po--------------------Ongoing, 1.49 % - - asyncio-protocol.po------------------Ongoing, 3.26 % - - asyncio-queue.po---------------------✅ - - asyncio-runner.po--------------------Ongoing, 17.14 % - - asyncio-stream.po--------------------Ongoing, 89.66 % - - asyncio-subprocess.po----------------Ongoing, 9.09 % - - asyncio-sync.po----------------------Ongoing, 83.15 % - - asyncio-task.po----------------------Ongoing, 7.17 % - - asyncio.po---------------------------✅ - - atexit.po----------------------------Ongoing, 10.53 % - - audioop.po---------------------------Ongoing, 12.0 % - - audit_events.po----------------------✅ - - base64.po----------------------------Ongoing, 15.0 %, 💻 Yang92047111 - - bdb.po-------------------------------Ongoing, 1.83 % - - binary.po----------------------------✅ - - binascii.po--------------------------Ongoing, 25.0 % - - bisect.po----------------------------✅ - - builtins.po--------------------------✅ - - bz2.po-------------------------------Ongoing, 4.17 % - - calendar.po--------------------------Ongoing, 74.74 % - - cgi.po-------------------------------Ongoing, 17.43 % - - cgitb.po-----------------------------Ongoing, 50.0 % - - chunk.po-----------------------------Ongoing, 43.59 % - - cmath.po-----------------------------Ongoing, 5.36 % - - cmd.po-------------------------------Ongoing, 10.87 % - - cmdline.po---------------------------✅ - - code.po------------------------------Ongoing, 6.45 % - - codecs.po----------------------------Ongoing, 49.53 % - - codeop.po----------------------------Ongoing, 7.14 % - - collections.abc.po-------------------Ongoing, 54.47 % - - collections.po-----------------------✅ - - colorsys.po--------------------------✅ - - compileall.po------------------------Ongoing, 13.56 % - - concurrency.po-----------------------✅ - - concurrent.futures.po----------------Ongoing, 97.89 % - - concurrent.po------------------------✅ - - configparser.po----------------------Ongoing, 9.34 % - - constants.po-------------------------✅ - - contextlib.po------------------------Ongoing, 5.34 % - - contextvars.po-----------------------Ongoing, 4.35 % - - copy.po------------------------------✅ - - copyreg.po---------------------------Ongoing, 41.67 % - - crypt.po-----------------------------Ongoing, 34.29 % - - crypto.po----------------------------✅ - - csv.po-------------------------------✅ - - ctypes.po----------------------------Ongoing, 14.35 % - - curses.ascii.po----------------------Ongoing, 7.25 % - - curses.panel.po----------------------Ongoing, 4.35 % - - curses.po----------------------------Ongoing, 11.57 % - - custominterp.po----------------------❌ - - dataclasses.po-----------------------Ongoing, 75.0 % - - datatypes.po-------------------------✅ - - datetime.po--------------------------Ongoing, 29.81 % - - dbm.po-------------------------------Ongoing, 18.18 % - - debug.po-----------------------------✅ - - decimal.po---------------------------Ongoing, 2.37 %, 💻 0gien - - development.po-----------------------Ongoing, 33.33 % - - devmode.po---------------------------Ongoing, 10.2 % - - dialog.po----------------------------Ongoing, 7.02 % - - difflib.po---------------------------Ongoing, 12.69 % - - dis.po-------------------------------Ongoing, 8.54 % - - distribution.po----------------------Ongoing, 50.0 % - - doctest.po---------------------------Ongoing, 6.01 % - - email.charset.po---------------------Ongoing, 13.64 %, 💻 isabellechiu - - email.compat32-message.po------------Ongoing, 2.88 % - - email.contentmanager.po--------------Ongoing, 7.32 % - - email.encoders.po--------------------Ongoing, 13.33 % - - email.errors.po----------------------Ongoing, 4.17 % - - email.examples.po--------------------Ongoing, 8.33 % - - email.generator.po-------------------Ongoing, 7.32 % - - email.header.po----------------------Ongoing, 7.89 % - - email.headerregistry.po--------------Ongoing, 34.95 % - - email.iterators.po-------------------Ongoing, 9.09 % - - email.message.po---------------------Ongoing, 2.91 % - - email.mime.po------------------------Ongoing, 26.32 % - - email.parser.po----------------------Ongoing, 4.26 % - - email.po-----------------------------Ongoing, 24.0 % - - email.policy.po----------------------Ongoing, 8.91 % - - email.utils.po-----------------------Ongoing, 12.9 % - - ensurepip.po-------------------------Ongoing, 97.3 % - - enum.po------------------------------✅ - - errno.po-----------------------------Ongoing, 0.75 % - - exceptions.po------------------------Ongoing, 8.47 % - - faulthandler.po----------------------Ongoing, 2.38 % - - fcntl.po-----------------------------Ongoing, 22.22 % - - filecmp.po---------------------------Ongoing, 2.5 % - - fileformats.po-----------------------Ongoing, 50.0 % - - fileinput.po-------------------------Ongoing, 4.65 % - - filesys.po---------------------------✅ - - fnmatch.po---------------------------Ongoing, 51.43 % - - fractions.po-------------------------Ongoing, 6.67 % - - frameworks.po------------------------Ongoing, 33.33 % - - ftplib.po----------------------------Ongoing, 98.55 % - - functional.po------------------------Ongoing, 66.67 % - - functions.po-------------------------Ongoing, 67.25 %, 💻 StevenHsuYL - - functools.po-------------------------Ongoing, 7.78 % - - gc.po--------------------------------Ongoing, 98.25 % - - getopt.po----------------------------Ongoing, 10.53 % - - getpass.po---------------------------Ongoing, 91.67 % - - gettext.po---------------------------Ongoing, 16.38 % - - glob.po------------------------------✅ - - graphlib.po--------------------------✅ - - grp.po-------------------------------Ongoing, 41.38 % - - gzip.po------------------------------Ongoing, 31.15 % - - hashlib.po---------------------------Ongoing, 18.52 %, 💻 mattwang44 - - heapq.po-----------------------------✅ - - hmac.po------------------------------✅ - - html.entities.po---------------------✅ - - html.parser.po-----------------------✅ - - html.po------------------------------✅ - - http.client.po-----------------------Ongoing, 14.55 % - - http.cookiejar.po--------------------Ongoing, 7.79 % - - http.cookies.po----------------------Ongoing, 26.79 % - - http.po------------------------------Ongoing, 98.35 % - - http.server.po-----------------------Ongoing, 11.43 % - - i18n.po------------------------------Ongoing, 33.33 % - - idle.po------------------------------Ongoing, 6.92 % - - imaplib.po---------------------------Ongoing, 12.5 % - - imghdr.po----------------------------Ongoing, 53.66 % - - importlib.metadata.po----------------Ongoing, 1.59 % - - importlib.po-------------------------Ongoing, 13.44 % - - importlib.resources.abc.po-----------Ongoing, 3.33 % - - importlib.resources.po---------------Ongoing, 5.0 % - - index.po-----------------------------✅ - - inspect.po---------------------------Ongoing, 17.63 % - - internet.po--------------------------✅ - - intro.po-----------------------------Ongoing, 60.0 % - - io.po--------------------------------Ongoing, 25.19 %, 💻 cschan1828 - - ipaddress.po-------------------------Ongoing, 1.35 % - - ipc.po-------------------------------❌ - - itertools.po-------------------------Ongoing, 45.73 % - - json.po------------------------------Ongoing, 25.34 % - - keyword.po---------------------------✅ - - language.po--------------------------❌ - - linecache.po-------------------------Ongoing, 35.71 % - - locale.po----------------------------Ongoing, 18.24 % - - logging.config.po--------------------Ongoing, 7.28 % - - logging.handlers.po------------------Ongoing, 33.46 % - - logging.po---------------------------Ongoing, 20.69 % - - lzma.po------------------------------Ongoing, 11.21 % - - mailbox.po---------------------------Ongoing, 8.87 % - - mailcap.po---------------------------Ongoing, 6.67 % - - markup.po----------------------------❌ - - marshal.po---------------------------✅ - - math.po------------------------------Ongoing, 4.76 % - - mimetypes.po-------------------------Ongoing, 18.0 % - - mm.po--------------------------------✅ - - mmap.po------------------------------Ongoing, 12.5 % - - modulefinder.po----------------------Ongoing, 7.69 % - - modules.po---------------------------Ongoing, 33.33 % - - msilib.po----------------------------Ongoing, 5.15 % - - msvcrt.po----------------------------Ongoing, 10.71 % - - multiprocessing.po-------------------Ongoing, 4.49 % - - multiprocessing.shared_memory.po-----Ongoing, 10.0 %, 💻 mattwang44 - - netdata.po---------------------------✅ - - netrc.po-----------------------------✅ - - nis.po-------------------------------Ongoing, 20.0 % - - nntplib.po---------------------------Ongoing, 13.48 % - - numbers.po---------------------------✅ - - numeric.po---------------------------Ongoing, 33.33 % - - operator.po--------------------------Ongoing, 98.89 % - - optparse.po--------------------------Ongoing, 8.65 % - - os.path.po---------------------------✅ - - os.po--------------------------------Ongoing, 18.2 % - - ossaudiodev.po-----------------------Ongoing, 20.41 % - - pathlib.po---------------------------Ongoing, 48.19 %, 💻 mindihx - - pdb.po-------------------------------Ongoing, 9.92 %, 💻 mattwang44 - - persistence.po-----------------------❌ - - pickle.po----------------------------Ongoing, 13.72 % - - pickletools.po-----------------------Ongoing, 23.53 %, 💻 mattwang44 - - pipes.po-----------------------------Ongoing, 25.0 % - - pkgutil.po---------------------------Ongoing, 10.64 % - - platform.po--------------------------Ongoing, 94.92 % - - plistlib.po--------------------------Ongoing, 11.63 % - - poplib.po----------------------------Ongoing, 20.75 % - - posix.po-----------------------------✅ - - pprint.po----------------------------Ongoing, 21.28 % - - profile.po---------------------------Ongoing, 23.57 % - - pty.po-------------------------------Ongoing, 21.05 % - - pwd.po-------------------------------✅ - - py_compile.po------------------------Ongoing, 26.67 % - - pyclbr.po----------------------------Ongoing, 8.0 % - - pydoc.po-----------------------------Ongoing, 30.43 % - - pyexpat.po---------------------------Ongoing, 5.93 % - - python.po----------------------------❌ - - queue.po-----------------------------✅ - - quopri.po----------------------------✅ - - random.po----------------------------Ongoing, 89.42 % - - re.po--------------------------------Ongoing, 35.07 %, 💻 ascodeasice - - readline.po--------------------------Ongoing, 2.08 % - - reprlib.po---------------------------Ongoing, 12.9 % - - resource.po--------------------------Ongoing, 36.52 % - - rlcompleter.po-----------------------Ongoing, 16.67 % - - runpy.po-----------------------------Ongoing, 7.5 % - - sched.po-----------------------------Ongoing, 20.83 % - - secrets.po---------------------------✅ - - security_warnings.po-----------------✅ - - select.po----------------------------Ongoing, 33.33 % - - selectors.po-------------------------Ongoing, 8.93 % - - shelve.po----------------------------Ongoing, 24.32 % - - shlex.po-----------------------------Ongoing, 5.41 % - - shutil.po----------------------------Ongoing, 15.12 % - - signal.po----------------------------Ongoing, 17.65 % - - site.po------------------------------Ongoing, 31.48 % - - smtplib.po---------------------------Ongoing, 17.7 % - - sndhdr.po----------------------------Ongoing, 67.57 % - - socket.po----------------------------Ongoing, 22.4 %, 💻 weijay0804 - - socketserver.po----------------------Ongoing, 5.75 % - - spwd.po------------------------------Ongoing, 52.17 % - - sqlite3.po---------------------------Ongoing, 15.79 % - - ssl.po-------------------------------Ongoing, 15.16 %, 💻 timmy0123 - - stat.po------------------------------Ongoing, 2.47 % - - statistics.po------------------------Ongoing, 99.48 % - - stdtypes.po--------------------------Ongoing, 33.55 % - - string.po----------------------------Ongoing, 35.35 % - - stringprep.po------------------------Ongoing, 4.0 % - - struct.po----------------------------Ongoing, 45.56 %, 💻 Cliying94 - - subprocess.po------------------------Ongoing, 14.83 % - - sunau.po-----------------------------✅ - - superseded.po------------------------✅ - - symtable.po--------------------------✅ - - sys.monitoring.po--------------------❌, 💻 mattwang44 - - sys.po-------------------------------Ongoing, 28.54 % - - sys_path_init.po---------------------❌ - - sysconfig.po-------------------------Ongoing, 40.44 % - - syslog.po----------------------------Ongoing, 29.03 % - - tabnanny.po--------------------------✅ - - tarfile.po---------------------------Ongoing, 11.49 % - - telnetlib.po-------------------------Ongoing, 17.65 % - - tempfile.po--------------------------✅ - - termios.po---------------------------Ongoing, 25.0 % - - test.po------------------------------Ongoing, 5.02 % - - text.po------------------------------✅ - - textwrap.po--------------------------Ongoing, 8.33 % - - threading.po-------------------------Ongoing, 4.07 %, 💻 SivanYeh - - time.po------------------------------Ongoing, 32.55 % - - timeit.po----------------------------✅ - - tk.po--------------------------------✅ - - tkinter.colorchooser.po--------------Ongoing, 33.33 % - - tkinter.dnd.po-----------------------Ongoing, 10.0 % - - tkinter.font.po----------------------Ongoing, 8.57 % - - tkinter.messagebox.po----------------Ongoing, 21.43 % - - tkinter.po---------------------------Ongoing, 24.35 % - - tkinter.scrolledtext.po--------------Ongoing, 14.29 % - - tkinter.tix.po-----------------------Ongoing, 11.11 % - - tkinter.ttk.po-----------------------Ongoing, 3.18 % - - token.po-----------------------------Ongoing, 1.52 % - - tokenize.po--------------------------Ongoing, 11.63 % - - tomllib.po---------------------------✅ - - trace.po-----------------------------Ongoing, 5.13 % - - traceback.po-------------------------Ongoing, 12.22 % - - tracemalloc.po-----------------------Ongoing, 15.97 % - - tty.po-------------------------------Ongoing, 72.73 % - - turtle.po----------------------------Ongoing, 21.25 % - - types.po-----------------------------Ongoing, 5.77 % - - typing.po----------------------------Ongoing, 30.0 %, 💻 rockleona - - undoc.po-----------------------------Ongoing, 22.22 % - - unicodedata.po-----------------------Ongoing, 21.88 % - - unittest.mock-examples.po------------❌, 💻 ken71301 - - unittest.mock.po---------------------Ongoing, 35.66 %, 💻 ken71301 - - unittest.po--------------------------Ongoing, 27.78 % - - unix.po------------------------------✅ - - urllib.error.po----------------------✅ - - urllib.parse.po----------------------Ongoing, 18.12 % - - urllib.po----------------------------✅ - - urllib.request.po--------------------Ongoing, 29.43 % - - urllib.robotparser.po----------------✅ - - uu.po--------------------------------Ongoing, 46.67 % - - uuid.po------------------------------✅, 💻 933yee - - venv.po------------------------------Ongoing, 60.18 % - - warnings.po--------------------------Ongoing, 20.0 % - - wave.po------------------------------Ongoing, 9.43 % - - weakref.po---------------------------Ongoing, 4.71 % - - webbrowser.po------------------------Ongoing, 55.84 %, 💻 griiid - - windows.po---------------------------✅ - - winreg.po----------------------------Ongoing, 14.45 % - - winsound.po--------------------------Ongoing, 29.41 % - - wsgiref.po---------------------------✅ - - xdrlib.po----------------------------Ongoing, 10.71 % - - xml.dom.minidom.po-------------------Ongoing, 13.73 % - - xml.dom.po---------------------------Ongoing, 29.91 % - - xml.dom.pulldom.po-------------------Ongoing, 40.74 % - - xml.etree.elementtree.po-------------Ongoing, 16.02 % - - xml.po-------------------------------✅ - - xml.sax.handler.po-------------------Ongoing, 5.83 % - - xml.sax.po---------------------------Ongoing, 18.75 % - - xml.sax.reader.po--------------------Ongoing, 8.0 % - - xml.sax.utils.po---------------------Ongoing, 14.29 % - - xmlrpc.client.po---------------------Ongoing, 23.0 % - - xmlrpc.po----------------------------✅ - - xmlrpc.server.po---------------------Ongoing, 18.37 %, 💻 paultsaich - - zipapp.po----------------------------Ongoing, 8.82 % - - zipfile.po---------------------------Ongoing, 9.9 % - - zipimport.po-------------------------Ongoing, 8.33 % - - zlib.po------------------------------✅ - - zoneinfo.po--------------------------Ongoing, 6.67 % -- reference/ - - compound_stmts.po--------------------Ongoing, 26.19 % - - datamodel.po-------------------------Ongoing, 34.96 % - - executionmodel.po--------------------Ongoing, 31.63 % - - expressions.po-----------------------Ongoing, 36.54 % - - grammar.po---------------------------Ongoing, 33.33 % - - import.po----------------------------Ongoing, 13.68 % - - index.po-----------------------------✅ - - introduction.po----------------------Ongoing, 35.48 % - - lexical_analysis.po------------------Ongoing, 46.73 % - - simple_stmts.po----------------------Ongoing, 37.18 % - - toplevel_components.po---------------✅ -- tutorial/ - - appendix.po--------------------------✅ - - appetite.po--------------------------✅ - - classes.po---------------------------✅ - - controlflow.po-----------------------✅ - - datastructures.po--------------------✅ - - errors.po----------------------------✅ - - floatingpoint.po---------------------✅ - - index.po-----------------------------✅ - - inputoutput.po-----------------------✅ - - interactive.po-----------------------✅ - - interpreter.po-----------------------✅ - - introduction.po----------------------✅, 💻 avatar220928 - - modules.po---------------------------✅ - - stdlib.po----------------------------✅ - - stdlib2.po---------------------------✅ - - venv.po------------------------------✅ - - whatnow.po---------------------------✅ -- using/ - - cmdline.po---------------------------Ongoing, 18.35 % - - configure.po-------------------------Ongoing, 35.11 % - - editors.po---------------------------Ongoing, 33.33 % - - index.po-----------------------------✅ - - mac.po-------------------------------✅ - - unix.po------------------------------✅ - - windows.po---------------------------Ongoing, 26.48 % -- whatsnew/ - - 2.0.po-------------------------------Ongoing, 6.59 % - - 2.1.po-------------------------------Ongoing, 12.23 % - - 2.2.po-------------------------------Ongoing, 2.62 % - - 2.3.po-------------------------------Ongoing, 4.91 % - - 2.4.po-------------------------------Ongoing, 6.34 % - - 2.5.po-------------------------------Ongoing, 12.63 % - - 2.6.po-------------------------------Ongoing, 8.32 % - - 2.7.po-------------------------------Ongoing, 4.64 % - - 3.0.po-------------------------------Ongoing, 17.56 % - - 3.1.po-------------------------------Ongoing, 35.71 % - - 3.10.po------------------------------✅ - - 3.11.po------------------------------Ongoing, 94.79 % - - 3.12.po------------------------------Ongoing, 43.82 %, 💻 mattwang44 - - 3.2.po-------------------------------Ongoing, 24.32 % - - 3.3.po-------------------------------Ongoing, 47.13 % - - 3.4.po-------------------------------Ongoing, 20.35 % - - 3.5.po-------------------------------Ongoing, 23.29 % - - 3.6.po-------------------------------Ongoing, 18.38 % - - 3.7.po-------------------------------Ongoing, 19.82 % - - 3.8.po-------------------------------Ongoing, 29.58 % - - 3.9.po-------------------------------Ongoing, 24.52 % - - changelog.po-------------------------✅ - - index.po-----------------------------✅ +## / +|Filename |Progress |Issue |Assignee | +|-------------------------------:|:---------|:---------------------------------------------------------------|:-----------| +| about.po|✅ | | | +| bugs.po|✅ | | | +| contents.po|✅ | | | +| copyright.po|✅ | | | +| glossary.po|✅ | | | +| license.po|93.94 % | | | +| sphinx.po|✅ | | | +## c-api +|Filename |Progress |Issue |Assignee | +|-------------------------------:|:---------|:---------------------------------------------------------------|:-----------| +| abstract.po|✅ | | | +| allocation.po|✅ | | | +| apiabiversion.po|✅ | | | +| arg.po|47.59 % | | | +| bool.po|90.91 % | | | +| buffer.po|14.91 % | | | +| bytearray.po|✅ | | | +| bytes.po|51.61 % | | | +| call.po|98.96 % | | | +| capsule.po|6.25 % | | | +| cell.po|✅ | | | +| code.po|19.3 % | | | +| codec.po|✅ | | | +| complex.po|✅ | | | +| concrete.po|✅ | | | +| contextvars.po|6.67 % | | | +| conversion.po|84.85 % | | | +| coro.po|✅ | | | +| datetime.po|82.69 % | | | +| descriptor.po|✅ | | | +| dict.po|22.92 % | | | +| exceptions.po|59.78 % | | | +| file.po|94.12 % | | | +| float.po|8.57 % | | | +| frame.po|41.67 % |[715](https://github.com/python/python-docs-zh-tw/issues/715) |xingularity | +| function.po|67.65 % | | | +| gcsupport.po|2.0 % | | | +| gen.po|✅ | | | +| import.po|21.82 % | | | +| index.po|✅ | | | +| init.po|26.13 % | | | +| init_config.po|12.87 % | | | +| intro.po|98.43 % | | | +| iter.po|✅ | | | +| iterator.po|37.5 % | | | +| list.po|✅ | | | +| long.po|13.85 % | | | +| mapping.po|11.11 % | | | +| marshal.po|❌ | | | +| memory.po|25.65 % | | | +| memoryview.po|21.43 % | | | +| method.po|✅ | | | +| module.po|12.07 % | | | +| none.po|57.14 % | | | +| number.po|12.5 % | | | +| objbuffer.po|✅ | | | +| object.po|11.84 % | | | +| objimpl.po|❌ | | | +| perfmaps.po|❌ | | | +| refcounting.po|✅ | | | +| reflection.po|12.5 % | | | +| sequence.po|10.0 % | | | +| set.po|21.43 % | | | +| slice.po|9.52 % | | | +| stable.po|✅ | | | +| structures.po|38.46 % | | | +| sys.po|10.53 % | | | +| tuple.po|7.5 % | | | +| type.po|7.07 % | | | +| typehints.po|✅ | | | +| typeobj.po|42.35 % | | | +| unicode.po|14.48 % | | | +| utilities.po|✅ | | | +| veryhigh.po|3.51 % | | | +| weakref.po|8.33 % | | | +## distributing +|Filename |Progress |Issue |Assignee | +|-------------------------------:|:---------|:---------------------------------------------------------------|:-----------| +| index.po|✅ | | | +## extending +|Filename |Progress |Issue |Assignee | +|-------------------------------:|:---------|:---------------------------------------------------------------|:-----------| +| building.po|22.22 % | | | +| embedding.po|4.44 % | | | +| extending.po|5.56 % | | | +| index.po|✅ | | | +| newtypes.po|12.36 % | | | +| newtypes_tutorial.po|0.82 % | | | +| windows.po|❌ | | | +## faq +|Filename |Progress |Issue |Assignee | +|-------------------------------:|:---------|:---------------------------------------------------------------|:-----------| +| design.po|✅ | | | +| extending.po|✅ | | | +| general.po|✅ | | | +| gui.po|✅ | | | +| index.po|✅ | | | +| installed.po|✅ | | | +| library.po|✅ | | | +| programming.po|98.98 % | | | +| windows.po|✅ | | | +## howto +|Filename |Progress |Issue |Assignee | +|-------------------------------:|:---------|:---------------------------------------------------------------|:-----------| +| annotations.po|✅ | | | +| argparse.po|✅ | | | +| clinic.po|✅ | | | +| cporting.po|20.0 % | | | +| curses.po|17.14 % | | | +| descriptor.po|12.43 % |[450](https://github.com/python/python-docs-zh-tw/issues/450) | | +| enum.po|0.88 % | | | +| functional.po|7.25 % | | | +| index.po|✅ | | | +| instrumentation.po|✅ | | | +| ipaddress.po|10.42 % | | | +| isolating-extensions.po|❌ | | | +| logging-cookbook.po|5.88 % | | | +| logging.po|11.11 % |[449](https://github.com/python/python-docs-zh-tw/issues/449) | | +| perf_profiling.po|✅ | | | +| pyporting.po|13.83 % | | | +| regex.po|20.91 % |[451](https://github.com/python/python-docs-zh-tw/issues/451) | | +| sockets.po|98.28 % | | | +| sorting.po|✅ | | | +| unicode.po|3.31 % | | | +| urllib2.po|16.67 % | | | +## includes +|Filename |Progress |Issue |Assignee | +|-------------------------------:|:---------|:---------------------------------------------------------------|:-----------| +| wasm-notavail.po|❌ | | | +## installing +|Filename |Progress |Issue |Assignee | +|-------------------------------:|:---------|:---------------------------------------------------------------|:-----------| +| index.po|✅ | | | +## library +|Filename |Progress |Issue |Assignee | +|-------------------------------:|:---------|:---------------------------------------------------------------|:-----------| +| 2to3.po|32.23 % | | | +| __future__.po|✅ | | | +| __main__.po|✅ | | | +| _thread.po|9.62 % |[805](https://github.com/python/python-docs-zh-tw/issues/805) | | +| abc.po|✅ | | | +| aifc.po|22.22 % | | | +| allos.po|✅ | | | +| archiving.po|✅ | | | +| argparse.po|12.13 % |[126](https://github.com/python/python-docs-zh-tw/issues/126) | | +| array.po|✅ | | | +| ast.po|✅ | | | +| asyncio-api-index.po|97.0 % | | | +| asyncio-dev.po|✅ | | | +| asyncio-eventloop.po|6.6 % |[578](https://github.com/python/python-docs-zh-tw/issues/578) |xchux | +| asyncio-exceptions.po|✅ | | | +| asyncio-extending.po|❌ | | | +| asyncio-future.po|✅ | | | +| asyncio-llapi-index.po|✅ | | | +| asyncio-platforms.po|✅ | | | +| asyncio-policy.po|1.49 % | | | +| asyncio-protocol.po|3.26 % | | | +| asyncio-queue.po|✅ | | | +| asyncio-runner.po|34.29 % |[683](https://github.com/python/python-docs-zh-tw/issues/683) | | +| asyncio-stream.po|89.77 % | | | +| asyncio-subprocess.po|9.09 % | | | +| asyncio-sync.po|83.15 % | | | +| asyncio-task.po|5.91 % | | | +| asyncio.po|✅ | | | +| atexit.po|10.53 % | | | +| audioop.po|12.0 % | | | +| audit_events.po|✅ | | | +| base64.po|15.0 % |[615](https://github.com/python/python-docs-zh-tw/issues/615) |Yang92047111| +| bdb.po|10.09 % | | | +| binary.po|✅ | | | +| binascii.po|25.0 % | | | +| bisect.po|✅ | | | +| builtins.po|✅ | | | +| bz2.po|4.17 % | | | +| calendar.po|✅ | | | +| cgi.po|17.43 % | | | +| cgitb.po|50.0 % | | | +| chunk.po|43.59 % | | | +| cmath.po|5.36 % |[485](https://github.com/python/python-docs-zh-tw/issues/485) | | +| cmd.po|10.87 % | | | +| cmdline.po|✅ | | | +| code.po|6.45 % | | | +| codecs.po|49.53 % | | | +| codeop.po|7.14 % | | | +| collections.abc.po|54.47 % | | | +| collections.po|✅ | | | +| colorsys.po|✅ | | | +| compileall.po|13.56 % | | | +| concurrency.po|✅ | | | +| concurrent.futures.po|✅ | | | +| concurrent.po|✅ | | | +| configparser.po|10.44 % | | | +| constants.po|✅ | | | +| contextlib.po|5.3 % | | | +| contextvars.po|4.35 % | | | +| copy.po|✅ | | | +| copyreg.po|✅ | | | +| crypt.po|34.29 % | | | +| crypto.po|✅ | | | +| csv.po|✅ | | | +| ctypes.po|14.35 % | | | +| curses.ascii.po|7.25 % | | | +| curses.panel.po|4.35 % | | | +| curses.po|11.57 % | | | +| custominterp.po|❌ | | | +| dataclasses.po|75.0 % |[103](https://github.com/python/python-docs-zh-tw/issues/103) | | +| datatypes.po|✅ | | | +| datetime.po|32.94 % |[361](https://github.com/python/python-docs-zh-tw/issues/361) | | +| dbm.po|37.93 % | | | +| debug.po|✅ | | | +| decimal.po|2.37 % |[690](https://github.com/python/python-docs-zh-tw/issues/690) |0gien | +| development.po|33.33 % | | | +| devmode.po|10.2 % | | | +| dialog.po|7.02 % | | | +| difflib.po|12.69 % | | | +| dis.po|8.51 % | | | +| distribution.po|50.0 % | | | +| doctest.po|5.97 % | | | +| email.charset.po|13.64 % |[575](https://github.com/python/python-docs-zh-tw/issues/575) |isabellechiu| +| email.compat32-message.po|2.88 % | | | +| email.contentmanager.po|7.32 % | | | +| email.encoders.po|13.33 % | | | +| email.errors.po|3.85 % | | | +| email.examples.po|8.33 % | | | +| email.generator.po|7.32 % | | | +| email.header.po|7.89 % | | | +| email.headerregistry.po|34.95 % | | | +| email.iterators.po|9.09 % | | | +| email.message.po|2.91 % | | | +| email.mime.po|26.32 % | | | +| email.parser.po|4.26 % | | | +| email.po|24.0 % | | | +| email.policy.po|8.0 % | | | +| email.utils.po|12.9 % | | | +| ensurepip.po|97.3 % | | | +| enum.po|✅ | | | +| errno.po|0.75 % | | | +| exceptions.po|9.24 % |[806](https://github.com/python/python-docs-zh-tw/issues/806) |mindihx | +| faulthandler.po|2.38 % | | | +| fcntl.po|22.22 % | | | +| filecmp.po|2.5 % | | | +| fileformats.po|50.0 % | | | +| fileinput.po|4.65 % | | | +| filesys.po|✅ | | | +| fnmatch.po|51.43 % | | | +| fractions.po|6.67 % | | | +| frameworks.po|33.33 % | | | +| ftplib.po|96.88 % | | | +| functional.po|66.67 % | | | +| functions.po|66.81 % |[109](https://github.com/python/python-docs-zh-tw/issues/109) |StevenHsuYL | +| functools.po|7.78 % |[773](https://github.com/python/python-docs-zh-tw/issues/773) | | +| gc.po|98.25 % | | | +| getopt.po|10.53 % | | | +| getpass.po|91.67 % | | | +| gettext.po|16.38 % | | | +| glob.po|✅ | | | +| graphlib.po|✅ | | | +| grp.po|41.38 % | | | +| gzip.po|31.15 % | | | +| hashlib.po|19.14 % |[275](https://github.com/python/python-docs-zh-tw/issues/275) |mattwang44 | +| heapq.po|✅ | | | +| hmac.po|✅ | | | +| html.entities.po|✅ | | | +| html.parser.po|✅ | | | +| html.po|✅ | | | +| http.client.po|14.55 % | | | +| http.cookiejar.po|7.79 % | | | +| http.cookies.po|12.77 % | | | +| http.po|98.35 % | | | +| http.server.po|17.14 % | | | +| i18n.po|33.33 % | | | +| idle.po|7.17 % | | | +| imaplib.po|12.5 % | | | +| imghdr.po|53.66 % | | | +| importlib.metadata.po|1.59 % | | | +| importlib.po|14.1 % | | | +| importlib.resources.abc.po|3.33 % | | | +| importlib.resources.po|5.0 % | | | +| index.po|✅ | | | +| inspect.po|22.1 % | | | +| internet.po|✅ | | | +| intro.po|60.0 % | | | +| io.po|49.24 % |[477](https://github.com/python/python-docs-zh-tw/issues/477) |cschan1828 | +| ipaddress.po|1.35 % | | | +| ipc.po|❌ | | | +| itertools.po|46.95 % | | | +| json.po|39.04 % | | | +| keyword.po|✅ | | | +| language.po|❌ | | | +| linecache.po|35.71 % | | | +| locale.po|18.92 % | | | +| logging.config.po|7.28 % | | | +| logging.handlers.po|33.46 % | | | +| logging.po|20.51 % | | | +| lzma.po|11.21 % | | | +| mailbox.po|9.12 % | | | +| mailcap.po|6.67 % | | | +| markup.po|❌ | | | +| marshal.po|✅ | | | +| math.po|16.67 % |[783](https://github.com/python/python-docs-zh-tw/issues/783) | | +| mimetypes.po|18.0 % | | | +| mm.po|✅ | | | +| mmap.po|12.5 % |[194](https://github.com/python/python-docs-zh-tw/issues/194) | | +| modulefinder.po|7.69 % | | | +| modules.po|33.33 % | | | +| msilib.po|5.15 % | | | +| msvcrt.po|10.71 % | | | +| multiprocessing.po|4.49 % | | | +|multiprocessing.shared_memory.po|✅ | | | +| netdata.po|✅ | | | +| netrc.po|✅ | | | +| nis.po|20.0 % | | | +| nntplib.po|13.48 % | | | +| numbers.po|✅ | | | +| numeric.po|33.33 % | | | +| operator.po|98.89 % | | | +| optparse.po|8.65 % | | | +| os.path.po|✅ | | | +| os.po|19.34 % |[651](https://github.com/python/python-docs-zh-tw/issues/651) | | +| ossaudiodev.po|20.41 % | | | +| pathlib.po|74.31 % |[665](https://github.com/python/python-docs-zh-tw/issues/665) |mindihx | +| pdb.po|9.92 % |[153](https://github.com/python/python-docs-zh-tw/issues/153) |mattwang44 | +| persistence.po|❌ | | | +| pickle.po|14.16 % | | | +| pickletools.po|✅ | | | +| pipes.po|25.0 % | | | +| pkgutil.po|10.64 % | | | +| platform.po|✅ | | | +| plistlib.po|11.63 % | | | +| poplib.po|20.75 % | | | +| posix.po|✅ | | | +| pprint.po|21.28 % | | | +| profile.po|23.57 % | | | +| pty.po|20.0 % | | | +| pwd.po|✅ | | | +| py_compile.po|26.67 % | | | +| pyclbr.po|7.69 % | | | +| pydoc.po|30.43 % | | | +| pyexpat.po|5.93 % | | | +| python.po|❌ | | | +| queue.po|✅ | | | +| quopri.po|✅ | | | +| random.po|✅ | | | +| re.po|32.99 % |[631](https://github.com/python/python-docs-zh-tw/issues/631) |ascodeasice | +| readline.po|2.08 % | | | +| reprlib.po|12.9 % | | | +| resource.po|36.52 % | | | +| rlcompleter.po|16.67 % | | | +| runpy.po|7.5 % | | | +| sched.po|20.83 % |[225](https://github.com/python/python-docs-zh-tw/issues/225) | | +| secrets.po|✅ | | | +| security_warnings.po|✅ | | | +| select.po|33.33 % | | | +| selectors.po|8.93 % | | | +| shelve.po|23.68 % | | | +| shlex.po|5.41 % | | | +| shutil.po|15.52 % | | | +| signal.po|18.98 % | | | +| site.po|31.48 % | | | +| smtplib.po|17.7 % | | | +| sndhdr.po|67.57 % | | | +| socket.po|22.4 % |[611](https://github.com/python/python-docs-zh-tw/issues/611) |weijay0804 | +| socketserver.po|5.75 % | | | +| spwd.po|52.17 % | | | +| sqlite3.po|16.03 % |[346](https://github.com/python/python-docs-zh-tw/issues/346) | | +| ssl.po|41.07 % |[654](https://github.com/python/python-docs-zh-tw/issues/654) |timmy0123 | +| stat.po|2.47 % | | | +| statistics.po|✅ | | | +| stdtypes.po|33.55 % |[159](https://github.com/python/python-docs-zh-tw/issues/159) | | +| string.po|65.15 % |[737](https://github.com/python/python-docs-zh-tw/issues/737) | | +| stringprep.po|4.0 % | | | +| struct.po|45.56 % |[704](https://github.com/python/python-docs-zh-tw/issues/704) |Cliying94 | +| subprocess.po|15.86 % | | | +| sunau.po|✅ | | | +| superseded.po|✅ | | | +| symtable.po|✅ | | | +| sys.monitoring.po|23.08 % |[663](https://github.com/python/python-docs-zh-tw/issues/663) |mattwang44 | +| sys.po|28.64 % |[33](https://github.com/python/python-docs-zh-tw/issues/33) | | +| sys_path_init.po|❌ | | | +| sysconfig.po|40.44 % | | | +| syslog.po|29.03 % | | | +| tabnanny.po|✅ | | | +| tarfile.po|11.18 % | | | +| telnetlib.po|17.65 % | | | +| tempfile.po|✅ | | | +| termios.po|25.0 % | | | +| test.po|26.76 % | | | +| text.po|✅ | | | +| textwrap.po|8.33 % | | | +| threading.po|4.07 % |[640](https://github.com/python/python-docs-zh-tw/issues/640) |SivanYeh | +| time.po|32.55 % | | | +| timeit.po|✅ | | | +| tk.po|✅ | | | +| tkinter.colorchooser.po|33.33 % | | | +| tkinter.dnd.po|10.0 % | | | +| tkinter.font.po|8.57 % |[812](https://github.com/python/python-docs-zh-tw/issues/812) |rockleona | +| tkinter.messagebox.po|21.43 % | | | +| tkinter.po|24.35 % | | | +| tkinter.scrolledtext.po|14.29 % | | | +| tkinter.tix.po|11.11 % | | | +| tkinter.ttk.po|22.44 % | | | +| token.po|1.52 % | | | +| tokenize.po|11.63 % | | | +| tomllib.po|✅ | | | +| trace.po|5.13 % | | | +| traceback.po|16.84 % | | | +| tracemalloc.po|15.97 % | | | +| tty.po|64.71 % | | | +| turtle.po|22.82 % | | | +| types.po|5.77 % | | | +| typing.po|30.16 % |[190](https://github.com/python/python-docs-zh-tw/issues/190) |rockleona | +| undoc.po|22.22 % | | | +| unicodedata.po|21.88 % | | | +| unittest.mock-examples.po|48.77 % |[693](https://github.com/python/python-docs-zh-tw/issues/693) |ken71301 | +| unittest.mock.po|65.68 % |[565](https://github.com/python/python-docs-zh-tw/issues/565) |ken71301 | +| unittest.po|27.78 % |[273](https://github.com/python/python-docs-zh-tw/issues/273) | | +| unix.po|✅ | | | +| urllib.error.po|✅ | | | +| urllib.parse.po|18.75 % | | | +| urllib.po|✅ | | | +| urllib.request.po|29.33 % |[146](https://github.com/python/python-docs-zh-tw/issues/146) | | +| urllib.robotparser.po|✅ | | | +| uu.po|46.67 % | | | +| uuid.po|✅ | | | +| venv.po|60.18 % | | | +| warnings.po|20.0 % | | | +| wave.po|✅ | | | +| weakref.po|4.71 % | | | +| webbrowser.po|55.84 % |[552](https://github.com/python/python-docs-zh-tw/issues/552) |griiid | +| windows.po|✅ | | | +| winreg.po|14.45 % | | | +| winsound.po|29.41 % | | | +| wsgiref.po|✅ | | | +| xdrlib.po|10.71 % | | | +| xml.dom.minidom.po|13.73 % | | | +| xml.dom.po|29.91 % | | | +| xml.dom.pulldom.po|40.74 % | | | +| xml.etree.elementtree.po|17.32 % | | | +| xml.po|✅ | | | +| xml.sax.handler.po|5.83 % | | | +| xml.sax.po|18.75 % | | | +| xml.sax.reader.po|8.0 % | | | +| xml.sax.utils.po|14.29 % | | | +| xmlrpc.client.po|23.0 % | | | +| xmlrpc.po|✅ | | | +| xmlrpc.server.po|18.37 % |[429](https://github.com/python/python-docs-zh-tw/issues/429) |paultsaich | +| zipapp.po|10.29 % | | | +| zipfile.po|10.36 % | | | +| zipimport.po|8.33 % | | | +| zlib.po|✅ | | | +| zoneinfo.po|6.67 % | | | +## reference +|Filename |Progress |Issue |Assignee | +|-------------------------------:|:---------|:---------------------------------------------------------------|:-----------| +| compound_stmts.po|26.07 % | | | +| datamodel.po|34.04 % | | | +| executionmodel.po|31.63 % | | | +| expressions.po|36.45 % | | | +| grammar.po|33.33 % | | | +| import.po|13.68 % | | | +| index.po|✅ | | | +| introduction.po|35.48 % | | | +| lexical_analysis.po|47.39 % | | | +| simple_stmts.po|37.18 % | | | +| toplevel_components.po|✅ | | | +## tutorial +|Filename |Progress |Issue |Assignee | +|-------------------------------:|:---------|:---------------------------------------------------------------|:-----------| +| appendix.po|✅ | | | +| appetite.po|✅ | | | +| classes.po|✅ | | | +| controlflow.po|✅ | | | +| datastructures.po|✅ | | | +| errors.po|✅ | | | +| floatingpoint.po|✅ | | | +| index.po|✅ | | | +| inputoutput.po|✅ | | | +| interactive.po|✅ | | | +| interpreter.po|✅ | | | +| introduction.po|✅ |[517](https://github.com/python/python-docs-zh-tw/issues/517) |avatar220928| +| modules.po|✅ | | | +| stdlib.po|✅ | | | +| stdlib2.po|✅ | | | +| venv.po|✅ | | | +| whatnow.po|✅ | | | +## using +|Filename |Progress |Issue |Assignee | +|-------------------------------:|:---------|:---------------------------------------------------------------|:-----------| +| cmdline.po|18.89 % | | | +| configure.po|35.09 % | | | +| editors.po|33.33 % | | | +| index.po|✅ | | | +| mac.po|✅ | | | +| unix.po|✅ | | | +| windows.po|26.48 % | | | +## whatsnew +|Filename |Progress |Issue |Assignee | +|-------------------------------:|:---------|:---------------------------------------------------------------|:-----------| +| 2.0.po|6.59 % | | | +| 2.1.po|12.23 % | | | +| 2.2.po|9.42 % | | | +| 2.3.po|4.91 % | | | +| 2.4.po|6.34 % | | | +| 2.5.po|12.63 % | | | +| 2.6.po|8.32 % | | | +| 2.7.po|4.64 % | | | +| 3.0.po|22.44 % | | | +| 3.1.po|35.71 % | | | +| 3.10.po|✅ | | | +| 3.11.po|98.94 % | | | +| 3.12.po|46.19 % |[488](https://github.com/python/python-docs-zh-tw/issues/488) |mattwang44 | +| 3.2.po|24.32 % | | | +| 3.3.po|47.13 % | | | +| 3.4.po|20.35 % | | | +| 3.5.po|23.29 % | | | +| 3.6.po|18.38 % | | | +| 3.7.po|20.0 % | | | +| 3.8.po|29.58 % | | | +| 3.9.po|24.52 % | | | +| changelog.po|✅ | | | +| index.po|✅ | | | diff --git a/.scripts/summarize_progress/main.py b/.scripts/summarize_progress/main.py index 8b4d86b4e4..13b5d490ed 100644 --- a/.scripts/summarize_progress/main.py +++ b/.scripts/summarize_progress/main.py @@ -1,11 +1,15 @@ import re import polib import glob -import datetime import requests from pathlib import Path +MAX_FILENAME_LEN = 0 +MAX_PROGRESS_LEN = 10 +MAX_ISSUE_LEN = 10 +MAX_ASSIGNEE_LEN = 0 + def entry_check(pofile: polib.POFile) -> str: ''' @@ -23,7 +27,7 @@ def entry_check(pofile: polib.POFile) -> str: lines_all = lines_tranlated + lines_untranlated progress = lines_tranlated / lines_all progress_percentage = round(progress * 100, 2) - result = f"Ongoing, {progress_percentage} %" + result = f"{progress_percentage} %" return result @@ -51,9 +55,11 @@ def get_github_issues() -> list: Steps: 1. Fetch GitHub API and get open issue list - 2. Filter the issue if it have no assignee - 3. Filter the issue if it have no "Translate" in the title - 4. Filter the issue if it have no correct filepath in the title + 2. Filter the issue if it have no "Translate" in the title + 3. Filter the issue if it have no correct filepath in the title + + Expected Output: + [ ((dirname, filename), assignee_id, issue_url), ... ] ''' NUMBER_OF_ISSUES = get_open_issues_count() @@ -67,14 +73,14 @@ def get_github_issues() -> list: result_list = [] for issue in result["items"]: - if issue["assignee"] is None: - continue + assignee = issue["assignee"]["login"] if issue["assignee"] is not None else "" title = issue["title"] if "翻譯" not in title and "translate" not in title.lower(): continue - match = re.search("(?P[^\s`][a-zA-z-]+)/(?P[a-zA-Z0-9._-]+(.po)?)", title) + match = re.search( + "(?P[^\s`][a-zA-z-]+)/(?P[a-zA-Z0-9._-]+(.po)?)", title) if not match: continue @@ -82,16 +88,26 @@ def get_github_issues() -> list: if not filename.endswith('.po'): filename += '.po' - result_list.append(((dirname, filename), issue["assignee"]["login"])) + result_list.append(((dirname, filename), assignee, issue["html_url"])) return result_list -def format_line_file(filename: str, result: str) -> str: - return f" - {filename.ljust(37, '-')}{result}\r\n" + +def format_line_table_header() -> list: + global MAX_ASSIGNEE_LEN, MAX_FILENAME_LEN, MAX_PROGRESS_LEN, MAX_ISSUE_LEN + return [f"|{'Filename'.ljust(MAX_FILENAME_LEN, ' ')}|{'Progress'.ljust(MAX_PROGRESS_LEN,' ')}|{'Issue'.ljust(MAX_ISSUE_LEN,' ')}|{'Assignee'.ljust(MAX_ASSIGNEE_LEN,' ')}|\r\n", + f"|{':'.rjust(MAX_FILENAME_LEN, '-')}|{':'.ljust(MAX_PROGRESS_LEN,'-')}|{':'.ljust(MAX_ISSUE_LEN,'-')}|{':'.ljust(MAX_ASSIGNEE_LEN,'-')}|\r\n"] + +def format_issue_link(url: str) -> str: + return f"[{url.split('/')[-1]}]({url})" if len(url) > 0 else '' + +def format_line_file(data: dict) -> str: + global MAX_ASSIGNEE_LEN, MAX_FILENAME_LEN, MAX_PROGRESS_LEN, MAX_ISSUE_LEN + return f"|{data['filename'].rjust(MAX_FILENAME_LEN, ' ')}|{data['progress'].ljust(MAX_PROGRESS_LEN, ' ')}|{format_issue_link(data['issue']).ljust(MAX_ISSUE_LEN, ' ')}|{data['assignee'].ljust(MAX_ASSIGNEE_LEN, ' ')}|\r\n" def format_line_directory(dirname: str) -> str: - return f"- {dirname}/\r\n" + return f"## {dirname}\r\n" if __name__ == "__main__": @@ -108,28 +124,57 @@ def format_line_directory(dirname: str) -> str: filename = path.name dirname = path.parent.name if path.parent.name != BASE_DIR.name else '/' po = polib.pofile(filepath) - summary.setdefault(dirname, {})[filename] = entry_check(po) + + MAX_FILENAME_LEN = len(filename) if len( + filename) > MAX_FILENAME_LEN else MAX_FILENAME_LEN + + summary.setdefault(dirname, []).append({ + 'filename': filename, + 'progress': entry_check(po), + 'issue': '', + 'assignee': '', + }) ''' Unpack the open issue list, and add assignee after the progress ''' - for (category, filename), assignee in issue_list: + for (category, filename), assignee, issue_url in issue_list: try: - summary[category][filename] += f", 💻 {assignee}" + exist_file_dict = next( + (target_dict for target_dict in summary[category] if target_dict['filename'] == filename), None) + if exist_file_dict is None: + continue + + MAX_ASSIGNEE_LEN = len(assignee) if len( + assignee) > MAX_ASSIGNEE_LEN else MAX_ASSIGNEE_LEN + MAX_ISSUE_LEN = len(issue_url) if len( + issue_url) > MAX_ISSUE_LEN else MAX_ISSUE_LEN + + target_index = summary[category].index(exist_file_dict) + summary[category][target_index]['issue'] = issue_url + summary[category][target_index]['assignee'] = assignee except KeyError: pass - + + ''' + Adding Space for Formatting Markdown Link + ''' + MAX_ISSUE_LEN += 10 + ''' Format the lines that will write into the markdown file, also sort the directory name and file name. ''' writeliner = [] summary_sorted = dict(sorted(summary.items())) - for dirname, filedict in summary_sorted.items(): + for dirname, filelist in summary_sorted.items(): writeliner.append(format_line_directory(dirname)) - filedict_sorted = dict(sorted(filedict.items())) - for filename, result in filedict_sorted.items(): - writeliner.append(format_line_file(filename, result)) + writeliner.extend(format_line_table_header()) + + + filelist_sorted = sorted(filelist, key=lambda item: item['filename']) + for filedata in filelist_sorted: + writeliner.append(format_line_file(filedata)) with open( f"summarize_progress/dist/summarize_progress.md", From 1d6848ce31bea4a98f90e9eb6bafeb53e244f8bf Mon Sep 17 00:00:00 2001 From: rockleona Date: Sat, 17 Feb 2024 16:42:10 +0800 Subject: [PATCH 2/4] fix: avoid markdown render bold font --- .github/workflows/summarize_progress.yml | 4 ++-- .scripts/summarize_progress/main.py | 13 ++++++++++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/.github/workflows/summarize_progress.yml b/.github/workflows/summarize_progress.yml index fffd0d5048..6df636c490 100644 --- a/.github/workflows/summarize_progress.yml +++ b/.github/workflows/summarize_progress.yml @@ -4,8 +4,8 @@ on: push: branches: - 'feat/summarize-table' - schedule: - - cron: '30 23 * * 5' + # schedule: + # - cron: '30 23 * * 5' jobs: ci: diff --git a/.scripts/summarize_progress/main.py b/.scripts/summarize_progress/main.py index 13b5d490ed..6fa9262155 100644 --- a/.scripts/summarize_progress/main.py +++ b/.scripts/summarize_progress/main.py @@ -103,7 +103,18 @@ def format_issue_link(url: str) -> str: def format_line_file(data: dict) -> str: global MAX_ASSIGNEE_LEN, MAX_FILENAME_LEN, MAX_PROGRESS_LEN, MAX_ISSUE_LEN - return f"|{data['filename'].rjust(MAX_FILENAME_LEN, ' ')}|{data['progress'].ljust(MAX_PROGRESS_LEN, ' ')}|{format_issue_link(data['issue']).ljust(MAX_ISSUE_LEN, ' ')}|{data['assignee'].ljust(MAX_ASSIGNEE_LEN, ' ')}|\r\n" + + filename_split = list(data['filename']) + # Adding \\ to avoid Markdown rendering bold font + if '_' in filename_split: + add_index = [index for index, chac in enumerate(filename_split) if chac == "_"] + add_index.sort(reverse=True) + for index in add_index: + filename_split.insert(index, '\\') + + filename = ''.join(filename_split) + + return f"|{filename.rjust(MAX_FILENAME_LEN, ' ')}|{data['progress'].ljust(MAX_PROGRESS_LEN, ' ')}|{format_issue_link(data['issue']).ljust(MAX_ISSUE_LEN, ' ')}|{data['assignee'].ljust(MAX_ASSIGNEE_LEN, ' ')}|\r\n" def format_line_directory(dirname: str) -> str: From ad8df4349caeaea908a134a1c7a9a9287c13c56d Mon Sep 17 00:00:00 2001 From: rockleona Date: Sat, 17 Feb 2024 16:49:24 +0800 Subject: [PATCH 3/4] feat: summarize script only runs on upstream repo --- .github/workflows/summarize_progress.yml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/workflows/summarize_progress.yml b/.github/workflows/summarize_progress.yml index 6df636c490..415f92d83e 100644 --- a/.github/workflows/summarize_progress.yml +++ b/.github/workflows/summarize_progress.yml @@ -1,14 +1,12 @@ name: summarize_progress on: - push: - branches: - - 'feat/summarize-table' - # schedule: - # - cron: '30 23 * * 5' + schedule: + - cron: '30 23 * * 5' jobs: ci: + if: github.repository == 'python/python-docs-zh-tw' runs-on: ubuntu-latest permissions: # Give the default GITHUB_TOKEN write permission to commit and push the From ea152247d0adcf7fa214003f76b844bef5bd0fab Mon Sep 17 00:00:00 2001 From: rockleona Date: Wed, 21 Feb 2024 11:20:35 +0800 Subject: [PATCH 4/4] fix: update with reviewer's suggestions --- .github/workflows/summarize_progress.yml | 2 +- .../dist/summarize_progress.md | 524 ------------------ .scripts/summarize_progress/main.py | 69 +-- 3 files changed, 19 insertions(+), 576 deletions(-) delete mode 100644 .scripts/summarize_progress/dist/summarize_progress.md diff --git a/.github/workflows/summarize_progress.yml b/.github/workflows/summarize_progress.yml index 415f92d83e..cb1509471f 100644 --- a/.github/workflows/summarize_progress.yml +++ b/.github/workflows/summarize_progress.yml @@ -33,7 +33,7 @@ jobs: - name: Copy content run: | - cp .scripts/summarize_progress/dist/summarize_progress.md markdown/各檔案翻譯進度清單.md + cp .scripts/summarize_progress/result.md markdown/各檔案翻譯進度清單.md shell: bash - name: Commit wiki code diff --git a/.scripts/summarize_progress/dist/summarize_progress.md b/.scripts/summarize_progress/dist/summarize_progress.md deleted file mode 100644 index 556feffcd5..0000000000 --- a/.scripts/summarize_progress/dist/summarize_progress.md +++ /dev/null @@ -1,524 +0,0 @@ -## / -|Filename |Progress |Issue |Assignee | -|-------------------------------:|:---------|:---------------------------------------------------------------|:-----------| -| about.po|✅ | | | -| bugs.po|✅ | | | -| contents.po|✅ | | | -| copyright.po|✅ | | | -| glossary.po|✅ | | | -| license.po|93.94 % | | | -| sphinx.po|✅ | | | -## c-api -|Filename |Progress |Issue |Assignee | -|-------------------------------:|:---------|:---------------------------------------------------------------|:-----------| -| abstract.po|✅ | | | -| allocation.po|✅ | | | -| apiabiversion.po|✅ | | | -| arg.po|47.59 % | | | -| bool.po|90.91 % | | | -| buffer.po|14.91 % | | | -| bytearray.po|✅ | | | -| bytes.po|51.61 % | | | -| call.po|98.96 % | | | -| capsule.po|6.25 % | | | -| cell.po|✅ | | | -| code.po|19.3 % | | | -| codec.po|✅ | | | -| complex.po|✅ | | | -| concrete.po|✅ | | | -| contextvars.po|6.67 % | | | -| conversion.po|84.85 % | | | -| coro.po|✅ | | | -| datetime.po|82.69 % | | | -| descriptor.po|✅ | | | -| dict.po|22.92 % | | | -| exceptions.po|59.78 % | | | -| file.po|94.12 % | | | -| float.po|8.57 % | | | -| frame.po|41.67 % |[715](https://github.com/python/python-docs-zh-tw/issues/715) |xingularity | -| function.po|67.65 % | | | -| gcsupport.po|2.0 % | | | -| gen.po|✅ | | | -| import.po|21.82 % | | | -| index.po|✅ | | | -| init.po|26.13 % | | | -| init_config.po|12.87 % | | | -| intro.po|98.43 % | | | -| iter.po|✅ | | | -| iterator.po|37.5 % | | | -| list.po|✅ | | | -| long.po|13.85 % | | | -| mapping.po|11.11 % | | | -| marshal.po|❌ | | | -| memory.po|25.65 % | | | -| memoryview.po|21.43 % | | | -| method.po|✅ | | | -| module.po|12.07 % | | | -| none.po|57.14 % | | | -| number.po|12.5 % | | | -| objbuffer.po|✅ | | | -| object.po|11.84 % | | | -| objimpl.po|❌ | | | -| perfmaps.po|❌ | | | -| refcounting.po|✅ | | | -| reflection.po|12.5 % | | | -| sequence.po|10.0 % | | | -| set.po|21.43 % | | | -| slice.po|9.52 % | | | -| stable.po|✅ | | | -| structures.po|38.46 % | | | -| sys.po|10.53 % | | | -| tuple.po|7.5 % | | | -| type.po|7.07 % | | | -| typehints.po|✅ | | | -| typeobj.po|42.35 % | | | -| unicode.po|14.48 % | | | -| utilities.po|✅ | | | -| veryhigh.po|3.51 % | | | -| weakref.po|8.33 % | | | -## distributing -|Filename |Progress |Issue |Assignee | -|-------------------------------:|:---------|:---------------------------------------------------------------|:-----------| -| index.po|✅ | | | -## extending -|Filename |Progress |Issue |Assignee | -|-------------------------------:|:---------|:---------------------------------------------------------------|:-----------| -| building.po|22.22 % | | | -| embedding.po|4.44 % | | | -| extending.po|5.56 % | | | -| index.po|✅ | | | -| newtypes.po|12.36 % | | | -| newtypes_tutorial.po|0.82 % | | | -| windows.po|❌ | | | -## faq -|Filename |Progress |Issue |Assignee | -|-------------------------------:|:---------|:---------------------------------------------------------------|:-----------| -| design.po|✅ | | | -| extending.po|✅ | | | -| general.po|✅ | | | -| gui.po|✅ | | | -| index.po|✅ | | | -| installed.po|✅ | | | -| library.po|✅ | | | -| programming.po|98.98 % | | | -| windows.po|✅ | | | -## howto -|Filename |Progress |Issue |Assignee | -|-------------------------------:|:---------|:---------------------------------------------------------------|:-----------| -| annotations.po|✅ | | | -| argparse.po|✅ | | | -| clinic.po|✅ | | | -| cporting.po|20.0 % | | | -| curses.po|17.14 % | | | -| descriptor.po|12.43 % |[450](https://github.com/python/python-docs-zh-tw/issues/450) | | -| enum.po|0.88 % | | | -| functional.po|7.25 % | | | -| index.po|✅ | | | -| instrumentation.po|✅ | | | -| ipaddress.po|10.42 % | | | -| isolating-extensions.po|❌ | | | -| logging-cookbook.po|5.88 % | | | -| logging.po|11.11 % |[449](https://github.com/python/python-docs-zh-tw/issues/449) | | -| perf_profiling.po|✅ | | | -| pyporting.po|13.83 % | | | -| regex.po|20.91 % |[451](https://github.com/python/python-docs-zh-tw/issues/451) | | -| sockets.po|98.28 % | | | -| sorting.po|✅ | | | -| unicode.po|3.31 % | | | -| urllib2.po|16.67 % | | | -## includes -|Filename |Progress |Issue |Assignee | -|-------------------------------:|:---------|:---------------------------------------------------------------|:-----------| -| wasm-notavail.po|❌ | | | -## installing -|Filename |Progress |Issue |Assignee | -|-------------------------------:|:---------|:---------------------------------------------------------------|:-----------| -| index.po|✅ | | | -## library -|Filename |Progress |Issue |Assignee | -|-------------------------------:|:---------|:---------------------------------------------------------------|:-----------| -| 2to3.po|32.23 % | | | -| __future__.po|✅ | | | -| __main__.po|✅ | | | -| _thread.po|9.62 % |[805](https://github.com/python/python-docs-zh-tw/issues/805) | | -| abc.po|✅ | | | -| aifc.po|22.22 % | | | -| allos.po|✅ | | | -| archiving.po|✅ | | | -| argparse.po|12.13 % |[126](https://github.com/python/python-docs-zh-tw/issues/126) | | -| array.po|✅ | | | -| ast.po|✅ | | | -| asyncio-api-index.po|97.0 % | | | -| asyncio-dev.po|✅ | | | -| asyncio-eventloop.po|6.6 % |[578](https://github.com/python/python-docs-zh-tw/issues/578) |xchux | -| asyncio-exceptions.po|✅ | | | -| asyncio-extending.po|❌ | | | -| asyncio-future.po|✅ | | | -| asyncio-llapi-index.po|✅ | | | -| asyncio-platforms.po|✅ | | | -| asyncio-policy.po|1.49 % | | | -| asyncio-protocol.po|3.26 % | | | -| asyncio-queue.po|✅ | | | -| asyncio-runner.po|34.29 % |[683](https://github.com/python/python-docs-zh-tw/issues/683) | | -| asyncio-stream.po|89.77 % | | | -| asyncio-subprocess.po|9.09 % | | | -| asyncio-sync.po|83.15 % | | | -| asyncio-task.po|5.91 % | | | -| asyncio.po|✅ | | | -| atexit.po|10.53 % | | | -| audioop.po|12.0 % | | | -| audit_events.po|✅ | | | -| base64.po|15.0 % |[615](https://github.com/python/python-docs-zh-tw/issues/615) |Yang92047111| -| bdb.po|10.09 % | | | -| binary.po|✅ | | | -| binascii.po|25.0 % | | | -| bisect.po|✅ | | | -| builtins.po|✅ | | | -| bz2.po|4.17 % | | | -| calendar.po|✅ | | | -| cgi.po|17.43 % | | | -| cgitb.po|50.0 % | | | -| chunk.po|43.59 % | | | -| cmath.po|5.36 % |[485](https://github.com/python/python-docs-zh-tw/issues/485) | | -| cmd.po|10.87 % | | | -| cmdline.po|✅ | | | -| code.po|6.45 % | | | -| codecs.po|49.53 % | | | -| codeop.po|7.14 % | | | -| collections.abc.po|54.47 % | | | -| collections.po|✅ | | | -| colorsys.po|✅ | | | -| compileall.po|13.56 % | | | -| concurrency.po|✅ | | | -| concurrent.futures.po|✅ | | | -| concurrent.po|✅ | | | -| configparser.po|10.44 % | | | -| constants.po|✅ | | | -| contextlib.po|5.3 % | | | -| contextvars.po|4.35 % | | | -| copy.po|✅ | | | -| copyreg.po|✅ | | | -| crypt.po|34.29 % | | | -| crypto.po|✅ | | | -| csv.po|✅ | | | -| ctypes.po|14.35 % | | | -| curses.ascii.po|7.25 % | | | -| curses.panel.po|4.35 % | | | -| curses.po|11.57 % | | | -| custominterp.po|❌ | | | -| dataclasses.po|75.0 % |[103](https://github.com/python/python-docs-zh-tw/issues/103) | | -| datatypes.po|✅ | | | -| datetime.po|32.94 % |[361](https://github.com/python/python-docs-zh-tw/issues/361) | | -| dbm.po|37.93 % | | | -| debug.po|✅ | | | -| decimal.po|2.37 % |[690](https://github.com/python/python-docs-zh-tw/issues/690) |0gien | -| development.po|33.33 % | | | -| devmode.po|10.2 % | | | -| dialog.po|7.02 % | | | -| difflib.po|12.69 % | | | -| dis.po|8.51 % | | | -| distribution.po|50.0 % | | | -| doctest.po|5.97 % | | | -| email.charset.po|13.64 % |[575](https://github.com/python/python-docs-zh-tw/issues/575) |isabellechiu| -| email.compat32-message.po|2.88 % | | | -| email.contentmanager.po|7.32 % | | | -| email.encoders.po|13.33 % | | | -| email.errors.po|3.85 % | | | -| email.examples.po|8.33 % | | | -| email.generator.po|7.32 % | | | -| email.header.po|7.89 % | | | -| email.headerregistry.po|34.95 % | | | -| email.iterators.po|9.09 % | | | -| email.message.po|2.91 % | | | -| email.mime.po|26.32 % | | | -| email.parser.po|4.26 % | | | -| email.po|24.0 % | | | -| email.policy.po|8.0 % | | | -| email.utils.po|12.9 % | | | -| ensurepip.po|97.3 % | | | -| enum.po|✅ | | | -| errno.po|0.75 % | | | -| exceptions.po|9.24 % |[806](https://github.com/python/python-docs-zh-tw/issues/806) |mindihx | -| faulthandler.po|2.38 % | | | -| fcntl.po|22.22 % | | | -| filecmp.po|2.5 % | | | -| fileformats.po|50.0 % | | | -| fileinput.po|4.65 % | | | -| filesys.po|✅ | | | -| fnmatch.po|51.43 % | | | -| fractions.po|6.67 % | | | -| frameworks.po|33.33 % | | | -| ftplib.po|96.88 % | | | -| functional.po|66.67 % | | | -| functions.po|66.81 % |[109](https://github.com/python/python-docs-zh-tw/issues/109) |StevenHsuYL | -| functools.po|7.78 % |[773](https://github.com/python/python-docs-zh-tw/issues/773) | | -| gc.po|98.25 % | | | -| getopt.po|10.53 % | | | -| getpass.po|91.67 % | | | -| gettext.po|16.38 % | | | -| glob.po|✅ | | | -| graphlib.po|✅ | | | -| grp.po|41.38 % | | | -| gzip.po|31.15 % | | | -| hashlib.po|19.14 % |[275](https://github.com/python/python-docs-zh-tw/issues/275) |mattwang44 | -| heapq.po|✅ | | | -| hmac.po|✅ | | | -| html.entities.po|✅ | | | -| html.parser.po|✅ | | | -| html.po|✅ | | | -| http.client.po|14.55 % | | | -| http.cookiejar.po|7.79 % | | | -| http.cookies.po|12.77 % | | | -| http.po|98.35 % | | | -| http.server.po|17.14 % | | | -| i18n.po|33.33 % | | | -| idle.po|7.17 % | | | -| imaplib.po|12.5 % | | | -| imghdr.po|53.66 % | | | -| importlib.metadata.po|1.59 % | | | -| importlib.po|14.1 % | | | -| importlib.resources.abc.po|3.33 % | | | -| importlib.resources.po|5.0 % | | | -| index.po|✅ | | | -| inspect.po|22.1 % | | | -| internet.po|✅ | | | -| intro.po|60.0 % | | | -| io.po|49.24 % |[477](https://github.com/python/python-docs-zh-tw/issues/477) |cschan1828 | -| ipaddress.po|1.35 % | | | -| ipc.po|❌ | | | -| itertools.po|46.95 % | | | -| json.po|39.04 % | | | -| keyword.po|✅ | | | -| language.po|❌ | | | -| linecache.po|35.71 % | | | -| locale.po|18.92 % | | | -| logging.config.po|7.28 % | | | -| logging.handlers.po|33.46 % | | | -| logging.po|20.51 % | | | -| lzma.po|11.21 % | | | -| mailbox.po|9.12 % | | | -| mailcap.po|6.67 % | | | -| markup.po|❌ | | | -| marshal.po|✅ | | | -| math.po|16.67 % |[783](https://github.com/python/python-docs-zh-tw/issues/783) | | -| mimetypes.po|18.0 % | | | -| mm.po|✅ | | | -| mmap.po|12.5 % |[194](https://github.com/python/python-docs-zh-tw/issues/194) | | -| modulefinder.po|7.69 % | | | -| modules.po|33.33 % | | | -| msilib.po|5.15 % | | | -| msvcrt.po|10.71 % | | | -| multiprocessing.po|4.49 % | | | -|multiprocessing.shared_memory.po|✅ | | | -| netdata.po|✅ | | | -| netrc.po|✅ | | | -| nis.po|20.0 % | | | -| nntplib.po|13.48 % | | | -| numbers.po|✅ | | | -| numeric.po|33.33 % | | | -| operator.po|98.89 % | | | -| optparse.po|8.65 % | | | -| os.path.po|✅ | | | -| os.po|19.34 % |[651](https://github.com/python/python-docs-zh-tw/issues/651) | | -| ossaudiodev.po|20.41 % | | | -| pathlib.po|74.31 % |[665](https://github.com/python/python-docs-zh-tw/issues/665) |mindihx | -| pdb.po|9.92 % |[153](https://github.com/python/python-docs-zh-tw/issues/153) |mattwang44 | -| persistence.po|❌ | | | -| pickle.po|14.16 % | | | -| pickletools.po|✅ | | | -| pipes.po|25.0 % | | | -| pkgutil.po|10.64 % | | | -| platform.po|✅ | | | -| plistlib.po|11.63 % | | | -| poplib.po|20.75 % | | | -| posix.po|✅ | | | -| pprint.po|21.28 % | | | -| profile.po|23.57 % | | | -| pty.po|20.0 % | | | -| pwd.po|✅ | | | -| py_compile.po|26.67 % | | | -| pyclbr.po|7.69 % | | | -| pydoc.po|30.43 % | | | -| pyexpat.po|5.93 % | | | -| python.po|❌ | | | -| queue.po|✅ | | | -| quopri.po|✅ | | | -| random.po|✅ | | | -| re.po|32.99 % |[631](https://github.com/python/python-docs-zh-tw/issues/631) |ascodeasice | -| readline.po|2.08 % | | | -| reprlib.po|12.9 % | | | -| resource.po|36.52 % | | | -| rlcompleter.po|16.67 % | | | -| runpy.po|7.5 % | | | -| sched.po|20.83 % |[225](https://github.com/python/python-docs-zh-tw/issues/225) | | -| secrets.po|✅ | | | -| security_warnings.po|✅ | | | -| select.po|33.33 % | | | -| selectors.po|8.93 % | | | -| shelve.po|23.68 % | | | -| shlex.po|5.41 % | | | -| shutil.po|15.52 % | | | -| signal.po|18.98 % | | | -| site.po|31.48 % | | | -| smtplib.po|17.7 % | | | -| sndhdr.po|67.57 % | | | -| socket.po|22.4 % |[611](https://github.com/python/python-docs-zh-tw/issues/611) |weijay0804 | -| socketserver.po|5.75 % | | | -| spwd.po|52.17 % | | | -| sqlite3.po|16.03 % |[346](https://github.com/python/python-docs-zh-tw/issues/346) | | -| ssl.po|41.07 % |[654](https://github.com/python/python-docs-zh-tw/issues/654) |timmy0123 | -| stat.po|2.47 % | | | -| statistics.po|✅ | | | -| stdtypes.po|33.55 % |[159](https://github.com/python/python-docs-zh-tw/issues/159) | | -| string.po|65.15 % |[737](https://github.com/python/python-docs-zh-tw/issues/737) | | -| stringprep.po|4.0 % | | | -| struct.po|45.56 % |[704](https://github.com/python/python-docs-zh-tw/issues/704) |Cliying94 | -| subprocess.po|15.86 % | | | -| sunau.po|✅ | | | -| superseded.po|✅ | | | -| symtable.po|✅ | | | -| sys.monitoring.po|23.08 % |[663](https://github.com/python/python-docs-zh-tw/issues/663) |mattwang44 | -| sys.po|28.64 % |[33](https://github.com/python/python-docs-zh-tw/issues/33) | | -| sys_path_init.po|❌ | | | -| sysconfig.po|40.44 % | | | -| syslog.po|29.03 % | | | -| tabnanny.po|✅ | | | -| tarfile.po|11.18 % | | | -| telnetlib.po|17.65 % | | | -| tempfile.po|✅ | | | -| termios.po|25.0 % | | | -| test.po|26.76 % | | | -| text.po|✅ | | | -| textwrap.po|8.33 % | | | -| threading.po|4.07 % |[640](https://github.com/python/python-docs-zh-tw/issues/640) |SivanYeh | -| time.po|32.55 % | | | -| timeit.po|✅ | | | -| tk.po|✅ | | | -| tkinter.colorchooser.po|33.33 % | | | -| tkinter.dnd.po|10.0 % | | | -| tkinter.font.po|8.57 % |[812](https://github.com/python/python-docs-zh-tw/issues/812) |rockleona | -| tkinter.messagebox.po|21.43 % | | | -| tkinter.po|24.35 % | | | -| tkinter.scrolledtext.po|14.29 % | | | -| tkinter.tix.po|11.11 % | | | -| tkinter.ttk.po|22.44 % | | | -| token.po|1.52 % | | | -| tokenize.po|11.63 % | | | -| tomllib.po|✅ | | | -| trace.po|5.13 % | | | -| traceback.po|16.84 % | | | -| tracemalloc.po|15.97 % | | | -| tty.po|64.71 % | | | -| turtle.po|22.82 % | | | -| types.po|5.77 % | | | -| typing.po|30.16 % |[190](https://github.com/python/python-docs-zh-tw/issues/190) |rockleona | -| undoc.po|22.22 % | | | -| unicodedata.po|21.88 % | | | -| unittest.mock-examples.po|48.77 % |[693](https://github.com/python/python-docs-zh-tw/issues/693) |ken71301 | -| unittest.mock.po|65.68 % |[565](https://github.com/python/python-docs-zh-tw/issues/565) |ken71301 | -| unittest.po|27.78 % |[273](https://github.com/python/python-docs-zh-tw/issues/273) | | -| unix.po|✅ | | | -| urllib.error.po|✅ | | | -| urllib.parse.po|18.75 % | | | -| urllib.po|✅ | | | -| urllib.request.po|29.33 % |[146](https://github.com/python/python-docs-zh-tw/issues/146) | | -| urllib.robotparser.po|✅ | | | -| uu.po|46.67 % | | | -| uuid.po|✅ | | | -| venv.po|60.18 % | | | -| warnings.po|20.0 % | | | -| wave.po|✅ | | | -| weakref.po|4.71 % | | | -| webbrowser.po|55.84 % |[552](https://github.com/python/python-docs-zh-tw/issues/552) |griiid | -| windows.po|✅ | | | -| winreg.po|14.45 % | | | -| winsound.po|29.41 % | | | -| wsgiref.po|✅ | | | -| xdrlib.po|10.71 % | | | -| xml.dom.minidom.po|13.73 % | | | -| xml.dom.po|29.91 % | | | -| xml.dom.pulldom.po|40.74 % | | | -| xml.etree.elementtree.po|17.32 % | | | -| xml.po|✅ | | | -| xml.sax.handler.po|5.83 % | | | -| xml.sax.po|18.75 % | | | -| xml.sax.reader.po|8.0 % | | | -| xml.sax.utils.po|14.29 % | | | -| xmlrpc.client.po|23.0 % | | | -| xmlrpc.po|✅ | | | -| xmlrpc.server.po|18.37 % |[429](https://github.com/python/python-docs-zh-tw/issues/429) |paultsaich | -| zipapp.po|10.29 % | | | -| zipfile.po|10.36 % | | | -| zipimport.po|8.33 % | | | -| zlib.po|✅ | | | -| zoneinfo.po|6.67 % | | | -## reference -|Filename |Progress |Issue |Assignee | -|-------------------------------:|:---------|:---------------------------------------------------------------|:-----------| -| compound_stmts.po|26.07 % | | | -| datamodel.po|34.04 % | | | -| executionmodel.po|31.63 % | | | -| expressions.po|36.45 % | | | -| grammar.po|33.33 % | | | -| import.po|13.68 % | | | -| index.po|✅ | | | -| introduction.po|35.48 % | | | -| lexical_analysis.po|47.39 % | | | -| simple_stmts.po|37.18 % | | | -| toplevel_components.po|✅ | | | -## tutorial -|Filename |Progress |Issue |Assignee | -|-------------------------------:|:---------|:---------------------------------------------------------------|:-----------| -| appendix.po|✅ | | | -| appetite.po|✅ | | | -| classes.po|✅ | | | -| controlflow.po|✅ | | | -| datastructures.po|✅ | | | -| errors.po|✅ | | | -| floatingpoint.po|✅ | | | -| index.po|✅ | | | -| inputoutput.po|✅ | | | -| interactive.po|✅ | | | -| interpreter.po|✅ | | | -| introduction.po|✅ |[517](https://github.com/python/python-docs-zh-tw/issues/517) |avatar220928| -| modules.po|✅ | | | -| stdlib.po|✅ | | | -| stdlib2.po|✅ | | | -| venv.po|✅ | | | -| whatnow.po|✅ | | | -## using -|Filename |Progress |Issue |Assignee | -|-------------------------------:|:---------|:---------------------------------------------------------------|:-----------| -| cmdline.po|18.89 % | | | -| configure.po|35.09 % | | | -| editors.po|33.33 % | | | -| index.po|✅ | | | -| mac.po|✅ | | | -| unix.po|✅ | | | -| windows.po|26.48 % | | | -## whatsnew -|Filename |Progress |Issue |Assignee | -|-------------------------------:|:---------|:---------------------------------------------------------------|:-----------| -| 2.0.po|6.59 % | | | -| 2.1.po|12.23 % | | | -| 2.2.po|9.42 % | | | -| 2.3.po|4.91 % | | | -| 2.4.po|6.34 % | | | -| 2.5.po|12.63 % | | | -| 2.6.po|8.32 % | | | -| 2.7.po|4.64 % | | | -| 3.0.po|22.44 % | | | -| 3.1.po|35.71 % | | | -| 3.10.po|✅ | | | -| 3.11.po|98.94 % | | | -| 3.12.po|46.19 % |[488](https://github.com/python/python-docs-zh-tw/issues/488) |mattwang44 | -| 3.2.po|24.32 % | | | -| 3.3.po|47.13 % | | | -| 3.4.po|20.35 % | | | -| 3.5.po|23.29 % | | | -| 3.6.po|18.38 % | | | -| 3.7.po|20.0 % | | | -| 3.8.po|29.58 % | | | -| 3.9.po|24.52 % | | | -| changelog.po|✅ | | | -| index.po|✅ | | | diff --git a/.scripts/summarize_progress/main.py b/.scripts/summarize_progress/main.py index 6fa9262155..328fbfde6e 100644 --- a/.scripts/summarize_progress/main.py +++ b/.scripts/summarize_progress/main.py @@ -5,11 +5,6 @@ from pathlib import Path -MAX_FILENAME_LEN = 0 -MAX_PROGRESS_LEN = 10 -MAX_ISSUE_LEN = 10 -MAX_ASSIGNEE_LEN = 0 - def entry_check(pofile: polib.POFile) -> str: ''' @@ -57,7 +52,7 @@ def get_github_issues() -> list: 1. Fetch GitHub API and get open issue list 2. Filter the issue if it have no "Translate" in the title 3. Filter the issue if it have no correct filepath in the title - + Expected Output: [ ((dirname, filename), assignee_id, issue_url), ... ] ''' @@ -73,7 +68,7 @@ def get_github_issues() -> list: result_list = [] for issue in result["items"]: - assignee = issue["assignee"]["login"] if issue["assignee"] is not None else "" + assignee = issue["assignee"]["login"] if issue["assignee"] else "" title = issue["title"] if "翻譯" not in title and "translate" not in title.lower(): @@ -94,27 +89,16 @@ def get_github_issues() -> list: def format_line_table_header() -> list: - global MAX_ASSIGNEE_LEN, MAX_FILENAME_LEN, MAX_PROGRESS_LEN, MAX_ISSUE_LEN - return [f"|{'Filename'.ljust(MAX_FILENAME_LEN, ' ')}|{'Progress'.ljust(MAX_PROGRESS_LEN,' ')}|{'Issue'.ljust(MAX_ISSUE_LEN,' ')}|{'Assignee'.ljust(MAX_ASSIGNEE_LEN,' ')}|\r\n", - f"|{':'.rjust(MAX_FILENAME_LEN, '-')}|{':'.ljust(MAX_PROGRESS_LEN,'-')}|{':'.ljust(MAX_ISSUE_LEN,'-')}|{':'.ljust(MAX_ASSIGNEE_LEN,'-')}|\r\n"] + return [f"|Filename|Progress|Issue|Assignee|\r\n", + f"|-------:|:-------|:----|:-------|\r\n"] + def format_issue_link(url: str) -> str: return f"[{url.split('/')[-1]}]({url})" if len(url) > 0 else '' -def format_line_file(data: dict) -> str: - global MAX_ASSIGNEE_LEN, MAX_FILENAME_LEN, MAX_PROGRESS_LEN, MAX_ISSUE_LEN - - filename_split = list(data['filename']) - # Adding \\ to avoid Markdown rendering bold font - if '_' in filename_split: - add_index = [index for index, chac in enumerate(filename_split) if chac == "_"] - add_index.sort(reverse=True) - for index in add_index: - filename_split.insert(index, '\\') - filename = ''.join(filename_split) - - return f"|{filename.rjust(MAX_FILENAME_LEN, ' ')}|{data['progress'].ljust(MAX_PROGRESS_LEN, ' ')}|{format_issue_link(data['issue']).ljust(MAX_ISSUE_LEN, ' ')}|{data['assignee'].ljust(MAX_ASSIGNEE_LEN, ' ')}|\r\n" +def format_line_file(filename: str, data: dict) -> str: + return f"|`{filename}`|{data['progress']}|{format_issue_link(data['issue'])}|{data['assignee']}|\r\n" def format_line_directory(dirname: str) -> str: @@ -136,59 +120,42 @@ def format_line_directory(dirname: str) -> str: dirname = path.parent.name if path.parent.name != BASE_DIR.name else '/' po = polib.pofile(filepath) - MAX_FILENAME_LEN = len(filename) if len( - filename) > MAX_FILENAME_LEN else MAX_FILENAME_LEN - - summary.setdefault(dirname, []).append({ - 'filename': filename, + summary.setdefault(dirname, {})[filename] = { 'progress': entry_check(po), 'issue': '', 'assignee': '', - }) + } ''' Unpack the open issue list, and add assignee after the progress ''' for (category, filename), assignee, issue_url in issue_list: try: - exist_file_dict = next( - (target_dict for target_dict in summary[category] if target_dict['filename'] == filename), None) - if exist_file_dict is None: - continue - - MAX_ASSIGNEE_LEN = len(assignee) if len( - assignee) > MAX_ASSIGNEE_LEN else MAX_ASSIGNEE_LEN - MAX_ISSUE_LEN = len(issue_url) if len( - issue_url) > MAX_ISSUE_LEN else MAX_ISSUE_LEN - - target_index = summary[category].index(exist_file_dict) - summary[category][target_index]['issue'] = issue_url - summary[category][target_index]['assignee'] = assignee + summary[category][filename]['issue'] = issue_url + summary[category][filename]['assignee'] = assignee except KeyError: pass - + ''' Adding Space for Formatting Markdown Link ''' - MAX_ISSUE_LEN += 10 - + ''' Format the lines that will write into the markdown file, also sort the directory name and file name. ''' writeliner = [] summary_sorted = dict(sorted(summary.items())) - for dirname, filelist in summary_sorted.items(): + for dirname, filedict in summary_sorted.items(): writeliner.append(format_line_directory(dirname)) writeliner.extend(format_line_table_header()) - - filelist_sorted = sorted(filelist, key=lambda item: item['filename']) - for filedata in filelist_sorted: - writeliner.append(format_line_file(filedata)) + filedict_sorted = dict(sorted(filedict.items())) + for filename, filedata in filedict_sorted.items(): + writeliner.append(format_line_file(filename, filedata)) with open( - f"summarize_progress/dist/summarize_progress.md", + f"summarize_progress/result.md", "w", ) as file: file.writelines(writeliner)