Releases: Sage-Bionetworks/synapsePythonClient
v1.9.1
In version 1.9.1, we fix various bugs and added two new features:
- Python 3.7 is supported.
- Deprecation warnings are visible by default.
Features
Bug Fixes
- [SYNPY-454] -Some integration tests do not clean up after themselves
- [SYNPY-456] -Problems with updated query system
- [SYNPY-515] -sphinx documentation not showing for some new classes
- [SYNPY-526] -deprecate downloadTableFile()
- [SYNPY-578] -switch away from POST /entity/#/table/deleterows
- [SYNPY-594] -Getting error from dev branch in integration test against staging
- [SYNPY-796] -fix or remove PyPI downloads badge in readme
- [SYNPY-799] -Unstable test: Test PartialRow updates to entity views from rowset queries
- [SYNPY-846] -error if password stored in config file contains a '%'
Tasks
- [SYNPY-491] -Figure out custom release note fitlers
- [SYNPY-840] -Install not working on latest python
- [SYNPY-847] -uploadFileHandle should not be deprecated nor removed
- [SYNPY-852] -Check and update docs.synapse.org to reflect the change in the Python client
- [SYNPY-860] -vignette for how to upload a new version of a file directly to a Synapse entity
- [SYNPY-863] -Update public documentation to move away from the query services
- [SYNPY-866] -Update Synapse logo in Python docs :)
- [SYNPY-873] -consolidate integration testing to platform dev account
Improvements
- [SYNPY-473] -Change syn.list to no longer use deprecated function chunkedQuery
- [SYNPY-573] -synapse list command line shouldn't list the parent container
- [SYNPY-581] -<entity>.annotations return object is inconsistent with
getAnnotations()
- [SYNPY-612] -Rename view_type to viewType in EntityViewSchema for consistency
- [SYNPY-777] -Python client _list still uses chunckedQuery and result seem out of date
- [SYNPY-804] -Update styling in the python docs to more closely match the Docs site styling
- [SYNPY-815] -Update the build to use test user instead of migrationAdmin
- [SYNPY-848] -remove outdated link to confluence for command line query
- [SYNPY-856] -build_table example in the docs does not look right
- [SYNPY-858] -Write file view documentation in python client that is similar to Synapser
- [SYNPY-870] -Submitting to an evaluation queue can't accept team as int
v1.9.0
In version 1.9.0, we deprecated and removed query()
and chunkedQuery()
. These functions used the old query services which does not perform well. To query for entities filter by annotations, please use EntityViewSchema
.
We also deprecated the following functions and will remove them in Synapse Python client version 2.0. In the Activity
object:
usedEntity()
usedURL()
In the Synapse
object:
getEntity()
loadEntity()
createEntity()
updateEntity()
deleteEntity()
downloadEntity()
uploadFile()
uploadFileHandle()
uploadSynapseManagedFileHandle()
downloadTableFile()
Please see our documentation for more details on how to migrate your code away from these functions.
Features
- SYNPY-806 - Support Folders and Tables in View
Bug Fixes
- SYNPY-195 - Dangerous exception handling
- SYNPY-261 - error downloading data from synapse (python client)
- SYNPY-694 - Uninformative error in copyWiki function
- SYNPY-805 - Uninformative error when getting View that does not exist
- SYNPY-819 - command-line clients need to be updated to replace the EntityView
viewType
withviewTypeMask
Tasks
- SYNPY-759 - Look for all functions that are documented as “Deprecated” and apply the deprecation syntax
- SYNPY-812 - Add Github issue template
- SYNPY-824 - Remove the deprecated function query() and chunkedQuery()
Improvements
v1.8.2
Release notes - Synapse Python Client - Version 1.8.2
Install Instructions: pip install --upgrade synapseclient
or see http://docs.synapse.org/python/#installation
Documentation: http://sage-bionetworks.github.io/synapsePythonClient
Release Date: 17-August-2018
In this release, we have been performed some house-keeping on the code base. The two major changes are:
- making
syn.move()
available to move an entity to a new parent in Synapse. For example:
import synapseclient
from synapseclient import Folder
syn = synapseclient.login()
file = syn.get("syn123")
folder = Folder("new folder", parent="syn456")
folder = syn.store(folder)
# moving file to the newly created folder
syn.move(file, folder)
- exposing the ability to use the Synapse Python client with single threaded. This feature is useful when running Python script in an environment that does not support multi-threading. However, this will negatively impact upload speed. To use single threaded:
import synapseclient
synapseclient.config.single_threaded = True
Bug
- [SYNPY-535] - Synapse Table update: Connection Reset
- [SYNPY-603] - Python client and synapser cannot handle table column type LINK
- [SYNPY-688] - Recursive get (sync) broken for empty folders.
- [SYNPY-744] - KeyError when trying to download using Synapse Client 1.8.1
- [SYNPY-750] - Error in downloadTableColumns for file view
- [SYNPY-758] - docs in Sphinx don't show for synapseclient.table.RowSet
- [SYNPY-760] - Keyring related error on Linux
- [SYNPY-766] - as_table_columns() returns a list of columns out of order for python 3.5 and 2.7
- [SYNPY-776] - Cannot log in to Synapse - error(54, 'Connection reset by peer')
- [SYNPY-795] - Not recognizable column in query result
New Feature
- [SYNPY-582] - move file or folder in the client
- [SYNPY-788] - Add option to use syn.store() without exercising multithreads
Task
- [SYNPY-729] - Deprecate query() and chunkedQuery()
- [SYNPY-797] - Check Python client code base on using PLFM object model
- [SYNPY-798] - Using github.io to host documentation
Improvement
v1.8.1
Release notes - Synapse Python Client - Version 1.8.1
Install Instructions: pip install --upgrade synapseclient
or see http://docs.synapse.org/python/#installation
Documentation: http://docs.synapse.org/python/
Release Date: 7-May-2018
This release is a hotfix for a bug.
Please refer to 1.8.0 release notes for information about additional changes.
Bug
- [SYNPY-706] - syn.username can cause attribute not found if user not logged in
v1.8.0
Release notes - Synapse Python Client - Version 1.8.0
Install Instructions: pip install --upgrade synapseclient
or see http://docs.synapse.org/python/#installation
Documentation: http://docs.synapse.org/python/
Release Date: 7-May-2018
This release has 2 major changes:
-
The client will no longer store your saved credentials in your synapse cache (
~/synapseCache/.session
). The python client now relies on keyring to handle credential storage of your Synapse credentials. -
The client also now uses connection pooling, which means that all method calls that connect to Synapse should now be faster.
The remaining changes are bugfixes and cleanup of test code.
Below are the full list of issues addressed by this release:
Bug
- [SYNPY-654] - syn.getColumns does not terminate
- [SYNPY-658] - Security vunerability on clusters
- [SYNPY-689] - Wiki's attachments cannot be None
- [SYNPY-692] - synapseutils.sync.generateManifest() sets contentType incorrectly
- [SYNPY-693] - synapseutils.sync.generateManifest() UnicodeEncodingError in python 2
Task
- [SYNPY-617] - Remove use of deprecated service to delete table rows
- [SYNPY-673] - Fix Integration Tests being run on Appveyor
- [SYNPY-683] - Clean up print()s used in unit/integration tests
Improvement
v1.7.5
v1.7.4
Release v1.7.4
Release Date: 29-January-2018
This release mostly includes bugfixes and improvements for various Table classes:
- Fixed bug where you couldn't store a table converted to a
pandas.Dataframe
if it had a INTEGER column with some missing values. EntityViewSchema
can now automatically add all annotations within your definedscopes
as columns. Just set the view'saddAnnotationColumns=True
before callingsyn.store()
. This attribute defaults toTrue
for all newly createdEntityViewSchemas
. SettingaddAnnotationColumns=True
on existing tables will only add annotation columns that are not already a part of your schema.- You can now use
synapseutils.notifyMe
as a decorator to notify you by email when your function has completed. You will also be notified of any Errors if they are thrown while your function runs.
We also added some new features:
syn.findEntityId()
function that allows you to find an Entity by its name and parentId, set parentId toNone
to search for Projects by name.- The bulk upload functionality of
synapseutils.syncToSynapse
is avaliable from the command line using:synapse sync
.
Below are the full list of issues addressed by this release:
New Feature
Improvement
- [SYNPY-267] - Update Synapse tables for integer types
- [SYNPY-304] - Table objects should implement len()
- [SYNPY-416] - warning message for recursive get when a non-Project of Folder entity is passed
- [SYNPY-482] - Create a sample synapseConfig if none is present
- [SYNPY-489] - Add a boolean paramter in EntityViewSchema that will indicate whether the client should create columns based on annotations in the specified scopes
- [SYNPY-494] - Link should be able to take an entity object as the parameter and derive its id
- [SYNPY-511] - improve exception handling
- [SYNPY-512] - Remove the use of PaginatedResult's totalNumberOfResult
- [SYNPY-539] - When creating table Schemas, enforce a limit on the number of columns that can be created.
Bug
- [SYNPY-235] - can't print Row objects with dates in them
- [SYNPY-272] - bug syn.storing rowsets containing Python datetime objects
- [SYNPY-297] - as_table_columns shouldn't give fractional max size
- [SYNPY-404] - when we get a SynapseMd5MismatchError we should delete the downloaded file
- [SYNPY-425] - onweb doesn't work for tables
- [SYNPY-438] - Need to change 'submit' not to use evaluation/id/accessRequirementUnfulfilled
- [SYNPY-496] - monitor.NotifyMe can not be used as an annotation decorator
- [SYNPY-521] - inconsistent error message when username/password is wrong on login
- [SYNPY-536] - presigned upload URL expired warnings using Python client sync function
- [SYNPY-555] - EntityViewSchema is missing from sphinx documentation
- [SYNPY-558] - synapseutils.sync.syncFromSynapse throws error when syncing a Table object
- [SYNPY-595] - Get recursive folders filled with Links fails
- [SYNPY-605] - Update documentation for getUserProfile to include information about refreshing and memoization
Task
Release v1.7.3
Release 1.7.3
Release Date: 08-December-2017
Install Instructions: pip install --upgrade synapseclient
or see http://docs.synapse.org/python/#installation
Documentation: http://docs.synapse.org/python/
Release 1.7.3 introduces fixes and quality of life changes to Tables and synapseutils:
- Changes to Tables:
- You no longer have to include the
etag
column in your SQL query when using atableQuery()
to update File/Project Views. justSELECT
the relevant columns and etags will be resolved automatically. - The new
PartialRowSet
class allows you to only have to upload changes to individual cells of a table instead of every row that had a value changed. It is recommended to use thePartialRowSet.from_mapping()
classmethod instead of thePartialRowSet
constructor.
- You no longer have to include the
- Changes to synapseutils:
- Improved documentation
- You can now use
~
to refer to your home directory in your manifest.tsv
We also added improved debug logging and use Python's bulitin logging
module instead of printing directly to sys.stderr
Below are the full list of issues addressed by this release:
Bug
- [SYNPY-419] - support object store from client
- [SYNPY-499] - metadata manifest file name spelled wrong
- [SYNPY-504] - downloadTableFile changed return type with no change in documentation or mention in release notes
- [SYNPY-508] - syncToSynapse does not work if "the file path in "used" or "executed" of the manifest.tsv uses home directory shortcut "~"
- [SYNPY-516] - synapse sync file does not work if file is a URL
- [SYNPY-525] - Download CSV file of Synapse Table - 416 error
- [SYNPY-572] - Users should only be prompted for updates if the first or second part of the version number is changed.
New Feature
- [SYNPY-450] - Create convenience functions for synapse project settings
- [SYNPY-517] - sync command line
- [SYNPY-519] - Clean up doc string for Sync
- [SYNPY-545] - no module botocore
- [SYNPY-577] - Expose new view etags in command line clients
Task
- [SYNPY-569] - 'includeEntityEtag' should be True for Async table csv query downloads
Improvement
v1.7.1
Release Notes - Synapse Python Client - Version py-1.7
Release Date: 17-June-2017
Install Instructions: pip install --upgrade synapseclient
or see http://docs.synapse.org/python/#installation
Documentation: http://docs.synapse.org/python/
Release 1.7 is a large bugfix release with several new features. The main ones include:
- We have expanded the syanpaseutils packages to add the abilitity to:
- Bulk upload files to synapse (synapseutils.syncToSynapse).
- Notify you via email on the progress of a function (useful for jobs like large file uploads that may take a long time to complete).
- The syncFromSynapse function now creates a "manifest" which contains the metadata of downloaded files. (These can also be used to update metadata with the bulk upload function.
- File View tables can now be created from the python client using EntityViewSchema. See fileviews documentation.
- The python client is now able to upload to user owned S3 Buckets. Click here for instructions on linking your S3 bucket to synapse
We've also made vairous improvements to existing features:
- The LARGETEXT type is now supported in Tables allowing for strings up to 2Mb.
- The
--description
argument when creating/updating entities from the command line client will now create aWiki
for that entity. You can also use--descriptionFile
to write the contents of a markdownfile as the entity'sWiki
- Two member variables of the File object,
file_entity.cacheDir
andfile_entity.files
is being DEPRECATED in favor offile_entity.path
for finding the location of a downloadedFile
pandas
dataframe
s containingdatetime
values can now be properly converted into csv and uploaded to Synapse.
We also added a optionalconvert_to_datetime
parameter toCsvFileTable.asDataFrame()
that will automatically convert Synapse DATE columns intodatetime
objects instead of leaving them aslong
unix timestamps
Below are the full list of bugs and issues addressed by this release:
New Features
- [SYNPY-53] - support syn.get of external FTP links in py client
- [SYNPY-179] - Upload to user owned S3 bucket
- [SYNPY-412] - allow query-based download based on view tables from command line client
- [SYNPY-487] - Add remote monitoring of long running processes
- [SYNPY-415] - Add Docker and TableViews into Entity.py
- [SYNPY-89] - Python client: Bulk upload client/command
- [SYNPY-413] - Update table views via python client
- [SYNPY-301] - change actual file name from python client
- [SYNPY-442] - set config file path on command line
Improvements
- [SYNPY-407] - support LARGETEXT in tables
- [SYNPY-360] - Duplicate file handles are removed from BulkFileDownloadRequest
- [SYNPY-187] - Move --description in command line client to create wikis
- [SYNPY-224] - When uploading to a managed external file handle (e.g. SFTP), fill in storageLocationId
- [SYNPY-315] - Default behavior for files in cache dir should be replace
- [SYNPY-381] - Remove references to "files" and "cacheDir".
- [SYNPY-396] - Create filehandle copies in synapseutils.copy instead of downloading
- [SYNPY-403] - Use single endpoint for all downloads
- [SYNPY-435] - Convenience function for new service to get entity's children
- [SYNPY-471] - docs aren't generated for synapseutils
- [SYNPY-472] - References to wrong doc site
- [SYNPY-347] - Missing dtypes in table.DTYPE_2_TABLETYPE
- [SYNPY-463] - When copying filehandles we should add the files to the cache if we already donwloaded them
- [SYNPY-475] - Store Tables timeout error
Bug Fixes
- [SYNPY-190] - syn.login('asdfasdfasdf') should fail
- [SYNPY-344] - weird cache directories
- [SYNPY-346] - ValueError: cannot insert ROW_ID, already exists in CsvTableFile constructor
- [SYNPY-351] - Versioning broken for sftp files
- [SYNPY-366] - file URLs leads to wrong path
- [SYNPY-393] - New cacheDir causes cache to be ignored(?)
- [SYNPY-409] - Python client cannot depend on parsing Amazon pre-signed URLs
- [SYNPY-418] - Integration test failure against 167
- [SYNPY-421] - syn.getWikiHeaders has a return limit of 50 (Need to return all headers)
- [SYNPY-423] - upload rate is off or incorrect
- [SYNPY-424] - File entities don't handle local_state correctly for setting datafilehandleid
- [SYNPY-426] - multiple tests failing because of filenameOveride
- [SYNPY-427] - test dependent on config file
- [SYNPY-428] - sync function error
- [SYNPY-431] - download ending early and not restarting from previous spot
- [SYNPY-443] - tests/integration/integration_test_Entity.py:test_get_with_downloadLocation_and_ifcollision AssertionError
- [SYNPY-461] - On Windows, command line client login credential prompt fails (python 2.7)
- [SYNPY-465] - Update tests that set permissions to also include 'DOWNLOAD' permission and tests that test functions using queries
- [SYNPY-468] - Command line client incompatible with cache changes
- [SYNPY-470] - default should be read, download for setPermissions
- [SYNPY-483] - integration test fails for most users
- [SYNPY-484] - URL expires after retries
- [SYNPY-486] - Error in integration tests
- [SYNPY-488] - sync tests for command line client puts file in working directory
- [SYNPY-142] - PY: Error in login with rememberMe=True
- [SYNPY-464] - synapse get syn4988808 KeyError: u'preSignedURL'