nasa / nasa/cFS-GroundSystem

AttributeError: 'int' object has no attribute 'isdigit'

Open
#241 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug
Dominant language
Python
Stars
102
Forks
78
PR merge metrics
No merged PRs in 30d

Description

Describe the bug
User receives AttributeError: 'int' object has no attribute 'isdigit' when manually entering array_sizes for parameters.

To Reproduce
Steps to reproduce the behavior:

  1. undef OS_MAX_PATH_LEN
  2. Edit CHeaderParser-hdr-paths.txt and remove # on fm_msgdefs.h and fm_msg.h
  3. Run python3 CHeaderParser.py
  4. Enter the file name to save, I chose fm_app_cmd_file
  5. Type yes
  6. Pick a command with parameters which contains usage of OS_MAX_PATH_LEN e.g. I am choosing FM_DECOMPRESS
  7. Choose the appropriate struct e.g. 10
  8. Choose the line containing OS_MAX_PATH_LEN e.g. 2
  9. Enter any value for OS_MAX_PATH_LEN
  10. See error below

Expected behavior

Traceback (most recent call last):
  File "CHeaderParser.py", line 451, in <module>
    while not array_size.isdigit() or int(
AttributeError: 'int' object has no attribute 'isdigit'

Code snips
https://github.com/nasa/cFS-GroundSystem/blob/main/Subsystems/cmdGui/CHeaderParser.py#L450-L467

                        while not array_size.isdigit() or int(
                                array_size) not in range(129):
                            # User input is not an integer
                            if not array_size.isdigit():
                                print("Could not translate",
                                      array_name_size[1])
                            else:
                                print(
                                    "Array size out of bounds. It must be between 0 and 128."
                                )
                            try:
                                # Try to translate user input to an integer
                                array_size = int(
                                    input(
                                        (f"Please enter the defined value for "
                                         f"{array_name_size[1]} (0 - 128): ")))
                            except ValueError:
                                pass  # Ignore non-integer and try again

System observed on:

  • Hardware: VirtualBox
  • OS: Ubuntu 20.04
  • Versions [e.g. cFE 6.6, OSAL 4.2, PSP 1.3 for mcp750, any related apps]

Fix

I believe the fix to be to remove int on the input function on line 462 : https://github.com/nasa/cFS-GroundSystem/blob/main/Subsystems/cmdGui/CHeaderParser.py#L462 like so:

                        while not array_size.isdigit() or int(
                                array_size) not in range(129):
                            # User input is not an integer
                            if not array_size.isdigit():
                                print("Could not translate",
                                      array_name_size[1])
                            else:
                                print(
                                    "Array size out of bounds. It must be between 0 and 128."
                                )
                            try:
                                # Try to translate user input to an integer
                                array_size =  input(
                                        (f"Please enter the defined value for "
                                         f"{array_name_size[1]} (0 - 128): "))
                            except ValueError:
                                pass  # Ignore non-integer and try again

Additional context

If you want to maintain the array_size as type int you can set the array_size to int array_size = int(array_size) after that while block above.

Reporter Info
Charles Taylor ER6
Johnson Space Center
I am on Teams

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in Subsystems/cmdGui/CHeaderParser.py around lines 450-467 and reproduce the manual array_sizes flow with python3 CHeaderParser.py. Check the type used by array_size during validation and confirm that valid values from 0 through 128 are accepted without the AttributeError, while invalid values continue prompting.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
cli
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.