.\" Man page generated from reStructuredText .\" by the Docutils 0.23 manpage writer. . . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .TH "PARSO" "1" "Aug 30, 2026" "0.8" "parso" .SH "نام (NAME)" python\-parso \- مستندات کتابخانه تجزیه‌کننده پایتون parso .sp انتشار نسخه v0.8.7\&. (نصب \%<>) .sp کتابخانه Parso یک تجزیه‌کننده پایتون است که از بازیابی خطا (error recovery) و تجزیه رفت و برگشتی (round\-trip parsing) برای نسخه‌های مختلف پایتون (در چندین نسخه پایتون) پشتیبانی می‌کند. Parso همچنین قادر است چندین خطای نحوی را در فایل پایتون شما فهرست کند. .sp کتابخانه Parso توسط jedi \% در شرایط عملی و سنگین آزموده شده است\&. این ابزار از jedi جدا شد تا برای سایر پروژه‌ها نیز قابل استفاده باشد. .sp کتابخانه Parso شامل یک API کوچک برای تجزیه پایتون و تحلیل درخت نحو است. .sp یک مثال ساده: .sp .EX >>> import parso >>> module = parso.parse(\(aqhello + 1\(aq, version=\(dq3.9\(dq) >>> expr = module.children[0] >>> expr PythonNode(arith_expr, [, , ]) >>> print(expr.get_code()) hello + 1 >>> name = expr.children[0] >>> name >>> name.end_pos (1, 5) >>> expr.end_pos (1, 9) .EE .sp برای فهرست کردن چندین مورد یا خطا: .sp .EX >>> grammar = parso.load_grammar() >>> module = grammar.parse(\(aqfoo +\enbar\encontinue\(aq) >>> error1, error2 = grammar.iter_errors(module) >>> error1.message \(aqSyntaxError: invalid syntax\(aq >>> error2.message \(dqSyntaxError: \(aqcontinue\(aq not properly in loop\(dq .EE .SH "مستندات (DOCS)" .SS "نصب و پیکربندی (Installation and Configuration)" .SS "روش ترجیحی (pip)" .sp در هر سیستمی می‌توانید \fIparso\fP را مستقیماً از شاخص بسته‌های پایتون (PyPI) با استفاده از pip نصب کنید: .INDENT 0.0 .INDENT 3.5 .sp .EX sudo pip install parso .EE .UNINDENT .UNINDENT .SS "نصب از git" .sp اگر می‌خواهید نسخه توسعه جاری (شاخه master) را نصب کنید: .INDENT 0.0 .INDENT 3.5 .sp .EX sudo pip install \-e git+https://github.com/davidhalter/parso.git#egg=parso .EE .UNINDENT .UNINDENT .SS "نصب دستی از بسته دانلودشده (توصیه نمی‌شود)" .sp اگر ترجیح می‌دهید از یک نصب‌کننده خودکار بسته استفاده نکنید، می‌توانید یک نسخه جاری از \fIparso\fP را دانلود کرده \% و آن را به صورت دستی نصب کنید. .sp برای نصب آن، در کنسول خود به دایرکتوری حاوی \fIsetup.py\fP رفته و تایپ کنید: .INDENT 0.0 .INDENT 3.5 .sp .EX sudo python setup.py install .EE .UNINDENT .UNINDENT .SS "نحوه استفاده (Usage)" .sp کتابخانه \fIparso\fP بر مبنای گرامرها کار می‌کند. شما می‌توانید به سادگی با فراخوانی \fBparso.load_grammar()\fP گرامرهای پایتون را بسازید\&. گرامرها (همراه با توکن‌ساز سفارشی و درخت‌های تجزیه سفارشی) را نیز می‌توان با نمونه‌سازی مستقیم از \fBparso.Grammar()\fP ایجاد کرد\&. اطلاعات بیشتر درباره اشیاء حاصل را می‌توانید در مستندات درخت تجزیه‌کننده \%<#\:parser-tree> بیابید\&. .sp ساده‌ترین روش استفاده از parso حتی بدون بارگذاری گرامر است (\fBparso.parse()\fP): .INDENT 0.0 .INDENT 3.5 .sp .EX >>> import parso >>> parso.parse(\(aqfoo + bar\(aq) .EE .UNINDENT .UNINDENT .SS "بارگذاری گرامر (Loading a Grammar)" .sp به طور معمول اگر می‌خواهید با یک نسخه مشخص از پایتون کار کنید، از این دستور استفاده کنید: .INDENT 0.0 .TP .B parso.load_grammar(*, version: str \% = None, path: str \% = None) یک \fBparso.Grammar\fP را بارگذاری می‌کند\&. نسخه پیش‌فرض، نسخه جاری پایتون است. .INDENT 7.0 .TP .B پارامترها (Parameters) .INDENT 7.0 .IP \(bu 2 \fBversion\fP (\fIstr\fP \%) \-\- یک رشته نسخه پایتون، مانند \fBversion=\(aq3.8\(aq\fP\&. .IP \(bu 2 \fBpath\fP (\fIstr\fP \%) \-\- مسیر فایل گرامر .UNINDENT .UNINDENT .UNINDENT .SS "متدهای گرامر (Grammar methods)" .sp یک شیء گرامر دریافت خواهید کرد که می‌توانید از آن برای تجزیه کد و یافتن اشکالات موجود در آن استفاده کنید: .INDENT 0.0 .TP .B class parso.Grammar(text: str \%, *, tokenizer, parser=, diff_parser=None) تابع \fBparso.load_grammar()\fP نمونه‌هایی از این کلاس را برمی‌گرداند. .sp ایجاد گرامرهای سفارشی غیر پایتونی با فراخوانی این کلاس هنوز پشتیبانی نمی‌شود. .INDENT 7.0 .TP .B پارامترها (Parameters) \fBtext\fP \-\- نمایش BNF از گرامر شما. .UNINDENT .INDENT 7.0 .TP .B parse(code: str \% | bytes \% = None, *, error_recovery=True, path: PathLike \% | str \% = None, start_symbol: str \% = None, cache=False, diff_cache=False, cache_path: PathLike \% | str \% = None, file_io: FileIO = None) -> _NodeT اگر قصد تجزیه یک فایل پایتون را دارید، به احتمال زیاد باید از اینجا شروع کنید. .sp اگر به کنترل دقیق‌تری روی نمونه تجزیه‌شده نیاز دارید، روش‌های دیگری برای دسترسی به آن وجود خواهد داشت. .INDENT 7.0 .TP .B پارامترها (Parameters) .INDENT 7.0 .IP \(bu 2 \fBcode\fP (\fIstr\fP \%) \-\- یک رشته یونیکد یا بایت. هنگامی که امکان رمزگشایی بایت‌ها به رشته وجود نداشته باشد، یک \fBUnicodeDecodeError\fP \% بازمی‌گرداند\&. .IP \(bu 2 \fBerror_recovery\fP (\fIbool\fP \%) \-\- در صورت فعال بودن، هر کدی بازگردانده می‌شود. اگر کد نامعتبر باشد، به صورت یک گره خطا بازگردانده خواهد شد. در صورت غیرفعال بودن، هنگام مواجهه با خطاهای نحوی در کد خود با ParseError مواجه خواهید شد. .IP \(bu 2 \fBstart_symbol\fP (\fIstr\fP \%) \-\- قاعده گرامر (پایان‌ناپذیر یا nonterminal) که می‌خواهید تجزیه کنید. تنها زمانی مجاز به استفاده است که error_recovery برابر False باشد. .IP \(bu 2 \fBpath\fP (\fIstr\fP \%) \-\- مسیر فایلی که می‌خواهید باز کنید. فقط برای حافظه موقت (کش) مورد نیاز است. .IP \(bu 2 \fBcache\fP (\fIbool\fP \%) \-\- در صورت ارائه مسیر، رونوشتی از درخت تجزیه‌کننده را در حافظه RAM و دیسک نگه می‌دارد. در صورتی که فایل‌های متناظر روی دیسک تغییر نکرده باشند، درخت‌های کش‌شده را بازمی‌گرداند. توجه داشته باشید که این گزینه فایل‌های pickle را روی سیستم فایل شما ذخیره می‌کند (به عنوان مثال برای لینوکس در \fB~/.cache/parso/\fP). .IP \(bu 2 \fBdiff_cache\fP (\fIbool\fP \%) \-\- ماژول پایتون کش‌شده را با کد جدید مقایسه کرده (diff) و تلاش می‌کند تنها بخش‌هایی را که تغییر کرده‌اند تجزیه کند. همان ماژول (تغییریافته) موجود در کش را بازمی‌گرداند. استفاده از این گزینه مستلزم آن است که دیگر هیچ عملیاتی با ماژول‌های کش‌شده تحت آن مسیر انجام ندهید، زیرا محتویات آن ممکن است تغییر کند. این گزینه همچنان تا حدی آزمایشی است. اگر به پایداری نیاز دارید، لطفاً از آن استفاده نکنید. .IP \(bu 2 \fBcache_path\fP (\fIbool\fP \%) \-\- در صورت مشخص شدن، حافظه موقت parso را در این دایرکتوری ذخیره می‌کند. در صورت عدم تعیین، به مسیرهای کش پیش‌فرض در هر پلتفرم متوسل می‌شود. .UNINDENT .TP .B مقادیر بازگشتی (Returns) یک زیرکلاس از \fBparso.tree.NodeOrLeaf\fP \%<#\:parso\:.tree\:.NodeOrLeaf>\&. به طور معمول یک \fBparso.python.tree.Module\fP \%<#\:parso\:.python\:.tree\:.Module>\&. .UNINDENT .UNINDENT .INDENT 7.0 .TP .B iter_errors(node) با دریافت یک \fBparso.tree.NodeOrLeaf\fP \%<#\:parso\:.tree\:.NodeOrLeaf> یک مولد از اشیاء \fBparso.normalizer.Issue\fP بازمی‌گرداند. برای پایتون این یک فهرست از خطاهای نحوی/فاصله‌گذاری (syntax/indentation) است. .UNINDENT .INDENT 7.0 .TP .B refactor(base_node, node_to_str_map) .UNINDENT .UNINDENT .SS "بازیابی خطاها (Error Retrieval)" .sp کتابخانه \fIparso\fP قادر به یافتن چندین خطا در کد منبع شماست. پیمایش این خطاها نمونه‌های زیر را به دست می‌دهد: .INDENT 0.0 .TP .B class parso.normalizer.Issue(node, code, message) .INDENT 7.0 .TP .B code یک کد عدد صحیح که نوع خطا را نشان می‌دهد. .UNINDENT .INDENT 7.0 .TP .B message یک پیام (رشته) برای اشکال یا خطای مربوطه. .UNINDENT .INDENT 7.0 .TP .B start_pos موقعیت شروع خطا به صورت یک چندتایی (line, column). همانند همیشه در \fIparso\fP شماره خط اول ۱ و ستون اول ۰ است. .UNINDENT .UNINDENT .SS "ابزارهای کمکی (Utility)" .sp کتابخانه \fIparso\fP همچنین توابع کمکی مفیدی ارائه می‌دهد: .INDENT 0.0 .TP .B parso.parse(code=None, **kwargs) یک تابع کمکی برای اجتناب از بارگذاری دستی گرامرها. پارامترها در \fBparso.Grammar.parse()\fP مستند شده‌اند\&. .INDENT 7.0 .TP .B پارامترها (Parameters) \fBversion\fP (\fIstr\fP \%) \-\- نسخه‌ای که توسط \fBparso.load_grammar()\fP استفاده می‌شود\&. .UNINDENT .UNINDENT .INDENT 0.0 .TP .B parso.split_lines(string: str \%, keepends: bool \% = False) -> list \%[str \%] برای کدهای پایتون در نظر گرفته شده است. بر خلاف \fBstr.splitlines()\fP \% در پایتون، کاراکترهای پرش به صفحه جدید (form feeds) و سایر نویسه‌های خاص را به عنوان متن عادی در نظر می‌گیرد. فقط بر اساس \fB\en\fP و \fB\er\en\fP خطوط را جدا می‌کند\&. همچنین تفاوت دیگر: برای ورودی رشته خالی، \fB[\(dq\(dq]\fP بازمی‌گرداند. .sp در پایتون 2.7 هنگام استفاده از str.splitlines کاراکترهای form feed به عنوان نویسه‌های عادی استفاده می‌شدند. با این حال در پایتون ۳ تصمیمی گرفته شد که بر اساس form feed نیز جداسازی انجام شود. .UNINDENT .INDENT 0.0 .TP .B parso.python_bytes_to_unicode(source: str \% | bytes \%, encoding: str \% = \(aqutf\-8\(aq, errors: str \% = \(aqstrict\(aq) -> str \% وجود BOMهای یونیکد و اعلانات انکودینگ PEP 263 را بررسی می‌کند. سپس یک شیء یونیکد مشابه \fBbytes.decode()\fP \% بازمی‌گرداند\&. .INDENT 7.0 .TP .B پارامترها (Parameters) .INDENT 7.0 .IP \(bu 2 \fBencoding\fP \-\- مستندات \fBbytes.decode()\fP \% را ببینید. .IP \(bu 2 \fBerrors\fP \-\- مستندات \fBbytes.decode()\fP \% را ببینید. گزینه \fBerrors\fP می‌تواند \fB\(aqstrict\(aq\fP، \fB\(aqreplace\(aq\fP یا \fB\(aqignore\(aq\fP باشد\&. .UNINDENT .UNINDENT .UNINDENT .SS "پروژه‌های استفاده‌کننده (Used By)" .INDENT 0.0 .IP \(bu 2 کتابخانه jedi \% (که توسط IPython و بسیاری از افزونه‌های ویرایشگر استفاده می‌شود). .IP \(bu 2 ابزار mutmut \% (آزمون‌گر جهش یا mutation tester) .UNINDENT .SS "درخت تجزیه (Parser Tree)" .sp درخت تجزیه با فراخوانی \fBparso.Grammar.parse()\fP \%<#\:parso\:.Grammar\:.parse>\& بازگردانده می‌شود. .sp \fBیادداشت:\fP .INDENT 0.0 .INDENT 3.5 توجه داشته باشید که موقعیت‌ها در parso برای خطوط همیشه ۱-مبنا (1-based) و برای ستون‌ها صفر-مبنا (0-based) هستند. این بدان معناست که نخستین موقعیت در یک فایل (1, 0) است. .UNINDENT .UNINDENT .SS "کلاس‌های پایه درخت تجزیه (Parser Tree Base Classes)" .sp به‌طور کلی دو نوع کلاس وجود دارد که با آن‌ها سر و کار خواهید داشت: \fBparso.tree.Leaf\fP و \fBparso.tree.BaseNode\fP\&. .INDENT 0.0 .TP .B class parso.tree.BaseNode(children) Bases: \fBNodeOrLeaf\fP .sp کلاس پایه (super class) برای تمام گره‌ها. یک گره دارای فرزندان، یک نوع (type) و احتمالاً یک گره والد است. .INDENT 7.0 .TP .B children فهرستی از گره‌های فرزند \fBNodeOrLeaf\fP\&. .UNINDENT .INDENT 7.0 .TP .B property start_pos: Tuple \%[int \%, int \%] موقعیت آغازین پیشوند را به‌صورت یک تاپل بازمی‌گرداند؛ مانند \fI(3, 4)\fP\&. .INDENT 7.0 .TP .B تاپل بازگشتی از نوع عدد صحیح (Return tuple of int) (خط، ستون) .UNINDENT .UNINDENT .INDENT 7.0 .TP .B get_start_pos_of_prefix() موقعیت start_pos پیشوند را بازمی‌گرداند. این عملاً به این معنی است که end_pos آخرین پیشوند را بازمی‌گرداند. مقدار \fIget_start_pos_of_prefix()\fP برای پیشوند \fI+\fP در \fI2 + 1\fP برابر \fI(1, 1)\fP خواهد بود، در حالی که start_pos برابر \fI(1, 2)\fP است. .INDENT 7.0 .TP .B تاپل بازگشتی از نوع عدد صحیح (Return tuple of int) (خط، ستون) .UNINDENT .UNINDENT .INDENT 7.0 .TP .B property end_pos: Tuple \%[int \%, int \%] موقعیت پایانی پیشوند را به‌صورت یک تاپل بازمی‌گرداند؛ مانند \fI(3, 4)\fP\&. .INDENT 7.0 .TP .B تاپل بازگشتی از نوع عدد صحیح (Return tuple of int) (خط، ستون) .UNINDENT .UNINDENT .INDENT 7.0 .TP .B get_code(include_prefix=True) کدی را بازمی‌گرداند که ورودی تجزیه‌کننده برای این گره بوده است. .INDENT 7.0 .TP .B پارامترها (Parameters) \fBinclude_prefix\fP \-\- پیشوند (فاصله‌های خالی و کامنت‌ها) مثلاً یک عبارت را حذف می‌کند. .UNINDENT .UNINDENT .INDENT 7.0 .TP .B get_leaf_for_position(position, include_prefixes=False) برگ (\fBparso.tree.Leaf\fP) موجود در \fBposition\fP را دریافت می‌کند. .INDENT 7.0 .TP .B پارامترها (Parameters) .INDENT 7.0 .IP \(bu 2 \fBposition\fP (\fItuple\fP \%) \-\- یک تاپل موقعیت شامل خط، ستون. خطوط از ۱ شروع می‌شوند. .IP \(bu 2 \fBinclude_prefixes\fP (\fIbool\fP \%) \-\- در صورت \fBFalse\fP بودن، اگر \fBposition\fP روی فاصله‌های خالی یا کامنت‌های قبل از یک برگ قرار گیرد، \fBNone\fP بازگردانده می‌شود. .UNINDENT .TP .B مقادیر بازگشتی (Returns) شیء \fBparso.tree.Leaf\fP در \fBposition\fP یا \fBNone\fP .UNINDENT .UNINDENT .INDENT 7.0 .TP .B get_first_leaf() نخستین برگ یک گره یا خود شیء را در صورت برگ بودن بازمی‌گرداند. .UNINDENT .INDENT 7.0 .TP .B get_last_leaf() آخرین برگ یک گره یا خود شیء را در صورت برگ بودن بازمی‌گرداند. .UNINDENT .UNINDENT .INDENT 0.0 .TP .B class parso.tree.Leaf(value: str \%, start_pos: Tuple \%[int \%, int \%], prefix: str \% = \(aq\(aq) Bases: \fBNodeOrLeaf\fP .sp برگ‌ها اساساً توکن‌هایی با رابط برنامه‌نویسی (API) بهتر هستند. برگ‌ها دقیقاً می‌دانند در کجا تعریف شده‌اند و چه متنی پیش از آن‌ها قرار دارد. .INDENT 7.0 .TP .B value \fBstr()\fP مقدار توکن جاری. .UNINDENT .INDENT 7.0 .TP .B prefix: str \% \fBstr()\fP معمولاً ترکیبی از فاصله‌های خالی و کامنت‌ها؛ مواردی که از نظر نحوی برای درخت نحو بی‌اهمیت هستند. .UNINDENT .INDENT 7.0 .TP .B property start_pos: Tuple \%[int \%, int \%] موقعیت آغازین پیشوند را به‌صورت یک تاپل بازمی‌گرداند؛ مانند \fI(3, 4)\fP\&. .INDENT 7.0 .TP .B تاپل بازگشتی از نوع عدد صحیح (Return tuple of int) (خط، ستون) .UNINDENT .UNINDENT .INDENT 7.0 .TP .B get_start_pos_of_prefix() موقعیت start_pos پیشوند را بازمی‌گرداند. این عملاً به این معنی است که end_pos آخرین پیشوند را بازمی‌گرداند. مقدار \fIget_start_pos_of_prefix()\fP برای پیشوند \fI+\fP در \fI2 + 1\fP برابر \fI(1, 1)\fP خواهد بود، در حالی که start_pos برابر \fI(1, 2)\fP است. .INDENT 7.0 .TP .B تاپل بازگشتی از نوع عدد صحیح (Return tuple of int) (خط، ستون) .UNINDENT .UNINDENT .INDENT 7.0 .TP .B get_first_leaf() نخستین برگ یک گره یا خود شیء را در صورت برگ بودن بازمی‌گرداند. .UNINDENT .INDENT 7.0 .TP .B get_last_leaf() آخرین برگ یک گره یا خود شیء را در صورت برگ بودن بازمی‌گرداند. .UNINDENT .INDENT 7.0 .TP .B get_code(include_prefix=True) کدی را بازمی‌گرداند که ورودی تجزیه‌کننده برای این گره بوده است. .INDENT 7.0 .TP .B پارامترها (Parameters) \fBinclude_prefix\fP \-\- پیشوند (فاصله‌های خالی و کامنت‌ها) مثلاً یک عبارت را حذف می‌کند. .UNINDENT .UNINDENT .INDENT 7.0 .TP .B property end_pos: Tuple \%[int \%, int \%] موقعیت پایانی پیشوند را به‌صورت یک تاپل بازمی‌گرداند؛ مانند \fI(3, 4)\fP\&. .INDENT 7.0 .TP .B تاپل بازگشتی از نوع عدد صحیح (Return tuple of int) (خط، ستون) .UNINDENT .UNINDENT .UNINDENT .sp تمام گره‌ها و برگ‌ها دارای این متدها و خصوصیات هستند: .INDENT 0.0 .TP .B class parso.tree.NodeOrLeaf Bases: \fBobject\fP \% .sp کلاس پایه برای گره‌ها و برگ‌ها. .INDENT 7.0 .TP .B type: str \% نوع یک رشته است که معمولاً با انواع فایل گرامر مطابقت دارد. .UNINDENT .INDENT 7.0 .TP .B parent: BaseNode \%<#\:parso\:.tree\:.BaseNode> | None \% گره والد (\fBBaseNode\fP) این گره یا برگ. در صورت ریشه بودن گره، مقدار آن None خواهد بود. .UNINDENT .INDENT 7.0 .TP .B get_root_node() گره ریشه یک درخت تجزیه را بازمی‌گرداند. گره بازگردانده‌شده بر خلاف سایر گره‌ها و برگ‌ها گره والد ندارد. .UNINDENT .INDENT 7.0 .TP .B get_next_sibling() گره‌ای را بازمی‌گرداند که بلافاصله پس از این گره در فهرست فرزندان والد آن قرار دارد. اگر این گره هم‌نیای بعدی نداشته باشد، None است. .UNINDENT .INDENT 7.0 .TP .B get_previous_sibling() گره‌ای را بازمی‌گرداند که بلافاصله پیش از این گره در فهرست فرزندان والد آن قرار دارد. اگر این گره هم‌نیای قبلی نداشته باشد، None است. .UNINDENT .INDENT 7.0 .TP .B get_previous_leaf() برگ قبلی در درخت تجزیه را بازمی‌گرداند. اگر این عنصر نخستین عنصر در درخت تجزیه باشد، \fINone\fP بازمی‌گرداند. .UNINDENT .INDENT 7.0 .TP .B get_next_leaf() برگ بعدی در درخت تجزیه را بازمی‌گرداند. اگر این عنصر آخرین عنصر در درخت تجزیه باشد، None بازمی‌گرداند. .UNINDENT .INDENT 7.0 .TP .B abstract property start_pos: Tuple \%[int \%, int \%] موقعیت آغازین پیشوند را به‌صورت یک تاپل بازمی‌گرداند؛ مانند \fI(3, 4)\fP\&. .INDENT 7.0 .TP .B تاپل بازگشتی از نوع عدد صحیح (Return tuple of int) (خط، ستون) .UNINDENT .UNINDENT .INDENT 7.0 .TP .B abstract property end_pos: Tuple \%[int \%, int \%] موقعیت پایانی پیشوند را به‌صورت یک تاپل بازمی‌گرداند؛ مانند \fI(3, 4)\fP\&. .INDENT 7.0 .TP .B تاپل بازگشتی از نوع عدد صحیح (Return tuple of int) (خط، ستون) .UNINDENT .UNINDENT .INDENT 7.0 .TP .B abstractmethod get_start_pos_of_prefix() موقعیت start_pos پیشوند را بازمی‌گرداند. این عملاً به این معنی است که end_pos آخرین پیشوند را بازمی‌گرداند. مقدار \fIget_start_pos_of_prefix()\fP برای پیشوند \fI+\fP در \fI2 + 1\fP برابر \fI(1, 1)\fP خواهد بود، در حالی که start_pos برابر \fI(1, 2)\fP است. .INDENT 7.0 .TP .B تاپل بازگشتی از نوع عدد صحیح (Return tuple of int) (خط، ستون) .UNINDENT .UNINDENT .INDENT 7.0 .TP .B abstractmethod get_first_leaf() نخستین برگ یک گره یا خود شیء را در صورت برگ بودن بازمی‌گرداند. .UNINDENT .INDENT 7.0 .TP .B abstractmethod get_last_leaf() آخرین برگ یک گره یا خود شیء را در صورت برگ بودن بازمی‌گرداند. .UNINDENT .INDENT 7.0 .TP .B abstractmethod get_code(include_prefix=True) کدی را بازمی‌گرداند که ورودی تجزیه‌کننده برای این گره بوده است. .INDENT 7.0 .TP .B پارامترها (Parameters) \fBinclude_prefix\fP \-\- پیشوند (فاصله‌های خالی و کامنت‌ها) مثلاً یک عبارت را حذف می‌کند. .UNINDENT .UNINDENT .INDENT 7.0 .TP .B search_ancestor(*node_types: str \%) -> BaseNode \%<#\:parso\:.tree\:.BaseNode> | None \% به‌صورت بازگشتی والدین این گره یا برگ را بررسی می‌کند و نخستین گره یافت‌شده منطبق با \fBnode_types\fP را بازمی‌گرداند. در صورت نیافتن گره منطبق، مقدار \fBNone\fP بازگردانده می‌شود. .INDENT 7.0 .TP .B پارامترها (Parameters) \fBnode_types\fP \-\- نام انواعی که جستجو می‌شوند. .UNINDENT .UNINDENT .INDENT 7.0 .TP .B dump(*, indent: int \% | str \% | None \% = 4) -> str \% یک خروجی ساختاریافته (dump) از درخت تجزیه به ریشه این گره یا برگ بازمی‌گرداند. این قابلیت عمدتاً برای مقاصد اشکال‌زدایی مفید است. .sp پارامتر \fBindent\fP مشابه با \fBast.dump()\fP \%\& تفسیر می‌شود. اگر \fBindent\fP یک عدد صحیح غیرمنفی یا رشته باشد، درخت با آن سطح تورفتگی به‌صورت خوانا (pretty-print) نمایش داده می‌شود. سطح تورفتگی صفر، منفی یا \fB\(dq\(dq\fP تنها خط جدید درج می‌کند. مقدار \fBNone\fP نمایش تک‌خطی را انتخاب می‌کند. استفاده از یک عدد صحیح مثبت به همان تعداد فاصله در هر سطح تورفتگی ایجاد می‌کند. اگر \fBindent\fP یک رشته باشد (مانند \fB\(dq\et\(dq\fP)، از آن رشته برای تورفتگی هر سطح استفاده می‌شود. .INDENT 7.0 .TP .B پارامترها (Parameters) \fBindent\fP \-\- سبک تورفتگی همان‌طور که در بالا توضیح داده شد. تورفتگی پیش‌فرض ۴ فاصله است که خروجی مرتب و خوانایی تولید می‌کند. .UNINDENT .sp .EX >>> import parso >>> print(parso.parse(\(dqlambda x, y: x + y\(dq).dump()) Module([ Lambda([ Keyword(\(aqlambda\(aq, (1, 0)), Param([ Name(\(aqx\(aq, (1, 7), prefix=\(aq \(aq), Operator(\(aq,\(aq, (1, 8)), ]), Param([ Name(\(aqy\(aq, (1, 10), prefix=\(aq \(aq), ]), Operator(\(aq:\(aq, (1, 11)), PythonNode(\(aqarith_expr\(aq, [ Name(\(aqx\(aq, (1, 13), prefix=\(aq \(aq), Operator(\(aq+\(aq, (1, 15), prefix=\(aq \(aq), Name(\(aqy\(aq, (1, 17), prefix=\(aq \(aq), ]), ]), EndMarker(\(aq\(aq, (1, 18)), ]) .EE .UNINDENT .UNINDENT .SS "درخت تجزیه پایتون (Python Parser Tree)" .sp این درخت نحو برای نحوهای پایتون ۳ است. کلاس‌ها عناصر نحوی مانند توابع و دستورات وارد کردن (imports) را نشان می‌دهند. .sp تمامی گره‌ها را می‌توان تا فایل گرامر پایتون \%\& ردیابی کرد. اگر می‌خواهید بدانید یک درخت چگونه ساختار یافته است، کافی است آن فایل را بررسی کنید (که برای هر نسخه پایتون کمی متفاوت است). .sp منطق زیادی در اینجا پیاده شده است که کار با درخت نحو پایتون را برای Jedi (و سایر کتابخانه‌ها) ساده‌تر می‌کند. .sp با استفاده از \fBparso.tree.NodeOrLeaf.get_code()\fP روی یک ماژول، می‌توانید نمایش متناظر یک‌به‌یک ورودی داده‌شده به تجزیه‌کننده را دریافت کنید. این ویژگی هنگام بازآفرینی (refactor) یک درخت تجزیه بسیار مهم است. .sp .EX >>> from parso import parse >>> parser = parse(\(aqimport os\(aq) >>> module = parser.get_root_node() >>> module .EE .sp هر زیرکلاسی از \fBScope\fP، از جمله \fBModule\fP، دارای مشخصه \fBiter_imports\fP است: .sp .EX >>> list(module.iter_imports()) [] .EE .SS "تغییرات در گرامر پایتون (Changes to the Python Grammar)" .sp با بررسی فایل‌های گرامر پایتون، چند مورد تغییر کرده است: .INDENT 0.0 .IP \(bu 2 کلاس \fBParam\fP در فایل‌های گرامر پایتون وجود ندارد؛ این بخش در اصل جزئی از یک گره \fBparameters\fP است. کتابخانه \fIparso\fP آن را تفکیک می‌کند تا تحلیل پارامترها آسان‌تر شود. با این حال این کار تنها تعامل با درخت نحو را راحت‌تر می‌کند و نحو معتبر را تغییر نمی‌دهد. .IP \(bu 2 چند گره مانند \fIlambdef\fP و \fIlambdef_nocond\fP در درخت نحو ادغام شده‌اند تا کار با آن‌ها ساده‌تر گردد. .UNINDENT.SS "کلاس‌های درخت تجزیه (Parser Tree Classes)" .INDENT 0.0 .TP .B class parso.python.tree.DocstringMixin Bases: \fBobject\fP \% .INDENT 7.0 .TP .B type: str \% .UNINDENT .INDENT 7.0 .TP .B children: list \%[Any \%] .UNINDENT .INDENT 7.0 .TP .B parent: Any \% .UNINDENT .INDENT 7.0 .TP .B get_doc_node() برگ رشته‌ای یک docstring را بازمی‌گرداند؛ مانند \fBr\(aq\(aq\(aqfoo\(aq\(aq\(aq\fP\&. .UNINDENT .UNINDENT .INDENT 0.0 .TP .B class parso.python.tree.PythonMixin Bases: \fBobject\fP \% .sp برخی ابزارهای کمکی ویژه پایتون. .INDENT 7.0 .TP .B children: list \%[Any \%] .UNINDENT .INDENT 7.0 .TP .B get_name_of_position(position) با دریافت یک تاپل (خط، ستون)، شیء \fBName\fP مربوطه را بازمی‌گرداند یا اگر نامی در آن موقعیت وجود نداشته باشد مقدار \fBNone\fP بازمی‌گرداند. .UNINDENT .UNINDENT .INDENT 0.0 .TP .B class parso.python.tree.PythonLeaf(value: str \%, start_pos: Tuple \%[int \%, int \%], prefix: str \% = \(aq\(aq) Bases: \fBPythonMixin\fP, \fBLeaf\fP .INDENT 7.0 .TP .B get_start_pos_of_prefix() اساساً متد \fBparso.tree.NodeOrLeaf.get_start_pos_of_prefix()\fP را فراخوانی می‌کند. .UNINDENT .UNINDENT .INDENT 0.0 .TP .B class parso.python.tree.PythonBaseNode(children) Bases: \fBPythonMixin\fP, \fBBaseNode\fP .UNINDENT .INDENT 0.0 .TP .B class parso.python.tree.PythonNode(type, children) Bases: \fBPythonMixin\fP, \fBNode\fP .UNINDENT .INDENT 0.0 .TP .B class parso.python.tree.PythonErrorNode(children) Bases: \fBPythonMixin\fP, \fBErrorNode\fP .UNINDENT .INDENT 0.0 .TP .B class parso.python.tree.PythonErrorLeaf(token_type, value, start_pos, prefix=\(aq\(aq) Bases: \fBErrorLeaf\fP, \fBPythonLeaf\fP .UNINDENT .INDENT 0.0 .TP .B class parso.python.tree.EndMarker(value: str \%, start_pos: Tuple \%[int \%, int \%], prefix: str \% = \(aq\(aq) Bases: \fB_LeafWithoutNewlines\fP .INDENT 7.0 .TP .B type: str \% = \(aqendmarker\(aq نوع یک رشته است که معمولاً با انواع فایل گرامر مطابقت دارد. .UNINDENT .UNINDENT .INDENT 0.0 .TP .B class parso.python.tree.Newline(value: str \%, start_pos: Tuple \%[int \%, int \%], prefix: str \% = \(aq\(aq) Bases: \fBPythonLeaf\fP .sp حاوی توکن‌های NEWLINE و ENDMARKER است. .INDENT 7.0 .TP .B type: str \% = \(aqnewline\(aq نوع یک رشته است که معمولاً با انواع فایل گرامر مطابقت دارد. .UNINDENT .UNINDENT .INDENT 0.0 .TP .B class parso.python.tree.Name(value: str \%, start_pos: Tuple \%[int \%, int \%], prefix: str \% = \(aq\(aq) Bases: \fB_LeafWithoutNewlines\fP .sp یک رشته. گاهی اوقات مهم است بدانیم آیا رشته متعلق به یک نام (شناسه) است یا خیر. .INDENT 7.0 .TP .B type: str \% = \(aqname\(aq نوع یک رشته است که معمولاً با انواع فایل گرامر مطابقت دارد. .UNINDENT .INDENT 7.0 .TP .B is_definition(include_setitem=False) در صورتی که نام در حال تعریف شدن باشد مقدار True بازمی‌گرداند. .UNINDENT .INDENT 7.0 .TP .B get_definition(import_name_always=False, include_setitem=False) اگر تعریفی برای نام وجود نداشته باشد مقدار None بازمی‌گرداند. .INDENT 7.0 .TP .B پارامترها (Parameters) \fBimport_name_always\fP \-\- مشخص می‌کند که آیا نام واردشده (import name) همیشه یک تعریف به حساب می‌آید یا خیر. به طور معمول foo در عبارت \fIfrom foo import bar\fP یک تعریف نیست. .UNINDENT .UNINDENT .UNINDENT .INDENT 0.0 .TP .B class parso.python.tree.Literal(value: str \%, start_pos: Tuple \%[int \%, int \%], prefix: str \% = \(aq\(aq) Bases: \fBPythonLeaf\fP .UNINDENT .INDENT 0.0 .TP .B class parso.python.tree.Number(value: str \%, start_pos: Tuple \%[int \%, int \%], prefix: str \% = \(aq\(aq) Bases: \fBLiteral\fP .INDENT 7.0 .TP .B type: str \% = \(aqnumber\(aq نوع یک رشته است که معمولاً با انواع فایل گرامر مطابقت دارد. .UNINDENT .UNINDENT .INDENT 0.0 .TP .B class parso.python.tree.String(value: str \%, start_pos: Tuple \%[int \%, int \%], prefix: str \% = \(aq\(aq) Bases: \fBLiteral\fP .INDENT 7.0 .TP .B type: str \% = \(aqstring\(aq نوع یک رشته است که معمولاً با انواع فایل گرامر مطابقت دارد. .UNINDENT .INDENT 7.0 .TP .B property string_prefix .UNINDENT .UNINDENT .INDENT 0.0 .TP .B class parso.python.tree.FStringString(value: str \%, start_pos: Tuple \%[int \%, int \%], prefix: str \% = \(aq\(aq) Bases: \fBPythonLeaf\fP .sp رشته‌های قالب‌بندی‌شده (f-strings) حاوی عبارات f-string و رشته‌های عادی پایتون هستند. این کلاس بخش‌های رشته‌ای f-stringها را نشان می‌دهد. .INDENT 7.0 .TP .B type: str \% = \(aqfstring_string\(aq نوع یک رشته است که معمولاً با انواع فایل گرامر مطابقت دارد. .UNINDENT .UNINDENT .INDENT 0.0 .TP .B class parso.python.tree.FStringStart(value: str \%, start_pos: Tuple \%[int \%, int \%], prefix: str \% = \(aq\(aq) Bases: \fBPythonLeaf\fP .sp رشته‌های قالب‌بندی‌شده (f-strings) حاوی عبارات f-string و رشته‌های عادی پایتون هستند. این کلاس بخش آغازین f-stringها را نشان می‌دهد. .INDENT 7.0 .TP .B type: str \% = \(aqfstring_start\(aq نوع یک رشته است که معمولاً با انواع فایل گرامر مطابقت دارد. .UNINDENT .UNINDENT .INDENT 0.0 .TP .B class parso.python.tree.FStringEnd(value: str \%, start_pos: Tuple \%[int \%, int \%], prefix: str \% = \(aq\(aq) Bases: \fBPythonLeaf\fP .sp رشته‌های قالب‌بندی‌شده (f-strings) حاوی عبارات f-string و رشته‌های عادی پایتون هستند. این کلاس بخش پایانی f-stringها را نشان می‌دهد. .INDENT 7.0 .TP .B type: str \% = \(aqfstring_end\(aq نوع یک رشته است که معمولاً با انواع فایل گرامر مطابقت دارد. .UNINDENT .UNINDENT .INDENT 0.0 .TP .B class parso.python.tree.Operator(value: str \%, start_pos: Tuple \%[int \%, int \%], prefix: str \% = \(aq\(aq) Bases: \fB_LeafWithoutNewlines\fP, \fB_StringComparisonMixin\fP .INDENT 7.0 .TP .B type: str \% = \(aqoperator\(aq نوع یک رشته است که معمولاً با انواع فایل گرامر مطابقت دارد. .UNINDENT .UNINDENT .INDENT 0.0 .TP .B class parso.python.tree.Keyword(value: str \%, start_pos: Tuple \%[int \%, int \%], prefix: str \% = \(aq\(aq) Bases: \fB_LeafWithoutNewlines\fP, \fB_StringComparisonMixin\fP .INDENT 7.0 .TP .B type: str \% = \(aqkeyword\(aq نوع یک رشته است که معمولاً با انواع فایل گرامر مطابقت دارد. .UNINDENT .UNINDENT .INDENT 0.0 .TP .B class parso.python.tree.Scope(children) Bases: \fBPythonBaseNode\fP, \fBDocstringMixin\fP .sp کلاس والد برای درخت تجزیه که وضعیت یک فایل متنی پایتون را نشان می‌دهد. یک محدوده (Scope) یا یک تابع، کلاس یا لامبدا (lambda) است. .INDENT 7.0 .TP .B iter_funcdefs() تولیدکننده‌ای (generator) از گره‌های \fIfuncdef\fP بازمی‌گرداند. .UNINDENT .INDENT 7.0 .TP .B iter_classdefs() تولیدکننده‌ای از گره‌های \fIclassdef\fP بازمی‌گرداند. .UNINDENT .INDENT 7.0 .TP .B iter_imports() تولیدکننده‌ای از گره‌های \fIimport_name\fP و \fIimport_from\fP بازمی‌گرداند. .UNINDENT .INDENT 7.0 .TP .B get_suite() بخشی را که توسط تابع اجرا می‌شود بازمی‌گرداند. .UNINDENT .UNINDENT .INDENT 0.0 .TP .B class parso.python.tree.Module(children) Bases: \fBScope\fP .sp بالاترین محدوده (top scope) که همیشه یک ماژول است. بسته به تجزیه‌کننده زیرین، این ممکن است یک ماژول کامل یا تنها بخشی از یک ماژول باشد. .INDENT 7.0 .TP .B type: str \% = \(aqfile_input\(aq نوع یک رشته است که معمولاً با انواع فایل گرامر مطابقت دارد. .UNINDENT .INDENT 7.0 .TP .B get_used_names() تمام برگ‌های \fBName\fP موجود در این ماژول را بازمی‌گرداند. این شامل هر دو مورد تعاریف و ارجاعات نام‌ها می‌شود. .UNINDENT .UNINDENT .INDENT 0.0 .TP .B class parso.python.tree.Decorator(children) Bases: \fBPythonBaseNode\fP .INDENT 7.0 .TP .B type: str \% = \(aqdecorator\(aq نوع یک رشته است که معمولاً با انواع فایل گرامر مطابقت دارد. .UNINDENT .UNINDENT .INDENT 0.0 .TP .B class parso.python.tree.ClassOrFunc(children) Bases: \fBScope\fP .INDENT 7.0 .TP .B property name برگ \fIName\fP را بازمی‌گرداند که نام تابع یا کلاس را تعریف می‌کند. .UNINDENT .INDENT 7.0 .TP .B get_decorators() .INDENT 7.0 .TP .B نوع بازگشتی (Return type) فهرستی از \fBDecorator\fP .UNINDENT .UNINDENT .UNINDENT.INDENT 0.0 .TP .B class parso.python.tree.Class(children) Bases: \fBClassOrFunc\fP .sp برای ذخیره محتوای تجزیه‌شده یک کلاس پایتون استفاده می‌شود. .INDENT 7.0 .TP .B type: str \% = \(aqclassdef\(aq نوع یک رشته است که معمولاً با انواع فایل گرامر مطابقت دارد. .UNINDENT .INDENT 7.0 .TP .B get_super_arglist() گره \fIarglist\fP را که کلاس‌های والد (super classes) را تعریف می‌کند بازمی‌گرداند. در صورت نبود آرگومان، مقدار None بازمی‌گرداند. .UNINDENT .UNINDENT .INDENT 0.0 .TP .B class parso.python.tree.Function(children) Bases: \fBClassOrFunc\fP .sp برای ذخیره محتوای تجزیه‌شده یک تابع پایتون استفاده می‌شود. .sp فرزندان: .INDENT 7.0 .INDENT 3.5 .sp .EX 0. 1. 2. فهرست پارامترها (شامل عملگرهای پرانتز باز و بسته) 3. یا 5. 4. یا 6. Node() که بدنه تابع را نشان می‌دهد 3. \-> (در صورت وجود یادداشت نوع) 4. یادداشت نوع (در صورت وجود) .EE .UNINDENT .UNINDENT .INDENT 7.0 .TP .B type: str \% = \(aqfuncdef\(aq نوع یک رشته است که معمولاً با انواع فایل گرامر مطابقت دارد. .UNINDENT .INDENT 7.0 .TP .B get_params() فهرستی از \fIParam()\fP بازمی‌گرداند. .UNINDENT .INDENT 7.0 .TP .B property name برگ \fIName\fP را بازمی‌گرداند که نام تابع یا کلاس را تعریف می‌کند. .UNINDENT .INDENT 7.0 .TP .B iter_yield_exprs() تولیدکننده‌ای از \fIyield_expr\fP بازمی‌گرداند. .UNINDENT .INDENT 7.0 .TP .B iter_return_stmts() تولیدکننده‌ای از \fIreturn_stmt\fP بازمی‌گرداند. .UNINDENT .INDENT 7.0 .TP .B iter_raise_stmts() تولیدکننده‌ای از \fIraise_stmt\fP بازمی‌گرداند؛ شامل عبارات raise درون بلوک‌های try\-except. .UNINDENT .INDENT 7.0 .TP .B is_generator() .INDENT 7.0 .TP .B مقدار بولی بازگشتی (Return bool) بررسی می‌کند که آیا تابع یک مولد (generator) است یا خیر. .UNINDENT .UNINDENT .INDENT 7.0 .TP .B property annotation گره آزمون (test node) پس از \fI\->\fP یا در صورت عدم وجود یادداشت نوع، \fINone\fP را بازمی‌گرداند. .UNINDENT .UNINDENT .INDENT 0.0 .TP .B class parso.python.tree.Lambda(children) Bases: \fBFunction\fP .sp توابع لامبدا (Lambdas) اساساً توابع خلاصه‌شده هستند، بنابراین همان رابط را ارائه می‌دهند. .sp فرزندان: .INDENT 7.0 .INDENT 3.5 .sp .EX 0. *. به ازای هر آرگومان x \-2. \-1. Node() نشان‌دهنده بدنه .EE .UNINDENT .UNINDENT .INDENT 7.0 .TP .B type: str \% = \(aqlambdef\(aq نوع یک رشته است که معمولاً با انواع فایل گرامر مطابقت دارد. .UNINDENT .INDENT 7.0 .TP .B property name خطای AttributeError ایجاد می‌کند؛ لامبداها نام تعریف‌شده‌ای ندارند. .UNINDENT .INDENT 7.0 .TP .B property annotation مقدار \fINone\fP بازمی‌گرداند؛ لامبداها یادداشت نوع ندارند. .UNINDENT .UNINDENT .INDENT 0.0 .TP .B class parso.python.tree.Flow(children) Bases: \fBPythonBaseNode\fP .UNINDENT .INDENT 0.0 .TP .B class parso.python.tree.IfStmt(children) Bases: \fBFlow\fP .INDENT 7.0 .TP .B type: str \% = \(aqif_stmt\(aq نوع یک رشته است که معمولاً با انواع فایل گرامر مطابقت دارد. .UNINDENT .INDENT 7.0 .TP .B get_test_nodes() به عنوان مثال تمام گره‌های \fItest\fP را که در زیر به نام x آمده‌اند بازمی‌گرداند: .INDENT 7.0 .INDENT 3.5 .INDENT 0.0 .TP .B if x: pass .TP .B elif x: pass .UNINDENT .UNINDENT .UNINDENT .UNINDENT .INDENT 7.0 .TP .B get_corresponding_test_node(node) شاخه‌ای را که گره در آن قرار دارد جستجو کرده و گره آزمون متناظر را بازمی‌گرداند (به تابع بالا مراجعه کنید). با این حال اگر گره در خود گره آزمون باشد و نه در بلوک اجرایی (suite)، مقدار None بازمی‌گرداند. .UNINDENT .INDENT 7.0 .TP .B is_node_after_else(node) بررسی می‌کند که آیا یک گره پس از \fIelse\fP تعریف شده است یا خیر. .UNINDENT .UNINDENT .INDENT 0.0 .TP .B class parso.python.tree.WhileStmt(children) Bases: \fBFlow\fP .INDENT 7.0 .TP .B type: str \% = \(aqwhile_stmt\(aq نوع یک رشته است که معمولاً با انواع فایل گرامر مطابقت دارد. .UNINDENT .UNINDENT .INDENT 0.0 .TP .B class parso.python.tree.ForStmt(children) Bases: \fBFlow\fP .INDENT 7.0 .TP .B type: str \% = \(aqfor_stmt\(aq نوع یک رشته است که معمولاً با انواع فایل گرامر مطابقت دارد. .UNINDENT .INDENT 7.0 .TP .B get_testlist() گره ورودی \fBy\fP را از عبارت \fBfor x in y:\fP بازمی‌گرداند. .UNINDENT .INDENT 7.0 .TP .B get_defined_names(include_setitem=False) .UNINDENT .UNINDENT .INDENT 0.0 .TP .B class parso.python.tree.TryStmt(children) Bases: \fBFlow\fP .INDENT 7.0 .TP .B type: str \% = \(aqtry_stmt\(aq نوع یک رشته است که معمولاً با انواع فایل گرامر مطابقت دارد. .UNINDENT .INDENT 7.0 .TP .B get_except_clause_tests() گره‌های \fBtest\fP یافت‌شده در گره‌های \fBexcept_clause\fP را بازمی‌گرداند. برای بندهای except بدون مشخص کردن استثنا، مقدار \fB[None]\fP بازمی‌گرداند. .UNINDENT .UNINDENT .INDENT 0.0 .TP .B class parso.python.tree.WithStmt(children) Bases: \fBFlow\fP .INDENT 7.0 .TP .B type: str \% = \(aqwith_stmt\(aq نوع یک رشته است که معمولاً با انواع فایل گرامر مطابقت دارد. .UNINDENT .INDENT 7.0 .TP .B get_defined_names(include_setitem=False) فهرستی از \fIName\fP را که عبارت with تعریف می‌کند بازمی‌گرداند. نام‌های تعریف‌شده پس از \fIas\fP قرار می‌گیرند. .UNINDENT .INDENT 7.0 .TP .B get_test_node_from_name(name) .UNINDENT .UNINDENT .INDENT 0.0 .TP .B class parso.python.tree.Import(children) Bases: \fBPythonBaseNode\fP .INDENT 7.0 .TP .B get_paths: Any \% .UNINDENT .INDENT 7.0 .TP .B get_path_for_name(name) مسیر، فهرستی از نام‌ها است که به نام مورد جستجو منتهی می‌شود. .INDENT 7.0 .TP .B فهرستی از Name (Return list of Name) .UNINDENT .UNINDENT .INDENT 7.0 .TP .B is_nested() .UNINDENT .INDENT 7.0 .TP .B is_star_import() .UNINDENT .INDENT 7.0 .TP .B get_defined_names() .UNINDENT .UNINDENT.INDENT 0.0 .TP .B class parso.python.tree.ImportFrom(children) Bases: \fBImport\fP .INDENT 7.0 .TP .B type: str \% = \(aqimport_from\(aq نوع یک رشته است که معمولاً با انواع فایل گرامر مطابقت دارد. .UNINDENT .INDENT 7.0 .TP .B get_defined_names(include_setitem=False) فهرستی از \fIName\fP را که دستور import تعریف می‌کند بازمی‌گرداند. نام‌های تعریف‌شده پس از \fIimport\fP قرار می‌گیرند یا در صورت وجود نام مستعار \- \fIas\fP \- آن نام بازگردانده می‌شود. .UNINDENT .INDENT 7.0 .TP .B get_from_names() .UNINDENT .INDENT 7.0 .TP .B property level پارامتر level در متد \fB__import__\fP\&. .UNINDENT .INDENT 7.0 .TP .B get_paths() مسیرهای وارد کردن تعریف‌شده در یک عبارت import. معمولاً آرایه‌ای شبیه به این است: \fB[, ]\fP\&. .INDENT 7.0 .TP .B فهرستی از فهرست‌های Name (Return list of list of Name) .UNINDENT .UNINDENT .UNINDENT .INDENT 0.0 .TP .B class parso.python.tree.ImportName(children) Bases: \fBImport\fP .sp برای گره‌های \fBimport_name\fP. دستورات وارد کردن عادی بدون \fBfrom\fP را پوشش می‌دهد. .INDENT 7.0 .TP .B type: str \% = \(aqimport_name\(aq نوع یک رشته است که معمولاً با انواع فایل گرامر مطابقت دارد. .UNINDENT .INDENT 7.0 .TP .B get_defined_names(include_setitem=False) فهرستی از \fIName\fP را که دستور import تعریف می‌کند بازمی‌گرداند. نام تعریف‌شده همیشه نخستین نام پس از \fIimport\fP است یا در صورت وجود نام مستعار \- \fIas\fP \- آن نام بازگردانده می‌شود. .UNINDENT .INDENT 7.0 .TP .B property level پارامتر level در متد \fB__import__\fP\&. .UNINDENT .INDENT 7.0 .TP .B get_paths() .UNINDENT .INDENT 7.0 .TP .B is_nested() حالت خاص وارد کردن‌های تو در تو، بدون نام مستعار و بدون دستور from را بررسی می‌کند: .INDENT 7.0 .INDENT 3.5 .sp .EX import foo.bar .EE .UNINDENT .UNINDENT .UNINDENT .UNINDENT .INDENT 0.0 .TP .B class parso.python.tree.KeywordStatement(children) Bases: \fBPythonBaseNode\fP .sp برای عبارات زیر: \fIassert\fP، \fIdel\fP، \fIglobal\fP، \fInonlocal\fP، \fIraise\fP، \fIreturn\fP، \fIyield\fP\&. .sp کلمات کلیدی \fIpass\fP، \fIcontinue\fP و \fIbreak\fP در اینجا قرار ندارند، زیرا فقط کلمات کلیدی ساده هستند و تجزیه‌کننده آن‌ها را به یک کلمه کلیدی تقلیل می‌دهد. .INDENT 7.0 .TP .B property type دستورات کلمه کلیدی با کلمه کلیدی شروع شده و با \fI_stmt\fP پایان می‌یابند. می‌توانید این موضوع را با گرامر پایتون مطابقت دهید. .UNINDENT .INDENT 7.0 .TP .B property keyword .UNINDENT .INDENT 7.0 .TP .B get_defined_names(include_setitem=False) .UNINDENT .UNINDENT .INDENT 0.0 .TP .B class parso.python.tree.AssertStmt(children) Bases: \fBKeywordStatement\fP .INDENT 7.0 .TP .B property assertion .UNINDENT .UNINDENT .INDENT 0.0 .TP .B class parso.python.tree.GlobalStmt(children) Bases: \fBKeywordStatement\fP .INDENT 7.0 .TP .B get_global_names() .UNINDENT .UNINDENT .INDENT 0.0 .TP .B class parso.python.tree.ReturnStmt(children) Bases: \fBKeywordStatement\fP .UNINDENT .INDENT 0.0 .TP .B class parso.python.tree.YieldExpr(children) Bases: \fBPythonBaseNode\fP .INDENT 7.0 .TP .B type: str \% = \(aqyield_expr\(aq نوع یک رشته است که معمولاً با انواع فایل گرامر مطابقت دارد. .UNINDENT .UNINDENT .INDENT 0.0 .TP .B class parso.python.tree.ExprStmt(children) Bases: \fBPythonBaseNode\fP, \fBDocstringMixin\fP .INDENT 7.0 .TP .B type: str \% = \(aqexpr_stmt\(aq نوع یک رشته است که معمولاً با انواع فایل گرامر مطابقت دارد. .UNINDENT .INDENT 7.0 .TP .B get_defined_names(include_setitem=False) فهرستی از \fIName\fP تعریف‌شده قبل از علامت \fI=\fP را بازمی‌گرداند. .UNINDENT .INDENT 7.0 .TP .B get_rhs() سمت راست (right\-hand\-side) علامت مساوی را بازمی‌گرداند. .UNINDENT .INDENT 7.0 .TP .B yield_operators() تولیدکننده‌ای از عملگرهای \fI+=\fP، \fI=\fP و غیره یا در صورت نبود هیچ عملیاتی None بازمی‌گرداند. .UNINDENT .UNINDENT .INDENT 0.0 .TP .B class parso.python.tree.NamedExpr(children) Bases: \fBPythonBaseNode\fP .INDENT 7.0 .TP .B type: str \% = \(aqnamedexpr_test\(aq نوع یک رشته است که معمولاً با انواع فایل گرامر مطابقت دارد. .UNINDENT .INDENT 7.0 .TP .B get_defined_names(include_setitem=False) .UNINDENT .UNINDENT .INDENT 0.0 .TP .B class parso.python.tree.Param(children, parent=None) Bases: \fBPythonBaseNode\fP .sp یک کلاس کمکی است که منطق کار با پارامترها را بسیار آسان‌تر می‌کند. گرامر پایتون هیچ گره \fBparam\fP مستقلی تعریف نمی‌کند، بلکه آن را به شیوه‌ای دیگر تعریف می‌کند که برای کار با پارامترها چندان مناسب نیست. .INDENT 7.0 .TP .B type: str \% = \(aqparam\(aq نوع یک رشته است که معمولاً با انواع فایل گرامر مطابقت دارد. .UNINDENT .INDENT 7.0 .TP .B property star_count برای \fIfoo\fP برابر \fI0\fP، برای \fI*foo\fP برابر \fI1\fP یا برای \fI**foo\fP برابر \fI2\fP است. .UNINDENT .INDENT 7.0 .TP .B property default مقدار پیش‌فرض، گره آزمونی است که پس از \fI=\fP ظاهر می‌شود. در صورت عدم وجود مقدار پیش‌فرض، برابر \fINone\fP است. .UNINDENT .INDENT 7.0 .TP .B property annotation گره آزمونی است که پس از \fI:\fP ظاهر می‌شود. در صورت عدم وجود یادداشت نوع، برابر \fINone\fP است. .UNINDENT .INDENT 7.0 .TP .B property name برگ \fIName\fP مربوط به پارامتر. .UNINDENT .INDENT 7.0 .TP .B get_defined_names(include_setitem=False) .UNINDENT .INDENT 7.0 .TP .B property position_index ویژگی شاخص موقعیتی یک پارامتر. .UNINDENT .INDENT 7.0 .TP .B get_parent_function() تابع یا لامبدای والد یک پارامتر را بازمی‌گرداند. .UNINDENT .INDENT 7.0 .TP .B get_code(include_prefix=True, include_comma=True) مانند تمام توابع دیگر get_code، اما پارامتر \fIinclude_comma\fP را نیز شامل می‌شود. .INDENT 7.0 .TP .B پارامترها (Parameters) \fBbool\fP (\fIinclude_comma\fP) \-\- در صورت فعال بودن، کاما را در رشته خروجی لحاظ می‌کند. .UNINDENT .UNINDENT .UNINDENT .INDENT 0.0 .TP .B class parso.python.tree.SyncCompFor(children) Bases: \fBPythonBaseNode\fP .INDENT 7.0 .TP .B type: str \% = \(aqsync_comp_for\(aq نوع یک رشته است که معمولاً با انواع فایل گرامر مطابقت دارد. .UNINDENT .INDENT 7.0 .TP .B get_defined_names(include_setitem=False) فهرستی از \fIName\fP را که عبارت درک (comprehension) تعریف می‌کند بازمی‌گرداند. .UNINDENT .UNINDENT .INDENT 0.0 .TP .B parso.python.tree.CompFor نام مستعار (alias) برای \fBSyncCompFor\fP .UNINDENT .INDENT 0.0 .TP .B class parso.python.tree.UsedNamesMapping(dct) Bases: \fBMapping\fP \% .sp این کلاس صرفاً با هدف ایجاد یک دیکشنری تغییرناپذیر (immutable dict) ایجاد شده است. .UNINDENT .SS "ابزارهای کمکی (Utility)" .INDENT 0.0 .TP .B parso.tree.search_ancestor(node: NodeOrLeaf \%<#\:parso\:.tree\:.NodeOrLeaf>, *node_types: str \%) -> BaseNode \%<#\:parso\:.tree\:.BaseNode> | None \% به‌طور بازگشتی والدین یک گره را بررسی می‌کند و نخستین گره یافت‌شده منطبق با \fBnode_types\fP را بازمی‌گرداند. در صورت نیافتن گره منطبق، مقدار \fBNone\fP بازگردانده می‌شود. .sp این تابع منسوخ شده است؛ به جای آن از \fBNodeOrLeaf.search_ancestor()\fP استفاده کنید. .INDENT 7.0 .TP .B پارامترها (Parameters) .INDENT 7.0 .IP \(bu 2 \fBnode\fP \-\- اجداد این گره بررسی خواهند شد. .IP \(bu 2 \fBnode_types\fP \-\- نام انواعی که جستجو می‌شوند. .UNINDENT .UNINDENT .UNINDENT .SS "توسعه (Development)" .sp اگر تمایل به هرگونه مشارکت در توسعه \fIparso\fP دارید، برای بحث و گفتگو یک issue یا pull request باز کنید. ما از تغییرات استقبال می‌کنیم! لطفاً ابتدا فایل \fBCONTRIBUTING.md\fP موجود در مخزن را بررسی کنید. .SS "فرآیند منسوخ‌سازی (Deprecations Process)" .sp فرآیند منسوخ‌سازی به شرح زیر است: .INDENT 0.0 .IP 1. 3 منسوخ‌سازی در انتشار اصلی یا فرعی بعدی (major/minor release) اعلام می‌شود. .IP 2. 3 پیش از حذف قابلیت منسوخ‌شده، حداقل یک سال و حداقل دو نسخه فرعی منتظر می‌مانیم. .UNINDENT .SS "آزمون و تست (Testing)" .sp مجموعه آزمون به \fBpytest\fP وابسته است: .INDENT 0.0 .INDENT 3.5 .sp .EX pip install pytest .EE .UNINDENT .UNINDENT .sp برای اجرای آزمون‌ها از دستور زیر استفاده کنید: .INDENT 0.0 .INDENT 3.5 .sp .EX pytest .EE .UNINDENT .UNINDENT .sp اگر می‌خواهید تنها یک نسخه خاص از پایتون (مثلاً پایتون ۳.۹) را تست کنید، به سادگی زیر قابل انجام است: .INDENT 0.0 .INDENT 3.5 .sp .EX python3.9 \-m pytest .EE .UNINDENT .UNINDENT .sp آزمون‌ها همچنین به صورت خودکار در GitHub Actions \%\& اجرا می‌شوند. .SH "منابع (RESOURCES)" .INDENT 0.0 .IP \(bu 2 کد منبع در گیت‌هاب \% .IP \(bu 2 آزمون‌های GitHub Actions \% .IP \(bu 2 نمایه بسته‌های پایتون (PyPI) \% .UNINDENT .SH "نویسنده (AUTHOR)" مشارکت‌کنندگان parso .SH "حق نشر (COPYRIGHT)" مشارکت‌کنندگان parso .\" End of generated man page.