# textwrap

**What is the `textwrap` module?**

The `textwrap` module helps you format text into multiple lines. This is useful for things like displaying text on a console or screen, or for creating nicely formatted text files.

**`fill()` function**

The `fill()` function wraps a single paragraph of text into a single string. This is particularly useful for creating multi-line strings for printing or writing to a file.

**How to use `fill()`**

The simplest way to use `fill()` is to pass it a string of text and specify the desired width of the wrapped lines:

```python
import textwrap

paragraph = "This is a long paragraph of text that we want to wrap."
wrapped = textwrap.fill(paragraph, width=50)

print(wrapped)
```

This will output the following:

```
This is a long paragraph of text that we
want to wrap.
```

**Parameters**

The `fill()` function accepts the following parameters:

* `text`: The text to be wrapped.
* `width`: The desired width of the wrapped lines (in characters).
* `initial_indent`: The indentation of the first line (in spaces).
* `subsequent_indent`: The indentation of subsequent lines (in spaces).
* `expand_tabs`: Whether or not to expand tabs to spaces.
* `replace_whitespace`: Whether or not to replace whitespace with spaces.
* `fix_sentence_endings`: Whether or not to fix sentence endings (e.g., add periods).
* `break_long_words`: Whether or not to break long words.
* `drop_whitespace`: Whether or not to drop whitespace at the end of lines.
* `break_on_hyphens`: Whether or not to break lines on hyphens.
* `tabsize`: The size of a tab (in spaces).
* `max_lines`: The maximum number of lines to wrap.
* `placeholder`: The placeholder to use for long words that are broken.

**Real-world applications**

The `textwrap` module is used in a variety of real-world applications, including:

* Creating multi-line strings for printing or writing to a file
* Displaying text on a console or screen
* Formatting text for email or web pages
* Creating formatted error messages
* Generating documentation

***

**What is the `shorten()` function?**

The `shorten()` function is used to make a string shorter so that it fits within a certain width. It does this by removing words from the end of the string and adding a placeholder (such as "...") in their place.

**How to use the `shorten()` function**

To use the `shorten()` function, you need to provide the following arguments:

* `text`: The string you want to shorten.
* `width`: The maximum width of the shortened string.
* `placeholder`: (Optional) The placeholder to use when removing words from the end of the string. The default is "...".

**Example**

The following example shows how to use the `shorten()` function to shorten the string "Hello world!" to fit within a width of 11 characters:

```python
import textwrap

text = "Hello world!"
width = 11
shortened_text = textwrap.shorten(text, width)

print(shortened_text)
```

Output:

```
Hello [...]
```

**Optional arguments**

The `shorten()` function also accepts a number of optional keyword arguments that correspond to the instance attributes of the `TextWrapper` class. These arguments can be used to customize the way the string is shortened.

The following is a list of the optional keyword arguments:

* `fix_sentence_endings`: If `True`, the function will try to keep sentence endings intact when shortening the string. The default is `False`.
* `break_long_words`: If `True`, the function will break long words in half when shortening the string. The default is `True`.
* `break_on_hyphens`: If `True`, the function will break words on hyphens when shortening the string. The default is `True`.

**Potential applications**

The `shorten()` function can be used in a variety of applications, such as:

* Creating short summaries of text.
* Displaying text in a limited space, such as on a website or in a mobile app.
* Reducing the size of a file by removing unnecessary text.

***

**Dedent Function**

The `dedent()` function removes leading whitespace that is common to all lines in a multiline string. This is useful for making multiline strings line up nicely when printed.

**How it Works**

The `dedent()` function works by finding the smallest amount of whitespace that appears at the beginning of each line in the string. It then removes that amount of whitespace from all the lines.

**Example**

The following example shows how to use the `dedent()` function:

```python
text = """
    hello
    world
"""

print(dedent(text))  # prints 'hello\nworld'
```

In this example, the `dedent()` function removes the four spaces of whitespace that appear at the beginning of each line. This results in a string with no leading whitespace.

**Applications**

The `dedent()` function is useful for any situation where you want to remove leading whitespace from a multiline string. For example, you might use it to:

* Create multiline strings that line up nicely in your code
* Remove indentation from code blocks
* Parse multiline strings that have been indented for readability

**Potential Applications in Real World**

* **Code formatting:** The `dedent()` function can be used to automatically format code, making it easier to read and understand.
* **Data parsing:** The `dedent()` function can be used to parse multiline data that has been indented for readability. For example, you might use it to parse a CSV file that has been indented to make it easier to read.
* **Text processing:** The `dedent()` function can be used to remove leading whitespace from any multiline text. This can be useful for a variety of tasks, such as cleaning up text data or preparing text for analysis.

***

**indentation**

The `indent()` function in Python's `textwrap` module allows you to add a specified prefix (such as spaces or tabs) to the beginning of specific lines in a text string.

**Simplified Explanation:**

Imagine you have a piece of text and want to make it look more organized and readable by indenting certain lines. The `indent()` function helps you do this automatically.

**Code Snippet:**

```python
text = "This is some example text.\nAnd this is another line."
prefix = "  "  # two spaces for indentation
indented_text = indent(text, prefix)
print(indented_text)

# Output:
#   This is some example text.
#   And this is another line.
```

In this example, the code adds two spaces to the beginning of each line in the text string, creating a more indented appearance.

**predicate**

The `predicate` argument is an optional function that allows you to control which lines get indented. By default, all lines (except those consisting solely of whitespace) are indented.

**Simplified Explanation:**

The `predicate` lets you define a rule for which lines to indent. For instance, you can specify that all lines that contain a certain keyword should be indented.

**Code Snippet:**

```python
def keyword_predicate(line):
    return "keyword" in line

indented_text = indent(text, prefix, keyword_predicate)
print(indented_text)

# Output:
#   this is some example text.
#   And this is another line.
#   **keyword** found here!
```

In this example, the `keyword_predicate()` function checks if the line contains the word "keyword" and returns True if it does. As a result, only the line with "keyword" gets indented.

**Applications in the Real World:**

* **Code formatting:** Indenting code blocks makes them more readable and easier to understand, especially in languages like Python where indentation is significant.
* **Paragraph indentation:** In text documents, indenting paragraphs helps separate and organize different sections of writing.
* **Creating bullet points or numbered lists:** By prefixing lines with dashes or numbers, you can create visually appealing lists in text documents.

***

### TextWrapper in Python's textwrap Module

#### What is TextWrapper?

Imagine you're writing a long story and want to make it look like a book. You need to format the text to fit within a certain width, with proper indentation and line breaks. That's where `TextWrapper` comes in.

It's like a smart helper that automatically adjusts your text to look neat and tidy.

#### Attributes (and Keyword Arguments)

You can customize `TextWrapper` using attributes (or keyword arguments when creating it):

* **initial\_indent**: The number of spaces to indent the first line of each paragraph.
* **subsequent\_indent**: The number of spaces to indent subsequent lines in a paragraph.
* **width**: The maximum width (in characters) of each line.
* **expand\_tabs**: Whether to expand tabs () to spaces (default: True).
* **replace\_whitespace**: Whether to replace consecutive spaces with a single space (default: True)
* **drop\_whitespace**: Whether to drop leading and trailing whitespace from lines (default: True).
* **fix\_sentence\_endings**: Whether to ensure that lines don't break in the middle of a sentence (default: False).
* **break\_long\_words**: Whether to break words that are longer than `width` (default: True).
* **break\_on\_hyphens**: Whether to break lines at hyphens (default: True).

#### Example Usage

```python
import textwrap

# Create a wrapper with 40-character wide lines
wrapper = textwrap.TextWrapper(width=40)

# Wrap a paragraph of text
text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas tempus porttitor dolor, id fringilla nisi ornare vel. In hac habitasse platea dictumst. Morbi nibh nisl, facilisis non faucibus et, finibus nec massa."
wrapped_text = wrapper.fill(text)

# Print the wrapped text
print(wrapped_text)
```

**Output:**

```
Lorem ipsum dolor sit amet,
consectetur adipiscing elit. 
Maecenas tempus porttitor dolor, 
id fringilla nisi ornare vel. In 
hac habitasse platea dictumst. 
Morbi nibh nisl, facilisis non 
faucibus et, finibus nec massa.
```

#### Real-World Applications

* **Console output:** Formatting text to fit within a terminal window.
* **Email formatting:** Wrapping long email messages to improve readability on different devices.
* **Web development:** Adjusting text to fit specific div or column widths on web pages.
* **Book publishing:** Formatting and aligning paragraphs in books and other publications.

***

**Text Wrapping**

Imagine you're writing a letter to a friend and you want the lines to fit nicely within the page. `TextWrapper` helps you automatically wrap lines to a specific width, just like when you're formatting a document.

**Attributes:**

* **width:** The maximum length of each line, in characters (default: 70).

**Real-World Example:**

```python
import textwrap

text = """
This is a long paragraph that needs to be wrapped to
fit within a width of 70 characters.
"""

wrapper = textwrap.TextWrapper(width=70)
wrapped_text = wrapper.wrap(text)

# Print the wrapped text
for line in wrapped_text:
    print(line)
```

Output:

```
This is a long paragraph that needs to be
wrapped to fit within a width of 70 characters.
```

**Potential Applications:**

* Formatting text for display in terminals or on web pages
* Generating email templates with consistent line lengths
* Creating reports or documents with predefined page sizes

***

**Attribute: expand\_tabs**

**Simplified Explanation:**

Imagine you have a text with tab characters (like those you use in Microsoft Word or Google Docs). The `expand_tabs` attribute controls how these tabs are displayed when you wrap the text.

**Default Value:** `True`

**Meaning:**

If `expand_tabs` is set to `True`, each tab character in the text will be replaced with a number of spaces equal to the tab's width. This makes it easier to read and align text that contains tabs.

**Example:**

Consider the following text with a tab character:

```
Name    Occupation
John    Software Engineer
Mary    Teacher
```

If we wrap this text without expanding tabs, it will look like this:

```
Name    Occupation
John    Software Engineer
MaryTeacher
```

However, if we enable `expand_tabs`, the tab character in the second line will be replaced with spaces, making the text easier to read:

```
Name    Occupation
John    Software Engineer
Mary    Teacher
```

**Real-World Applications:**

The `expand_tabs` attribute is useful in scenarios where you want to align text that contains tabs, such as:

* Code listings in documentation
* Tabulated data in console output
* Text files with delimited fields
* Configuring indentation in text editors

**Complete Code Implementation:**

To use the `expand_tabs` attribute, you can specify it when creating a `TextWrapper` object:

```python
import textwrap

wrapper = textwrap.TextWrapper(expand_tabs=True)
text = "Name\tOccupation\nJohn\tSoftware Engineer\nMary\tTeacher"
wrapped_text = wrapper.fill(text)
print(wrapped_text)
```

**Output:**

```
Name    Occupation
John    Software Engineer
Mary    Teacher
```

***

**tabsize Attribute in textwrap**

**What it does:** When you type a tab character (the Tab key), it usually creates 8 spaces. With the `tabsize` attribute, you can control how many spaces each tab character creates.

**How to use it:** You can set the tab size when you create a TextWrapper object:

```python
import textwrap

# Create a wrapper with a tab size of 4 spaces
wrapper = textwrap.TextWrapper(tabsize=4)

# Text with tabs will have those tabs expanded to 4 spaces
text = "This\tis\ta\ttest"
print(wrapper.fill(text))
```

**Output:**

```
This    is    a    test
```

**Potential Applications:**

* **Code formatting:** Indenting code with tabs can help improve readability. Controlling the tab size can ensure consistent spacing across different environments.
* **Text alignment:** Aligning text with tabs can create structured tables or lists. By adjusting the tab size, you can fine-tune the alignment to match specific requirements.
* **Data management:** Tab-separated values (TSVs) are a common format for data exchange. By specifying the tab size, you can control how these values are processed and presented.

***

**Attribute: replace\_whitespace**

**Simplified Explanation:**

After expanding tabs (spaces that are multiples of 8 characters wide) in a string, the `wrap` method can optionally replace all remaining whitespace characters (tabs, newlines, vertical tabs, formfeeds, and carriage returns) with a single space.

**True Setting:**

* When `replace_whitespace` is True, all whitespace characters are replaced with spaces.
* This can be useful for creating text with a consistent spacing style.

**False Setting:**

* When `replace_whitespace` is False, whitespace characters are preserved.
* This is useful if you want to maintain the original formatting of the text, including line breaks.

**Code Snippet:**

```python
import textwrap

text = "This\n is a\t multiline\tstring"

# Replace whitespace with spaces
wrapped_text = textwrap.wrap(text, replace_whitespace=True)

# Preserve whitespace
wrapped_text = textwrap.wrap(text, replace_whitespace=False)
```

**Real-World Applications:**

* **Text formatting:** Replace whitespace to create text with consistent spacing, such as for code snippets or CSV files.
* **Data analysis:** Preserve whitespace to analyze text data without modifying its original formatting.
* **Text processing:** Replace whitespace to remove unwanted characters or preserve line breaks as needed.

***

**Attribute:** `drop_whitespace`

**Purpose:** Controls the handling of whitespace characters in wrapped text.

**Default Value:** True

**Explanation:**

When `drop_whitespace` is set to True, textwrap removes leading and trailing whitespace from each line of wrapped text. Whitespace is defined as spaces, tabs, and newlines.

**Here's how it works:**

* If a line starts with whitespace and is followed by non-whitespace characters, the whitespace is not dropped.
* If a line starts with whitespace and is followed by only more whitespace, the entire line is dropped.
* Whitespace that occurs within a line, such as around words, is not affected.

**Example:**

Input text:

```
   This is an example of whitespace handling.
```

Output with `drop_whitespace` set to True:

```
This is an example of whitespace handling.
```

Output with `drop_whitespace` set to False:

```
   This is an example of whitespace handling.
```

**Real-World Applications:**

* Wrapping text to fit within a certain width, such as for terminal displays or web pages.
* Removing unnecessary whitespace to improve code readability.
* Aligning text for formatting purposes.

***

### **initial\_indent** Attribute in Python's `textwrap` Module

The `initial_indent` attribute in `textwrap` specifies the string that will be added to the beginning of the first line of text being wrapped. It counts towards the length of the first line, and an empty string will not result in any indentation.

**Simplified Explanation:**

The `initial_indent` attribute is like a "greeting" that you add to the first line of text. It's usually used to add a few spaces or characters to the start of the line to make it look more organized.

**Real-World Example:**

```python
import textwrap

# Wrap text with 10-character line width and a 2-character initial indent
wrapped_text = textwrap.wrap("This is a long sentence that needs to be wrapped.", width=10, initial_indent="  ")

# Print the wrapped text
print("\n".join(wrapped_text))
```

**Output:**

```
  This is a
  long
  sentence
  that
  needs to
  be
  wrapped.
```

**Potential Applications:**

* Formatting long lines of text into multiple lines with a consistent indentation
* Creating formatted text for display in console applications or web apps
* Generating reports or documents with a consistent visual style

***

***

ERROR OCCURED

.. attribute:: subsequent\_indent

```
  (default: ``''``) String that will be prepended to all lines of wrapped
  output except the first.  Counts towards the length of each line except
  the first.
```

Can you please simplify and explain the given content from python's textwrap module?

* explain each topic in detail and simplified manner (simplify in very plain english like explaining to a child).
* retain code snippets or provide if you have better and improved versions or examples.
* give real world complete code implementations and examples for each.
* provide potential applications in real world for each.
* ignore version changes, changelogs, contributions, extra unnecessary content.

  ```
    The response was blocked.
  ```

***

***

**Text Wrapping**

Imagine you have a long text and you want to fit it into a certain width. Text wrapping is a technique that breaks long lines of text into shorter lines, making it easier to read.

**TextWrapper Class**

The `textwrap` module provides the `TextWrapper` class that helps you wrap text. Here are some of its important features:

**fix\_sentence\_endings Attribute**

By default, `fix_sentence_endings` is set to `False`. However, if you set it to `True`, the text wrapper will try to detect sentence endings and ensure that sentences are separated by exactly two spaces.

This is useful when you want your text to look neat and consistent, especially in monospaced fonts where all characters have the same width.

**Sentence Detection Algorithm**

The sentence detection algorithm assumes that a sentence ending consists of:

* A lowercase letter
* Followed by a period, exclamation mark, or question mark
* Optionally followed by a single or double quotation mark
* Followed by a space

**Limitations**

This algorithm is not perfect. For example, it may not be able to distinguish between "Dr." (a title) and "Spot." (a dog's name). It is also specific to English-language texts.

**Example Usage**

```python
import textwrap

text = """
Long strings of text can be difficult to read, especially when they are not wrapped.
The textwrap module provides a way to wrap text into multiple lines, making it more readable.
"""

wrapper = textwrap.TextWrapper(width=50)
wrapped_text = wrapper.fill(text)

print(wrapped_text)
```

Output:

```
Long strings of text can be difficult to read,
especially when they are not wrapped. The textwrap
module provides a way to wrap text into multiple
lines, making it more readable.
```

**Applications**

Text wrapping is used in various applications, such as:

* Displaying text in terminal windows
* Creating formatted documents
* Writing multi-line error messages
* Wrapping long URLs in emails or social media posts

***

**Attribute: break\_long\_words**

**Default Value:** True

**Simplified Explanation:**

This attribute controls how long words are handled when wrapping text.

**Two Options:**

* **True:** Long words are broken up to fit within the maximum line width.
* **False:** Long words are not broken up, even if they exceed the maximum line width.

**Code Snippet:**

```python
import textwrap

text = "This is a long line of text that needs to be wrapped."

# Wrap text with long words broken up
wrapped_text = textwrap.wrap(text, width=50, break_long_words=True)

print(wrapped_text)  # Output: ['This is a', 'long line of', 'text that', 'needs to be', 'wrapped.']

# Wrap text without breaking up long words
wrapped_text = textwrap.wrap(text, width=50, break_long_words=False)

print(wrapped_text)  # Output: ['This is a long line of text', 'that needs to be wrapped.']
```

**Real-World Applications:**

* **Formatting Text for Console Displays:** When displaying text on a limited-width console screen, wrapping long words can help improve readability and prevent lines from overflowing.
* **Creating Justified Text:** By breaking up long words, text can be justified (aligned both left and right) within the maximum line width, giving it a more polished appearance.
* **Generating HTML Content:** When generating HTML content, wrapping long words can help prevent line breaks in unexpected places, ensuring that text is displayed correctly in web browsers.

***

**Attribute: break\_on\_hyphens**

**What it does:**

The `break_on_hyphens` attribute controls where line breaks can occur in hyphenated words.

**Default value:** True

**When to use:**

* **True (default):** Wraps lines at hyphens in compound words, like "big-time". This is common in English.
* **False:** Allows line breaks only at whitespaces, ignoring hyphens.

**Real-world examples:**

* **Sentence with default behavior:** `"This is a big-time opportunity."` would wrap at the hyphen in "big-time".
* **Sentence with `break_on_hyphens` set to False:** `"This is a big-time opportunity."` would wrap at the space after "big".

**Code example:**

```python
import textwrap

text = "This is a big-time opportunity."

# Wrap with default behavior (break on hyphens)
wrapped_text = textwrap.wrap(text)
print(wrapped_text)

# Wrap with break_on_hyphens set to False
wrapped_text = textwrap.wrap(text, break_on_hyphens=False)
print(wrapped_text)
```

**Potential applications:**

* Formatting text for display on fixed-width devices, such as terminals or SMS messages.
* Improving readability by preventing long words from being split across lines in printed text.

***

**Attribute: max\_lines**

**Simplified Explanation:**

Imagine you have a long piece of text and you want to split it into lines. The `max_lines` attribute lets you specify how many lines you want to split the text into.

**Code Snippet:**

```python
import textwrap

text = "This is a long piece of text that I want to split into lines."

# Split the text into a maximum of 3 lines
wrapped_text = textwrap.wrap(text, max_lines=3)

# Print the wrapped text
print(wrapped_text)
```

**Output:**

```
['This is a long piece of text', 'that I want to split into lines.']
```

**Placeholder:**

**Simplified Explanation:**

If you specify a `max_lines` value, the output will stop at that number of lines. If your text is longer, a special character called a "placeholder" will appear at the end of the output. The placeholder looks like this: `...`.

**Code Snippet:**

```python
import textwrap

text = "This is a very long piece of text that I want to split into lines."

# Split the text into a maximum of 2 lines
wrapped_text = textwrap.wrap(text, max_lines=2)

# Print the wrapped text
print(wrapped_text)
```

**Output:**

```
['This is a very long piece of text', 'that I want to split into lines...']
```

**Real-World Applications:**

* Formatting text for display on a website or in a command window.
* Creating multi-line text blocks in code or Markdown documents.
* Wrapping text to fit within a certain width, such as a newspaper column.

***

**What is TextWrapper?**

Imagine you have a long piece of text, and you want to wrap it neatly into lines of a certain length. TextWrapper is a tool that does just that. It helps you create readable text that fits into a specific column width.

**Placeholder**

When you wrap text, there's a chance that some lines may get cut off. To indicate that the text has been truncated (cut off), you can use a placeholder. It's a short string that appears at the end of the truncated line. By default, TextWrapper uses `' [...]'` as the placeholder.

**Code Example:**

```python
import textwrap

text = "This is a long piece of text that needs to be wrapped to fit into a certain column width."

# Wrap the text to a width of 50 characters
wrapper = textwrap.TextWrapper(width=50)

# Wrap the text and set the placeholder to '...'
wrapped_text = wrapper.fill(text, placeholder='...')

# Print the wrapped text
print(wrapped_text)
```

Output:

```
This is a long piece of text that needs to be wrapped
to fit into a certain column width...
```

**Public Methods**

TextWrapper provides several public methods that allow you to manipulate text:

* `wrap()` - Wraps the text into lines of a specified width.
* `fill()` - Same as `wrap()`, but also adds a placeholder if the text is truncated.

**Real-World Applications**

TextWrapper has many uses in real-world scenarios:

* **Terminal Output:** Wrapping text in terminals makes it easier to read long commands or output.
* **Email Body:** Wrapping text in emails ensures that it flows well in different email clients.
* **Website Content:** Wrapping text on websites improves readability and accessibility.
* **Word Processing:** TextWrapper can be used to automatically wrap text in word processing documents.

***

**What is textwrap.wrap()?**

The `textwrap.wrap()` function is used to wrap a single paragraph of text into multiple lines, with each line being at most a specified width. This can be useful for formatting text in a way that fits well within a certain space, such as on a website or in a terminal window.

**How does textwrap.wrap() work?**

The `textwrap.wrap()` function takes a single string as an argument and returns a list of strings, where each string represents a line of the wrapped text. The function wraps the text based on the following attributes of the `TextWrapper` class:

* `width`: The maximum width of each line, in characters.
* `break_long_words`: Whether or not to break words that are longer than the width of the line.
* `drop_whitespace`: Whether or not to remove any whitespace at the end of lines.

**Example:**

```python
import textwrap

text = "This is a long paragraph of text that needs to be wrapped to fit within a certain width."
width = 50
wrapped_text = textwrap.wrap(text, width)

for line in wrapped_text:
    print(line)
```

Output:

```
This is a long paragraph of text that
needs to be wrapped to fit within a
certain width.
```

**Real-world applications:**

* Formatting text for a website or blog post
* Wrapping lines of code in an IDE
* Displaying text in a terminal window
* Creating text-based user interfaces

***

**Simplified Explanation:**

The `fill()` method in Python's `textwrap` module helps you wrap text into a single paragraph of specified width. It takes the `text` you want to wrap and returns a string with the wrapped text.

**Example:**

Imagine you have a long paragraph of text like this:

> "This is a long paragraph of text that needs to be wrapped into a single paragraph of a certain width."

You can use the `fill()` method to wrap it to a width of, say, 50 characters:

```python
import textwrap

text = "This is a long paragraph of text that needs to be wrapped into a single paragraph of a certain width."

wrapped_text = textwrap.fill(text, width=50)

print(wrapped_text)
```

Output:

```
This is a long paragraph of text
that needs to be wrapped into a 
single paragraph of a certain 
width.
```

**Real-World Use Case:**

* **Email formatting:** To wrap long text in emails to improve readability.
* **Terminal output formatting:** To make text displayed in terminals easier to read.
* **Website content formatting:** To ensure text fits neatly within website designs.

**Other Options in `fill()`:**

* **width:** Width of the wrapped paragraph in characters (default: 70).
* **break\_long\_words:** Whether to break words that are longer than the line width.
* **drop\_whitespace:** Whether to remove extra whitespace characters from the wrapped text.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://a7246c5516ab4c80cdfe21ca2be3e40c.gitbook.io/python-docs/textwrap.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
