# Python ফরম্যাটার

URL: https://discuvr.org/python-formatter/?hl=bn
Last updated: 2026-11-07
MCP tool: `format_python`

Python পেস্ট করুন, Black আপনার লাইন দৈর্ঘ্য ও অপশন মেনে ফরম্যাট করবে। সিনট্যাক্স ত্রুটিতে সঠিক লাইন দেখায়। কোড কখনো চালানো বা সংরক্ষণ হয় না।

এটি Black চালায় - এমন একটি ফরম্যাটার যার ওপর অধিকাংশ Python প্রজেক্ট আগে থেকেই একমত - আপনি যা পেস্ট করেন তার ওপর, আপনার বেছে নেওয়া লাইনের দৈর্ঘ্য এবং উদ্ধৃতি হ্যান্ডলিং সহ। ফাইলটি পার্স না হলে এটি বলে দেয় কোন লাইনে, এবং এটি যদি আগে থেকেই ফরম্যাট করা থাকে তবে কিছু করার ভান না করে সেটিও বলে দেয়।

## এটি কী করে

- 79, 88, 100 বা 120 কলামে Black ফরম্যাটিং।
- "শুধু যাচাই করুন" মোড: পরিবর্তন না করেই জানুন কোনো ফাইল পরিবর্তিত হবে কিনা।
- আপনার নিজের উদ্ধৃতি শৈলী ধরে রাখুন, অথবা Black কে এটি স্বাভাবিক করতে দিন।
- জাদুকরী শেষ কমা মেনে চলুন বা উপেক্ষা করুন যা একটি সংগ্রহকে খোলা রাখে।
- সিনট্যাক্স সংস্করণ-সংবেদনশীল হলে একটি নির্দিষ্ট Python সংস্করণ লক্ষ্য করুন।
- সিনট্যাক্স ত্রুটি লাইন, কলাম এবং আশেপাশের কোড রিপোর্ট করে।
- কতগুলো লাইন যুক্त ও সরানো হয়েছে, সেইসাথে ফাইলের আকার রিপোর্ট করে।

## এটি যেভাবে কাজ করে

1. কোড পেস্ট করুন, বা একটি ফাইলের মতো।
2. একটি লাইন দৈর্ঘ্য এবং আপনার প্রয়োজনীয় যে কোনো বিকল্প বেছে নিন।
3. ফরম্যাট চাপুন, তারপর ফলাফল কপি বা ডাউনলোড করুন।

## আপনার কোড কখনও চালানো হয় না

Python ফরম্যাট করার জন্য তা চালানোর প্রয়োজন নেই। কোডটি একটি সিনট্যাক্স ট্রিতে পার্স করা হয় এবং সম্পূর্ণরূপে মেমোরিতে সেই ট্রি থেকে পুনরায় লেখা হয় - এটি কখনও একটি ফাইলে লেখা হয় না, কখনও ইম্পোর্ট করা হয় না এবং কখনও চালানো হয় না। একটি ফরম্যাটার যা আপনার পেস্ট করা কিছু চালাত তা একটি টেক্সট বক্স সহ একটি রিমোট শেল হতো।

## কেন Black, নিজের কোনো মতামত নয়

Black একটি AST-সংরক্ষণকারী রূপান্তর: যে কোড বের হয় তা সেই একই প্রোগ্রাম যা ভেতরে গিয়েছিল। এই বৈশিষ্ট্যই একটি ফরম্যাটারকে বিশ্বাস করা যাওয়ার একমাত্র কারণ, এবং এই কারণেই এই টুলের কোনো অংশে কোনো ভাষা মডেল জড়িত নয়। কোড পরিষ্কার করতে বলা একটি মডেল মাঝে মাঝে কাজ করার সময় একটি লাইন পুনরায় লিখবে, এবং কার্যকর কোডে একটি নীরব পরিবর্তন সেই একমাত্র ব্যর্থতা যা একটি ফরম্যাটার বহন করতে পারে না।

## শুধু যাচাই করুন

CI যে প্রশ্নই করে: এই ফাইলটি পরিবর্তিত হবে কি? যাচাই মোড আপনার মূল কোড অক্ষতভাবে ফিরিয়ে দেয় এবং জানায় Black এটি পুনরায় ফরম্যাট করত কিনা, এবং কত লাইনে। স্থানীয়ভাবে পুনরুৎপাদন করা যায় না এমন একটি ফাইলে কোনো পাইপলাইন কেন ব্যর্থ হচ্ছে তা জানার দ্রুত উপায় এটি।

## ম্যাজিক ট্রেইলিং কমা ও fmt: off, সমাধানসহ উদাহরণ

শেষ আইটেমের পরের কমা Black-কে বলে কোনো কল বা কালেকশন প্রতি লাইনে একটি আইটেম রেখে রাখতে: result = compute(alpha, beta,) চার লাইনে ফেরে, যেখানে alpha, ও beta, আলাদা লাইনে থাকে। ম্যাজিক ট্রেইলিং কমা উপেক্ষা করুন-এ টিক দিলে একই ইনপুট লাইনের দৈর্ঘ্যে আঁটলে result = compute(alpha, beta) হয়ে যায়। হাতে সাজানো কোনো ব্লক, যেমন ম্যাট্রিক্স, রক্ষা করতে তার ওপরের লাইনে # fmt: off আর নিচে # fmt: on লিখুন; Black মাঝের সবকিছু আপনি যেমন লিখেছেন তেমনই রাখে। লাইনের শেষে # fmt: skip শুধু সেই লাইনটি রক্ষা করে। এগুলো Black-এর নিজস্ব মন্তব্য, তাই আপনার প্রজেক্টের CI যখন Black চালায় তখনও কাজ করে।

## প্রশ্নাবলী

**আমার কোড আপলোড বা সংরক্ষিত হয়?**

এটি সার্ভারে পাঠানো হয়, মেমোরিতে ফরম্যাট করা হয় এবং একই রেসপন্সে ফিরিয়ে দেওয়া হয়। কিছুই ডিস্কে লেখা হয় না, ক্যাশ করা হয় না বা লগ করা হয় না, এবং ব্যবহারের রেকর্ড শুধু গণনা রাখে - আকার, বিকল্প, কত লাইন পরিবর্তিত হয়েছে - কখনও কোড নয়।

**ফরম্যাটিং কি আমার কোড কী করে তা বদলে দেয়?**

না। Black লেআউট বদলায়, আচরণ নয়, তবে এটি শুধু স্পেস সরানোর চেয়ে বেশি কিছু করে। এটি অপ্রয়োজনীয় বন্ধনী সরায় (x = (1) হয়ে যায় x = 1), সংখ্যার প্রিফিক্স ও ঘাত ছোট হাতের অক্ষরে লেখে (0XABCDEF হয়ে যায় 0xABCDEF, 1E5 হয়ে যায় 1e5), একটি কলকে কয়েক লাইনে ভাঙলে শেষে কমা যোগ করে, পরপর ফাঁকা লাইন কমায় এবং docstring-এর ভেতরের স্পেস ছেঁটে দেয় (""" Doc. """ হয়ে যায় """Doc.""")। এই শেষ পরিবর্তনটি __doc__-এর লেখা বদলে দেয়, যা কেবল তখনই গুরুত্বপূর্ণ যখন আপনার কোড নিজের docstring পড়ে।

**এটি কেন আমার ফাইলটি মোটেও পুনরায় ফরম্যাট করেনি?**

কারণ এটি আপনার বেছে নেওয়া লাইন দৈর্ঘ্যে আগে থেকেই ফরম্যাট করা ছিল। টুলটি নীরবে একটি কপি ফেরত দেওয়ার বদলে "আগে থেকেই ফরম্যাট করা" বলে।

**এটি কি আমার ইম্পোর্টগুলো সাজায়?**

না। ইম্পোর্ট সাজানো isort-এর কাজ, Black-এর নয়, এবং দুজনে যথেষ্ট পরিমাণে ভিন্নমত পোষণ করে যে এখানে করা হলে আপনাকে বিস্মিত করত।

**এটি কি সিনট্যাক্স ত্রুটি সহ একটি ফাইল ফরম্যাট করতে পারে?**

কোনো ফরম্যাটারই পারে না - একটি অপার্সযোগ্য ফাইলে পুনরায় লেখার মতো কোনো গঠন থাকে না। আপনি লাইন, কলাম এবং আশেপাশের কোড পান যাতে আপনি এটি ঠিক করে আবার চেষ্টা করতে পারেন।

**এটি কি PEP 8 অনুসরণ করে?**

Black একটি সুপরিচিত বিচ্যুতি সহ PEP 8 সামঞ্জস্যপূর্ণ: এর ডিফল্ট লাইন দৈর্ঘ্য 79-এর পরিবর্তে 88। আপনার যদি কঠোর সংখ্যাটি প্রয়োজন হয় তবে লাইন দৈর্ঘ্য নির্বাচকে 79 বেছে নিন।

**কত বড় ফাইল ফরম্যাট করা যায়?**

প্রতিবার 400,000 অক্ষর পর্যন্ত। ফরম্যাটিং 10 সেকেন্ড পরে থামিয়ে দেওয়া হয়, যা কেবল খুব বড় বা খুব পুনরাবৃত্তিমূলক ফাইলে ঘটে, এবং প্রতিটি IP ঠিকানা 10 মিনিটে 30 বার ফরম্যাট করতে পারে।

**আমার এডিটর, pre-commit বা CI-তে একই ফরম্যাটিং কীভাবে পাব?**

এই পেজ Black চালায়, আর চওড়া স্ক্রিনে পেজের হেডারে তার সংস্করণ দেখা যায়। Black প্রজেক্টের সেটিং pyproject.toml-এর [tool.black] অংশ থেকে, অপশনের লম্বা নাম দিয়ে পড়ে: আপনার বেছে নেওয়া "লাইনের দৈর্ঘ্য"-এর জন্য line-length = 88, "আমার উদ্ধৃতি চিহ্নগুলি রেখে দিন" টিক দিলে skip-string-normalization = true, "ম্যাজিক ট্রেইলিং কমা উপেক্ষা করুন"-এর জন্য skip-magic-trailing-comma = true এবং "টার্গেট"-এ নির্দিষ্ট সংস্করণের জন্য target-version = ["py311"]। এডিটর প্লাগইন আর pre-commit হুকও এই ফাইলই পড়ে। ফরম্যাট করতে black . আর CI-তে black --check --diff . চালান: এটি কিছু বদলায় না, আর কোনো ফাইল নতুন করে ফরম্যাট হলে কোড 1 দিয়ে বেরিয়ে যায়। এই পেজের মতো একই Black সংস্করণ পিন করুন, কারণ প্রতি ক্যালেন্ডার বছরের প্রথম রিলিজে স্থিতিশীল স্টাইল বদলাতে পারে।

**ফলাফল কি Ruff ফরম্যাটারের (ruff format) সঙ্গে একই?**

প্রায় সবসময়, তবে বাইট-বাই-বাইট নয়। Ruff-এর ফরম্যাটার Black-এর সরাসরি বিকল্প হিসেবে তৈরি, আর Ruff-এর ডকুমেন্টেশন বলে Django ও Zulip-এর মতো Black-এ ফরম্যাট করা বড় প্রজেক্টে 99.9%-এর বেশি লাইন একই রকম আসে। যে কোড কখনো Black-এর মধ্য দিয়ে যায়নি, তাতে, বিশেষ করে লাইনের শেষের মন্তব্যে, পার্থক্য বেশি হয়, আর এর ডকুমেন্টেশন ইচ্ছাকৃত পার্থক্যগুলোর তালিকা দেয়। এর ডিফল্ট লাইন দৈর্ঘ্যও 88, যা [tool.ruff]-এ line-length দিয়ে ঠিক করা যায়; [tool.ruff.format]-এ quote-style = "preserve" হলো "আমার উদ্ধৃতি চিহ্নগুলি রেখে দিন"-এর সমান আর skip-magic-trailing-comma = true হলো "ম্যাজিক ট্রেইলিং কমা উপেক্ষা করুন"-এর সমান। আপনার CI যদি ruff format --check চালায়, তবে ফাইলটি এই পেজে নয়, Ruff দিয়ে পরীক্ষা করুন।

## ডেভেলপার টুল-এ আরও

- [HTML Viewer](https://discuvr.org/html-viewer/?hl=bn)
- [IP সাবনেট ক্যালকুলেটর](https://discuvr.org/ip-subnet-calculator/?hl=bn)
- [এনকোড / ডিকোড](https://discuvr.org/encode-decode/?hl=bn)
- [Unix টাইমস্ট্যাম্প কনভার্টার](https://discuvr.org/timestamp-converter/?hl=bn)

## প্রায়ই এগুলোর সঙ্গে ব্যবহৃত হয়

- [লেখা তুলনা](https://discuvr.org/text-diff/?hl=bn)
- [কেস কনভার্টার ও লাইন টুল](https://discuvr.org/case-converter/?hl=bn)
- [Study Buddy](https://discuvr.org/study-buddy/?hl=bn)

---

Part of Discuvr (https://discuvr.org/): Discuvr is a collection of free, focused tools for day-to-day professional work - office and data utilities, legal and compliance helpers, privacy and security checks, and developer formatters. Every tool has its own page, and most can also be called from ChatGPT or Claude over MCP.
