मैं पाइलिंट में फ़ाइल-स्तर पर "लापता डॉकस्ट्रिंग" चेतावनियों को कैसे अक्षम कर सकता हूं?


99

पाइलिंट त्रुटियों को फेंकता है कि कुछ फाइलें डोकस्ट्रिंग्स गायब हैं। मैं प्रत्येक कक्षा, पद्धति और कार्य में डॉकस्ट्रिंग्स को जोड़ने की कोशिश करता हूं, लेकिन ऐसा लगता है कि पाइलिंट यह भी जांचता है कि फाइलें इसकी शुरुआत में एक डॉकस्ट्रिंग होनी चाहिए। क्या मैं इसे किसी तरह अक्षम कर सकता हूं? मुझे लगता है कि एक डॉकस्ट्रिंग के बारे में सूचित किया जाना एक वर्ग, फ़ंक्शन या विधि के अंदर गायब है, लेकिन यह एक फाइल के लिए एक डॉकस्ट्रिंग के लिए अनिवार्य नहीं होना चाहिए।

(क्या मालिकाना स्रोत फ़ाइल की शुरुआत में अक्सर कानूनी शब्दजाल का एक शब्द पाया जाता है? कोई उदाहरण? मुझे नहीं पता कि इस तरह के एक तुच्छ प्रश्न को अलग से पोस्ट करना ठीक है या नहीं।)

जवाबों:


111

पायथन मॉड्यूल के लिए एक डॉकस्ट्रिंग होना अच्छा है, यह समझाते हुए कि मॉड्यूल क्या करता है, यह क्या प्रदान करता है, कक्षाओं का उपयोग कैसे करें के उदाहरण। यह उन टिप्पणियों से अलग है जो आप अक्सर एक फ़ाइल की शुरुआत में देखते हैं जो कॉपीराइट और लाइसेंस की जानकारी देती है, जिसे IMO को डॉकस्ट्रिंग में नहीं जाना चाहिए (कुछ का तर्क है कि उन्हें पूरी तरह से गायब हो जाना चाहिए, उदाहरण के लिए देखें। http: // hackerboss com / get-rid-of-templates / )

Pylint 2.4 और ऊपर आप missing-docstringतीन उप-संदेशों का उपयोग करके विभिन्न के बीच अंतर कर सकते हैं :

  • C0114( missing-module-docstring)
  • C0115( missing-class-docstring)
  • C0116( missing-function-docstring)

तो निम्न .pylintrcफ़ाइल काम करना चाहिए:

[MASTER]
disable=
    C0114, # missing-module-docstring

पाइलिंट के पिछले संस्करणों के लिए, इसमें विभिन्न स्थानों के लिए एक अलग कोड नहीं है जहां डोकस्ट्रिंग्स हो सकते हैं, इसलिए आप सभी कर सकते हैं C0111 को अक्षम करें। समस्या यह है कि यदि आप इसे मॉड्यूल के दायरे में अक्षम करते हैं, तो यह मॉड्यूल में हर जगह अक्षम हो जाएगा (यानी आपको लापता फ़ंक्शन / वर्ग / विधि डॉकस्ट्रिंग के लिए कोई सी लाइन नहीं मिलेगी। जो यकीनन अच्छा नहीं है।

तो मैं जो सुझाव देता हूं वह उस छोटे से लापता डॉकस्ट्रिंग को जोड़ रहा है, जैसे कुछ कहना:

"""
high level support for doing this and that.
"""

जल्द ही, आपको वहां डाल करने के लिए उपयोगी चीजें मिल जाएंगी, जैसे कि मॉड्यूल के विभिन्न वर्गों / कार्यों का उपयोग करने के उदाहरण प्रदान करना जो आवश्यक रूप से कक्षाओं / कार्यों के व्यक्तिगत docstrings से संबंधित नहीं हैं (जैसे कि ये कैसे बातचीत, या एक त्वरित शुरुआत गाइड की तरह कुछ)।


9
स्रोत कोड से गायब होने वाले कानूनी (और अन्य) बॉयलरप्लेट के लिए +1। कार के प्रत्येक घटक में कानूनी सूचनाएं संलग्न नहीं होती हैं। हर तरह से इसमें अपनी परियोजना के कानूनी पाठ के साथ एक फ़ाइल बनाएँ। हर फाइल में उसकी प्रतियां न डालें।
जोनाथन हार्टले

22
-1 डॉकस्ट्रिंग के लिए जो "यह मॉड्यूल फोब्बर है।" यह पहले से ही स्पष्ट है कि यह मॉड्यूल क्या है। यदि मॉड्यूल कभी नाम बदलता है, तो इसे निरस्त करना निरर्थक है और पुराना होने का खतरा है। बस "इस और उस भाग के लिए उच्च स्तरीय सहायता प्रदान करता है"।
जोनाथन हार्टले

@ जोनाथनहार्टली: सहमत। मैंने तदनुसार उत्तर के अंतिम भाग को अद्यतन किया।
गुरनी एलेक्स

16
निराशाजनक उत्तर विशेष रूप से Django परियोजनाओं के लिए। form.py "ये मॉडल हैं ... जस्ट किडिंग! वे फॉर्म हैं। क्योंकि, आप जानते हैं, फ़ाइल का नाम form.py है। यह दा विंची कोड नहीं है। आपको क्या लगता है कि आप यहां होंगे?"
सेरिन

12
$ cat my_module/test/__init__.py "Hey, PyLint? SHUT UP"
दोपहर

66

देर हो चुकी है, लेकिन फिर भी मैंने इसे उपयोगी पाया। तो साझा कर रहे हैं यहीं मिला ।

चेतावनी को अक्षम करने के लिए आप पाइलिंट के लिए "--errors-only" ध्वज जोड़ सकते हैं।

ऐसा करने के लिए, सेटिंग्स पर जाएं। निम्नलिखित पंक्ति संपादित करें:

"python.linting.pylintArgs": []

जैसा

"python.linting.pylintArgs": ["--errors-only"]

और आप जाने के लिए अच्छे हैं!


32
यह उपयोगी है, हालांकि "python.linting.pylintArgs": ["--disable=C0111"],यह शायद मोरेसो है क्योंकि यह चेतावनी को ध्यान में रखते हुए ही बुझती है। हालाँकि, ओपी के प्रश्न को निर्धारित करना कि इन चेतावनियों को केवल एक मॉड्यूल स्तर पर कैसे निष्क्रिय किया जाए।
अनुगमन

यह एक बेहतर विकल्प है क्योंकि आप केवल लापता कक्षा जैसी त्रुटि की परवाह करते हैं, ... दस्तावेज़ स्ट्रिंग चेतावनी के बजाय
Zerontelli

जब मैं इस परियोजना का सहारा लेता हूं तो बहुत दुखी हूं। pylint कोड को साफ रखने के लिए एक अच्छा उपकरण है। इसे बस कुछ प्यार चाहिए।
एरिक एरोनिटी

9

मुझे लगता है कि इस सुविधा को अक्षम किए बिना सुधार आसान है।

def kos_root():
    """Return the pathname of the KOS root directory."""
    global _kos_root
    if _kos_root: return _kos_root

आपको बस हर फंक्शन में ट्रिपल डबल कोट्स स्ट्रिंग जोड़ने की जरूरत है।


धन्यवाद। मैंने अभी-अभी पाया है कि एकल उद्धरण भी काम करते हैं
vikas027

अच्छी तरह से यह अभी भी उदाहरण के लिए कष्टप्रद है अगर आप एक Django परियोजना पर काम कर रहे हैं तो यह मॉड्यूल फ़ाइलों का एक समूह बनाएगा और आपको ऐसा करने के लिए उनमें से प्रत्येक में जाना होगा। "" के साथ चेतावनी की तुलना में केवल त्रुटि संदेश दिखाना बेहतर है। -यहां "pylint उपयोगकर्ता सेटिंग्स में
Zerontelli

8

मैं एक उत्तर की तलाश में आया, क्योंकि @cerin ने कहा, Django प्रोजेक्ट्स में यह एक बोझिल और निरर्थक है कि हर एक फाइल में मॉड्यूल डॉकस्ट्रिंग्स को जोड़ा जाए जो एक नया ऐप बनाते समय django अपने आप उत्पन्न होता है।

तो, इस तथ्य के लिए एक समाधान के रूप में कि pylint आपको docstring प्रकारों में अंतर निर्दिष्ट नहीं करने देता, आप यह कर सकते हैं:

pylint */*.py --msg-template='{path}: {C}:{line:3d},{column:2d}: {msg}' | grep docstring | grep -v module

आपको msg-template अपडेट करना होगा ताकि जब आप grep करें तब भी आपको फाइल का नाम पता चले। यह मॉड्यूल को छोड़कर अन्य सभी लापता-डॉकस्ट्रिंग प्रकारों को लौटाता है।

तब आप उन सभी त्रुटियों को ठीक कर सकते हैं, और बाद में बस चला सकते हैं:

pylint */*.py --disable=missing-docstring

7

नहीं। Pylint वर्तमान में आपको डॉक्टर-स्ट्रिंग चेतावनियों के बीच भेदभाव नहीं करने देता है।

हालाँकि, आप इस चेतावनी को अनदेखा करने के लिए डॉक-स्ट्रिंग एक्सटेंशन के साथ सभी अजगर कोड जाँच के लिए flake8 का उपयोग कर सकते हैं।

पाइप के साथ डॉक-स्ट्रिंग एक्सटेंशन स्थापित करें (आंतरिक रूप से, यह pydocstyle का उपयोग करता है )।

pip install flake8_docstrings

आप तब --ignore D100स्विच का उपयोग कर सकते हैं । उदाहरण के लिएflake8 file.py --ignore D100


7

आप इन चेतावनियों को अक्षम करना चाहते हैं बस किसी भी फ़ाइल की शुरुआत में निम्नलिखित पंक्तियाँ डालें।

# pylint: disable=missing-module-docstring
# pylint: disable=missing-class-docstring
# pylint: disable=missing-function-docstring

1
यदि आप सब कुछ अक्षम करना चाहते हैं, तो आपको अक्षम करना होगा missing-docstring(2.4.0 से पहले संस्करण के लिए काम करता है)।
पियरे.ससौलस

6

Pylint 2.4 और ऊपर आप missing-docstringतीन उप-संदेशों का उपयोग करके विभिन्न के बीच अंतर कर सकते हैं :

  • C0114( missing-module-docstring)
  • C0115( missing-class-docstring)
  • C0116( missing-function-docstring)

तो निम्न .pylintrcफ़ाइल काम करना चाहिए:

[MASTER]
disable=
    C0114, # missing-module-docstring

इससे मेरा मानसिक स्वास्थ्य बच गया
त्सगाना नोखेवा

5

"C: \ Users \ Your User \ AppData \ Roaming \ Code \ User \ settings.json" को संपादित करें और python.linting.pylintArgsनीचे दिखाए गए अनुसार इन पंक्तियों को अंत में जोड़ें :

{
    "team.showWelcomeMessage": false,
    "python.dataScience.sendSelectionToInteractiveWindow": true,
    "git.enableSmartCommit": true,
    "powershell.codeFormatting.useCorrectCasing": true,
    "files.autoSave": "onWindowChange",
    "python.linting.pylintArgs": [
        "--load-plugins=pylint_django",
        "--errors-only"
    ],
}

1

(1) CTRL + SHIFT + P (2) फिर टाइप करें और क्लिक करें> प्राथमिकताएँ: भाषा विशिष्ट सेटिंग्स कॉन्फ़िगर करें (3) और फिर उस कोड के बाद अजगर टाइप करें

{
"python.linting.pylintArgs": [
    "--load-plugins=pylint_django","--errors-only"
],

}

1

मेरे मामले में, pylint 2.6.0 के साथ, लापता डॉकस्ट्रिंग संदेश स्पष्ट रूप से अक्षम होने के बाद भी गायब नहीं होंगे missing-module-docstring, missing-class-docstringऔर missing-function-docstringमेरी .pylintrcफ़ाइल में। अंत में, निम्नलिखित विन्यास ने मेरे लिए काम किया:

[MESSAGES CONTROL]

disable=missing-docstring,empty-docstring

जाहिर है, pylint 2.6.0 अभी भी docstrings को मान्य करता है जब तक कि दोनों चेक अक्षम न हों।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.