Update software index.md with improved AI integration and future vision

This commit is contained in:
2024-08-16 18:49:08 -04:00
parent 8c9c9aa160
commit cb21bc32fa
4 changed files with 134 additions and 6 deletions
+29
View File
@@ -0,0 +1,29 @@
# clint — CLI App Toolkit
This is a very old project (one of my first), and I don't recommend using it. It's not maintained, and there are much better options available now.
Clint is a Python library that provides a set of utilities for building command-line applications. It simplifies the process of creating command-line interfaces (CLIs) by providing a high-level API for defining commands, arguments, and options.
## Key Features
- **Command Definition:** Clint allows you to define commands and subcommands with associated functions to execute.
- **Argument Parsing:** It provides utilities for parsing command-line arguments and options.
- **Output Formatting:** Clint supports various output formats, including tables, JSON, and plain text.
- **Interactive Prompts:** You can create interactive prompts for user input using the `prompt` function.
- **Colorful Output:** Clint provides utilities for coloring and styling console output.
- **Error Handling:** It includes utilities for handling errors and exceptions in command-line applications.
- **Cross-Platform:** Clint works on all major platforms, including Windows, macOS, and Linux.
- **Extensible:** You can extend Clint with custom commands, options, and output formatters.
- **Legacy:** Clint is a legacy project and is no longer actively maintained.
## Alternatives
While Clint was a popular choice for building CLIs in Python, there are now better alternatives available that offer more features and better performance. Some popular CLI libraries include:
- **Click:** A powerful and user-friendly CLI framework for Python.
- **Typer:** A fast and modern CLI library built on top of Click.
- **Docopt:** A command-line interface description language that generates parser code in Python.
- **Argparse:** The standard library module for parsing command-line arguments in Python.
- **Textual:** A modern and intuitive library for building interactive command-line applications.
Thanks for reading!
+49
View File
@@ -0,0 +1,49 @@
# delegator
Delegator is a Python library that allows you to define and execute shell commands in a more readable and maintainable way. It is a wrapper around the `subprocess` module and provides a more high-level interface for running shell commands.
## Key Features
- **Simplified API:** Delegator abstracts away the complexity of the `subprocess` module and provides a more user-friendly API for executing shell commands.
- **Command Chaining:** You can chain multiple commands together using the `|` operator, similar to how you would in a shell script.
- **Output Handling:** Delegator provides methods for capturing and processing the output of shell commands, making it easy to work with the results.
- **Error Handling:** You can easily handle errors and exceptions that occur during command execution, allowing you to build robust shell scripts.
- **Cross-Platform:** Delegator works on all major platforms, including Windows, macOS, and Linux, making it a versatile tool for shell scripting.
## Installation
You can install Delegator using `uv` or `pip`:
```bash
$ uv pip install delegator.py
```
## Usage
Here's a simple example of how you can use Delegator to run a shell command:
```python
import delegator
c = delegator.run('ls -l')
print(c.out)
```
In this example, we use the `run` function to execute the `ls -l` command and print the output to the console.
## Command Chaining
Delegator allows you to chain multiple commands together using the `|` operator. Here's an example:
```python
import delegator
c = delegator.chain('ls -l | grep .py')
print(c.out)
```
In this example, we use the `chain` function to run the `ls -l | grep .py` command, which lists all Python files in the current directory.
## Predecessor — Envoy
`envoy` is a similar library that provides a high-level interface for subprocess management in Python. Delegator is a more modern and feature-rich alternative to Envoy, with additional functionality and improved performance. It has also been battletested in production environments and is used by [pipenv](/software/pipenv.md) for shell command execution.
+3 -1
View File
@@ -1,7 +1,9 @@
# Records: SQL for Humans
Records is a library for working with tabular data in Python, accessible via SQL.
Records is a library for working with tabular data in Python, accessible via SQL. It is powered by [SQLAlchemy](https://www.sqlalchemy.org/) and provides a high-level API for interacting with databases using SQL queries. Records simplifies the process of working with databases by abstracting away the complexities of SQL and providing a more user-friendly interface.
Database support includes RedShift, Postgres, MySQL, SQLite, Oracle, and MS-SQL (drivers not included).
Records offers full [tablib](/software/tablib) integration, allowing you to easily convert query results to tabular data formats like CSV, JSON, and Excel — and even dataframes.
https://github.com/kennethreitz/records
+53 -5
View File
@@ -8,12 +8,60 @@
</div>
In the "Python for Humans" talk, Kenneth Reitz explores the core principles behind writing code that is intuitive, accessible, and human-friendly. Drawing on his experience as the original author of the Requests library, Kenneth emphasizes the importance of designing software that prioritizes readability and simplicity without sacrificing functionality. He delves into practical techniques for making Python code more user-friendly, advocating for a design philosophy that places the developer experience at the forefront. The talk serves as both a guide and a manifesto for those who believe that code should be as delightful to read as it is to write.
## Introduction
- **Author:** Kenneth Reitz
- **Focus:** Simplifying Python for everyday developers.
- **Motivation:** Provide practical tools and packages to make Python more human-friendly.
In the "Python for Humans" talk, Kenneth Reitz also discusses the importance of documentation and how it contributes to the overall user experience. He highlights the significance of clear and concise documentation that enables developers to easily understand and utilize Python libraries and frameworks. Kenneth shares practical tips and best practices for writing effective documentation, emphasizing the need for comprehensive examples and thorough explanations.
## Key Projects
- **Requests:** HTTP for Humans.
- **Httpbin.org:** An HTTP request & response service.
- **Other Projects:**
- Legit: Git workflow for Humans.
- Envoy: Subprocess for Humans.
- Tablib: Tabular data for Humans.
- Clint: CLI app toolkit.
- Autoenv: Magic shell environments.
Furthermore, the talk explores the concept of "Pythonic" code, which refers to writing code that adheres to the idiomatic style and conventions of the Python language. Kenneth explains the benefits of writing Pythonic code, such as improved readability, maintainability, and collaboration. He provides insights into common Pythonic patterns and demonstrates how they can enhance the overall quality of code.
## Philosophy
- **Python Zen:** Emphasizes simplicity and clarity.
- **Key Tenets:**
- Beautiful is better than ugly.
- Simple is better than complex.
- There should be one—and preferably only one—obvious way to do it.
Throughout the talk, Kenneth Reitz emphasizes the importance of fostering a welcoming and inclusive community around Python development. He encourages attendees to actively participate in open-source projects, contribute to the Python ecosystem, and support initiatives that promote diversity and accessibility in programming.
## The Problem with Existing Tools
- **Complexity:** Traditional Python libraries like `urllib2` are overly complex.
- **Accessibility:** Difficult APIs deter new users and frustrate experienced ones.
By the end of the "Python for Humans" talk, attendees gain a deeper understanding of the principles and practices that make Python code more intuitive, accessible, and human-friendly. They leave with actionable insights and inspiration to apply these concepts in their own projects, ultimately striving to create software that is not only functional but also enjoyable to work with.
## The Solution: Requests
- **Design Principles:**
- Consistent and simple API.
- Methods like GET, POST, PUT, DELETE with intuitive parameters.
- **Success:** Widely adopted due to its simplicity and effectiveness.
## The Importance of API Design
- **User-Centric:** APIs should cater to the 90% use case.
- **Documentation:** A well-written README is crucial for adoption.
- **Evolution:** Features can grow, but the API should remain simple.
## Barriers to Python Adoption
- **Installation:** Confusion around Python versions and installation methods.
- **Standard Library Issues:** Complex modules for simple tasks.
- **Dependency Management:** Complicated packaging and installation processes.
## The Hitchhikers Guide to Python
- **Purpose:** Document best practices and simplify Python adoption.
- **Content:**
- Installation guides for different OS.
- Best practices for Python development.
- A guidebook for both newcomers and experienced developers.
## Manifesto
- **Goals:**
- Simplify terrible APIs.
- Document and share best practices with the community.
## Conclusion
- **Call to Action:** Developers should prioritize creating simple, accessible APIs and contribute to open-source projects.
- **Contact:** [GitHub - Kenneth Reitz](https://github.com/kennethreitz)