PyCharm intellisense for boto3

前端 未结 8 1244
长发绾君心
长发绾君心 2021-02-18 15:49

having problems seeing full intellisense (code completion) options in PyCharm. working with python 3.4 on Windows. the suggests are partially working:

import bot         


        
相关标签:
8条回答
  • 2021-02-18 16:26

    boto3-stubs

    Type annotations for boto3 1.16.62 compatible with VSCode, PyCharm, Emacs, Sublime Text, mypy, pyright and other tools.

    0 讨论(0)
  • 2021-02-18 16:32

    I love boto3, but I was also frustrated that every time I want to make a simple ad-hoc request I have to open boto3 documentation. So I wrote autoboto:

    https://pypi.org/project/autoboto/

    It doesn't just auto-complete. It also returns dataclasses which means that you don't have to look up the names of attributes of the returned objects. PyCharm will tell you what is available.

    At the moment, it's also probably very slow because of all the generic serialisation and deserialisation.

    0 讨论(0)
  • 2021-02-18 16:34

    I was frustrated with the same issue. So I decided to parse boto3 documentation and generate wrapper classes from the documentation. Here is the link to project https://github.com/gehadshaat/pyboto3

    To install it

    pip install pyboto3
    

    To use it

    import boto3
    s3 = boto3.client('s3')
    """ :type : pyboto3.s3 """
    # s3. -> will give you autocomplete for s3 methods in pycharm
    

    Make sure that you first:

    1. Install pyboto3 -> pip install pyboto3 | pip3.x install pyboto3
    2. Check your interpreter settings and verify that you see pyboto3 on the list
    3. Do a File -> Invalidate Caches/Restart

    After Pycharm restarts you should see intellisense working in your favor and all of the available methods for the service (in the case above s3) you are trying to use available to you!

    0 讨论(0)
  • 2021-02-18 16:36

    The room's getting a little crowded here, but I also have created a boto3 typing solution (GitHub link), boto3_type_annotations. I took the pyboto3 approach and parsed the docstrings of service objects and then programmatically wrote class definitions for them and annotated arguments and return types with the typing module. Unlike pyboto3 I created everything including service resources, paginators, and waiters. There's also an option where I left the docstrings in, so PyCharm's quick documentation will work. But fair warning, that package is really big.

    # Without docs
    pip install boto3_type_annotations
    
    # Or with docs
    
    pip install boto3_type_annotations_with_docs
    

    0 讨论(0)
  • 2021-02-18 16:36

    While autocomplete solutions for boto3 are being discussed I'm surprised that nobody mentioned botostubs yet. Works on any IDE and is automatically kept up-to-date.

    0 讨论(0)
  • 2021-02-18 16:38

    This is happening because all of the methods on the boto3 clients and resource objects are generated at runtime based on a JSON file that describes what operations the service supports. Pycharm would have to have specific knowledge about this process in order to auto complete method names.

    For your second question, boto3 is the official AWS SDK for Python. One of the main advantages of boto3 is that because of this JSON model driven process that describes the AWS APIs, most new service features only require a simple model update. This means API updates happen in a quick, consistent, and reliable manner.

    But if you're using boto in existing code and it's working for you, feel free to keep using it. You can always install boto3 along side boto if you need to pull in new functionality.

    0 讨论(0)
提交回复
热议问题