Git Product home page Git Product logo

Comments (4)

akamensky avatar akamensky commented on May 25, 2024

No, Not sure how this got broken, there was (and still must be) a check that shorthand argument is one character long. (err if 0 > len(sn) > 1 because it can be 0 too).

from argparse.

goofinator avatar goofinator commented on May 25, 2024

Ooh... I've got it.
If you create an argument with wrong description, like in my case - long name for a shorthand argument, library refuses this argument's description silently. Later, when you try to use it, there will be 'unknown arguments' error. This is OK.
But in the case of Options with Required: false and some Default value, it will be another default value on Parse return (default value of the requested type).
That's because of pointer's creation and returning independently of o.addArg execution status.
So, in case of using of Option Required: false and some error on o.addArg you will get unexpected value (default for type instead of Default by options) without any alarm. It's not good.
I see next variants:

  1. build the complete error chain from addArg to user (in this case user will have to check error after each argument creation).
  2. in case of o.addArg failure - return nil pointer, so the user's program will panic on attemption to use it
  3. panic on o.addArg failure (this may take sance, because this is a case of error in user programm).
  4. or just let it go))

I like 2 and 3, but Interested in your opinion.

from argparse.

akamensky avatar akamensky commented on May 25, 2024

To be honest I don't like 2 because of nil pointer, perhaps that is the legacy of hating nullptr from C/C++. I'd argue that if method promises to return a specific type it must try its best to return that instead of nil (except errors I guess).

I would prefer to separate a developer (who would use this library in their application) and actual application user. Letting application crash with null pointer dereference exception while user runs application is not nice. User may have no knowledge of application internals and may have 0 idea why it suddenly failed.

Instead I would prefer to have a meaningful error message returned to the developer (or user if developer did not handle this) and have it contain a message of why it failed.

If it is a developer mistake -- they should be able to catch this during their testing. If a user mistake they should see a clear explanation to their mistake.

Back to this case -- I think this library should do its best effort to get a correct input. If shorthand handle for an argument should be limited to a single character -- this must be done by the means inside library in a clear way. For example it could panic inside NewInt when shorthand is longer than 1 character (before pointer is even returned). Or it could simply accept a byte in string format. Or some other way.

from argparse.

akamensky avatar akamensky commented on May 25, 2024

I think that was done in #57

feel free to close if this is resolved

from argparse.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.