Skip to content

Restore zip import by repository organization - #434

Draft
amirbiron wants to merge 3 commits into
mainfrom
cursor/restore-zip-import-by-repository-organization-5600
Draft

amirbiron wants to merge 3 commits into
mainfrom
cursor/restore-zip-import-by-repository-organization-5600

Conversation

@amirbiron

Copy link
Copy Markdown
Owner

Restore automatic repo:owner/name tagging for ZIP imports to organize files under "By Repo".

Previously, importing a ZIP from a repository would tag all files with repo:owner/name, making them appear under the "By Repo" section. This functionality was lost, causing files to be treated as untagged and appear under "Other Files". This PR reintroduces the tagging logic, including inferring the repository name from the ZIP structure or filename if metadata.json is not present. This ensures that imported repository ZIPs are correctly categorized and displayed as repo:owner/name (count).


Open in Cursor Open in Web

Co-authored-by: amirbiron <amirbiron@gmail.com>
@cursor

cursor Bot commented Sep 5, 2025

Copy link
Copy Markdown
Contributor

Cursor Agent can help with this pull request. Just @cursor in comments and I'll start working on changes in this branch.
Learn more about Cursor Agents

@github-actions

github-actions Bot commented Sep 5, 2025 •

Copy link
Copy Markdown
Contributor

🧯 Dangerous deletes guard report

Policy: see .cursorrules — dangerous deletions are blocked unless wrapped safely.

Summary:

  • Flagged findings (blocking): 0
    0
  • Excluded matches (not blocking): 5
  • Total matches (all files): 11

Flagged findings (file:line:snippet):

Excluded matches (by path pattern):
./README.md:692:find . -name "pycache" -exec rm -rf {} +
./docs/DOCUMENTATION_GUIDE.md:450:rm -rf _build
./docs/Makefile:24: rm -rf $(BUILDDIR)
./Dockerfile:31: rm -rf /var/lib/apt/lists/*
./Dockerfile:66: rm -rf /var/lib/apt/lists/*

@github-actions

github-actions Bot commented Sep 5, 2025 •

Copy link
Copy Markdown
Contributor

📖 Documentation Preview

The documentation has been built successfully!

To view locally:

  1. Download the artifacts
  2. Extract the zip file
  3. Open index.html in your browser

cursoragent and others added 2 commits September 5, 2025 20:41
Co-authored-by: amirbiron <amirbiron@gmail.com>
Co-authored-by: amirbiron <amirbiron@gmail.com>
amirbiron added a commit that referenced this pull request Sep 27, 2026
#3465)

* chore(deps): markdown-it-py 4.2.0 — והפערים הידועים מ-GitHub בטבלה אחת

הנעיצה עולה מ-3.0.0 ל-4.2.0, ואיתה mdit-py-plugins ל-0.6.1 ו-myst-parser
ל-5.1.0 (4.0.1 דרש markdown-it-py~=3.0). שני תיקונים של upstream ב-4.0.0
סוגרים עלויות שהגרסה הקודמת נשאה לפני ש-md_parser יפרסר תוכן של משתמשים:
הגדרות קישור ריבועיות (#367) וטבלה שמושלמת בלי תקרה (#364).

אפס-דיף באותו סקריפט על שתי הגרסאות: 473 מפות md/RST (הריפו ו-amir-bug-
patterns), 14 תשובות סירוב, והצורות המחוללות מול cmark-gfm. מחלקה אחת
משתנה מחוץ לקורפוס — רשימת תגיות הבלוק של CommonMark 0.31.2, source/search
— והיא מקובעת כפער ידוע, לצד הפער הוותיק של סוג 7 (#434), בטבלה אחת:
_KNOWN_DIVERGENCES ב-tests/test_md_parser_oracle.py. לכל שורה: הסיבה, צורה
ומה כל צד מחזיר, על מה ומתי נמדדה, וקישור upstream. docs/mcp-server.rst
מעתיק ממנה (mcp-md-known-divergences) וטסט משווה.

הטענה "אף קובץ אמיתי לא מושפע": טסט CI על docs/*.md (לפי הפארסר, בלי שורות
בתוך בלוק קוד, עם קבצים שתולים שמוכיחים שהוא מסוגל ליפול);
compare_md_parser_to_cmark.py מריץ את אותה סריקה על amir-bug-patterns ונופל
על טריגר; והקבצים השמורים — מדידה מתוארכת בתיעוד. בדרך: הטוען של הסקריפט
רושם את מודול האורקל ב-sys.modules (המתכון של importlib), אחרת @DataClass
נופל. עלות הפרסור נמדדה מחדש ולא זזה.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GQfdgfwKvZ9XNtLPs88DJf

* chore(md_parser): תיקוני הסקירה — שלוש שורות חדשות בטבלת הפערים, פטור לפי הפארסר, וסקריפט האפס-דיף בריפו

שלוש שורות חדשות ב-_KNOWN_DIVERGENCES, כל אחת עם משפחת צורות קבועה באורקל
וטסט "בדיוק זה" שבודק כל תא בשני הכיוונים:
- טבלה שעוברת את תקרת התאים המשלימים של markdown-it-py 4.x
  (MAX_AUTOCOMPLETED_CELLS, #364): 2 מתוך 8; ב-3.0.0 הסכמנו. הקובץ המשחזר
  הוא 1,682 בתים.
- כותרת setext שצמודה להגדרת קישור: 92 מתוך 720, בשלושה סוגים (82 שורה
  אחרת, 6 רק ב-GitHub, 4 רק אצלנו). קדם לשדרוג.
- תו רווח ש-\s של פייתון מזהה ו-cmark-gfm לא, אחרי שם תגית HTML: 2,316
  מתוך 5,075 (23 תווים, 61 תגיות בלוק, סוג 1 וסוג 7). קדם לשדרוג. טריגר
  לפי הפארסר, מיד אחרי שם התגית.
ולידן משפחה קבועה של כל תגית בלוק בכל צורות הכתיבה וההקשרים (3,242 צורות),
וטסטים שמודדים את שתי רשימות התגיות מול ההתנהגות של כל פארסר.

הסריקה של docs/ פוטרת שורה בתוך בלוק HTML שנפתח בשורה קודמת (<source>
בתוך <video>), לפי ה-map של הפארסר — חוץ מבלוק שאולי קיים רק אצלנו: שורת
פתיחה שהיא טריגר, או שיש בה תו רווח שרק פייתון מכיר. הטריגר של source/search
כתוב עם \s של הפארסר ולא [ \t]. עמוד שאינו UTF-8 מפיל את הסריקה בשמו,
וסריקה של אפס עמודים היא כישלון.

scripts/md_parser_upgrade_zero_diff.py נכנס לריפו: תצלום בכל סביבה והשוואה,
עם הכרזה מראש על משפחות שצפויות להשתנות. על 3.0.0 מול 4.2.0: אפס דיף במפות
(524 md, 208 RST), בסירובים ובצורות העוינות; באורקל השתנו רק שתי המשפחות
שהוכרזו.

ובדרך: הטוען של compare_md_parser_to_cmark.py מסיר את הרישום כשהטעינה
נכשלת; התיעוד מעתיק מהטבלה בכל שורה בנפרד, והמספרים בפסקאות נגזרים בטסט;
base.txt מתקן את הטענה על תקרות ב-md_parser (#3391).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GQfdgfwKvZ9XNtLPs88DJf

* fix(scripts): מפורש dict[str, Any] ל-snapshot כדי ש-mypy יזהה את versions.items()

בלי אנוטציה מפורשת, mypy הסיק מהמילון ההטרוגני (int/dict/list) טיפוס רחב מדי
לערכים (object), ו-snapshot["versions"].items() נכשל עם attr-defined.

Co-authored-by: amir haim <215461772+amirbiron@users.noreply.github.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* fix(scripts): שתי שגיאות mypy שנשארו בסקריפט האפס-דיף

- ה-lambda עם ברירת מחדל (`lambda row=row: ...`) הוחלף ב-`functools.partial(_row_texts, row)`, כי mypy לא מסיק טיפוס ל-lambda כזה ([misc]). ההתנהגות זהה: המשפחה נקראת תמיד בלי ארגומנטים, והשורה נקשרת ברגע היצירה בשתי הצורות.
- רשימת האינדקסים בלולאת האורקל ב-`_compare` קיבלה שם משלה (`changed_indices`), כי `different` כבר שימש באותה פונקציה לרשימת מחרוזות ([misc]).

שתיהן אינן חוסמות ב-CI, כי השער תופס רק attr-defined ו-return-value. השגיאה החוסמת תוקנה ב-e9addcf. אומת: mypy נקי על הקובץ ואין שגיאה חוסמת בריפו כולו. תצלום חדש על 4.2.0 זהה לקודם בחלק של האורקל, פלט compare על שני התצלומים השמורים זהה לפלט השמור, ו-24 טסטי הסקריפט עוברים.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GQfdgfwKvZ9XNtLPs88DJf

* docs: גרסת הפייתון המינימלית היא 3.11 — כתובה במקום אחד ונבדקת מול ה-CI

‏docs/installation.rst,‏ docs/index.rst ו-docs/README.md אמרו 3.9. הקוד מייבא ‏datetime.UTC (נוסף בפייתון 3.11), כלי בניית התיעוד שב-docs/requirements.txt דורשים 3.11, וה-CI לא בודק אף גרסה מתחת ל-3.11.

- המספר והסיבה לו כתובים עכשיו רק ב-installation.rst, כמו שורת ה-MongoDB שמתחתיו. ‏index.rst ו-README.md מפנים אליו.
- ‏tests/test_docs_python_minimum.py משווה את המספר לגרסה הנמוכה ביותר במטריצה של unit-tests ב-ci.yml, ובודק שאף עמוד אחר תחת docs/ לא כותב גרסת פייתון בפריט של רשימה. טסט שלישי שומר על הסריקה עצמה, כדי שלא תעבור על כלום.
- הוכח שהטסט נופל על התיעוד הישן, ושכל אחת משבע מוטציות נתפסת בטסט הנכון.

ממצא של CodeRabbit על PR #3465. הוא הציע 3.10 לפי markdown-it-py 4.2.0, אבל 3.10 לא מספיק: `from datetime import UTC` נופל שם ב-ImportError. ‏3.11 מקיים את "3.10 או חדש יותר". שרשרת התלויות לא שונתה.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GQfdgfwKvZ9XNtLPs88DJf

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: amir haim <215461772+amirbiron@users.noreply.github.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants