इस प्रोजेक्ट के बारे में

fakesnow स्थानीय रूप से फर्जी Snowflake डेटाबेस चलाने, मॉक करने और परीक्षण करने का एक उपकरण है। यह दो दृष्टिकोण प्रदान करता है: Python के लिए Snowflake कनेक्टर का इन-प्रोसेस पैचिंग, या किसी भी भाषा के कनेक्टर द्वारा उपयोग योग्य एक स्टैंडअलोन HTTP सर्वर। इन-प्रोसेस पैचिंग (Python): pip से इंस्टॉल करें, फिर `fakesnow script.py` के माध्यम से स्क्रिप्ट या `fakesnow -m pytest` के माध्यम से pytest जैसे मॉड्यूल चलाएं। वैकल्पिक रूप से कोड में कॉन्टेक्स्ट मैनेजर के रूप में `fakesnow.patch()` का उपयोग करें। `snowflake.connector.connect` और `snowflake.connector.pandas_tools.write_pandas` के मानक आयात स्वचालित रूप से पैच किए जाते हैं; `from ... import` सिंटैक्स का उपयोग करने वाले मॉड्यूल को स्पष्ट रूप से नामित किया जाना चाहिए, जैसे `fakesnow.patch("mymodule.write_pandas")`। पैचिंग केवल वर्तमान प्रक्रिया पर लागू होती है, इसलिए सबप्रोसेस और गैर-Python क्लाइंट को सर्वर की आवश्यकता होती है। डेटाबेस डिफ़ॉल्ट रूप से इन-मेमोरी होते हैं और `db_path` पास करके स्थायी किए जा सकते हैं। सर्वर मोड: HTTP सर्वर शुरू करने के लिए `fakesnow -s` चलाएं (या uvx/docker के माध्यम से, कंटेनर पोर्ट 64616 पर सुनता है)। इसे Python प्रोग्राम के अंदर `fakesnow.server()` के साथ भी शुरू किया जा सकता है, जो कनेक्शन kwargs उत्पन्न करता है और बाहर निकलने पर सर्वर को रोकता है। पोर्ट और डेटाबेस दृढ़ता/अलगाव `FAKESNOW_DB_PATH` (जिसमें `:isolated:` मान शामिल है) जैसे सत्र मापदंडों के माध्यम से कॉन्फ़िगर करने योग्य हैं। कोई भी उपयोगकर्ता नाम/पासवर्ड/खाता संयोजन स्वीकार किया जाता है; README Snowflake CLI (config.toml के साथ `protocol = http`), Java से snowflake-jdbc के माध्यम से (URL में `account` रखने और Arrow के लिए JVM `--add-opens` के बारे में नोट्स के साथ), और Testcontainers के माध्यम से कनेक्ट करने का दस्तावेजीकरण करता है। pytest फिक्स्चर `pytest_plugins = "fakesnow.fixtures"` के माध्यम से प्रदान किए जाते हैं, जिसमें एक सत्र फिक्स्चर और एक `fakesnow_server` फिक्स्चर शामिल है जो कनेक्शन kwargs प्रदान करता है। कवरेज: पूरी तरह से समर्थित आइटम में मानक SQL संचालन और कर्सर, सूचना स्कीमा क्वेरी, एकाधिक डेटाबेस, पैरामीटर बाइंडिंग, तालिका टिप्पणियाँ, write_pandas सहित pandas एकीकरण, get_result_batches के माध्यम से परिणाम बैच पुनर्प्राप्ति, और गैर-Python कनेक्टर के लिए HTTP सर्वर शामिल हैं। आंशिक रूप से समर्थित: दिनांक फ़ंक्शन, नियमित अभिव्यक्ति फ़ंक्शन, अर्ध-संरचित डेटा संचालन, टैग, उपयोगकर्ता प्रबंधन, स्टेज और PUT, नामित फ़ाइल प्रारूप, और S3 स्रोतों और स्टेज से COPY INTO। अभी तक लागू नहीं: एक्सेस नियंत्रण और संग्रहीत प्रक्रियाएँ। README नोट करता है कि जब तक ORDER BY पूरी तरह से निर्दिष्ट नहीं किया जाता है, पंक्ति क्रम गैर-नियतात्मक है, और समर्थित SQL बोली वास्तविक Snowflake की तुलना में अधिक उदार है, इसलिए कुछ क्वेरी स्थानीय रूप से काम कर सकती हैं लेकिन वास्तविक इंस्टेंस के खिलाफ नहीं। COPY INTO मानक AWS क्रेडेंशियल श्रृंखला या वैकल्पिक S3 क्रेडेंशियल के लिए duckdb CREATE SECRET स्टेटमेंट का उपयोग कर सकता है।