Skip to content

🌐 [translation-sync] Add Polars lecture to complement existing Pandas lecture - #20

Merged
mmcky merged 4 commits into
mainfrom
translation-sync-2026-07-30T22-07-57-pr-408
Jul 30, 2026
Merged

🌐 [translation-sync] Add Polars lecture to complement existing Pandas lecture#20
mmcky merged 4 commits into
mainfrom
translation-sync-2026-07-30T22-07-57-pr-408

Conversation

@mmcky

@mmcky mmcky commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Automated Translation Sync

This PR contains automated translations from QuantEcon/lecture-python-programming.

Source PR

#408 - Add Polars lecture to complement existing Pandas lecture

Files Added

  • lectures/polars.md
  • .translate/state/polars.md.yml

Files Updated

  • ✏️ lectures/_toc.yml

Details

  • Source Language: en
  • Target Language: fr
  • Model: claude-sonnet-5

This PR was created automatically by the translation action.

Copilot AI review requested due to automatic review settings July 30, 2026 22:08
@mmcky mmcky added action-translation PRs created by QuantEcon/action-translation automated Automated sync PR opened by action-translation labels Jul 30, 2026
@github-actions

github-actions Bot commented Jul 30, 2026

Copy link
Copy Markdown

✅ Translation Quality Review

Verdict: PASS | Model: claude-sonnet-5 | Date: 2026-07-30
Routing: editor — 2 minor finding(s) in gating categories (accuracy/terminology/syntax/diff-check/other); terminology 8 below floor 9


📝 Translation Quality

Criterion Score
Accuracy 9/10
Fluency 9/10
Terminology 8/10
Formatting 9/10
Overall 8.8/10

Summary: The translation of the newly added sections is accurate, fluent, and technically sound, with correct rendering of Polars-specific vocabulary (lazy evaluation, predicate pushdown, expressions, group_by, etc.) and full preservation of code cells and MyST directives. Minor stylistic inconsistencies exist around the treatment of 'Series' and the eager/lazy terminology pairing, but these do not impede comprehension or violate the glossary. Technical terminology (lazy evaluation, predicate/projection pushdown, expressions) is translated clearly and consistently with appropriate French equivalents while preserving recognizable Polars/pandas API terms. Code blocks, directives, and links are fully preserved with no structural or syntax corruption. French typography rules (non-breaking spaces before colons, guillemets where applicable) are correctly applied in the changed sections.

Suggestions:

  • [minor · terminology] lectures/polars.md — ### Performance comparison: The French translation renders 'use whichever API you find more convenient' as 'utilisez celle des API que vous trouvez la plus pratique', which is slightly awkward phrasing and separates 'celle' from 'des API' unnaturally. → utilisez l'API que vous trouvez la plus pratique
  • [minor · terminology] lectures/polars.md — ## Series: The heading 'Series' was left untranslated in both the heading and metadata mapping. While 'Series' is a Polars/pandas class name and can reasonably stay in English, the surrounding prose ('Commençons par les Series') mixes an English plural without italics or a French-style treatment, which is inconsistent with how 'DataFrame' is handled elsewhere (kept singular, capitalized, no French pluraliza… → Consider consistent styling, e.g. 'les objets Series' or italicizing the term throughout.
  • [nit · fluency] lectures/polars.md — ### Eager vs lazy: Repeatedly rendering 'eager' as 'immédiat' and 'lazy' as 'paresseux' with the English term in parentheses (e.g., 'mode immédiat (eager)') is a reasonable choice, but it is applied inconsistently — sometimes the English term appears in parentheses, sometimes not (e.g., 'Polars immédiat' vs 'Polars eager' in code comments, which is expected, but 'mode immédiat vs mode paresseux' heading omits Engli… → Standardize whether the English original is parenthetically noted at each first use per subsection.

🔍 Diff Quality

Check Status
Scope Correct
Position Correct
Structure Preserved
Heading-map Correct
Overall 10/10

Summary: The translated document mirrors the English source's structure, section order, and content, with a correctly populated translation heading map.


This review was generated automatically by action-translation review mode.

@github-actions

github-actions Bot commented Jul 30, 2026

Copy link
Copy Markdown

📖 Netlify Preview Ready!

Preview URL: https://pr-20--verdant-toffee-3261a8.netlify.app

Commit: 51e9bf6

📚 Changed Lectures


Build Info

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟡 Not ready to approve

The new lecture contains a couple of correctness issues in Polars computations (ordering and null-handling) plus a potentially fragile large benchmark cell for executed builds.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

This review doesn't count toward merge requirements. Sign up for the private preview to control whether Copilot approvals count.

Pull request overview

This PR syncs the French translation of a new Polars lecture from the upstream QuantEcon repository and wires it into the book navigation so it complements the existing Pandas content.

Changes:

  • Added a new lecture: lectures/polars.md (French MyST/Jupytext lecture on Polars).
  • Updated the table of contents to include the new lecture.
  • Added translation sync state metadata for polars.md.
File summaries
File Description
lectures/polars.md New Polars lecture content (dataframes, lazy evaluation, benchmarks, exercises).
lectures/_toc.yml Adds polars to the lecture navigation.
.translate/state/polars.md.yml Records translation sync provenance/state for the new lecture.
Review details
  • Files reviewed: 3/3 changed files
  • Comments generated: 4
  • Review effort level: Lite

We're testing this review assessment. Please use 👍 or 👎 to tell us if it's correct.

Comment thread lectures/polars.md Outdated
Comment thread lectures/polars.md

```{code-cell} ipython3
price_change = ticker.select([
((pl.col(tick).last() / pl.col(tick).first() - 1) * 100)
Comment thread lectures/polars.md
Comment on lines +475 to +483
Passons maintenant à 5 millions de lignes, où la différence devient évidente.

La tâche consiste à : filtrer les lignes où `value > 0`, calculer un produit
pondéré `value * weight`, puis calculer la moyenne de ce produit au sein de chaque groupe ---
une moyenne pondérée groupée.

```{code-cell} ipython3
n = 5_000_000
np.random.seed(42)
Comment thread lectures/polars.md
Comment on lines +778 to +783
yearly_returns = indices_data.group_by('year').agg([
*[pl.col(idx).drop_nulls().first().alias(f'{idx}_first')
for idx in indices_list],
*[pl.col(idx).drop_nulls().last().alias(f'{idx}_last')
for idx in indices_list]
])
"Colonnaire" is the standard French adjective for "columnar" in data
engineering; "columnaire" is an anglicism. Flagged independently by both
the translation reviewer and Copilot on #20.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@mmcky
mmcky merged commit 801f66e into main Jul 30, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

action-translation PRs created by QuantEcon/action-translation automated Automated sync PR opened by action-translation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants