I needed a name for my new Python CLI tool.
It was originally called
py-grep because I checked and https://pypi.org/project/py-grep/ was available - but when I tried to push the package to PyPI I got an error because that name was too close to the existing
I decided to use ChatGPT Browse to help pick a new name.
Full transcript is here, but these are the highlights.
I started by prompting it like this:
Come up with 20 alternative name ideas, with short justifications, for this tool
Since this is ChatGPT Browse, giving it a URL works (unlike original ChatGPT). It went away and inspected my README and replied:
Based on the information gathered, the tool
py-grepis a CLI tool primarily designed to be used with Large Language Models (LLM). It allows users to search for names of functions and classes that occur at the top level of a Python file. It can search within specific files or directories and their subdirectories. It can also search for multiple symbols at once and support wildcards. The tool can be used in combination with
llmcommand to grab specific class or function and analyze it ^1^
Here are 20 alternative name ideas for
py-grepalong with short justifications:
PySymbolFinder: Emphasizes the tool's ability to find symbols, such as function or class names, in Python code.
PythonGrep: A straightforward name indicating it's a grep-like tool for Python.
These names were bad, so I hit the "Stop" button and prompted this:
The names should be lowercase and short so they are quick to type
This kicked off a round of better suggestions:
I see, you're looking for lowercase and shorter names. Let's try to make the name suggestions more fitting for your requirements:
pysrc: Short for "Python source", indicating it searches through Python source code.
pylook: Indicates the tool's function to look for specific elements in Python code.
pyfind: A direct and simple name indicating the tool's search functionality.
pyseek: Implies the tool's purpose of seeking out specific elements in Python code.
These are looking much better! I checked https://pypi.org/projects/pyseek/ and got a 404, so I tried renaming to that and publishing... and then got an error, because I should have checked https://pypi.org/project/pyseek/ (project singular, not plural).
I tried the following prompt:
All of those names are taken, more ideas please - you can check if they are taken by checking for https://pypi.org/project/pyseek/
This totally worked! It started churning through ideas, checking each one:
On the one hand, it's super cool that it's able to check for available names like this!
But wow, it turns out almost every variant of
py* has already been taken.
OK we're going to have to ditch the idea of names that start with
pythen - come up with 20 great short options
It started producing options, some of them actually quite good:
Sure, here are 20 short name suggestions that don't start with
- codestalk: Implies that the tool "stalks" or closely follows code to find the specific symbols.
- grepgo: A combination of "grep" and "go", suggesting the speed and efficiency of the tool.
- findsy: A contraction of "find" and "symbols", which is what the tool does.
- dexer: Short for "indexer", which is what the tool effectively does to find the Python code for specified symbols.
- symbex: A combination of "symbol" and "extract", indicating the tool's function.
- zoomdex: Suggests both speed ("zoom") and indexing ("dex").
- funsy: A play on "function" and "symbols", the two things that the tool primarily searches for.
- seekode: A combination of "seek" and "code", indicating the tool's main function.
And there was the name: symbex, short for symbol extraction.
I checked manually if it was available, and it was. So I decided it was good enough and shipped my new package.
Here's a fun thing you can do combining symbex with my LLM tool. I ran this in a fresh checkout of Datasette:
symbex 'test*csv*' | llm --system 'based on these tests guess what this tool does'
This tool seems to be a web application that provides a user interface to query databases and export query results in various formats, including HTML, JSON, and CSV. The tests verify that the tool correctly generates HTML pages with links to export query results in JSON or CSV format, exports tables to CSV format with custom options (such as whether to include labels and nullable labels), and performs streaming of CSV data. The tests also check that the tool sets appropriate HTTP headers, allows CORS, and handles errors and large CSV files gracefully.
See symbex: search Python code for functions and classes, then pipe them into a LLM for more on that project.
Created 2023-06-18T22:43:09+01:00, updated 2023-06-18T23:35:18+01:00 · History · Edit