Python Client for Algorithmia Algorithms and Data API

Overview

Algorithmia Common Library (python)

Python client library for accessing the Algorithmia API For API documentation, see the PythonDocs

PyPI

Algorithm Development Kit

This package contains the algorithmia-adk development kit, simply add from Algorithmia import ADK into your workflow to access it.

Install from PyPi

The official Algorithmia python client is available on PyPi. Install it with pip:

pip install algorithmia

Install from source

Build algorithmia client wheel:

python setup.py bdist_wheel

Install a wheel manually:

pip install --user --upgrade dist/algorithmia-*.whl

#install locally for testing

from directory containing setup.py and the Algorithmia directory:

pip3 install ./

#add CLI script to PATH

to use the CLI it may be nessesary to add the install location to the PATH enviroment variable

export PATH = $HOME/.local/bin:$PATH

Authentication

First, create an Algorithmia client and authenticate with your API key:

import Algorithmia

apiKey = '{{Your API key here}}'
client = Algorithmia.client(apiKey)

Now you're ready to call algorithms.

Calling algorithms

The following examples of calling algorithms are organized by type of input/output which vary between algorithms.

Note: a single algorithm may have different input and output types, or accept multiple types of input, so consult the algorithm's description for usage examples specific to that algorithm.

Text input/output

Call an algorithm with text input by simply passing a string into its pipe method. If the algorithm output is text, then the result field of the response will be a string.

algo = client.algo('demo/Hello/0.1.1')
response = algo.pipe("HAL 9000")
print(response.result)    # Hello, world!
print(response.metadata)  # Metadata(content_type='text',duration=0.0002127)
print(response.metadata.duration) # 0.0002127

JSON input/output

Call an algorithm with JSON input by simply passing in a type that can be serialized to JSON: most notably python dicts and arrays. For algorithms that return JSON, the result field of the response will be the appropriate deserialized type.

["transformer","retransform"]">
algo = client.algo('WebPredict/ListAnagrams/0.1.0')
result = algo.pipe(["transformer", "terraforms", "retransform"]).result
# -> ["transformer","retransform"]

Binary input/output

Call an algorithm with Binary input by passing a byte array into the pipe method. Similarly, if the algorithm response is binary data, then the result field of the response will be a byte array.

[binary byte sequence]">
input = bytearray(open("/path/to/bender.png", "rb").read())
result = client.algo("opencv/SmartThumbnail/0.1").pipe(input).result
# -> [binary byte sequence]

Error handling

API errors and Algorithm exceptions will result in calls to pipe throwing an AlgoException:

client.algo('util/whoopsWrongAlgo').pipe('Hello, world!')
# Algorithmia.algo_response.AlgoException: algorithm algo://util/whoopsWrongAlgo not found

Request options

The client exposes options that can configure algorithm requests. This includes support for changing the timeout or indicating that the API should include stdout in the response.

from Algorithmia.algorithm import OutputType
response = client.algo('util/echo').set_options(timeout=60, stdout=False)
print(response.metadata.stdout)

Note: stdout=True is only supported if you have access to the algorithm source.

Working with data

The Algorithmia client also provides a way to manage both Algorithmia hosted data and data from Dropbox or S3 accounts that you've connected to you Algorithmia account.

Create directories

Create directories by instantiating a DataDirectory object and calling create():

client.dir("data://.my/foo").create()
client.dir("dropbox://somefolder").create()

Upload files to a directory

Upload files by calling put on a DataFile object, or by calling putFile on a DataDirectory object.

foo = client.dir("data://.my/foo")
foo.file("remote_file").putFile("/path/to/myfile")
foo.file("sample.txt").put("sample text contents")
foo.file("binary_file").put(some_binary_data)

Note: you can instantiate a DataFile by either client.file(path) or client.dir(path).file(filename)

Download contents of file

Download files by calling getString, getBytes, getJson, or getFile on a DataFile object:

foo = client.dir("data://.my/foo")
sampleText = foo.file("sample.txt").getString()  # String object
binaryContent = foo.file("binary_file").getBytes()  # Binary data
tempFile = foo.file("myfile").getFile()   # Open file descriptor

Delete files and directories

Delete files and directories by calling delete on their respective DataFile or DataDirectory object. DataDirectories take an optional force parameter that indicates whether the directory should be deleted if it contains files or other directories.

foo = client.dir("data://.my/foo")
foo.file("sample.txt").delete()
foo.delete(true) // true implies force deleting the directory and its contents

List directory contents

Iterate over the contents of a directory using the iterated returned by calling list, files, or dirs on a DataDirectory object:

foo = client.dir("data://.my/foo")

# List files in "foo"
for file in foo.files():
    print(file.path + " at URL: " + file.url + " last modified " + file.last_modified)

# List directories in "foo"
for file in foo.dirs():
    print(dir.path + " at URL: " + file.url)

# List everything in "foo"
for entry in foo.list():
    print(entry.path + " at URL: " + entry.url)

Manage directory permissions

Directory permissions may be set when creating a directory, or may be updated on already existing directories.

from Algorithmia.acl import ReadAcl, AclType
foo = client.dir("data://.my/foo")
# ReadAcl.public is a wrapper for Acl(AclType.public) to make things easier
foo.create(ReadAcl.public)

acl = foo.get_permissions()  # Acl object
acl.read_acl == AclType.public  # True

foo.update_permissions(ReadAcl.private)
foo.get_permissions().read_acl == AclType.private # True

Algorithmia CLI

Algorithmia CLI is a cross-platform tool for interfacing with algorithms and the Algorithmia Data API.

Configure Authentication

In order to make calls with the CLI, you'll need to configure the authentication with an API key. If you don't already have an API key, get started by signing up for an account at Algorithmia.com. Once you've completed the sign up process, copy the API key from your account dashboard.

Begin the configuration process by running the command algo auth. You will see an interactive prompt to guide you through setting up a default profile:

$ algo auth
Configuring authentication for profile: 'default'
Enter API Endpoint [https://api.algorithmia.com]:
Enter API Key:
(optional) enter path to custom CA certificate:
Profile is ready to use. Test with 'algo ls'

See Using multiple profiles for instructions on how to set authenticate and use more than one profile with the Algorithmia CLI tool.

Usage

To call an algorithm from the CLI, use the command syntax: algo run, followed by the algorithm’s username and algorithm name, the data options, and finally the input. Here is a basic example calling the Factor algorithm:

$ algo run kenny/factor -d 19635
[3,5,7,11,17]

Run algo run --help to see more command options or view the following Options section.

Options

Input Data Options

The Algorithmia CLI supports JSON, text, and binary data, as well as an option to auto-detect the data type.

Option Flag Description
-d, --data If the data parses as JSON, assume JSON, else if the data is valid UTF-8, assume text, else assume binary
-D, --data-file Same as --data, but the input data is read from a file

You may also explictly specify the input type as text (-t/-T), json (-j/-J), or binary (-b/-B) instead of using the auto-detection (-d/-D).

Output Options

The algorithm result is printed to STDOUT by defauft. Additional notices may be printed to STDERR. If you'd like to output the result to a file, use the output option flag followed by a filename:

$ algo run kenny/factor -d 17 --output results.txt
Option Flag Description
--debug Print algorithm's STDOUT (author-only)
-o, --output Print result to a file

Other Options

Option Flag Description
--timeout Sets algorithm timeout

Examples:

$ algo run kenny/factor/0.1.0 -d '79'                   Run algorithm with specified version & data input
$ algo run anowell/Dijkstra -D routes.json              Run algorithm with file input
$ algo run anowell/Dijkstra -D - < routes.json          Same as above but using STDIN
$ algo run opencv/SmartThumbnail -D in.png -o out.png   Runs algorithm with binary files as input
$ algo run kenny/factor -d 17 --timeout 2               Runs algorithm with a timeout of 2 seconds

The Algorithmia Data API

Use the Algorithmia CLI to interact with the Algorithmia Data API. You can use the CLI to create and manage your data directories.

Data commands include:

Command Description
ls List contents of a data directory
mkdir Create a data directory
rmdir Delete a data directory
rm Remove a file from a data directory
cp Copy file(s) to or from a data directory
cat Concatenate & print file(s) in a directory

Examples of the Algorithmia Data API usage:

Create a data directory:

$ algo mkdir .my/cuteAnimals

Created directory data://.my/cuteAnimals

Copy a file from your local directory to the new data directory:

$ algo cp chubby_kittens.jpg data://.my/cuteAnimals

Uploaded data://.my/cuteAnimals/chubby_kittens.jpg

Using multiple profiles

Add additional profiles

With the Algorithmia CLI, you can configure multiple custom profiles to use. To add a new profile, simply specify a profile to algo auth follow the same interactive prompt.

algo auth --profile second_user
Configuring authentication for profile: 'second_user'
Enter API Endpoint [https://api.algorithmia.com]:
Enter API Key:
(optional) enter path to custom CA certificate:

Now you may use algo ls --profile second_user to list files in your second_user account. For more information, see the auth command help with algo auth --help.

Using profiles in commands

When running commands, the Algorithmia CLI will use the default profile unless otherwise specified with the --profile option. See the following example:

$ algo run kenny/factor -d 17 --profile second_user
[17]

Running tests

Make sure you have numpy installed before running datafile_test.py

export ALGORITHMIA_API_KEY={{Your API key here}}
cd Test
python acl_test.py
python algo_test.py
python datadirectorytest.py
python datafile_test.py
python utiltest.py
Comments
  • Insights 12

    Insights 12

    Adding method to allow users to send insight information from a python algorithm to the queue reader. I am not very experienced with Python, so please point out any areas for improvement or correction. This is a pretty simple flow and I could have just called the request.post from the client, but I feel it is cleaner to have the Insights class segregated.

    opened by robert-close 7
  • Error when running locally:  Starting... Error running 'algo serve'

    Error when running locally: Starting... Error running 'algo serve'

    Hi, i am trying to build and run locally my algorithm on my machine (mac os 10.13.6). I have python 3.6.6 installed as main python (pyenv). When i execute command: algo runlocal -D test.json The message 'Error running 'algo serve' appears after a while..

    Out of curiosity i run: algo serve and after the installation of packages finishes, there is a build error: INFO ALGOERR - class RegexFlag(enum.IntFlag): INFO ALGOERR - AttributeError: module 'enum' has no attribute 'IntFlag'

    After searching a little bit into the wild internet, i found the following thread enum34 isn't compatible with python 3.6.

    Algorithmia requires python version > 3.4 and also requires presence of enum34.

    Is it something caused by my python environment or is it something that may have to be addressed on your side?

    opened by thanosbellos 7
  • Unicode error

    Unicode error

    Hi,

    I'm having trouble to make this code work:

    client = Algorithmia.client(ALGO_TOKEN)
    
    algo_text = client.algo('util/Html2Text/0.1.4')
    algo_summary = client.algo('nlp/Summarizer/0.1.3')
    
    link_text = algo_text.pipe(title).result
    summary = algo_summary.pipe(link_text).result
    

    The first result come back without problem, but I cannot give it as an input to the next API. What am I doing wrong? I tried to encode/decode to/from unicode. I couldn't figure it out.

    Log:

    2016-10-21 11:14:58,167 - ERROR: Unexpected error: Traceback (most recent call last): File "/Users/iseckert/DevProjects/bot/linkcrawler-python-bot/bot/slack_bot.py", line 53, in start event_handler.handle(event) File "/Users/iseckert/DevProjects/bot/linkcrawler-python-bot/bot/event_handler.py", line 18, in handle self._handle_by_type(event['type'], event) File "/Users/iseckert/DevProjects/bot/linkcrawler-python-bot/bot/event_handler.py", line 27, in _handle_by_type self._handle_message(event) File "/Users/iseckert/DevProjects/bot/linkcrawler-python-bot/bot/event_handler.py", line 85, in _handle_message summary = algo_summary.pipe(link_text).result File "/usr/local/lib/python2.7/site-packages/Algorithmia/algorithm.py", line 39, in pipe return AlgoResponse.create_algo_response(self.client.postJsonHelper(self.url, input1, *_self.query_parameters)) File "/usr/local/lib/python2.7/site-packages/Algorithmia/client.py", line 53, in postJsonHelper response = requests.post(self.apiAddress + url, data=input_json, headers=headers, params=query_parameters) File "/usr/local/lib/python2.7/site-packages/requests/api.py", line 107, in post return request('post', url, data=data, json=json, *_kwargs) File "/usr/local/lib/python2.7/site-packages/requests/api.py", line 53, in request return session.request(method=method, url=url, *_kwargs) File "/usr/local/lib/python2.7/site-packages/requests/sessions.py", line 468, in request resp = self.send(prep, *_send_kwargs) File "/usr/local/lib/python2.7/site-packages/requests/sessions.py", line 576, in send r = adapter.send(request, *_kwargs) File "/usr/local/lib/python2.7/site-packages/requests/adapters.py", line 376, in send timeout=timeout File "/usr/local/lib/python2.7/site-packages/requests/packages/urllib3/connectionpool.py", line 559, in urlopen body=body, headers=headers) File "/usr/local/lib/python2.7/site-packages/requests/packages/urllib3/connectionpool.py", line 353, in _make_request conn.request(method, url, *_httplib_request_kw) File "/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 1057, in request self._send_request(method, url, body, headers) File "/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 1097, in _send_request self.endheaders(body) File "/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 1053, in endheaders self._send_output(message_body) File "/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 901, in _send_output self.send(message_body) File "/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 873, in send self.sock.sendall(data) File "/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ssl.py", line 743, in sendall v = self.send(data[count:]) File "/usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ssl.py", line 709, in send v = self._sslobj.write(data) UnicodeEncodeError: 'ascii' codec can't encode character u'\xf3' in position 14: ordinal not in range(128)

    opened by pimpalaputty 5
  • fixed optional loading functionality & get test cases to pass

    fixed optional loading functionality & get test cases to pass

    the optionality of load was bugged as we never checked for the default case of the function, this yielded a dead load_func which failed in getfuncargs

    Also, we added github actions and we had some issues with version compatibility, this fixes those issues as well.

    opened by zeryx 4
  • AML-6 Model Manifest Compilation Integration

    AML-6 Model Manifest Compilation Integration

    This adds an additional CLI function called compile, which triggers a model_manifest.json.lock file creation, which is used by the model manifest system and data immutability & governance process.

    algo compile in an algorithm directory containing a model_manifest.json file will trigger a lock operation; which calculates the md5 checksum's of all model files, and the md5 checksum of the lockfile itself; reducing the likelihood of tampering. compile requires authentication with credentials that allows access to any data API files that are defined in the manifest.

    As an example; please use the model_manifest.json defined in https://gist.github.com/zeryx/5ebd1a9072a66803abff6889e051b126; and make sure that your lockfile generated contains the same md5 hashes for all relevant model files.

    the ADK sibling PR is located here: https://github.com/algorithmiaio/algorithmia-adk-python/pull/7

    opened by zeryx 3
  • how to download file to local disk?

    how to download file to local disk?

    The example of the api docs for python looks like: t800File = client.file("data://.my/robots/T-800.png").getFile()

    but no matter how i try to save the response I keep getting errors.

    if i try to read the response in order to write to a file, i get this error:

        with open("test.png", "w") as f:
            f.write(response.read())
    
    UnicodeDecodeError: 'utf-8' codec can't decode byte 0x89 in position 0: invalid start byte
    

    if i try to save the response directly, i get this:

        with open("test.png", "w") as f:
            f.write(response)
    
    TypeError: write() argument must be str, not _io.TextIOWrapper
    

    Any help is appreciated.

    opened by CayoM 3
  • Unable to read images from a directory in dropbox

    Unable to read images from a directory in dropbox

    foo = client.dir("dropbox+XXXXX://XXXXX") for entry in foo.list(): print(entry.path) print(entry.url)

    Error message below: DataApiError: Directory iteration failed: b'{"error":{"message":"path not found"}}'

    dropbox already linked to Algorithmia

    opened by datatales2017 3
  • Missing default API server and requiring string quotes when doing

    Missing default API server and requiring string quotes when doing "algo auth"

    I came across a few unexpected behaviors, when installing the Python Client on deepPurple, for my own user. I'll list them altogether in this issue.

    After the client is installed through the wheel, as per the instructions:

    Trying to authorize, I would expect that the API adress is provided by default, as api.algorithmia.com and I would be able to pass this step without entering anything. Pressing enter gives the following error:

    asli@deeppurple:~$ algo auth
    Configuring authentication for profile: default
    enter API address [api.algorithmia.com]:
    Traceback (most recent call last):
      File "/home/asli/.local/bin/algo", line 10, in <module>
        sys.exit(main())
      File "/home/asli/.local/lib/python2.7/site-packages/Algorithmia/__main__.py", line 113, in main
        APIaddress = input("enter API address [api.algorithmia.com]:")
      File "<string>", line 0
        
        ^
    SyntaxError: unexpected EOF while parsing
    

    Now entering api.algorithmia.com as the API address, but got the following error. Apparently it’s asking me to use string quotes, but I don’t think this is the expectation. We’re more used to entering string inputs without the quotes.

    asli@deeppurple:~$ algo auth
    Configuring authentication for profile: default
    enter API address [api.algorithmia.com]:api.algorithmia.com
    Traceback (most recent call last):
      File "/home/asli/.local/bin/algo", line 10, in <module>
        sys.exit(main())
      File "/home/asli/.local/lib/python2.7/site-packages/Algorithmia/__main__.py", line 113, in main
        APIaddress = input("enter API address [api.algorithmia.com]:")
      File "<string>", line 1, in <module>
    NameError: name 'api' is not defined
    
    

    The same goes for the API key, again entering it without the quotes gives the same error.

    asli@deeppurple:~$ algo auth
    Configuring authentication for profile: default
    enter API address [api.algorithmia.com]:"api.algorithmia.com"
    enter API key:sim0/CA0mCa6Xz3FAkyoHb45G5I1
    Traceback (most recent call last):
      File "/home/asli/.local/bin/algo", line 10, in <module>
        sys.exit(main())
      File "/home/asli/.local/lib/python2.7/site-packages/Algorithmia/__main__.py", line 114, in main
        APIkey = input("enter API key:")
      File "<string>", line 1, in <module>
    NameError: name 'sim0' is not defined
    
    

    Now using the quotes for both fields and the client is good to go.

    asli@deeppurple:~$ algo auth
    Configuring authentication for profile: default
    enter API address [api.algorithmia.com]:"api.algorithmia.com"
    enter API key:"sim0/CA0mCa6Xz3FAkyoHb45G5I1"
    usage: algo [-h] [--profile PROFILE]
                {auth,clone,run,ls,rm,mkdir,rmdir,cp,cat,help} ..
    
    opened by aslisabanci 2
  • Algorithmia.errors.DataApiError: unable to get file ... from Hosted Data

    Algorithmia.errors.DataApiError: unable to get file ... from Hosted Data

    Hi, I have a problem of accessing file in my Hosted Data. Here is the code snippet

    import Algorithmia
    
    client = Algorithmia.client('sim0b1n3***pxFqn1')
    cred_json = client.file("data://.my/models/cred.json").getJson()
    

    This works fine when running on my local machine, I use conda env, python3.5.4 as #14. However, when I run this in Algorithmia IDE, I can't access the same file Algorithmia.errors.DataApiError: unable to get file .my/models/cred.json - None

    My Algorithm setup is python3, closed source, allow internet access. I use the default api key. The read access of .my/models/ is public

    opened by dattran2346 2
  • Python 3.4 + upgrade?

    Python 3.4 + upgrade?

    Hi there :) Would it be possible to have an upgrade of the python flavors? Currently the Algorithmia client only works with python2 , or 3.3 max. But python is already up to 3.7, and even support for 3.4 will be discontinued soon. When do you think it might be possible ?

    Thank you in advance.

    opened by hmd-ana 2
  • Inconsistency: Python client uses env var ALGORITHMIA_API_KEY not ALGORITHMIA_API

    Inconsistency: Python client uses env var ALGORITHMIA_API_KEY not ALGORITHMIA_API

    The Python client looks for an environment variable ALGORITHMIA_API_KEY to override the default API address: https://github.com/algorithmiaio/algorithmia-python/blob/master/Algorithmia/client.py#L19

    All other client implementations which check env look for ALGORITHMIA_API

    Suggest adding ALGORITHMIA_API but retaining ALGORITHMIA_API_KEY as well for backward-compatibility

    opened by peckjon 2
  • supporting custom CA cert files

    supporting custom CA cert files

    Added a path in the api client to enable custom ca cert files being used by the generated API client; this PR permits that functionality with the python client.

    opened by zeryx 0
  • Improve environment printing format

    Improve environment printing format

    DEV-331 - making env-listing output more user friendly

    @zeryx is there a case when the environments response comes back as empty list? I've added some code for sorting the environments but I didn't add any error handling for this case.

    opened by lemonez 3
  • Updating README to pip3

    Updating README to pip3

    The README was using pip instead of pip3, pip its having multiple issues right now due to the fact that Python 2 its being completely deprecated, so now pip3 its the one that works fine.

    opened by nmaciasc 0
  • Requests hang Indefinitely when waiting for network/missing timeout value

    Requests hang Indefinitely when waiting for network/missing timeout value

    Hi,

    I've been troubleshooting a bug where this client will hang forever waiting for a response in some cases.

    I noticed that calls using the requests library are not using the timeout= option which is recommended: https://2.python-requests.org/en/master/user/quickstart/#timeouts

    You can tell Requests to stop waiting for a response after a given number of seconds with the timeout parameter. Nearly all production code should use this parameter in nearly all requests. Failure to do so can cause your program to hang indefinitely

    I've put together a PR #40 for changing this to 5 seconds (if this seems low, the notes from requests make this a little clearer: it's the time between bytes rather than the entire request) to establish a sensible default for the library to be making calls under.

    More info from the docs:

    timeout is not a time limit on the entire response download; rather, an exception is raised if the server has not issued a response for timeout seconds (more precisely, if no bytes have been received on the underlying socket for timeout seconds). If no timeout is specified explicitly, requests do not time out.

    opened by rwnx 0
  • Add request timeout value for all request methods

    Add request timeout value for all request methods

    This is a sensible thing, but specifically recommended by requests

    https://2.python-requests.org/en/master/user/quickstart/#timeouts

    Nearly all production code should use this parameter in nearly all requests. Failure to do so can cause your program to hang indefinitely

    this was introduced in requests 2.4.0 so i've added a version constraint to setup.py to support this.

    See https://requests.readthedocs.io/en/latest/community/updates/#id55

    I'm using a constant in Algorithmia/client to do this. I want to make it clear that it's static config at the moment so as to keep a single source of truth.

    opened by rwnx 1
Releases(v2.0.5)
  • v2.0.5(Aug 3, 2022)

    depending on the workflow, algo.publish may fail with 400 errors; but succeeds on retry. Added a retry mechanic to get around this server side issue.

    What's Changed

    • added a retry mechanic to PostJsonHelper to avoid 400 error issues by @zeryx in https://github.com/algorithmiaio/algorithmia-python/pull/130

    Full Changelog: https://github.com/algorithmiaio/algorithmia-python/compare/v2.0.4...v2.0.5

    Source code(tar.gz)
    Source code(zip)
  • v2.0.4(Jul 22, 2022)

    What's Changed

    • added get and set secrets endpoints for python client by @zeryx in https://github.com/algorithmiaio/algorithmia-python/pull/129

    Full Changelog: https://github.com/algorithmiaio/algorithmia-python/compare/v2.0.3...v2.0.4

    Source code(tar.gz)
    Source code(zip)
  • v2.0.3(Jun 22, 2022)

    What's Changed

    • get available SCMs support by @zeryx in https://github.com/algorithmiaio/algorithmia-python/pull/128

    Full Changelog: https://github.com/algorithmiaio/algorithmia-python/compare/v2.0.2...v2.0.3

    Source code(tar.gz)
    Source code(zip)
  • v2.0.2(May 17, 2022)

    added kwargs to actually be used by the internal API client

    What's Changed

    • kwarg added by @zeryx in https://github.com/algorithmiaio/algorithmia-python/pull/127

    Full Changelog: https://github.com/algorithmiaio/algorithmia-python/compare/v2.0.1...v2.0.2

    Source code(tar.gz)
    Source code(zip)
  • v2.0.1(May 13, 2022)

    Fixes issue where some 4xx response codes were not be reported properly, even though they were generated by the Algorithmia system.

    What's Changed

    • fixes non 2xx responses (handles failures better) by @zeryx in https://github.com/algorithmiaio/algorithmia-python/pull/126

    Full Changelog: https://github.com/algorithmiaio/algorithmia-python/compare/v2.0.0...v2.0.1

    Source code(tar.gz)
    Source code(zip)
  • v2.0.0(May 13, 2022)

    This release adds a number of functional changes, including an .exists() and .versions() endpoint to Algorithms. It also removes the algorithmia-api-client utilization in favor of hardcoded api routes. The api-client was too brittle and caused many issues for compatibility when API changes were made.

    This also has a breaking change to enable uniform API servicing; all endpoints (except for .pipe() and datafile/folder interactions) now return a dictionary object, and have error handling built-in at the helper level. This enables uniform API interfacing but may break existing workflows that expect the class attributes to be available (as per previously gneereated by the API Client)

    What's Changed

    • add versions, environments and improve test coverage by @zeryx in https://github.com/algorithmiaio/algorithmia-python/pull/125

    Full Changelog: https://github.com/algorithmiaio/algorithmia-python/compare/v1.17.0...v2.0.0

    Source code(tar.gz)
    Source code(zip)
  • v1.17.0(May 8, 2022)

    Improved mechanism for disabling SSL verification by requests in client (via the cacert=False flag), and added FastAPI tests.

    During the process of this release test.algorithmia.com was taken offline, which killed some tests. These will be fixed as soon as possible, but due to customer constraints this release is shipped early.

    What's Changed

    • self signed certificate - ssl disabling support w/ testing by @zeryx in https://github.com/algorithmiaio/algorithmia-python/pull/124

    Full Changelog: https://github.com/algorithmiaio/algorithmia-python/compare/v1.16.2...v1.17.0

    Source code(tar.gz)
    Source code(zip)
  • v1.16.2(Mar 2, 2022)

    What's Changed

    • improvement for systemic errors by @zeryx in https://github.com/algorithmiaio/algorithmia-python/pull/122
    • update requirements to satisfy actual ADK dependency versions by @zeryx in https://github.com/algorithmiaio/algorithmia-python/pull/123
    • Bug fixes in the ADK system by @zeryx in https://github.com/algorithmiaio/algorithmia-adk-python/pull/15

    Full Changelog: https://github.com/algorithmiaio/algorithmia-python/compare/v1.16.1...v1.16.2

    Source code(tar.gz)
    Source code(zip)
  • v1.16.1(Dec 22, 2021)

    What's Changed

    • [ALERT] Fix for breaking changes introduced by Bearer Token work by @zeryx in https://github.com/algorithmiaio/algorithmia-python/pull/121

    Full Changelog: https://github.com/algorithmiaio/algorithmia-python/compare/v1.16.0...v1.16.1

    Source code(tar.gz)
    Source code(zip)
  • v1.16.0(Dec 22, 2021)

    Improvements to the Model Manifest system to enable the Client library itself to enact the Algorithm Freeze operation.

    What's Changed

    • Dev 325 by @John-Bragg in https://github.com/algorithmiaio/algorithmia-python/pull/116
    • update readme print statements to Python 3 by @lemonez in https://github.com/algorithmiaio/algorithmia-python/pull/119
    • added the freeze automation to the client object by @zeryx in https://github.com/algorithmiaio/algorithmia-python/pull/120

    New Contributors

    • @lemonez made their first contribution in https://github.com/algorithmiaio/algorithmia-python/pull/119

    Full Changelog: https://github.com/algorithmiaio/algorithmia-python/compare/v1.15.0...v1.16.0

    Source code(tar.gz)
    Source code(zip)
  • v1.15.0(Nov 24, 2021)

    What's Changed

    • Improvements to Model Manifest ADK by @zeryx in https://github.com/algorithmiaio/algorithmia-python/pull/118

    Full Changelog: https://github.com/algorithmiaio/algorithmia-python/compare/v1.14.1...v1.15.0

    Source code(tar.gz)
    Source code(zip)
  • v1.14.1(Nov 9, 2021)

  • v1.14.0(Oct 21, 2021)

    What's Changed

    • AML-6 Model Manifest Compilation Integration by @zeryx in https://github.com/algorithmiaio/algorithmia-python/pull/113
    • removal of api-client utilization for algo.publish by @zeryx in https://github.com/algorithmiaio/algorithmia-python/pull/114

    Full Changelog: https://github.com/algorithmiaio/algorithmia-python/compare/1.13.0...v1.14.0

    Source code(tar.gz)
    Source code(zip)
Owner
Algorithmia
Deploy Autoscaling ML Models using Serverless Microservices
Algorithmia
Genetic algorithms are heuristic search algorithms inspired by the process that supports the evolution of life.

Genetic algorithms are heuristic search algorithms inspired by the process that supports the evolution of life. The algorithm is designed to replicate the natural selection process to carry generation, i.e. survival of the fittest of beings.

Mahdi Hassanzadeh 4 Dec 24, 2022
Minimal examples of data structures and algorithms in Python

Pythonic Data Structures and Algorithms Minimal and clean example implementations of data structures and algorithms in Python 3. Contributing Thanks f

Keon 22k Jan 9, 2023
Repository for data structure and algorithms in Python for coding interviews

Python Data Structures and Algorithms This repository contains questions requiring implementation of data structures and algorithms concepts. It is us

Prabhu Pant 1.9k Jan 1, 2023
:computer: Data Structures and Algorithms in Python

Algorithms in Python Implementations of a few algorithms and datastructures for fun and profit! Completed Karatsuba Multiplication Basic Sorting Rabin

Prakhar Srivastav 2.9k Jan 1, 2023
Algorithms and data structures for educational, demonstrational and experimental purposes.

Algorithms and Data Structures (ands) Introduction This project was created for personal use mostly while studying for an exam (starting in the month

null 50 Dec 6, 2022
Planning Algorithms in AI and Robotics. MSc course at Skoltech Data Science program

Planning Algorithms in AI and Robotics course T2 2021-22 The Planning Algorithms in AI and Robotics course at Skoltech, MS in Data Science, during T2,

Mobile Robotics Lab. at Skoltech 6 Sep 21, 2022
Cormen-Lib - An academic tool for data structures and algorithms courses

The Cormen-lib module is an insular data structures and algorithms library based on the Thomas H. Cormen's Introduction to Algorithms Third Edition. This library was made specifically for administering and grading assignments related to data structure and algorithms in computer science.

Cormen Lib 12 Aug 18, 2022
Algorithms-in-Python - Programs related to DSA in Python for placement practice

Algorithms-in-Python Programs related to DSA in Python for placement practice CO

MAINAK CHAUDHURI 2 Feb 2, 2022
All Algorithms implemented in Python

The Algorithms - Python All algorithms implemented in Python (for education) These implementations are for learning purposes only. Therefore they may

The Algorithms 150.6k Jan 3, 2023
Algorithms implemented in Python

Python Algorithms Library Laurent Luce Description The purpose of this library is to help you with common algorithms like: A* path finding. String Mat

Laurent Luce 264 Dec 6, 2022
A command line tool for memorizing algorithms in Python by typing them.

Algo Drills A command line tool for memorizing algorithms in Python by typing them. In alpha and things will change. How it works Type out an algorith

Travis Jungroth 43 Dec 2, 2022
Python sample codes for robotics algorithms.

PythonRobotics Python codes for robotics algorithm. Table of Contents What is this? Requirements Documentation How to use Localization Extended Kalman

Atsushi Sakai 17.2k Jan 1, 2023
🧬 Performant Evolutionary Algorithms For Python with Ray support

?? Performant Evolutionary Algorithms For Python with Ray support

Nathan 49 Oct 20, 2022
All algorithms implemented in Python for education

The Algorithms - Python All algorithms implemented in Python - for education Implementations are for learning purposes only. As they may be less effic

null 1 Oct 20, 2021
Implementation of Apriori algorithms via Python

Installing run bellow command for installing all packages pip install -r requirements.txt Data Put csv data under this directory "infrastructure/data

Mahdi Rezaei 0 Jul 25, 2022
A simple python application to visualize sorting algorithms.

Visualize sorting algorithms A simple python application to visualize sorting algorithms. Sort Algorithms Name Function Name O( ) Bubble Sort bubble_s

Duc Tran 3 Apr 1, 2022
Programming Foundations Algorithms With Python

Programming-Foundations-Algorithms Algorithms purpose to solve a specific proplem with a sequential sets of steps for instance : if you need to add di

omar nafea 1 Nov 1, 2021
Repository for Comparison based sorting algorithms in python

Repository for Comparison based sorting algorithms in python. This was implemented for project one submission for ITCS 6114 Data Structures and Algorithms under the guidance of Dr. Dewan at the University of North Carolina at Charlotte, Fall 2021.

Devashri Khagesh Gadgil 1 Dec 20, 2021
Solving a card game with three search algorithms: BFS, IDS, and A*

Search Algorithms Overview In this project, we want to solve a card game with three search algorithms. In this card game, we have to sort our cards by

Korosh 5 Aug 4, 2022