Using ChatGPT Browse to name a Python package

I needed a name for my new Python CLI tool.

It was originally called py-grep because I checked and 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 pygrep package.

I decided to use ChatGPT Browse to help pick a new name.

Full transcript is here, but these are the highlights.

Suggest names based on my README

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:

Clicked on: GitHub - simonw/py-grep: Find the Python code for specified symbols - Reading content - Finished browsing

Based on the information gathered, the tool py-grep is 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 llm command to grab specific class or function and analyze it ^1^

Here are 20 alternative name ideas for py-grep along with short justifications:

  1. PySymbolFinder: Emphasizes the tool's ability to find symbols, such as function or class names, in Python code.
  2. PythonGrep: A straightforward name indicating it's a grep-like tool for Python.
  3. CodeSearch

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:

  1. pysrc: Short for "Python source", indicating it searches through Python source code.
  2. pylook: Indicates the tool's function to look for specific elements in Python code.
  3. pyfind: A direct and simple name indicating the tool's search functionality.
  4. pyseek: Implies the tool's purpose of seeking out specific elements in Python code.
  5. ...

These are looking much better! I checked and got a 404, so I tried renaming to that and publishing... and then got an error, because I should have checked (project singular, not plural).

Getting it to check for availability itself

I tried the following prompt:

All of those names are taken, more ideas please - you can check if they are taken by checking for

This totally worked! It started churning through ideas, checking each one:

Finished browsing Clicked on: pydex · PyPI Clicked on: pyscan · PyPI Clicked on: pylocator · PyPI Clicked on: pyspotter · PyPI Clicked on: pylocator · PyPI Clicked on: pyfinder · PyPI Clicked on: PyScanner · PyPI Clicked on: PyLookup · PyPI Clicked on: PySpot · PyPI Clicked on: PyLookup · PyPI Clicked on: pylocator · PyPI Clicked on: pyfinder · PyPI Clicked on: pylocator · PyPI Clicked on: pyfinder · PyPI Click failed Finished browsing It seems there was an error fetching the page. This might indicate that the name pysourcefinder is not taken, but it would be safer to verify manually. Here are some additional names to consider:     pysourcelocator     pycodegrep     pycodesearch     pycodefinder     pycodeseeker

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.

Forget about py then

I said:

OK we're going to have to ditch the idea of names that start with py then - 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 py:

  1. codestalk: Implies that the tool "stalks" or closely follows code to find the specific symbols.
  2. grepgo: A combination of "grep" and "go", suggesting the speed and efficiency of the tool.
  3. findsy: A contraction of "find" and "symbols", which is what the tool does.
  4. dexer: Short for "indexer", which is what the tool effectively does to find the Python code for specified symbols.
  5. symbex: A combination of "symbol" and "extract", indicating the tool's function.
  6. zoomdex: Suggests both speed ("zoom") and indexing ("dex").
  7. funsy: A play on "function" and "symbols", the two things that the tool primarily searches for.
  8. 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.

What you can do with symbex

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