An open API service indexing awesome lists of open source software.

https://github.com/igrek51/wat

Deep inspection of Python objects
https://github.com/igrek51/wat

inspector python python-inspect

Last synced: 11 days ago
JSON representation

Deep inspection of Python objects

Awesome Lists containing this project

README

        

# ๐Ÿ™€ WAT


GitHub
-
PyPI
-
Documentation

Deep inspection of Python objects.

**WAT** is a powerful inspection tool
designed to help you explore unknown objects and examine them at runtime.

> "Wat" is a variant of the English word "what" that is often used to express confusion or disgust

If you ever find yourself in a Python console, feeling lost and confused,
and wondering "WAT? What is this thing?",
that's where `wat` inspector comes in handy.

Launch the Python Interpreter and execute `wat / object` on any `object`
to investigate its
**type**, **formatted value**, **variables**, **methods**, **parent types**, **signature**,
**documentation**, and its **source code**.
This makes it particularly useful for debugging or understanding intricate data structures in Python,
providing a straightforward way to answer "what" exactly an object represents.

![](https://github.com/igrek51/wat/blob/master/docs/img/wat-datetime-now.png?raw=true)

Alternatively, use `wat(object)` syntax for the same in-depth inspection.

## Loading

### Insta-Load
If you want to quickly debug something,
you can use this inspector **without installing anything**, in the same session.

Load it on the fly by pasting this snippet to your Python interpreter:
```python
import base64, zlib
code = b'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'
exec(zlib.decompress(base64.b64decode(code)).decode(), globals())
```

Now you can use `wat` object.

> [!Warning]
> Before executing **Insta-Load** snippet, it's recommended to verify what you're about to run.
> You can either:
>
> - Verify what's inside the extracted code beforehand:
> ```python
> print(zlib.decompress(base64.b64decode(code)).decode())
> ```
> - Paste the content of [inspection.py](https://github.com/igrek51/wat/blob/master/wat/inspection/inspection.py) into your interpreter.
> It has the same effect.
> - [Install package with pip](#install-with-pip) and review the code.

### Install with pip
Alternatively, install **wat** package and import inspection tool from **wat** module:
```sh
pip install wat
```
```python
import wat
```
This package has no external dependencies.

### Load from Unicode Glyph
Fun Fact: You can load WAT from a single Unicode glyph.
```python
import zlib
glyph = '๐Ÿ™€๓ …ธ๓ †œ๓ ‡•๓ …›๓ ‡ซ๓ …ฎ๓ ‡œ๓ ‡†๓ „•โทพ๓ ‡ฏ๓ †ง๓ „ ๓ ‡”๓ „Ÿ๓ „ค๓ †๓ ‡๓ ‡–๓ …Ž๓ …บ๓ „๓ †”๓ ‡๓ †ญ๓ …ฌ๓ …ฏ๓ …’๓ †ฃ๓ †Ž๓ …•๓ ‡ˆ๓ …Š๓ †‚๓ …‚๓ „’๓ „ˆ๓ ‡ฎ๓ …ฒ๓ …–๓ …ข๓ ‡„๓ „ฅ๓ „—๓ „ค๓ ‡—๓ ‡’๓ …ถ๓ †ฑ๓ …€๓ „ž๓ †ข๓ ‡๓ ‡๓ „‡๓ ‡‹๓ †“โทด๓ …œ๓ ‡ฆ๓ …Ž๓ …ฒ๓ „ฅ๓ ‡‡๓ „…๓ ‡š๓ „Š๓ †ฐ๓ …„๓ ‡Ž๓ ‡Œโทน๓ ‡ฆ๓ ‡Œ๓ „น๓ …ง๓ ‡Ž๓ …ฅ๓ ††๓ …ž๓ „ถโทต๓ „ช๓ ‡ˆ๓ †ณ๓ „ฎ๓ …›๓ †”๓ …™๓ ‡›๓ †Š๓ „ถ๓ „จ๓ …–๓ ‡ซ๓ †บ๓ ‡ฉ๓ …Œ๓ ‡“๓ „“๓ ‡™๓ …๓ …”๓ ‡ญ๓ …š๓ „ฌ๓ „บโทต๓ …š๓ ‡ซ๓ †Ž๓ …†๓ †จ๓ †ง๓ …ถ๓ ‡›๓ „พ๓ …™๓ „ข๓ …ž๓ †ท๓ …๓ „—๓ ‡•๓ †ต๓ †‚๓ „บ๓ †ฉ๓ †ถ๓ †“๓ ‡ ๓ …ด๓ ‡๓ „•๓ …ต๓ †•๓ †•๓ †“๓ ‡ ๓ …ผ๓ †ป๓ „–๓ …โทพ๓ …ฌโทฐ๓ ‡ฉ๓ …ทโทฐ๓ ††๓ ‡ก๓ …Ÿ๓ ‡•๓ ‡•๓ †ฒ๓ †ธ๓ „พ๓ …พ๓ „’๓ ‡€๓ …๓ …ป๓ „ƒ๓ ‡”๓ ‡‡๓ ‡๓ †ผ๓ †ฎ๓ …‹๓ …บ๓ ‡๓ „ท๓ …•๓ „ฎ๓ „š๓ †ซ๓ †ก๓ †ชโทณ๓ …บ๓ ‡‘๓ …š๓ „๓ …ฅ๓ …๓ …๓ …›๓ †ฏ๓ †‹๓ „บ๓ „—โทถ๓ …ซ๓ …–๓ †–๓ „Žโทฝ๓ †บ๓ „ฉ๓ „พ๓ …ค๓ †๓ „š๓ „ฒ๓ ‡†๓ ‡’๓ …‰๓ ‡—๓ „ต๓ ‡…๓ …ผ๓ „ƒ๓ ‡ฃ๓ …ธ๓ ‡’๓ …ฌ๓ „…๓ „”๓ …ญ๓ ‡—๓ ‡๓ ‡›๓ †‡๓ †ฌ๓ ‡œ๓ ‡€๓ „ซ๓ „ฌ๓ †‘๓ …ž๓ …ก๓ ‡กโทฐ๓ …†๓ „ซ๓ …”๓ „ณ๓ …ฆโทณ๓ …’๓ „œ๓ …š๓ †„๓ ‡‹๓ „„๓ †ญ๓ †ป๓ †ธ๓ †ฎ๓ †ฒ๓ …ฎ๓ ‡“๓ …€๓ †›๓ †’๓ ‡š๓ „…๓ ‡Œ๓ …ท๓ ‡…โทดโทต๓ ‡‚๓ …ฏ๓ ‡Ž๓ ‡…๓ …’๓ …ฉ๓ „ง๓ …๓ ‡–๓ ‡๓ „ช๓ ‡ซ๓ †ข๓ …บโทพ๓ ‡“๓ „ค๓ …ธ๓ „บ๓ …ก๓ „‘๓ „ฆ๓ ‡Ÿ๓ …ค๓ …ฅ๓ „ซ๓ „ฆ๓ …ฒ๓ …ชโทต๓ ‡†๓ ‡‚๓ …“๓ …ฏ๓ „จ๓ „นโทต๓ †Œ๓ …ข๓ ‡“๓ ‡๓ „ค๓ „ณโทต๓ †ถ๓ ‡ž๓ ‡Œ๓ ‡‹๓ …ข๓ †ก๓ ‡ž๓ † ๓ †‹๓ „Ÿ๓ ‡ฃ๓ …ฃ๓ „ฉ๓ …ฎ๓ ‡”๓ …๓ ‡ข๓ …จ๓ „ฒ๓ …ข๓ „Ž๓ ‡จ๓ †ท๓ ‡ฆ๓ †€๏ปฟ๓ „„๓ …ต๓ †ƒ๓ „๓ †š๓ „“โทพ๓ „ฃ๓ …™๓ ‡๓ …Ÿ๓ …บ๓ „€๓ „ฑ๓ †„๓ †ฟ๓ …Œ๓ „‹๓ †ณ๓ ‡…๓ …ฟ๓ …ด๓ †ซ๓ „”๓ „ฅ๓ „ ๓ …ต๓ †’๓ ‡•๓ †˜๓ „˜๓ †ซ๓ „ท๓ ‡๓ …บ๓ ‡“๓ „ฅ๓ …ฅ๓ ‡‘๓ …ถ๓ …‘๓ †บ๓ „ญ๓ …„๓ †™๓ †ง๓ …Š๓ …ž๓ …ฅ๓ …‘๓ †‰๓ †–๓ ‡…๓ ‡…๓ ‡ฌ๓ ‡‡๓ …Œ๓ …’๓ „ฌ๓ ‡‘๓ †š๓ †ง๓ …ญ๓ †—๓ „ƒโทฑ๓ †ด๓ …จ๓ †ณ๓ †ฎ๓ ‡›๓ …†๓ …ฒ๓ †๓ †ค๓ …จ๓ ‡‘๓ †ฌ๓ „Š๓ ‡๓ …€๓ …บ๓ …—๓ ‡ค๓ ‡๓ …๓ …’๓ †ท๓ ‡“๓ …ซ๓ ‡‘๓ †ฅ๓ †บ๓ †ต๓ „ญโทพ๓ „ก๓ †ข๓ …ธ๓ †บ๓ †จ๓ ‡‹๓ ‡๓ †ช๓ …ช๓ „ต๓ „•๓ „ณ๓ „ฒ๓ †…๓ ‡‰๓ ……๓ ‡“๓ ……๓ ‡๓ …€๓ „ฟ๓ ‡๓ †ถ๓ „”๓ ‡“๓ †—๓ „ง๓ …ง๓ ‡๓ …ง๓ …โทธ๓ ‡‹๓ „ฟ๓ …ฟ๓ „Ž๓ †ƒ๓ †ง๓ „ž๓ „ด๓ …ด๓ †œ๓ ‡๓ ‡ž๓ ‡๓ ‡Ž๓ …ฃ๓ „Ÿ๓ „ค๓ …›๓ †ฏ๓ ……๓ †•๓ …‡๓ „Ÿ๓ †‹๓ ‡๓ „ˆ๓ †ฐ๓ †ฌ๓ „ช๓ „ˆ๓ „ฏ๓ †ซ๓ …ฐโทบ๓ …“๓ …๓ …”๓ „‘๓ ‡ƒ๓ ‡…๓ …ค๓ ……๓ „๓ „Š๓ ‡ง๓ …˜๓ „‰๓ †‡๓ ‡Ÿ๓ †ง๓ …ฒ๓ …‹๓ …ฉ๓ ‡ž๓ †ˆ๓ „พ๓ „ ๓ „Ÿ๓ †๓ …ž๓ †‹๓ …Š๓ „ด๓ † ๓ †Ž๓ †”๓ „‡๓ „๓ ‡ช๓ †ฒ๓ †Ž๓ †˜๓ „‰๓ „ฐ๓ ‡›๓ †”๓ …ถ๓ …Ž๓ „ข๓ „๓ †–๓ ‡Ÿ๓ …ธ๓ „ช๓ ‡’๏ปฟ๓ …น๓ †ณ๓ „‘๓ †Š๓ ‡ก๓ †ต๓ „š๓ †Œ๓ †๓ „ธ๓ …†๓ †ซ๓ ‡ˆโทด๓ „…๓ …‰๓ †‚๓ †จ๓ ‡”๓ †‹โทถ๓ ‡ โทถ๓ †ค๓ ‡๓ …•๓ †ฌ๓ …“๓ …๓ …‡๓ ‡๓ …„๓ …บโทฒ๓ †ธ๓ ‡‡๓ …ท๓ †ธ๓ …ฃ๓ …ฑ๓ †ž๓ †Ÿ๓ †๓ †ผ๓ „น๓ ‡Ÿโทณ๓ ‡ž๓ ‡ž๓ †‘โทฐโทถ๓ ‡๓ …Ž๓ ‡“๓ ‡ญ๓ …ƒ๓ †ข๓ „“๓ … โทน๓ „๓ „ ๓ „€๓ ‡‰๓ „ธโทฝ๓ „จ๓ „•โทฒ๓ …ฎ๓ †“๓ …ก๓ ‡๓ …Ÿ๓ …ฆ๓ „ง๓ †ฏโทท๓ „ป๓ †ณ๓ †ช๓ †ฝ๓ ‡ฌ๓ „๓ †ต๓ „ผ๓ ‡‘โทต๓ …จ๓ …ฑ๓ ‡ข๓ …‹๓ …„๓ †ฟ๓ …๓ „ ๓ „ฌ๓ †ฏ๓ ‡๓ †น๓ ‡ˆ๓ …ก๓ „น๓ „ฌ๓ …ข๓ †‹๓ †„๓ …๓ …ง๓ †๓ †จ๓ †บ๓ „ถ๓ „‰๓ „ง๓ †๓ „ด๓ †–๓ „”๓ †ญ๓ †œ๓ †›๓ …ฉ๓ … ๓ …ซ๓ …๓ †ข๓ †ต๓ „ข๓ ‡‰๓ „ž๓ †๓ †๓ „š๓ †ฅ๓ „ง๓ †—๓ „๓ …ฒ๓ …ฎ๓ †ด๓ „ฑ๓ ‡ฉ๓ „ฝ๓ „ฃ๓ †˜๓ „”โทถ๓ …Ÿ๓ ‡ƒ๓ ‡ฆ๓ „‘๓ †ฆ๓ …ฉ๓ „ฉ๓ †ช๓ „ด๓ „…๓ †ฆ๓ ‡ž๓ ‡•๓ †•๓ †ˆ๓ ‡ญ๓ …๓ ‡™๓ …ฌ๓ ‡๓ ‡‹๓ ‡จ๓ ‡„๓ …€๓ …ญ๓ „ฆ๓ …ต๓ ‡ญ๓ „๓ †บ๓ …ธ๓ „ญ๓ †–๓ †Š๓ ‡„โทฝ๓ …‚๓ †ฌ๓ „ปโทฒ๓ ‡ฉ๓ †ณ๓ †ฆ๓ †ฉ๓ „›๓ …ท๓ ††๓ „ต๓ ††๓ „‹๓ †Ÿ๓ …Ÿ๓ †„๓ „ฐ๓ ‡ƒ๓ „ฐ๓ … ๓ „คโทพ๓ „’๓ †ฐ๓ †‘๓ ‡–๓ „โทพโทฒโทณ๓ †ฟ๓ …‚๓ †ณ๓ †น๓ †ต๓ ‡ฏ๓ …๓ …ˆ๓ ‡”๓ „Š๓ „ฒ๓ ‡•๓ ‡ญ๓ „‘๓ …’๓ …Ž๓ „‚๓ †ฝ๓ „‹๓ ‡†๓ …ญ๓ …๓ …‡๓ „‘๓ †ฃ๓ …ž๓ ‡•๓ „ค๓ †—๓ „‡โทพ๓ †–๓ †ง๓ †๓ †‡๓ ‡๓ †ฝ๓ „‡๓ †‹๓ †‚๓ †ฎ๓ „ ๓ †ซโทฒ๓ „ ๓ …‚๓ †ง๓ „ช๓ …ท๓ „ฝ๓ …ป๓ ‡ช๓ †˜๓ ‡š๓ …‡๓ „–๓ ‡๓ †”๓ ‡ ๓ „€๓ „ท๓ …•๓ „—๓ †ก๓ †ณ๓ †‰๓ …ฑ๓ „Ÿ๓ „พ๓ „ป๓ †จ๓ †ž๓ ‡—๓ †ง๓ †ฏ๓ ‡ž๓ ‡ฏ๓ †๓ †Ž๓ †Ž๓ …ถ๓ …€๓ …‰๓ …ฟ๓ …ญ๓ „“๓ ‡ฏ๓ ‡ฏ๓ „ธ๓ „‹๓ „โทฝ๓ ‡๓ ……๓ „๓ „‡๓ †ค๓ „‹๓ …ˆ๓ „“๓ †˜๓ ‡€๓ „‚๓ †ปโทฒ๓ „ฝ๓ „˜๓ ††๓ „•๓ …š๓ † โทด๓ …บ๓ ‡ ๓ ‡ฌ๓ „ฉโทผ๓ …ซ๓ …—๓ ‡ข๓ †ฌ๓ ‡๓ …š๓ …ข๓ …›๓ …ฏ๓ †š๓ †…๓ ‡”๓ „“๓ „ฟ๓ †ง๓ „ˆ๓ „–๓ „น๓ †ช๓ ‡๓ „ธ๓ …‚๓ …ฝ๓ †๓ „ฐ๓ …Œ๓ „ž๓ ‡ˆ๓ …™๓ †‹๓ …คโทท๓ †ฒ๓ ‡š๓ …ฑ๓ †ซ๓ ‡™๓ „•๓ †–๓ „ž๓ „ธ๓ …๓ ‡’๓ ‡€๓ †™๓ …Š๓ …”๓ ‡š๓ †ค๓ †…๓ „Ž๓ †‘๓ …‡๓ …ฉ๓ „๓ †ก๓ „ ๓ „ต๓ ‡ญ๓ †Ž๓ „ฏ๓ †Ÿ๓ „„๓ †ท๓ …ข๓ †›๓ †”๓ ‡™๓ …ช๓ †ž๓ …ง๓ …„๓ …ป๓ …Œ๓ †ฟ๓ †ง๓ …จ๓ … ๓ „ฝ๓ ‡›๓ „ข๓ †๓ „Žโทป๓ „ณ๓ †—๓ …ธ๓ …ญ๓ ‡š๓ †‚๓ †ฌ๓ „ ๓ „‰๓ …ฉ๓ „ฃ๓ „ƒ๓ †ฏ๓ †ก๓ „น๓ †˜๓ „œ๓ †š๓ †œ๓ †น๓ ††๓ ‡๓ †‡๓ …Œ๓ …€โทถ๓ „’๓ ‡ค๓ ……๓ ‡ฃ๓ †™๓ †๓ …Œ๓ „–๓ † ๓ „Ÿ๓ ‡‚๓ …ฐ๓ ‡–๓ …ด๓ ‡ญ๓ …๓ ‡‘๓ ‡๓ …„๓ †ฐ๓ …ท๓ …‚๓ †ถ๓ „ผ๓ ‡ฌ๓ „€๓ ††๓ †ฌ๓ …ฆ๓ ‡‡โทบ๓ „ธ๓ ‡‡โทฐ๓ …๓ †—๓ †›๓ …ฃ๓ …—๓ „›๓ ‡๓ ‡—๓ „•๓ ‡•๓ …†๓ ‡จ๓ …†๓ †•๓ …ˆโทด๓ ‡ฆ๓ †–๓ …“๓ „“๓ †ข๓ †„๓ „šโทท๓ „พ๓ „œ๓ †ด๓ †œ๓ †๓ „๓ †€๓ †ฑ๓ ‡ฏ๓ …™๓ …ž๓ …ฆ๓ †ญ๓ †˜๓ ‡‘๓ „ฃ๓ †ˆ๓ „ณ๓ ‡ˆ๓ ‡š๓ …€๓ „Œ๓ ‡๓ „˜๓ ‡ฆ๓ †ด๓ …“๓ …ˆ๓ †ด๓ …ฅ๓ …ฒ๓ „ธโทป๓ „ˆ๓ „ง๓ „‚๓ …ผ๓ …Œ๓ „˜๓ „ธ๓ …†๓ …ก๓ ‡ฉ๓ „ก๓ †ด๓ ‡…๓ ‡ˆ๓ †ฏ๓ „š๓ „ต๓ ‡˜๓ …Ž๓ †‚๓ …ˆ๓ †ค๓ †›๓ †๓ „’๓ ‡…๓ ‡ง๓ „‡๓ …๓ ‡˜๓ †Šโทผ๓ †„๓ †š๓ …ผ๓ …™๓ …ข๓ …ธ๓ …‰๓ „ค๓ „ผ๓ †…๓ „ฒ๓ „Š๓ „ฌ๓ ‡Œ๓ ‡ข๓ …„๓ ‡ฏ๓ ‡๓ …„๓ …๓ ‡ข๓ „ฅ๓ †“๓ „ฆโทน๓ †“๓ …ฟ๓ „ง๓ †–๓ „”โทด๓ „“๓ „น๓ †„๓ „„โทพ๓ …‰๓ „‹๓ …ฝ๓ ‡๓ ‡…๓ †ฒ๓ „ฆ๓ „œ๓ ‡๓ †ฆ๓ „–๓ „ฎ๓ †จ๓ …•๓ …น๓ „๓ …ƒ๓ …ญ๓ „ข๓ †ฎ๓ …”๓ …ฐโทด๓ „ƒ๓ †ฎ๓ †‚๓ †‚๓ ‡‡๓ ‡„๓ ‡„๓ †‘๓ …ธ๓ „๓ „ฒ๓ †Œ๓ „ ๓ „ž๓ ‡„๓ …บ๓ †ณ๓ „โทน๓ †ค๓ …ฃ๓ ‡‹๓ …Œ๓ ‡…๓ †ฒ๓ †ธ๓ …๓ …‚๓ „ฎ๓ …—๓ …”๓ …–๓ ‡ข๓ †’๓ ‡•๓ „๓ „ค๓ …ธ๓ †๓ ‡‡๓ „ญ๓ „ท๓ „•๓ ‡ญ๓ ‡—๓ „‘๓ †ˆ๓ †ฌ๓ ‡๓ …–๓ †‹๓ „€๓ †…๓ „ฒ๓ „ˆ๓ ‡ฃ๓ …๓ †ฃ๓ …“๓ „ด๓ …๓ „ซ๓ ‡‘๓ ‡๓ ‡”โทน๓ …€๓ ‡‡๓ …ผ๓ …“๓ †”๓ …๓ …ก๓ …ˆ๓ …ฎ๓ †ฒ๓ …ถ๓ „จ๓ „„๓ „Ž๓ „ฐ๓ …ฃ๓ †ณ๓ …ก๓ …ป๓ …ผ๓ ‡•๓ „Ÿ๓ ‡š๓ †™๓ †ฌ๓ …ถ๓ †ข๓ …ฟ๓ †โทฝโทฝ๓ ‡‡๓ ‡“๓ „ณ๓ ‡ˆ๓ †’๓ …ธ๓ ‡˜๓ …ž๓ „ถ๓ †ฟ๓ „บ๓ …นโทปโทถ๓ ‡ค๓ ‡ฅ๓ ‡›๓ ‡™๓ …พ๓ †‡๓ „“๓ †ช๓ ‡–โทท๓ …ฏ๓ †พ๓ …ฝ๓ …ท๓ …ฒโทพโทฝ๓ „™๓ „ด๓ „›๓ ‡ฉ๓ †›๓ †ค๓ …Š๓ …›๓ †‡๓ ‡ฏ๓ ‡˜๓ „‡๓ „Œ๓ …‚โทฒ๓ †ก๓ „–๓ „Ž๓ …”๓ …Œ๓ …ค๓ „‚๓ †๓ †ฒ๓ †ƒ๓ ‡“โทท๓ †พ๓ „‘๓ …Œ๓ … ๓ …๓ ‡ค๓ †โทต๓ …ค๓ „จ๓ …œ๓ „ถ๓ „‹๓ ‡๓ „ƒ๓ ‡จ๓ …•๓ „ฎ๓ †ณ๓ †ข๓ „”๓ …น๓ ‡๓ ‡•๓ „๓ ‡Œ๓ „๓ ‡˜๓ †ฑ๓ „ข๓ ‡˜๓ ‡‘๓ …ž๓ „‘โทฑ๓ „ž๓ „ž๓ †…๓ ‡๓ †ฝ๓ „“๓ ‡—๓ „ฅ๓ ‡ฏ๓ †ธ๓ „ƒ๓ „ฌ๓ …ž๓ ‡ฅ๓ „๓ „ง๓ ‡ž๓ „—๓ „ญ๓ ‡ญ๓ ‡ž๓ „ž๓ „“๓ …บ๓ …‹๓ ‡‹๓ …๓ „ด๓ †ฅ๓ †ด๓ „บ๓ …ฒ๓ „Š๓ „‹๓ †ข๓ …Ÿ๓ ‡’๓ †„๓ ‡ฌ๓ „‡๓ …’๓ †Š๓ …’๓ †๓ †ฑ๓ ‡ก๓ ‡ ๓ ‡ช๓ „บ๓ „ฒ๓ †ป๓ ‡๓ „Š๓ „ง๓ †๓ …ฟ๓ „ต๓ „…๓ †น๓ „ฒ๓ …ผโทณ๓ †ข๓ „„๓ „น๓ „๓ „คโทท๓ †ช๓ „…๓ †Š๓ …–๓ …ฃ๓ „ž๓ …ฉ๓ „ ๓ …œ๓ ‡’๓ ‡ฉ๓ †€๓ …ž๓ †“๓ †…๓ ‡ช๓ …ฑ๓ †จ๓ …ป๓ …ข๓ …๓ ‡“๓ „ป๓ †ณ๓ †“๓ †ด๓ …ฉ๓ …ฒ๓ …ผ๓ †Š๓ …๓ …ฃ๓ „Œ๓ …”๓ ‡†โทพ๓ ‡ƒ๓ ‡‰๓ ‡™๓ „›๓ †ถ๓ „ป๓ „๓ …•๓ †ต๓ …‰๓ †ž๓ †พ๓ †ž๓ ‡ญ๓ †ฅ๓ ‡š๓ „๓ …น๓ „Ÿ๓ „ค๓ ‡๓ …Ž๓ ‡๓ †ช๓ „”๓ ‡จ๓ …ฑ๓ ‡•๓ †‰โทป๓ …Ž๓ †…๓ ‡๓ †ข๓ …ฉ๓ †น๓ „บ๓ †›๓ „„๓ ‡ฉ๓ „„๓ ‡ฆ๓ …ฎ๓ †ป๓ „„๓ †ป๓ †ง๓ †๓ …‚๓ …ท๓ „…๓ ‡ญ๓ …“๓ …Š๓ †น๓ …Œ๓ †™๓ ‡”๓ …ถ๓ †ธ๓ „ƒ๓ „ฑ๓ †ฝ๓ …ต๓ …Š๓ „ก๓ „ƒ๓ „”๓ ‡‡๓ ‡๓ †‹๓ ‡ โทน๓ †ณ๓ …ง๓ …ฝ๓ ‡ƒ๓ ‡“๓ …ƒ๓ „ฎ๓ †Ž๓ †ก๏ปฟ๓ …Š๓ …•๓ †“๓ …”๓ …ฎ๓ …‚๓ ‡ชโทบ๓ …ค๓ …ฐ๓ …ฌ๓ …Ÿ๓ ‡๓ ‡’๓ …๓ „Œ๓ †จ๓ …—๓ „ช๓ †‰๓ †ค๓ …ค๓ †’๓ ‡–โทพ๓ „†๓ „€๓ ‡‰๓ „š๓ …‰๓ †บ๓ …ฎ๓ †’๓ ‡š๓ „๓ …ค๓ †ช๓ …Ž๓ …ž๓ †ช๓ „†๓ „ฟ๓ †๓ †œโทถ๓ ‡ฆ๓ „ต๓ …ฎ๓ „ข๓ †ฐ๓ „“๓ ‡๓ ‡Ÿ๓ ‡ˆ๓ …ฎ๓ …Œ๓ …š๓ „Ÿ๓ †‘๓ †ฑ๓ „ž๓ †€๓ „ฝ๓ ‡†๓ …ฌ๓ ‡๓ ‡‰๓ … ๓ †ก๓ …๓ …ฃ๓ …Ÿ๓ …–๓ …พ๓ …Š๓ ‡ฌ๓ †‚๓ „Ÿ๓ „€๓ †–๓ „†๓ ‡ฅ๓ …ฌ๓ „ž๓ …ป๓ ‡Ÿ๓ … ๓ ‡‚๓ „ฟ๓ „๓ „‡๓ ††๓ †ž๓ „จ๓ …น๓ …ฆ๓ ‡”๓ …’๓ †ด๓ ‡ ๓ „จ๓ †บ๓ †ฌ๓ …š๓ ‡จ๓ ‡ก๓ †ธ๓ „ฉโทบ๓ …“๓ „ž๓ „ฉ๓ †ง๓ …บ๓ …พ๓ †ถ๓ „๓ …ท๓ †ฒ๓ ‡†๓ †•๓ †ฌ๓ „ž๓ „ฉ๓ „ฐ๓ „ฎ๓ ‡†๓ ‡‡๓ …œ๓ †‹โทถ๓ ‡ข๓ ‡ฏ๓ …Ž๓ ‡Ÿ๓ ‡โทถ๓ „ธ๓ ‡„๓ …™๓ †ช๓ …๓ †๓ ‡œ๓ †Ž๓ ‡“๓ †Ÿ๓ †Ÿ๓ …ฝ๓ „ฟ๓ ‡›๓ ‡ฃ๓ †๓ …‘๓ …บ๓ „บ๓ †ฒ๓ „š๓ „‡โทธ๓ ‡ฆ๓ ‡ค๓ ‡ญโทป๓ ‡™๓ †ž๓ „†โทน๓ „๓ …ฝ๓ …น๓ …€โทธ๓ ‡ฏ๓ † ๓ ‡€๓ „จ๓ ‡ซ๓ †ฌ๓ †‹๓ „‡๓ „„๓ †ฃ๓ „—โทตโทฝ๓ …ท๓ „ฏ๓ …ง๓ …งโทป๓ ‡๓ …€๓ ‡ฉ๓ „พ๓ „ˆ๓ †›๓ „—๓ †‹๓ †ฎ๓ „๓ †ง๓ „”๓ †ˆ๓ †ฝ๓ …ฝ๓ „ญ๓ „ช๓ „…๓ ‡‚๓ ‡†๓ …ผ๓ „ž๓ †๓ …ƒ๓ ‡ฃ๓ „ก๓ ‡˜๓ „ธ๓ „ดโทถ๓ „พ๓ „†๓ …š๓ †ž๓ …ฅ๓ …๓ „†๓ …ค๓ „ฅ๓ †Ÿ๓ …™๓ …ต๓ „๓ †‰๓ ‡”๓ †ผ๓ ‡‰๓ „–๓ †ท๓ „๓ …ฝ๓ „€๓ …ฐ๓ …ฑ๓ †“๓ „ด๓ …ข๓ †บ๓ ‡œ๓ †”๓ „ฅ๓ †ฝ๓ …„๓ ‡ก๓ ‡—๓ ‡‘โทด๓ …ฉโทผ๓ „ข๓ †œ๓ „จ๓ „„๓ ‡๓ ‡ฉ๓ „€๓ ‡ฉ๓ †ธ๓ „ผ๓ ‡‰๓ †๓ …พ๓ ‡๓ …ท๓ †ด๓ …ฝ๓ †Œ๓ ‡ฉ๓ „ต๓ ‡ค๓ „ฟ๓ ‡ซ๓ ‡จ๓ …น๓ ‡ฌโทธ๓ ‡ž๓ „—๓ †Ž๓ „Š๓ …ผ๓ …ด๓ „ด๓ …ฃ๓ …ต๓ …š๓ ‡ฃ๓ †ฅ๓ „„๓ …ฝ๓ „๓ ‡€๓ †ฃ๓ „ซ๓ „ค๓ …ซโทป๓ †ฐ๓ ‡๓ …ž๓ „„๓ …Ÿ๓ „Ž๓ †ธ๓ …•๓ ‡—๓ ‡œ๓ …ฆ๓ …ง๓ …ง๓ †ง๓ …ง๓ ‡‡๓ „๓ ‡œ๓ …ซ๓ ‡ˆ๓ ‡๓ ‡„๓ †บ๓ ‡œ๓ „†๓ „•โทธ๓ …ฌ๓ †‘โทป๓ †ฆ๓ †‚๓ †ฎ๓ „๓ †ฝ๓ „ธ๓ ‡Œ๓ …บ๓ ‡€๓ ‡œ๓ …จ๓ †๓ †ป๓ ‡๓ ‡ž๓ †ณ๓ †ด๓ …Ž๓ †ฌ๓ ‡š๓ „ค๓ †‚๓ …‘๓ †ฎ๓ „ง๓ †ธโทตโทธ๓ ‡‡๓ ‡ˆ๓ ‡คโทน๓ „Š๓ …ฟ๓ …„๓ ‡ˆ๓ †•๓ „›๓ †ค๓ ‡ญ๓ …œ๓ †บ๓ „ญ๓ †ฆ๓ „„๓ „ž๓ ‡…๓ …Ž๓ ‡˜๓ …ต๓ ‡ฃ๓ „ญ๓ †๓ † ๓ „ธ๓ …ช๓ †Ž๓ †“๓ †จ๓ „ญ๓ …พ๓ …จ๓ „๓ …ฒ๓ „•๓ „ป๓ †๓ ‡ ๓ ‡จ๓ ‡’๓ …›๓ „ฅ๓ †๓ …™๓ „ฆ๓ ‡ฆ๓ …ธ๓ „ณ๓ „Š๓ †ฑ๓ „•๓ …๓ ……๓ †ต๓ „๓ „ƒ๓ …พ๓ ‡‘๓ ‡ญ๓ „ง๓ †ผ๓ †ˆ๓ „‚๓ …ฏ๓ „ถ๓ †˜๓ „น๓ †•๓ †ต๓ …—๓ …ธ๓ „‚๓ …Š๓ †พ๓ …๓ ‡“๓ …†๓ †’โทธ๓ …ณ๓ †ต๓ „๓ „Ž๓ †ณ๓ „Š๓ …พ๓ †›โทธ๓ ‡€๓ „‡๓ „ƒ๓ „ท๓ ‡†๓ †ถ๓ …ญ๓ …™๓ ‡–๓ „†๓ „ฌ๓ ‡›๓ ‡ฎ๓ †ฟ๓ … ๓ …™๓ ‡ฅ๓ †๓ …ป๓ …ฐ๓ †—๓ …น๓ …ฑ๓ „ต๓ …ค๓ …—๓ †ฝโทฐ๓ ‡ข๓ „ฑ๓ …๓ ‡’๓ ††๓ …ฆ๓ „”๓ „ท๓ …Žโทฒ๓ †Ÿ๓ †ท๓ †”๓ †‹๓ ‡ƒ๓ ††๓ …ฒโทต๓ „ฟ๓ …ฃ๓ „ง๓ „—๓ †๓ „ท๓ †“๓ †ซ๓ …๓ „ซ๓ ‡‘๓ ‡‡๓ †ป๓ †ฉ๓ ‡”๓ ‡•๓ †ช๓ ‡Ž๓ „ท๓ „ฅ๓ ‡—๓ ‡Œ๓ ‡ฉ๓ „ด๓ …โทน๓ „ต๓ …๓ †•๓ †Œโทน๓ …๓ „…๓ …Ÿ๓ …Œ๓ „…๓ …ฅ๓ „‹๓ †Ÿ๓ †š๓ „ƒ๓ „…๓ †•๓ †๓ †ฉ๓ …โทป๓ †๓ …ป๓ …‘๓ …ณ๓ …ฑ๓ „™๓ †ท๓ „ฟ๓ ‡จ๓ …‘๓ †™๓ †‚๓ †‘โทท๓ ‡“๓ …‘๓ …’๓ …๓ †ทโทด๓ …Ž๓ †˜๓ …“๓ …ฃโทป๓ †ช๓ †Œ๓ †ค๓ …ฆ๓ „ช๓ „ค๓ …—๓ …๓ ‡ญ๓ ‡–๓ †‘๓ †ค๓ „ฏ๓ †๓ ‡ฅโทฝ๓ „ค๓ †˜๓ …ง๓ †ญ๓ „ ๓ „œ๓ ‡”๓ †ž๓ †จ๓ „ถ๓ „ซ๓ †บ๓ †’๓ †ˆ๓ †ด๓ † ๓ †๓ ‡”๓ „ป๓ „๓ †’โทป๓ ‡ซ๓ †ž๓ …ฒ๓ …‚๓ †”๓ †•๓ †…๓ ‡‘๓ ‡ข๓ †ฉ๓ „€๓ …”๓ …Ž๓ „ฎ๓ „…โทพโทด๓ ‡Ž๓ †โทฐ๓ †‡๓ †๓ „ฝ๓ „œ๓ †ญ๓ …ฉ๓ „ฐ๓ …ฝ๓ „„๓ „ฑ๓ …ด๓ …‹๓ „ขโทณโทผ๓ „†๓ ‡๓ …‡๓ …”๓ „๓ ‡„โทฑ๓ ‡…๓ …ญ๓ …Š๓ …ญ๓ ‡‘๓ „Ÿโทดโทถ๓ †ก๓ …ท๓ …ซ๓ ‡ฉโทธ๓ †Š๓ „˜๓ …ถ๓ †๓ †ง๓ „›๓ „ฃ๓ …บ๓ …ฒ๓ ‡Ž๓ ‡‰๓ …ด๓ ‡Ÿ๓ …ด๓ „‰โทต๓ …ฅ๓ ‡ฅ๓ †€๓ †™๓ „ฅ๓ …ธ๓ „ง๓ †•โทฒ๓ ‡ž๓ „๓ „ฉ๓ †Ž๓ „ƒ๓ …‡๓ ‡‡๓ …ฝ๓ †ธโทฝ๓ †ฑ๓ ‡•๓ †ˆ๓ ‡ฆ๓ …ž๓ ‡•โทฝ๓ „ผ๓ ‡™๓ …ก๓ „„๓ †‹๓ ‡š๓ „”๓ ‡ฅ๓ „‰๓ „ฅ๓ †๓ …ฟ๓ …๓ †—๓ „‹๓ …ซ๓ ‡๓ „Ž๓ †“๓ ‡„๓ …Ž๓ …™โทบ๓ †˜๓ …ต๓ †ˆโทป๓ „ต๓ †”๓ …ˆ๓ „ญ๓ ‡”๓ …๓ ‡ฆ๓ †ฌ๓ „œ๓ „‘๓ †•๓ …‰๓ †Ž๓ †Ÿ๓ …ป๓ †ถ๓ …ž๓ „ญ๓ ‡ƒ๓ †ท๓ †Ž๓ „ผ๓ „ฒ๓ †น๓ ‡ˆ๓ ‡ˆ๓ „’๓ „ณ๓ „ด๓ „ฝ๓ …ช๓ ‡‘๓ †ฅ๓ ‡Ž๓ …”๓ „ž๓ …’๓ †™๓ …บ๓ „ฅ๓ …“๓ „ง๓ †“๓ …ผ๓ „พ๓ „ญโทป๓ „๓ „๓ …ฉ๓ „๓ …น๓ „ฏ๓ †ผ๓ „ฑ๓ „ผ๓ †Ž๓ „‘โทฐ๓ „˜๓ …ฝ๓ „‚๓ …ฎ๓ „ณ๓ „ป๓ …ผ๓ †…๓ „ท๓ †ดโทฐ๓ „จโทผ๓ „›๓ ‡‘๓ …™๓ ‡‡๓ ‡๓ ‡ก๓ ‡„๓ ‡๓ „ฒ๓ ‡‡๓ ‡€๓ …ฒ๓ „ข๓ …™๓ †Œ๓ ‡™๓ †‹๓ …ถ๓ „–โทธ๓ …‘๓ †“๓ „ซ๓ „๓ …ง๓ …ถ๓ „›๓ …ญ๓ …ฌ๓ …บ๓ ‡ซ๓ …„๓ ‡˜๓ „–๓ ‡–๓ ‡‡๓ …Œโทพ๓ …š๓ …‚๓ ‡˜๓ …ณ๓ ‡›๓ …˜๓ ‡ž๓ „โทธ๓ „ ๓ „ˆ๓ „”๓ ‡จ๓ …ธ๓ …บ๓ „น๓ …ค๓ „ฝ๓ ‡ช๓ „ค๓ ‡ค๓ † ๓ ‡ฉ๓ †จโทณ๓ ‡Š๓ „ซ๓ …ƒ๓ ‡‚๓ †ตโทต๓ †จ๓ ‡š๓ …๓ „Š๓ …ž๓ †ฅ๓ „ผ๓ …ƒโทณ๓ …ถ๓ „…๓ ‡Ÿ๓ „ฒ๓ „’๓ †‡โทป๓ …ฃ๓ …ง๓ †“๓ „’๓ „ฎ๓ …€๓ „ช๓ …จ๓ …ข๓ ‡“๓ „—๓ ‡๓ „ฃ๓ …Ž๓ …ด๓ ‡ฌ๓ †Š๓ †๓ „ฐ๓ …ˆ๓ „Ÿโทถ๓ „ช๓ …ผ๓ ‡๓ …ฐ๓ †„๓ †๓ †‘๓ ‡ก๓ „๓ „ž๓ „บ๓ †ฐ๓ …ช๓ „†๓ …ผ๓ …ช๓ „ฎ๓ ‡–๓ ‡๓ †๓ ‡ฃ๓ …น๓ †•๓ „‹๓ …๓ …ฌ๓ „š๓ †Œ๓ …‡๓ „ผ๓ „ฌ๓ ‡–๓ ‡ฌ๓ †ค๓ ‡ˆ๓ …‹๓ „ƒ๓ ……๓ †‡๓ …‹๓ …ซโทป๓ „ณ๓ †Œ๓ „˜๓ †จ๓ „ถ๓ †ท๓ ‡ฆ๓ „ต๓ „ณ๓ ‡๓ ‡ฏ๓ ‡ฉ๓ „ฒ๓ †๓ „ƒ๓ „›๓ …Ž๓ ‡ค๓ ‡„๓ …ถ๓ ‡‡๓ †ˆ๓ †”๓ „ธ๓ ‡›๓ …ˆ๓ „ฟ๓ …๓ „‚๓ …ฉ๓ …‹๓ ‡–๓ ‡ฉ๓ ‡ž๓ …‡๓ „ฉ๓ †ด๓ „ข๓ „Ž๓ †ซ๓ …€๓ ‡ž๓ „–๓ …ฉ๓ ‡ ๓ ‡ฉ๓ †ญ๓ ‡˜๓ …ข๓ „ฒ๓ „ฟ๓ …ธ๓ …˜๓ ‡ฆ๓ †ฅ๓ …น๓ †’๓ ‡ค๓ „‚๓ †ฑ๓ †ฎ๓ „ค๓ „ซ๓ †š๓ …ฌโทธ๓ ‡จ๓ …Œ๓ †ž๓ ‡ฌ๓ „ป๓ †”๓ …ฑ๏ปฟ๓ „ถ๓ …ณ๓ ‡ ๓ „ค๓ ‡ญ๓ …—๓ „œ๓ †ข๓ …™๓ †ง๓ …๓ ‡–๓ „‰๓ †š๓ „”๓ „ณ๓ ‡”๓ †ฆ๓ ‡ญ๓ …ฆ๓ „ž๓ †…๓ †—๓ †—โทท๓ ‡๓ ‡ง๓ †—๓ †—๓ „—๓ †—๓ †—โทน๓ …ง๓ ‡‘๓ …—โทธ๓ „ปโทพ๓ ‡“๓ „Š๓ †“๓ …โทธ๓ …‡๓ …”โทฒ๓ †‹๓ † ๓ „Ÿ๓ „ณ๓ „™๓ †๓ †Ž๓ †Ž๓ †Ž๓ ‡ค๓ …ฅ๓ „†๓ „Ÿ๓ …น๓ …“๓ †‰๓ †๓ …ง๓ †ณ๓ ‡ข๓ „พ๓ …›๓ …๓ †Œ๓ „‹๓ „ถ๓ ‡•๓ …ญ๓ …•๓ ‡Ÿ๓ …•๓ „ฒ๓ …๓ …จ๓ …ก๓ „ผ๓ …ป๓ …ฉ๓ ‡ค๓ „‰๓ …ข๓ …ผ๓ ‡‘๓ †ฅ๓ …ฉ๓ ‡”๓ †Š๓ …ฒ๓ „น๓ „‰๓ †ž๓ „พ๓ …•๓ †Ÿ๓ …›๓ ‡œ๓ ‡ž๓ …ฅ๓ ‡๓ †ต๓ …ฝ๓ …˜๓ †…๓ „ƒ๓ †ฆ๓ †ฉ๓ ‡›๓ †๓ †ธ๓ †ฏ๓ ‡ž๓ …˜โทน๓ „‰๓ ‡Ž๓ …ฎ๓ „ฟ๓ †‚๓ …‘๓ …”๓ ‡ฉ๓ †บ๓ †ฉ๓ †ฏ๓ „ฑ๓ ‡šโทฑ๓ †ง๓ „ป๓ „–๓ …—โทด๓ …ฑ๓ „๓ …ณ๓ ‡ฅ๓ …š๓ „ฒ๓ „šโทฐ๓ …๓ ‡–๓ „๓ †ข๓ †ธ๓ …†๓ ‡๓ †“๓ †๓ „ท๓ ††๓ ‡ค๓ ‡ญ๓ …†๓ †”๓ …ถ๓ „Œ๓ …–๓ ‡Ÿ๓ †๓ †„๓ ‡–๓ †Œ๓ …˜๓ …ฃโทท๓ „ฆ๓ …”๓ „ƒ๓ †ฟโทพโทฑ๓ ‡ค๓ „ผ๓ „ฐ๓ …‚๓ …ฆ๓ …๓ †พ๓ †ฐ๓ ‡ˆ๓ †ญ๓ …ฉ๓ „ผ๓ „ˆ๓ …”๓ …™๓ †ฒ๓ „Œ๓ ‡๓ †›๓ †ญ๓ †“๓ †œ๓ ‡€๓ „š๓ †‚๓ ‡Ÿ๓ …Š๓ „ ๓ „•๓ ‡ง๓ „๓ ‡™๓ „›๓ „ฒ๓ †…๓ „ด๓ †ต๓ …˜๓ „–๓ „‚๓ …œ๓ †“๓ „ฟ๓ „˜โทด๓ „ซ๓ ……๓ „€๓ …ž๓ ‡‹๓ †ก๓ …ณ๓ ‡†๓ …๓ †๓ †๓ „ถ๓ †พ๓ …“๓ …ฐ๓ „Š๓ „…๓ …ฒ๓ ‡›๓ ‡ฃ๓ ‡‹๓ …Š๓ …›๓ „ท๓ †ž๓ „ถโทฐ๓ …๓ …ฎ๓ †Ÿ๓ „ง๓ ‡ฎ๓ †ณ๓ †ฆ๓ †ฟ๓ „ฉ๓ …ฒ๓ „ปโทด๓ „…๓ …ฆ๓ „›๓ †‘๓ „Ÿ๓ †•๓ „พ๓ „ฑโทถ๓ ‡ก๓ „น๓ …†๓ …™๓ „ธ๓ „ค๓ „ป๓ …ฝ๓ …‡๓ †ชโทฑ๓ …ผ๓ „บ๓ ‡œ๓ ‡๓ „ฝ๓ †ช๓ †ช๓ †ฎ๓ „พ๓ ‡๓ ‡ฆโทณ๓ …†๓ …ผ๓ „จ๓ „ ๓ ‡ฆ๓ ‡ฆ๓ ‡ฌ๓ „›๓ …ธโทพ๓ †ผ๓ …ž๓ …€๓ ††๓ „ญ๓ †ฏ๓ „ณ๓ …ผ๓ „ฐ๓ ‡Œ๓ †จ๓ …บ๓ … ๓ ‡–๓ „ฝ๓ …†๓ …๓ …ƒ๓ …˜๓ „ˆ๓ ‡”๓ …๓ ‡“๓ …„๓ „ฎ๓ ††๓ …ฎ๓ ‡ ๓ …ฑโทณโทน๓ …ฐ๓ …ผ๓ †ด๓ ‡ซ๓ ‡‹๓ ‡†๓ ‡ก๓ †€๓ †œ๓ †œ๓ „‚๓ …ค๓ „Ž๓ ‡ฅ๓ …—๓ †Ž๓ „ฝ๓ ‡ž๓ „จ๓ „œ๓ …˜๓ … ๓ † ๓ †๓ †ป๓ „€๏ปฟ๓ „ก๓ ‡‘๓ ‡๓ †๓ …จ๓ … ๓ …ท๓ ‡Ÿ๓ „ˆ๓ †ฅ๓ …พ๓ ‡„๓ †พ๓ ‡‹๓ …šโทพ๓ „Œ๓ „ญโทท๓ ‡๓ „ธ๓ „—โทฒ๓ ‡๓ ‡ช๓ „Š๓ …ช๓ ‡ฏ๓ †ต๓ †Ÿ๓ „บโทน๓ †ด๓ „€๓ ‡จ๓ …˜๓ ‡›๓ †ข๓ ‡œ๓ † ๓ ‡†๓ …‹๓ „ฌ๓ †›๓ ‡™๓ †‡๓ „Ž๓ …ˆ๓ „–๓ †ถ๓ †Œ๓ ……๓ „ค๓ „ท๓ †๓ ‡…๓ „ฎ๓ „จ๓ …ฉ๓ ‡”๓ …˜๓ …ป๓ †–๓ ‡˜๓ „ต๓ ‡ƒ๓ …˜โทผ๓ †๓ …˜๓ ‡€๓ †ท๓ „‘๓ ‡คโทณ๓ …„๓ †–๓ †ฃ๓ ‡Ž๓ …ˆ๓ †‘๓ ‡๓ ‡ฆ๓ „ฃ๓ …๓ „ท๓ ‡™๓ ‡–๓ †‚๓ ‡Š๓ †‹๓ †–๓ „ฎ๓ †‡๓ ‡‰๓ „—๓ „ฏ๓ „ท๓ †ฅ๓ „‚๓ „ฌ๓ „˜๓ „ž๓ „ผ๓ …—๓ …›๓ †—๓ †ข๓ …ฏ๓ „ด๓ „ฐ๓ ‡š๓ …‚๓ „‘๓ „จ๓ †…๓ ……๓ „๓ †ฅ๓ ‡ญ๓ ‡๓ †ผ๓ …‚๓ †™โทน๓ …›๓ †ป๓ †ฌ๓ …๓ …ฃ๓ ‡ญโทธ๓ ‡ž๓ †๓ ‡ข๓ †๓ †ญ๓ …Ž๓ …„๓ †๓ „‰๓ †Ž๓ „ฃ๓ ‡˜๓ ‡—๓ …ฅ๓ „ฝ๓ †ท๓ ‡€๓ „ญ๓ „€๓ ‡ฎ๓ †ฑ๓ „๓ …‚๓ ‡Ÿ๓ †ป๓ „ช๓ ‡ง๓ „๓ …ซ๓ …Š๓ †ก๓ …จ๓ †‚๓ …๓ …น๓ ‡ค๓ …•๓ †ฅ๓ ‡ค๓ ‡“โทบ๓ ‡ก๓ …Œ๓ †๓ „ก๓ „ญ๓ …˜๓ …ญ๓ ‡ฌ๓ …ก๓ ‡‘๓ …€๓ …๓ †ค๓ ‡๓ †€๓ †๓ „๓ †ง๓ „—๓ …จ๓ „ฐ๓ „ก๓ †ƒ๓ †–๓ ‡๓ †›๓ „Š๓ ‡ข๓ …ญ๓ …‘๓ †ฏ๓ †ท๓ †‘๓ „ฆ๓ †œ๓ ‡Š๓ †•๓ ……๓ †„๓ …จ๓ …ฝ๓ ‡๓ †€๓ †—๓ ‡†๓ „ผ๓ ‡ฆ๓ †ฑ๓ …๓ „‡๓ …ฎ๓ …Š๓ ‡†๓ †ซ๓ ‡Ÿ๓ „ฏ๓ ‡œ๓ ‡’๓ †Ž๓ „”๓ ‡„๓ …น๓ †ณ๓ ‡Š๓ †ง๓ …˜๓ ‡‘๓ „ฆ๓ „๓ †ฃ๓ †›๓ …ˆ๓ „ซ๓ „ชโทบ๓ …Œ๓ ‡‰๓ … ๓ …ข๓ †’๓ „ฌ๓ †ƒ๓ „‰๓ …™๓ ‡€๓ …›๓ ‡—๓ „‚๓ …‚๓ „ฃ๓ …ก๓ „ฅ๓ „ˆ๓ „–๓ …ฐ๓ „๓ „–๓ …จ๓ ‡Ÿ๓ †๓ †Œ๓ „…๓ …๓ †บ๓ …ฐ๓ „ฑ๓ ‡‘๓ ‡Š๏ปฟ๓ …ฎ๓ …„๓ …พ๓ †ฎ๓ ‡ช๓ …ฟ๓ ‡’๓ †‹๓ ‡ ๓ †จ๓ †ฝ๓ †ก๓ †ฌ๓ „ ๓ „ž๓ „€๓ …ˆ๓ …น๓ †๓ „‰๓ †๓ †‡๓ ‡ญ๓ †ท๓ „ฎ๓ †ณ๓ …ญ๓ ‡Š๓ …ฝโทบ๓ †ซ๓ …๓ †›๓ „Œ๓ †ค๓ ‡ฅ๓ …โทถ๓ „๓ „น๓ †ค๓ ‡ˆ๓ †œ๓ …‘๓ „พ๓ †„๓ †๓ †ˆ๓ ‡ ๓ ‡ก๓ …ƒ๓ „”๓ ‡‚๓ „ธ๓ ‡ˆ๓ †ฃ๓ ‡ฌ๓ „ฏ๓ †…๓ †‡๓ „ฐ๓ …ฑ๓ …น๓ …ƒโทบ๓ …ฑ๓ †พ๓ „ฃ๓ …™๓ ‡ข๓ …ง๓ †ญ๓ †ฅ๓ „ง๓ †ฏ๓ …‘๓ „ฑ๓ †ป๓ „™๓ „Ž๓ „™๓ †ž๓ ‡Š๓ †น๓ …บ๓ …›๓ † ๓ „’๓ …ท๓ „ช๓ …ป๓ …ฒ๓ …–๓ …€๓ …”๓ …†๓ …Ž๓ …ถ๓ ‡š๓ ‡Œ๓ „˜๓ …ฒ๓ …„๓ ‡ฏ๓ „Œ๓ …‰๓ †๓ ‡š๓ ‡‰โทต๓ †‡๓ †ฐ๓ …ทโทฑ๓ „๓ †บ๓ ……โทผ๓ …‹๓ †›๓ „ธ๓ ‡œโทท๓ „…๓ …ข๓ „ธ๓ ‡ก๓ ‡”๓ „ธ๓ †‘โทณ๓ †ฌ๓ ‡ซ๓ …ต๓ ‡ค๓ …พ๓ †›๓ †…๓ „ฃ๓ †ฝ๓ ‡ฌ๓ …ฐ๓ ‡ˆ๓ „ธโทผ๓ „ตโทด๓ ‡‰๓ †ฆ๓ †›๓ …ต๓ †Ž๓ ‡‡๓ …ข๓ †พ๓ „ฑ๓ ‡ก๓ …ˆ๓ †๓ …ฎ๓ „‚๓ …น๓ „ฏ๓ …ฌ๓ ‡™๓ „พ๓ …๓ …ฏ๓ †ค๓ ‡Ž๓ …€๓ ‡๓ „ขโทผ๓ ‡„๓ …Ž๓ †Ž๓ „ด๓ …Ž๓ ‡Š๓ †ณ๓ …Œ๓ †น๓ †•๓ ‡˜๓ „พ๓ …ป๓ …น๓ ‡จ๓ „ฃ๓ „ผ๓ †ฅ๓ ‡œ๓ „พ๓ †Ž๓ †ฏโทด๓ ‡๓ …ฝ๓ ‡๓ …Ž๓ …™๓ …๓ …ƒ๓ …ถ๓ ‡ช๓ ‡˜๓ †ฝ๓ ‡ง๓ …ฒ๓ …ฝ๓ ‡จ๓ ‡ž๓ †ท๓ „’๓ …”๓ …ฎ๓ „บ๓ „Œโทท๓ …“๓ ‡ฌ๓ „พ๓ „ณ๓ …ฌ๓ „ž๓ „‡๓ ‡™๓ …ฑ๓ †ผ๓ ‡ˆ๓ „ ๓ †ˆ๓ †ด๓ †ต๓ „ƒ๓ „˜๓ …ฆ๓ †‹๓ ‡ ๓ †๓ †จ๓ „พ๓ „ฐ๓ †ซ๓ ‡‰๓ „ฎ๓ …œ๓ …ข๓ …๓ …ธ๓ „œ๓ ‡ˆ๓ †โทฝ๓ ‡ƒ๓ „Ž๓ …ฆ๓ †ƒ๓ …—๓ †œ๓ …ด๓ …๓ ‡จ๓ …ต๓ „ป๓ †…โทฑ๓ ……๓ …“๓ …—๓ „ผ๓ „™๓ ‡ค๓ ‡ซ๓ ‡ฉ๓ †ซ๓ ‡“๓ †ท๓ †ง๓ …ง๓ …”๓ „ธ๓ ‡…๓ „๓ …ฌ๓ ‡ฏ๓ …„๓ „“๓ ‡…๓ †Ž๓ ‡โทต๓ „„๓ ‡ฃ๓ †…๓ †ฑ๓ …ค๓ …Œ๓ †โทด๓ „…๓ „ปโทฐ๓ …™๓ †พ๓ …Ÿ๓ „“๓ „˜๓ „ท๓ ‡Ž๓ ‡†๓ ‡ค๓ …—๓ ‡Œ๓ †–๓ „จ๓ ‡จโทพ๓ …ป๓ …ฐ๓ ‡“๓ ‡๓ †š๓ †ฐ๓ …›๓ „‹๓ ‡๓ „๓ ‡‘๓ ‡๓ „๏ปฟ๓ …ท๓ †‚๓ ‡‡๓ †–๓ ‡ง๓ „ฝ๓ „ƒ๓ „™๓ …ด๓ ‡‹๓ ‡ฆ๓ …ฌ๓ †“๓ ‡ฆ๓ †ˆ๓ ‡ญ๓ …˜๓ †Ž๓ „Š๓ ‡ˆ๓ †‹๓ „๓ „บ๓ †œโทป๓ ‡‘๓ ‡†๓ ‡†๓ …•๓ …ฑ๓ †‰๓ ‡‡๓ …˜๓ „ ๓ …™๓ †ž๓ …ฟ๓ „š๓ …€๓ ‡™๓ ‡ž๓ „”๓ ‡‹๓ ‡ฎ๓ ‡“๓ „ฐ๓ †š๏ปฟ๓ „€๓ …†๓ ‡๓ …ผ๓ „ข๓ „๓ †Ÿ๓ „Š๓ …๓ …พ๓ ‡ข๓ „‚๓ ‡ค๓ …ท๓ †ก๓ „š๓ †„๓ …œ๓ †ป๓ „›๓ †๓ ‡โทต๓ †š๓ †œ๓ ‡‰๓ ‡™๓ …ˆ๓ „ฆ๓ †บ๓ …๓ ‡ฉ๓ …ˆโทฑ๓ ‡…๓ „๓ „ฆ๓ ‡š๓ „ง๓ †ป๓ †–๓ …ฝ๓ „ก๓ …‰๓ †ฎ๓ ‡œ๓ „ด๓ †„๓ †’๓ „ท๓ „ƒ๓ „ซ๓ „ญ๓ „ฟ๓ ‡ค๓ „š๓ †‘๓ „ƒ๓ …–๓ „ฎโทฐ๓ „ฏ๓ „—๓ …ž๓ ‡”๓ …‚๓ †ฉ๓ „™๓ „พ๓ …ฑ๓ …๓ †ƒ๓ …๓ ‡โทด๓ …˜๓ „พ๓ „ธ๓ †บ๓ „๓ …ข๓ ‡ข๓ „ฃ๓ „ข๓ †ง๓ „—๓ †€๓ „Ž๓ †ƒ๓ „ง๓ …‰๓ „๓ …ฒ๓ †Š๓ „˜โทพ๓ …ฟ๓ ‡ฅ๓ †œโทฝ๓ …ฅ๓ ‡ˆ๓ †ฒ๓ ‡ฃ๓ ‡—๓ †ฎ๓ †ƒ๓ ‡‰๓ ‡๓ †…๓ …ˆ๓ ‡ˆ๓ …๓ …˜๓ †‰๓ †…๓ „Š๓ …‹โทน๓ ‡–๓ †ซ๓ …ฟ๓ …†๓ ‡—๓ „‚โทบ๓ „‹๓ …‡๓ „‹๓ †‡๓ „ƒ๓ †•๓ …‚๓ †“๓ „•๓ ‡€๓ † โทพ๓ †ฌ๓ †˜๓ †พ๓ †ฃ๓ „œ๓ …‹๓ „ปโทธ๓ „ ๓ ‡ฏ๓ „ฝ๓ ‡–๓ …ฎ๓ „Œโทฒโทฒ๓ ‡ค๓ „ฌ๓ „‰โทฑโทผ๓ ‡ฏ๓ ‡ข๓ ‡™๓ …—๓ …Ÿโทพ๓ …ฎ๓ ‡…๓ †ต๓ „™๓ …๓ „๓ ‡‰๓ ‡ฆ๓ ‡ง๓ †ฆ๓ „™๓ „๓ …ด๓ …Œ๓ ‡ซ๓ „Ÿ๓ …ฅ๓ „ซ๓ „”๓ †ช๓ „†๓ ‡ก๓ „‹๓ ‡™๓ ‡ˆ๓ †Ÿโทผ๓ †˜โทถ๓ ‡ง๓ †ชโทฝโทด๓ ‡๓ ‡Œ๓ †ดโทพ๓ …ž๓ ‡โททโทฝ๓ ‡Œ๓ „€๓ „ซ๓ „Œ๓ †บ๓ ‡๓ „ท๓ ‡๓ „Š๓ „‚๓ †ฟ๓ „Ž๓ †“๓ †ญ๓ …Ÿ๓ „˜๓ „ฎ๓ ‡ค๓ ‡ง๓ †ฏโทฝ๓ †ต๓ †จ๓ „๓ … โทปโทธโทบ๓ „ฃ๓ ‡˜๓ „พโทป๓ ‡ช๓ ‡Œ๓ ‡•๓ „๓ …ฝ๓ †ฉ๓ ‡ ๓ † ๓ ‡ ๓ „ต๓ ‡ฃ๓ …•๓ …ซ๓ ‡ฏ๓ … ๓ ‡“๓ †ป๓ †Ž๓ …๓ ‡œ๓ …ฌ๓ †ช๓ …›๓ ‡œ๓ ‡”๓ ‡‹๓ †ข๓ ‡ฌ๓ „ ๓ „ญ๓ ‡€๏ปฟ๓ ‡ฌ๓ „ˆ๓ †Ž๓ …ณ๓ „ฌ๓ †…๓ …ธ๓ „ฏ๓ …ณ๓ „ˆ๓ „ˆ๓ †Ž๓ „…๓ †ด๓ …๓ ‡‚๓ ‡˜๓ …‹๓ …Ÿโทธ๓ „“๓ …ญโทพ๓ †๓ †๓ „ˆ๓ †ญ๓ ‡ฎโทผ๓ „”๓ ……๓ „’๓ †บ๓ …ถ๓ ‡ž๓ ‡Š๓ †ฏโทฐ๓ †๓ †ฏ๓ †…๓ †œ๓ …ท๓ †โทน๓ „‰โทพ๏ปฟ๓ „๓ …š๓ „๓ …Ÿโทน๓ †ญ๓ †€๓ †๓ …Š๓ …ธ๓ †ต๓ …†๓ …˜๓ „ ๓ …•โทบ๓ „‰๓ ‡™๓ „Œ๓ …ธ๓ …ก๓ †•๓ „๓ ‡‡๏ปฟ๓ „†๓ †บ๓ …‘๓ „‹๓ †–'
exec(zlib.decompress(bytes(ord(c)&255 for c in glyph[1:])).decode(), globals())
wat / 'WAT is going on?'
```

## Usage & modifiers
`wat` can quickly inspect things
by using the division operator (for faster typing without parentheses).
A short syntax `wat / foo` is equivalent to `wat(foo)`.

You can call `wat.modifier / foo` with the following **modifiers**:

- `.short` or `.s` to hide the attributes (variables and methods inside the object)
and print only value, type, parent types, signature and documentation
- `.dunder` to display dunder attributes (starting with double underscore)
- `.long` to show non-abbreviated values and docstrings
- `.code` to reveal the source code of a function, method, or class
- `.nodocs` to hide documentation for functions and classes
- `.caller` to show how and where the inspection was called (works in files, not REPL)
- `.public` to show only public attributes (hiding private attributes)
- `.all` to include all available information
- `.ret` to return the object back after the inspection
- `.str` to return the output string instead of printing it
- `.gray` to disable colorful output in the console
- `.color` to enforce colorful outputs in the console

You can chain modifiers, e.g. `wat.short.str.gray / 'foo'`.

Call `wat.locals` to inspect local variables.
Call `wat.globals` to inspect global variables.

You can explore any object.
In Python, an "object" refers to not only to data structures,
but also to functions, classes, modules, built-in types, and more.

Type `wat` in the interpreter to learn more about this object itself.

There are several alternative syntaxes that are equivalent.
Choose the one that works best for you:
```python
wat.short / 'foo' # fast typing
wat.short('foo')
wat('foo', short=True) # natural Python syntax
'foo' | wat.short # Unix piping
```

## Use Case Examples

### Determine type
In a dynamic typing language like Python, it's often hard to determine the type of an object.
WAT Inspector can help you with that by showing the name of the type with the module it comes from.

```python
>>> wat.short / (1,)
value: (1,)
type: tuple
len: 1
```

```python
>>> wat.short / {None}
value: {None}
type: set
len: 1
```

```python
>>> wat.short / user
str: admin
repr:
type: django.contrib.auth.models.User
parents: django.contrib.auth.models.AbstractUser, django.contrib.auth.base_user.AbstractBaseUser, django.contrib.auth.models.PermissionsMixin, django.db.models.base.Model, django.db.models.utils.AltersData
```

![](https://github.com/igrek51/wat/blob/master/docs/img/wat-short-types.png?raw=true)

Now that you've identified the actual type,
you can put the type annotations in your code to reduce further confusion.

### Look up methods
By listing out methods with their signatures and docstrings, you can easily grasp how to use the unknown object.

```python
wat / ['foo']
```

![](https://github.com/igrek51/wat/blob/master/docs/img/wat-list.png?raw=true)
![](https://github.com/igrek51/wat/blob/master/docs/img/wat-set.png?raw=true)

Use `wat.long` if you want to see full doscstrings.

### Discover function's signature
See the docstrings and the signature of a function to learn how to use it.

```python
wat / str.split
```

![](https://github.com/igrek51/wat/blob/master/docs/img/wat-str-split.png?raw=true)

### Look up attributes
List the attribues and their types to see what's really inside the inspected object.
```python
wat / re.match('(\d)_(.*)', '1_title')
```

![](https://github.com/igrek51/wat/blob/master/docs/img/wat-re-match.png?raw=true)

### Explore modules
Another use case is to explore modules.
You can list the functions,
classes and sub-modules of a selected module.

```python
import pathlib
wat / pathlib
```

![](https://github.com/igrek51/wat/blob/master/docs/img/wat-pathlib.png?raw=true)

Then, you can navigate further, e.g. `wat / pathlib.fnmatch`.

### Explore dunder attributes
By default, WAT Inspector hides attributes starting with `__`. Use `wat.dunder` to see them.
```python
wat.dunder / {}
```

![](https://github.com/igrek51/wat/blob/master/docs/img/wat-dunder-dict.png?raw=true)

### Review the code
Look up the source code of a function to see how it really works.

```python
import colorsys
wat.code / colorsys.hsv_to_rgb
```

![](https://github.com/igrek51/wat/blob/master/docs/img/wat-code-wat-call.png?raw=true)

### Prettify unreadable collections
Nested dictionaries and lists get nicely formatted, indented output:

![](https://github.com/igrek51/wat/blob/master/docs/img/wat-nested-dict-pretty.png?raw=true)

### Debug with breakpoint
You can use Python's `breakpoint()` keyword to launch an interactive debugger in your program.
Attach to the interpreter and inspect things on the spot.

```python
(Pdb) import wat # or paste Insta-Load snippet
(Pdb) wat / foo # inspect local variables
...
(Pdb) c # continue execution
```

### Look up local variables
Use `wat.locals` or `wat.globals` to look up the local and global variables respectively.

![](https://github.com/igrek51/wat/blob/master/docs/img/wat-locals.png?raw=true)

### Learn Python
With these snippets you can better understand Python internals.

```python
reversed([]) == reversed([])
# False
wat.s / reversed([])
# value:
# type: list_reverseiterator
```

```python
wat / type('ObjectCreator', (), {})
# value:
# type: type
# signature: class ObjectCreator()

wat / type
# value:
# type: type
# signature: class type(โ€ฆ)
# """
# type(object) -> the object's type
# type(name, bases, dict, **kwds) -> a new type
# """
#
# Public attributes:
# def mro(self, /) # Return a type's method resolution order.
```

```python
from typing import List
wat.s / List[str]
# value: typing.List[str]
# type: typing._GenericAlias
# parents: typing._BaseGenericAlias, typing._Final
# signature: def List(*args, **kwargs)

wat(str | None)
# value: str | None
# type: types.UnionType
```

Explore Python built-ins:
```python
wat / __builtins__
wat / ...
```

### Inspect WAT itself
```python
wat.dunder / wat
wat.code / wat.__truediv__
```

## Environment variables
- `WAT_COLOR="false"` to disable colorful output in the console.
- `WAT_COLOR="true"` to enforce colorful outputs even in non-tty environment.

### Color theme
You can customize the color theme by setting the environment variable `WAT_COLORS`.
Here's the default theme which you can modify with your own ANSI color codes:
```sh
export WAT_COLORS="BAR=0;34,TRAIT=1;34,HEAD=1;37,STR=0;32,NUMBER=0;31,NONE=0;35,TRUE=1;32,FALSE=1;31,DOCS=2;37,KEYWORD=0;34,CALLABLE=1;32,SIGNATURE=0;32,VARIABLE=1;33,CODE=0;33"
```

## References
- Inspired by [Rich Inspect](https://github.com/Textualize/rich?tab=readme-ov-file#rich-inspect)