Giter Club home page Giter Club logo

az-partner-center-cli's Introduction

az-partner-center-cli

This application wraps the swagger generate client of the partner ingestion apis. The documentation can be found here

Requirements.

  • Python 3.7+ (Expected to work with Python 3.6+)
  • Java JDK 8

Command Line

Install

# Must not use -e when doing pip install

# From Production Release PyPi
pip install az-partner-center-cli

# From Release Candidate PyPi
pip install --pre az-partner-center-cli

# From Source
git clone https://github.com/microsoft/az-partner-center-cli
cd az-partner-center-cli
pip install .

Azure Partner Center (azpc) CLI Usage

Create Manifest File

  1. Copy template.manifest.yml and create new file manifest.yml.
  2. Copy template.config.yml and create new file config.yml.
  3. Complete manifest.yml with pointers to required files.
    1. managed_app.zip
    2. app_listing_config.json
    3. Small Logo Image (png) - 48x48
    4. Medium Logo Image (png) - 90x90
    5. Large Logo Image (png) - 216x216
    6. Wide Logo Image (png) - 255x115
  4. Complete config.yml.
    • tenant_id: Who will publish the managed app
    • azure_preview_subscription: Who will be the preview audience
    • aad_id and aad_secret: Service principal used for calling partner API
    • access_id: Service principal will have access to managed resource group

config.yml

tenant_id                   : "<Azure Tenant ID>"
azure_preview_subscription  : "<Azure Subscription>"
aad_id                      : "<Service Principal ID>"
aad_secret                  : "<Service Principal Secret>"
access_id                   : "<Service Principal ID>"

manifest.yml

name                : "dciborow-submission"
plan_name           : "test-plan"
app_path            : "tests/sample_app"
app                 : "sample-app.zip"
json_listing_config : "sample_app_listing_config.json"

When the name, and plan name are provided in the manifest.yml, they do not have to be provided in the CLI commands. They are in the below examples for clarity on which commands use each value.

Managed Application

ma_name='dciborow-managed-app'
plan_name='test-plan'

cat manifest.yml

azpc ma list
azpc ma create --name $name
azpc ma show   --name $name
azpc ma update --name $name
# azpc ma delete --name $name

azpc ma plan list   --name $name
azpc ma plan create --name $name --plan-name $plan_name 
azpc ma plan show   --name $name --plan-name $plan_name
azpc ma plan update --name $name --plan-name $plan_name
# azpc ma plan delete --name $name --plan-name $plan_name

azpc ma publish --name $name

Solution Template

name='dciborow-solution-template'
plan_name='test-plan'

cat manifest.yml

azpc st list
azpc st create --name $name
azpc st show   --name $name
azpc st update --name $name
# azpc st delete --name $name

azpc st plan list   --name $name
azpc st plan create --name $name --plan-name $plan_name 
azpc st plan show   --name $name --plan-name $plan_name
azpc st plan update --name $name --plan-name $plan_name
# azpc st plan delete --name $name --plan-name $plan_name

azpc st publish --name $name

Virtual Machine

vm_name='dciborow-vm'
plan_name='test-plan'
config_yml='config.yml'
config_json='vm_config.json'
app_path='sample_app'
notificationEmails='[email protected]'

cat manifest.yml

azpc vm list
azpc vm create --name $name --config-yml $config_yml --config-json $config_json --app-path $app_path
azpc vm show --name $name --config-yml $config_yml --config-json $config_json --app-path $app_path
azpc vm update --name $name
azpc vm publish --name $name --config-yml $config_yml --config-json $config_json --app-path $app_path
#  azpc vm delete --name $name

azpc vm plan list   --name $name
azpc vm plan create --name $name --plan-name $plan_name 
azpc vm plan show   --name $name --plan-name $plan_name
azpc vm plan update --name $name --plan-name $plan_name
# azpc vm plan delete --name $name --plan-name $plan_name

azpc vm publish --name $name --notification-emails $notificationEmails
azpc vm status --name $name

Container Image

vm_name='dciborow-vm'
plan_name='test-plan'

cat manifest.yml

azpc co list
azpc co create --name $name
azpc co show   --name $name
azpc co update --name $name
# azpc vm delete --name $name

azpc co plan list   --name $name
azpc co plan create --name $name --plan-name $plan_name 
azpc co plan show   --name $name --plan-name $plan_name
azpc co plan update --name $name --plan-name $plan_name
# azpc co plan delete --name $name --plan-name $plan_name

azpc co publish --name $name

Developer Setup

Create Configuration File

  1. Copy template.config.yml and create new file config.yml
  2. Fill in tenant_id, typically 72f988bf-86f1-41af-91ab-2d7cd011db47 for Microsoft's tenant.
  3. Fill in the Subscription that will have Preview access azure_preview_subscription
  4. Create a Service Principal and provide the id aad_id and key aad_secret

Generate Swagger Python Client

Insure Java in installed on the machine with java -v Download current stable 3.x.x branch (OpenAPI version 3)

pip install -e .

This runs the following commands are part of the setup.py. You can also run these commands individually.

wget https://repo1.maven.org/maven2/io/swagger/codegen/v3/swagger-codegen-cli/3.0.22/swagger-codegen-cli-3.0.22.jar -O swagger-codegen-cli.jar
java -jar swagger-code-get-cli.jar generate -i Partner_Ingestion_SwaggerDocument.json -l python -o temp
cp temp/swagger_client ./

Python SDK Usage

""" Create New Azure Managed Application """
from  azureiai.managed_apps.managed_app import ManagedApplication 
ama_name="Sample-App"
config_yaml="src/azureiai-managed-apps/config.yml"

ama = ManagedApplication(
    ama_name,
    config_yaml,
)
ama.create()

""" Get Existing Azure Managed Application """
from azureiai.managed_apps.managed_app import ManagedApplication 

ama_name="Sample-App"
config_yaml="src/azureiai-managed-apps/config.yml"
product_id = "3d00b4ab-50e5-49af-a2e6-5d800b8979cf"

ama = ManagedApplication(
    ama_name,
    config_yaml,
)
ama.set_product_id(product_id)

""" Get List of Azure Managed Applications """
from azureiai.managed_apps.managed_app import ManagedApplication 

ama_name="Sample-App"
config_yaml="src/azureiai-managed-apps/config.yml"

ama = ManagedApplication(
    ama_name,
    config_yaml,
)
offers = ama.get_offers()
for offer in offers.values:
    print(offer.name)

""" Publish Azure Managed Applications """
from azureiai.managed_apps.managed_app import ManagedApplication 

ama_name="Sample-App"
config_yaml="src/azureiai-managed-apps/config.yml"
manifest_yml="src/azureiai-managed-apps/manifest.yml"

ama = ManagedApplication(
    ama_name,
    config_yaml
)
ama.manifest_publish(
    manifest_yml=manifest_yml,
    config_yml=config_yml
)
ama.publish()
ama.promote()

""" Publish Azure Managed Applications """
from azureiai.managed_apps.managed_app import ManagedApplication 

ama_name="Sample-App"
config_yaml="src/azureiai-managed-apps/config.yml"
plan_name="FirstOffer"

app_path = "src/azureiai-managed-apps/"
app = "App.zip"
logo_small = "r_48_48.png"
logo_medium = "r_90_90.png"
logo_large = "r_216_216.png"
logo_wide = "r_255_155.png"

ama = ManagedApplication(
    ama_name,
    config_yaml,
)
ama.prepare_publish(
    plan_name=plan_name,
    app_path=app_path,
    app=app
)
ama.publish()
ama.promote()

az-partner-center-cli's People

Contributors

alexandrakoller avatar bhamorszky-kx avatar dciborow avatar dependabot[bot] avatar emilvel avatar microsoftopensource avatar ongk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

az-partner-center-cli's Issues

listing_config_v2.json and template.listing_config.json is not valid against schema_listing_config.json

Describe the bug
listing_config_v2.json and template.listing_config.json is not valid against schema_listing_config.json

There are discrepancy between the given listing configs and the schema.

Typical problem is:
schema:

        "listing_logos"      : {
          "type": "list"
        },

config:

    "listing_logos"      : {
      "logo_large" : "r_216_216.png",
      "logo_small" : "r_48_48.png",
      "logo_medium": "r_90_90.png",
      "logo_wide"  : "r_255_115.png"
    },

The given object is not matching with the required list type.

(easy to check with: https://github.com/python-jsonschema/check-jsonschema )

CLI Bugs

Marketplace Offering(please complete the following information):

  • Solution Template

Command Type(please complete the following information):

  • update

Sample CLI Command
azpc vm update --name $NAME --config-json $CONFIG_JSON

Describe the bug
image

Expected behavior
Report error message

Screenshots
If applicable, add screenshots to help explain your problem.

should not be returning the return values from the HTTP calls

CLI should not be returning (out of its main function) the return values from the HTTP calls/other sub-functions) - Main should be returning either 0 (success), or an error code up to 255.

this goes across the board, at the moment main does "return run(commands[somehting])

basically if the implementation-level function returns a string, main will try to return a string...which translates to a non-zero integer return value -> error code

CLI Bugs

Marketplace Offering(please complete the following information):

  • Solution Template
  • Managed Application

Command Type(please complete the following information):

  • create

Sample CLI Command
Sample "azpc" command run when error occurs.
azpc ma plan create --name $OFFER_NAME --plan-name $PLAN_NAME

Describe the bug
Unable to save availability status

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Azure CLI missing error response

Running...
azpc vm create --config-json vm_listing_config.json

Produces the following output, which does not contain any useful information.
ConnectionError: <Response [500]>

Plan create command not using config_yaml passed in

When using the plan create command, I pass in a value for --config-yml, but it's not being used. It looks to be using the default config.yml.

$ azpc st plan create --update --name contoso-st --plan_name base-image-vm --config-yml partnerCenterConfig.yml --config-json "listing_config.json" --app-path "."
Traceback (most recent call last):
  File "/Users/kelly/Documents/pyenv/bin/azpc", line 8, in <module>
    sys.exit(main())
  File "/Users/kelly/Documents/pyenv/lib/python3.9/site-packages/azureiai/azpc_app.py", line 40, in main
    return run(commands[subgroup]())
  File "/Users/kelly/Documents/pyenv/lib/python3.9/site-packages/azureiai/partner_center/__init__.py", line 44, in run
    output = commands[command]()
  File "/Users/kelly/Documents/pyenv/lib/python3.9/site-packages/azureiai/partner_center/__init__.py", line 78, in run_plan
    return commands[plan_command]()
  File "/Users/kelly/Documents/pyenv/lib/python3.9/site-packages/azureiai/partner_center/plan.py", line 245, in create
    return self.submission_type(
  File "/Users/kelly/Documents/pyenv/lib/python3.9/site-packages/azureiai/partner_center/plan.py", line 60, in create
    self._set_product_id()
  File "/Users/kelly/Documents/pyenv/lib/python3.9/site-packages/azureiai/partner_center/plan.py", line 119, in _set_product_id
    api_response = self._apis["product"].products_get(authorization=self.get_auth(), filter=filter_name)
  File "/Users/kelly/Documents/pyenv/lib/python3.9/site-packages/azureiai/partner_center/offer.py", line 63, in get_auth
    with open(self.config_yaml, encoding="utf8") as file:
FileNotFoundError: [Errno 2] No such file or directory: 'config.yml'

LookupError: AzureApplication with this name not found

Marketplace Offering(please complete the following information):

  • Solution Template
  • Managed Application

Command Type(please complete the following information):

  • list

Sample CLI Command

azpc ma list
azpc ma plan list --name "xyz"

Describe the bug
Listing the STs gives me the expected list:

> azpc st list
{
    "value": [
        {
            "offer_marketing_url_i_dentifier": null,
            "resource_type": null,
            "external_i_ds": [
                {
                    "type": "AzureOfferId",
                    "value": "xyz"
                }
            ],
...

but requesting the plan info gives me this:

> azpc st plan list --name "xyz"
...
    raise LookupError(f"{self.resource_type} with this name not found: {self.name}")
LookupError: AzureApplication with this name not found: xyz

Maybe filter_name = "ExternalIDs/Any(i:i/Type eq 'AzureOfferId' and i/Value eq '" + self.name + "')" is not working anymore?

Or am I missing something?

I've tried with explicitly giving config.yml and manifest.yml or not having them at all, same result.

Expected behavior
Looking up plan to work.

CLI Bugs - Unable to set Azure Gov Enabled to true for Solution Templates

Marketplace Offering(please complete the following information):

  • Solution Template
  • Managed Application

Command Type(please complete the following information):

  • create
  • update

Sample CLI Command
azpc create st

Describe the bug
When enabling gov, the flag is not set in partner center.

Expected behavior
Should be able to enable Azure Gov via CLI

Screenshots
If applicable, add screenshots to help explain your problem.

Create plans on offer creation

When an offer is created for solution template and managed application offers (potentially others), the offer is created, some configurations are set, however the plans are not currently being created.
As a user, when a configuration file that contains a list of plans are included, it would be expected that all configurations are set including the creation of the plans.

Create Template for Azure CLI bugs

In order to quickly reproduce errors from the Azure CLI, a test template should be created explaining how to add a new test case which a user can include in a bug report.

Solution Template Plan Creation Fails

(base) dciborow@LAPTOP-PR3SAICS:/mnt/c/Users/djc39/AGAI-Industrial-AI/azure/game-dev-vm$ azpc st plan create --name $name --plan_name $plan_name
Traceback (most recent call last):
  File "/home/dciborow/miniconda3/bin/azpc", line 8, in <module>
    sys.exit(main())
  File "/home/dciborow/miniconda3/lib/python3.9/site-packages/azureiai/azpc_app.py", line 37, in main
    return run(commands[subgroup]())
  File "/home/dciborow/miniconda3/lib/python3.9/site-packages/azureiai/partner_center/__init__.py", line 44, in run
    output = commands[command]()
  File "/home/dciborow/miniconda3/lib/python3.9/site-packages/azureiai/partner_center/__init__.py", line 78, in run_plan
    return commands[plan_command]()
  File "/home/dciborow/miniconda3/lib/python3.9/site-packages/azureiai/partner_center/plan.py", line 201, in create
    return self.submission_type(args.plan_name, args.name, subtype=args.subgroups).create()
AttributeError: 'Namespace' object has no attribute 'subgroups'

Originally posted by @dciborow in #64 (comment)

Get virtual machine offers

The current azpc vm list CLI command fails as it tries to use the Partner Portal API instead of the Cloud Partner Portal API. It appears to be due to the list method not yet built into the virtual_machine.py class.

Reseller configuration's "resellerChannelState" OptIn value changed

Marketplace Offering(please complete the following information):
All offers

Command Type(please complete the following information):

  • create
  • update

Describe the bug
The reseller configuration "resellerChannelState" options have changed to PartialOptIn, Enabled, and Disabled. Note that "OptIn" has been changed to "Enabled". The CLI currently uses "OptIn" as the default so that will need to be updated to "Enabled". Currently unable to publish to preview using the CLI because offer configuration is not complete.

Expected behavior
The default "resellerChannelState" value in ResellerConfiguration should be "Enabled".

Create new virtual machine offer

The current azpc vm create CLI command fails as it tries to use the Partner Portal API instead of the Cloud Partner Portal API. It appears to be due to the creation method not yet built into the virtual_machine.py class.

Solution Template Plan Creation: FileNotFoundError: [Errno 2] No such file or directory: 'sample_app\\ma_config.json'

(base) PS C:\Users\djc39\AGAI-Industrial-AI\azure\game-dev-vm> azpc st plan create --name $name --plan_name $plan_name
Traceback (most recent call last):
  File "c:\users\djc39\miniconda3\lib\runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "c:\users\djc39\miniconda3\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "C:\Users\djc39\miniconda3\Scripts\azpc.exe\__main__.py", line 7, in <module>
  File "c:\users\djc39\miniconda3\lib\site-packages\azureiai\azpc_app.py", line 37, in main
    return run(commands[subgroup]())
  File "c:\users\djc39\miniconda3\lib\site-packages\azureiai\partner_center\__init__.py", line 44, in run
    output = commands[command]()
  File "c:\users\djc39\miniconda3\lib\site-packages\azureiai\partner_center\__init__.py", line 78, in run_plan
    return commands[plan_command]()
  File "c:\users\djc39\miniconda3\lib\site-packages\azureiai\partner_center\plan.py", line 201, in create
    return self.submission_type(args.plan_name, args.name, subtype=args.subgroup).create()
  File "c:\users\djc39\miniconda3\lib\site-packages\azureiai\partner_center\plan.py", line 63, in create
    self.update()
  File "c:\users\djc39\miniconda3\lib\site-packages\azureiai\partner_center\plan.py", line 71, in update
    self._update_plan_listing()
  File "c:\users\djc39\miniconda3\lib\site-packages\azureiai\partner_center\plan.py", line 123, in _update_plan_listing
    with open(Path(self.app_path).joinpath(self.json_listing_config), "r", encoding="utf8") as read_file:
FileNotFoundError: [Errno 2] No such file or directory: 'sample_app\\ma_config.json'

CLI Bugs

Marketplace Offering(please complete the following information):

  • Solution Template
  • Managed Application

Command Type(please complete the following information):

  • create
  • update

Sample CLI Command
azpc create vm

Describe the bug
With setting visibility = public, offer is set to private.

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Delete VM offer requires name and id values to be the same

Marketplace Offering(please complete the following information):

  • Virtual Machine

Command Type(please complete the following information):

  • delete

Sample CLI Command
azpc vm delete --name contosovirtualmachine

Describe the bug
When attempting to delete a VM draft offer, the command fails with "LookupError: AzureThirdPartyVirtualMachine with this name not found: contosovirtualmachine". The name returned (Contoso Virtual Machine Offer) from the API is the alias and is not the same as the offer ID.

Expected behavior
The draft offer should be deleted.

Screenshots
None

Issues with installed dependencies using `pip install`

When installing the project, using PyPi or pulling the repository down locally, all of the dependencies listed in the requirements.txt file are not installed. This is leading to failures when trying to run some methods.

When running pip install az-partner-center-cli to get the production release from PyPi, you can see from the output that pygments is not installed despite it being within the requirements.txt file.

See output from installation:

(AGCI-Marketplace) C:\dev_local\AGCI-Marketplace-Scripts>pip install az-partner-center-cli
Collecting az-partner-center-cli
  Using cached az_partner_center_cli-0.0.12-py3-none-any.whl (321 kB)
Collecting cryptography>=3.3.1
  Using cached cryptography-37.0.2-cp36-abi3-win_amd64.whl (2.4 MB)
Collecting wget
  Using cached wget-3.2-py3-none-any.whl
Collecting six>=1.10
  Using cached six-1.16.0-py2.py3-none-any.whl (11 kB)
Collecting adal
  Using cached adal-1.2.7-py2.py3-none-any.whl (55 kB)
Collecting azure-mgmt-resource
  Using cached azure_mgmt_resource-21.1.0-py3-none-any.whl (1.8 MB)
Collecting pyyaml
  Using cached PyYAML-6.0-cp37-cp37m-win_amd64.whl (153 kB)
Collecting urllib3>=1.15
  Using cached urllib3-1.26.9-py2.py3-none-any.whl (138 kB)
Collecting python-dateutil
  Using cached python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB)
Requirement already satisfied: certifi in c:\users\alexkoller\anaconda3\envs\agci-marketplace\lib\site-packages (from az-partner-center-cli) (2022.5.18.1)
Collecting requests
  Using cached requests-2.27.1-py2.py3-none-any.whl (63 kB)
Collecting azure-identity>=1.2.0
  Using cached azure_identity-1.10.0-py3-none-any.whl (134 kB)
Collecting azure-mgmt-deploymentmanager
  Using cached azure_mgmt_deploymentmanager-1.0.0-py2.py3-none-any.whl (68 kB)
Collecting azure-storage-blob
  Using cached azure_storage_blob-12.12.0-py3-none-any.whl (366 kB)
Collecting msal<2.0.0,>=1.12.0
  Using cached msal-1.17.0-py2.py3-none-any.whl (79 kB)
Collecting msal-extensions<2.0.0,>=0.3.0
  Using cached msal_extensions-1.0.0-py2.py3-none-any.whl (19 kB)
Collecting azure-core<2.0.0,>=1.11.0
  Using cached azure_core-1.24.0-py3-none-any.whl (178 kB)
Collecting typing-extensions>=4.0.1
  Using cached typing_extensions-4.2.0-py3-none-any.whl (24 kB)
Collecting cffi>=1.12
  Using cached cffi-1.15.0-cp37-cp37m-win_amd64.whl (179 kB)
Collecting pycparser
  Using cached pycparser-2.21-py2.py3-none-any.whl (118 kB)
Collecting PyJWT[crypto]<3,>=1.0.0
  Using cached PyJWT-2.4.0-py3-none-any.whl (18 kB)
Collecting portalocker<3,>=1.6
  Using cached portalocker-2.4.0-py2.py3-none-any.whl (16 kB)
Collecting pywin32>=226
  Using cached pywin32-304-cp37-cp37m-win_amd64.whl (12.2 MB)
Collecting idna<4,>=2.5
  Using cached idna-3.3-py3-none-any.whl (61 kB)
Collecting charset-normalizer~=2.0.0
  Using cached charset_normalizer-2.0.12-py3-none-any.whl (39 kB)
Collecting msrest>=0.6.21
  Using cached msrest-0.6.21-py2.py3-none-any.whl (85 kB)
Collecting azure-mgmt-core<2.0.0,>=1.2.0
  Using cached azure_mgmt_core-1.3.0-py2.py3-none-any.whl (25 kB)
Collecting azure-common~=1.1
  Using cached azure_common-1.1.28-py2.py3-none-any.whl (14 kB)
Collecting requests-oauthlib>=0.5.0
  Using cached requests_oauthlib-1.3.1-py2.py3-none-any.whl (23 kB)
Collecting isodate>=0.6.0
  Using cached isodate-0.6.1-py2.py3-none-any.whl (41 kB)
Collecting oauthlib>=3.0.0
  Using cached oauthlib-3.2.0-py3-none-any.whl (151 kB)
Installing collected packages: pycparser, cffi, urllib3, PyJWT, idna, cryptography, charset-normalizer, typing-extensions, six, requests, pywin32, oauthlib, requests-oauthlib, portalocker, msal, isodate, azure-core, python-dateutil, msrest, msal-extensions, azure-mgmt-core, azure-common, wget, pyyaml, azure-storage-blob, azure-mgmt-resource, azure-mgmt-deploymentmanager, azure-identity, adal, az-partner-center-cli
Successfully installed PyJWT-2.4.0 adal-1.2.7 az-partner-center-cli-0.0.12 azure-common-1.1.28 azure-core-1.24.0 azure-identity-1.10.0 azure-mgmt-core-1.3.0 azure-mgmt-deploymentmanager-1.0.0 azure-mgmt-resource-21.1.0 azure-storage-blob-12.12.0 cffi-1.15.0 charset-normalizer-2.0.12 cryptography-37.0.2 idna-3.3 isodate-0.6.1 msal-1.17.0 msal-extensions-1.0.0 msrest-0.6.21 oauthlib-3.2.0 portalocker-2.4.0 pycparser-2.21 python-dateutil-2.8.2 pywin32-304 pyyaml-6.0 requests-2.27.1 requests-oauthlib-1.3.1 six-1.16.0 typing-extensions-4.2.0 urllib3-1.26.9 wget-3.2

See output from pip list after the installation:

(AGCI-Marketplace) C:\dev_local\AGCI-Marketplace-Scripts>pip list
Package                      Version
---------------------------- -----------
adal                         1.2.7
azure-common                 1.1.28
azure-core                   1.24.0
azure-identity               1.10.0
azure-mgmt-core              1.3.0
azure-mgmt-deploymentmanager 1.0.0
azure-mgmt-resource          21.1.0
azure-storage-blob           12.12.0
certifi                      2022.5.18.1
cffi                         1.15.0
charset-normalizer           2.0.12
cryptography                 37.0.2
idna                         3.3
isodate                      0.6.1
msal                         1.17.0
msal-extensions              1.0.0
msrest                       0.6.21
oauthlib                     3.2.0
pip                          21.2.4
portalocker                  2.4.0
pycparser                    2.21
PyJWT                        2.4.0
python-dateutil              2.8.2
pywin32                      304
PyYAML                       6.0
requests                     2.27.1
requests-oauthlib            1.3.1
setuptools                   61.2.0
six                          1.16.0
typing_extensions            4.2.0
urllib3                      1.26.9
wget                         3.2
wheel                        0.37.1
wincertstore                 0.2

A temporary solution to resolve this when pulling down the repository is to specify the requirements file to use such as:

pip install . -r requirements.txt

No found solution for PyPi installation.

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.