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:

    [email protected]:~$ 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.

    [email protected]:~$ 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.

    [email protected]:~$ 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.

    [email protected]:~$ 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
A Python project for optimizing the 8 Queens Puzzle using the Genetic Algorithm implemented in PyGAD.

8QueensGenetic A Python project for optimizing the 8 Queens Puzzle using the Genetic Algorithm implemented in PyGAD. The project uses the Kivy cross-p

Ahmed Gad 16 Nov 13, 2022
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 Unive

Devashri Khagesh Gadgil 1 Dec 20, 2021
PathPlanning - Common used path planning algorithms with animations.

Overview This repository implements some common path planning algorithms used in robotics, including Search-based algorithms and Sampling-based algori

Huiming Zhou 5.1k Jan 08, 2023
A Python implementation of Jerome Friedman's Multivariate Adaptive Regression Splines

py-earth A Python implementation of Jerome Friedman's Multivariate Adaptive Regression Splines algorithm, in the style of scikit-learn. The py-earth p

431 Dec 15, 2022
Algorithms written in different programming languages

Data Structures and Algorithms Clean example implementations of data structures and algorithms written in different languages. List of implementations

Zoran Pandovski 1.3k Jan 03, 2023
Python package to monitor the power consumption of any algorithm

CarbonAI This project aims at creating a python package that allows you to monitor the power consumption of any python function. Documentation The com

Capgemini Invent France 36 Nov 11, 2022
Genetic Algorithm for Robby Robot based on Complexity a Guided Tour by Melanie Mitchell

Robby Robot Genetic Algorithm A Genetic Algorithm based Robby the Robot in Chapter 9 of Melanie Mitchell's book Complexity: A Guided Tour Description

Matthew 2 Dec 01, 2022
Visualisation for sorting algorithms. Version 2.0

Visualisation for sorting algorithms v2. Upped a notch from version 1. This program provides animates simple, common and popular sorting algorithms, t

Ben Woo 7 Nov 08, 2022
Python Package for Reflection Ultrasound Computed Tomography (RUCT) Delay And Sum (DAS) Algorithm

pyruct Python Package for Reflection Ultrasound Computed Tomography (RUCT) Delay And Sum (DAS) Algorithm The imaging setup is explained in these paper

Berkan Lafci 21 Dec 12, 2022
So far implements A* will add more later

Pathfinding_Visualization Finds the shortest path between two nodes. The light blue path is the shortest path. The black nodes are barriers. Created i

Lukas DeLoach 1 Jan 18, 2022
8 Puzzle with A* , Greedy & BFS Search in Python

8_Puzzle 8 Puzzle with A* , Greedy & BFS Search in Python Python Install Python from here. Pip Install pip from here. How to run? 🚀 Install 8_Puzzle

I3L4CK H4CK3l2 1 Jan 30, 2022
Sign data using symmetric-key algorithm encryption.

Sign data using symmetric-key algorithm encryption. Validate signed data and identify possible validation errors. Uses sha-(1, 224, 256, 385 and 512)/hmac for signature encryption. Custom hash algori

Artur Barseghyan 39 Jun 10, 2022
A lightweight, object-oriented finite state machine implementation in Python with many extensions

transitions A lightweight, object-oriented state machine implementation in Python with many extensions. Compatible with Python 2.7+ and 3.0+. Installa

4.7k Jan 01, 2023
Genetic algorithm which evolves aoe2 DE ai scripts

AlphaScripter Use the power of genetic algorithms to evolve AI scripts for Age of Empires II : Definitive Edition. For now this package runs in AOC Us

6 Nov 04, 2022
🌟 Python algorithm team note for programming competition or coding test

🌟 Python algorithm team note for programming competition or coding test

Seung Hoon Lee 3 Feb 25, 2022
Esse repositório tem como finalidade expor os trabalhos feitos para disciplina de Algoritmos computacionais e estruturais do CEFET-RJ no ano letivo de 2021.

Exercícios de Python 🐍 Esse repositório tem como finalidade expor os trabalhos feitos para disciplina de Algoritmos computacionais e estruturais do C

Rafaela Bezerra de Figueiredo 1 Nov 20, 2021
Algorithm and Structured Programming course project for the first semester of the Internet Systems course at IFPB

Algorithm and Structured Programming course project for the first semester of the Internet Systems course at IFPB

Gabriel Macaúbas 3 May 21, 2022
A tictactoe where you never win, implemented using minimax algorithm

Unbeatable_TicTacToe A tictactoe where you never win, implemented using minimax algorithm Requirements Make sure you have the pygame module along with

Jessica Jolly 3 Jul 28, 2022
A lightweight, pure-Python mobile robot simulator designed for experiments in Artificial Intelligence (AI) and Machine Learning, especially for Jupyter Notebooks

aitk.robots A lightweight Python robot simulator for JupyterLab, Notebooks, and other Python environments. Goals A lightweight mobile robotics simulat

3 Oct 22, 2021
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 generatio

Mahdi Hassanzadeh 4 Dec 24, 2022