Skip to content

Conversation

@ndemou
Copy link

@ndemou ndemou commented Aug 1, 2025

ttok is showing a UserWarning coming from the click library reporting that --tokens is used more than once:

$ ttok --version
/Users/brian/.pyenv/versions/3.13.3/envs/llm-dev-3.13/lib/python3.13/site-packages/click/core.py:1193: UserWarning: The parameter --tokens is used more than once. Remove its duplicate as parameters should be unique.
  parser = self.make_parser(ctx)
/Users/brian/.pyenv/versions/3.13.3/envs/llm-dev-3.13/lib/python3.13/site-packages/click/core.py:1186: UserWarning: The parameter --tokens is used more than once. Remove its duplicate as parameters should be unique.
  self.parse_args(ctx, args)
ttok, version 0.3

What I think is the root cause

Click is generating this warning because the parameter --tokens has been registered for these two different actions:

@click.option("encode_tokens", "--encode", "--tokens", is_flag=True, help="Output token integers")
@click.option("as_tokens", "--tokens", is_flag=True, help="Output full tokens")

Based on the examples from the help, the behavior of --tokens aligns with the second action ("Output full tokens") and does not align with the first one ("Output token integers"). Thus we should remove --tokens from the first one.

Here's the help:

To view token integers:

   cat input.txt | ttok --encode

[...]
To see the details of the tokens:

    ttok "hello world" --tokens

 Outputs:

    [b'hello', b' world'] 

P.S.

Simon, many thanks for the tools and your excellent blog

ttok is showing a UserWarning coming from the click library reporting that --tokens is used more than once:

$ ttok --version
/Users/brian/.pyenv/versions/3.13.3/envs/llm-dev-3.13/lib/python3.13/site-packages/click/core.py:1193: UserWarning: The parameter --tokens is used more than once. Remove its duplicate as parameters should be unique.
  parser = self.make_parser(ctx)
/Users/brian/.pyenv/versions/3.13.3/envs/llm-dev-3.13/lib/python3.13/site-packages/click/core.py:1186: UserWarning: The parameter --tokens is used more than once. Remove its duplicate as parameters should be unique.
  self.parse_args(ctx, args)
ttok, version 0.3

# What I think is the root cause

Click is generating this warning because the parameter `--tokens` has been registered for two **different** actions (`encode_tokens` and `as_tokens`):

```
@click.option("encode_tokens", "--encode", "--tokens", is_flag=True, help="Output token integers")
@click.option("as_tokens", "--tokens", is_flag=True, help="Output full tokens")
```

Based on the examples from the help `--tokens` behavior aligns with `as_tokens`(_Output full tokens_) and not with that of `encode_tokens` (_Output token integers_) so we should remove `--tokens` from `click.option("encode_tokens"`

Here's the help:
>To view token integers:
>
>        cat input.txt | ttok --encode
>
>[...]
>To see the details of the tokens:
> 
>         ttok "hello world" --tokens
> 
>      Outputs:
> 
>         [b'hello', b' world'] 
>
@ndemou
Copy link
Author

ndemou commented Aug 1, 2025

Side note: Gemini Pro 2.5 detected the root cause of the issue (I just pasted the warning to it with nothing else) and ChatGPT helped me propose a sane fix. I was the chief editor :-D

@ndemou ndemou closed this Aug 18, 2025
@ndemou ndemou reopened this Aug 18, 2025
@slhck
Copy link

slhck commented Dec 23, 2025

@simonw Can we please get this merged? Thanks!

neko1990 added a commit to neko1990/ttok that referenced this pull request Dec 26, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants