From d34c8a408578846a2149ba3d66576c7ebe903583 Mon Sep 17 00:00:00 2001 From: samapriya Date: Fri, 25 Sep 2020 03:00:22 -0500 Subject: [PATCH] updated v0.5.2 - Updated copy tool to allow for non mirrored copy - Updated task and task cancel tools to account for states Pending and Cancelling --- README.md | 8 +- dist/geeadd-0.5.1-py3-none-any.whl | Bin 29434 -> 0 bytes dist/geeadd-0.5.1.tar.gz | Bin 23779 -> 0 bytes dist/geeadd-0.5.2-py3-none-any.whl | Bin 0 -> 29621 bytes dist/geeadd-0.5.2.tar.gz | Bin 0 -> 24154 bytes docs/changelog/index.html | 221 ++++++++----- docs/projects/cancel_tasks/index.html | 2 +- docs/projects/quota/index.html | 444 +++++++++++++------------- docs/projects/task_status/index.html | 2 +- docs/search/search_index.json | 2 +- docs/sitemap.xml | 32 +- docs/sitemap.xml.gz | Bin 325 -> 325 bytes geeadd/__init__.py | 2 +- geeadd/batch_copy.py | 4 +- geeadd/geeadd.py | 30 +- setup.py | 2 +- 16 files changed, 410 insertions(+), 339 deletions(-) delete mode 100644 dist/geeadd-0.5.1-py3-none-any.whl delete mode 100644 dist/geeadd-0.5.1.tar.gz create mode 100644 dist/geeadd-0.5.2-py3-none-any.whl create mode 100644 dist/geeadd-0.5.2.tar.gz diff --git a/README.md b/README.md index 1648a49..71445c0 100644 --- a/README.md +++ b/README.md @@ -175,7 +175,7 @@ Required named arguments.: ``` ### Task Query -This script counts all currently running, cancelled, ready and failed tasks and requires no arguments. +This script counts all currently running, cancelled, pending and failed tasks and requires no arguments. ``` > geeadd tasks -h @@ -196,7 +196,7 @@ optional arguments: -h, --help show this help message and exit Required named arguments.: - --tasks TASKS You can provide tasks as running or ready or all or even a + --tasks TASKS You can provide tasks as running or pending or all or even a single task id ``` @@ -282,6 +282,10 @@ Required named arguments.: ### Changelog +### v0.5.2 +- Updated copy tool to allow for non mirrored copy +- Updated task and task cancel tools to account for states Pending and Cancelling + ### v0.5.1 - Updated quota tool to handle GCP projects inside GEE - Updated Folder size reporting diff --git a/dist/geeadd-0.5.1-py3-none-any.whl b/dist/geeadd-0.5.1-py3-none-any.whl deleted file mode 100644 index df1f88e54ace364ba6b67de7e7318f6c5a419957..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29434 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 U?o$B)f&Beq_?`^wZ2xulKgL41UjP6A diff --git a/dist/geeadd-0.5.1.tar.gz b/dist/geeadd-0.5.1.tar.gz deleted file mode 100644 index 175efdb44861503b69b530196a67b87c9bd56c81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23779 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 bX!WcUm{IW0>v-bn75d$b_85i}7Utgoq2BXT literal 0 HcmV?d00001 diff --git a/docs/changelog/index.html b/docs/changelog/index.html index 670aeb2..e5946ab 100644 --- a/docs/changelog/index.html +++ b/docs/changelog/index.html @@ -506,6 +506,20 @@
    +
  • + + v0.5.2 + + +
  • + +
  • + + v0.5.1 + + +
  • +
  • v0.5.0 @@ -514,144 +528,157 @@
  • + + Updated task check tool to account for operations based handling. + + + + +
  • @@ -684,6 +711,20 @@
      +
    • + + v0.5.2 + + +
    • + +
    • + + v0.5.1 + + +
    • +
    • v0.5.0 @@ -692,144 +733,157 @@
    • + + Updated task check tool to account for operations based handling. + + + + +
    • @@ -851,12 +905,23 @@

      Changelog

      +

      v0.5.2

      +
        +
      • Updated copy tool to allow for non mirrored copy
      • +
      • Updated task and task cancel tools to account for states Pending and Cancelling
      • +
      +

      v0.5.1

      +
        +
      • Updated quota tool to handle GCP projects inside GEE
      • +
      • Updated Folder size reporting
      • +

      v0.5.0

      • Updated to use earthengine-api>= 0.1.222
      • Copy and move tool improvements to facilitate cloud alpha support.
      • -
      • Updated task check tool to account for operations based handling.
      • -
      • +
      • +

        Updated task check tool to account for operations based handling.

        +

      v0.4.9

      - - + +
      - +
      - - + +
      - - + + - - + +

      Quota tool

      This tool is the very basic of tools in the toolbox which gives you your current quota. This gives you the total used and remaining quota in all your legacy folders or user root folders. It requires no additional arguments just that your earthengine api is enabled.

      geeadd_quota

      Quota can now also handle Google Earth Engine with Google Cloud Projects enabled so you can pass project path as an argument

      geeadd_project_quota

      + + + + + + - - - - - - - +
      - - + + - + - + - + - - + + - + \ No newline at end of file diff --git a/docs/projects/task_status/index.html b/docs/projects/task_status/index.html index de82104..8589852 100644 --- a/docs/projects/task_status/index.html +++ b/docs/projects/task_status/index.html @@ -528,7 +528,7 @@

      Task status

      -

      This script counts all currently running, cancelled, ready and failed tasks and requires no arguments.

      +

      This script counts all currently running, cancelled, pending and failed tasks and requires no arguments.

      geeadd_tasks

      > geeadd tasks -h
       usage: geeadd tasks [-h]
      diff --git a/docs/search/search_index.json b/docs/search/search_index.json
      index 3cf497f..b3a816a 100644
      --- a/docs/search/search_index.json
      +++ b/docs/search/search_index.json
      @@ -1 +1 @@
      -{"config":{"lang":["en"],"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"","text":"Google Earth Engine Batch Asset Manager with Addons \u00b6 Google Earth Engine Batch Asset Manager with Addons is an extension of the one developed by Lukasz here and additional tools were added to include functionality for moving assets, conversion of objects to fusion table, cleaning folders, querying tasks. The ambition is apart from helping user with batch actions on assets along with interacting and extending capabilities of existing GEE CLI. It is developed case by case basis to include more features in the future as it becomes available or as need arises. If you use this tool to download data for your research, and find this tool useful, star and cite it as below Samapriya Roy. (2020, April 25). samapriya/gee_asset_manager_addon: GEE Asset Manager with Addons (Version 0.4.4). Zenodo. http://doi.org/10.5281/zenodo.3766532","title":"Introduction"},{"location":"#google-earth-engine-batch-asset-manager-with-addons","text":"Google Earth Engine Batch Asset Manager with Addons is an extension of the one developed by Lukasz here and additional tools were added to include functionality for moving assets, conversion of objects to fusion table, cleaning folders, querying tasks. The ambition is apart from helping user with batch actions on assets along with interacting and extending capabilities of existing GEE CLI. It is developed case by case basis to include more features in the future as it becomes available or as need arises. If you use this tool to download data for your research, and find this tool useful, star and cite it as below Samapriya Roy. (2020, April 25). samapriya/gee_asset_manager_addon: GEE Asset Manager with Addons (Version 0.4.4). Zenodo. http://doi.org/10.5281/zenodo.3766532","title":"Google Earth Engine Batch Asset Manager with Addons"},{"location":"changelog/","text":"Changelog \u00b6 v0.5.0 \u00b6 Updated to use earthengine-api>= 0.1.222 Copy and move tool improvements to facilitate cloud alpha support. Updated task check tool to account for operations based handling. v0.4.9 \u00b6 Fixed issue 11 . Updated to recent API calls based on Issue and general improvements Added auto version check from pypi. v0.4.7 \u00b6 Fixed issue with delete tool and shell call. Fixed issue with copy and move function for single collections v0.4.6 \u00b6 Now inclues asset_url and thumbnail_url for search. Formatting and general improvements. v0.4.5 \u00b6 Now inclues license in sdist Fixed issue with app2script tool and string and text parsing. Added readme and version tools. Added readme docs and deployed environment. v0.4.4 \u00b6 Removed git dependency and used urllib instead based on feedback Created conda forge release based on Issue 10 v0.4.2 \u00b6 Fixed relative import issue for earthengine. Fixed image collection move tool to parse ee object type correctly as image_collection. v0.4.1 \u00b6 Made enhancement Issue 9 . Search tool now return earth engine asset snippet and start and end dates as JSON object. Removed pretty table dependency. v0.4.0 \u00b6 Improved quota tools to get all quota and asset counts. Added a search tool to search GEE catalog using keywords. Improved parsing for app to script tool. Detailed asset root for all root folders and recursively Cancel tasks now allows you to choose, running, ready or specific task ids. Assets copy and move now allows you to copy entire folders, collectiona and assets recursively Updated assets access tool Delete metadata allows you to delete metadata for existing collection. Overall general improvements and optimization. v0.3.3 \u00b6 General improvements Added tool to get underlying code from earthengine app v0.3.1 \u00b6 Updated list and asset size functions Updated function to generate earthengine asset report General optimization and improvements to distribution Better error handling v0.3.0 \u00b6 Removed upload function Upload handles by geeup General optimization and improvements to distribution Better error handling v0.2.8 \u00b6 Uses poster for streaming upload more stable with memory issues and large files Poster dependency limits use to Py 2.7 will fix in the new version v0.2.6 \u00b6 Major improvement to move, batch copy, and task reporting Major improvements to access tool to allow users read/write permission to entire Folder/collection. v0.2.5 \u00b6 Handles bandnames during upload thanks to Lukasz for original upload code Removed manifest option, that can be handled by seperate tool (ppipe) v0.2.3 \u00b6 Removing the initialization loop error v0.2.2 \u00b6 Added improvement to earthengine authorization v0.2.1 \u00b6 Added capability to handle PlanetScope 4Band Surface Reflectance Metadata Type General Improvements v0.2.0 \u00b6 Tool improvements and enhancements v0.1.9 \u00b6 New tool EE_Report was added v0.1.8 \u00b6 Fixed issues with install Dependencies now part of setup.py Updated Parser and general improvements","title":"Changelog"},{"location":"changelog/#changelog","text":"","title":"Changelog"},{"location":"changelog/#v050","text":"Updated to use earthengine-api>= 0.1.222 Copy and move tool improvements to facilitate cloud alpha support. Updated task check tool to account for operations based handling.","title":"v0.5.0"},{"location":"changelog/#v049","text":"Fixed issue 11 . Updated to recent API calls based on Issue and general improvements Added auto version check from pypi.","title":"v0.4.9"},{"location":"changelog/#v047","text":"Fixed issue with delete tool and shell call. Fixed issue with copy and move function for single collections","title":"v0.4.7"},{"location":"changelog/#v046","text":"Now inclues asset_url and thumbnail_url for search. Formatting and general improvements.","title":"v0.4.6"},{"location":"changelog/#v045","text":"Now inclues license in sdist Fixed issue with app2script tool and string and text parsing. Added readme and version tools. Added readme docs and deployed environment.","title":"v0.4.5"},{"location":"changelog/#v044","text":"Removed git dependency and used urllib instead based on feedback Created conda forge release based on Issue 10","title":"v0.4.4"},{"location":"changelog/#v042","text":"Fixed relative import issue for earthengine. Fixed image collection move tool to parse ee object type correctly as image_collection.","title":"v0.4.2"},{"location":"changelog/#v041","text":"Made enhancement Issue 9 . Search tool now return earth engine asset snippet and start and end dates as JSON object. Removed pretty table dependency.","title":"v0.4.1"},{"location":"changelog/#v040","text":"Improved quota tools to get all quota and asset counts. Added a search tool to search GEE catalog using keywords. Improved parsing for app to script tool. Detailed asset root for all root folders and recursively Cancel tasks now allows you to choose, running, ready or specific task ids. Assets copy and move now allows you to copy entire folders, collectiona and assets recursively Updated assets access tool Delete metadata allows you to delete metadata for existing collection. Overall general improvements and optimization.","title":"v0.4.0"},{"location":"changelog/#v033","text":"General improvements Added tool to get underlying code from earthengine app","title":"v0.3.3"},{"location":"changelog/#v031","text":"Updated list and asset size functions Updated function to generate earthengine asset report General optimization and improvements to distribution Better error handling","title":"v0.3.1"},{"location":"changelog/#v030","text":"Removed upload function Upload handles by geeup General optimization and improvements to distribution Better error handling","title":"v0.3.0"},{"location":"changelog/#v028","text":"Uses poster for streaming upload more stable with memory issues and large files Poster dependency limits use to Py 2.7 will fix in the new version","title":"v0.2.8"},{"location":"changelog/#v026","text":"Major improvement to move, batch copy, and task reporting Major improvements to access tool to allow users read/write permission to entire Folder/collection.","title":"v0.2.6"},{"location":"changelog/#v025","text":"Handles bandnames during upload thanks to Lukasz for original upload code Removed manifest option, that can be handled by seperate tool (ppipe)","title":"v0.2.5"},{"location":"changelog/#v023","text":"Removing the initialization loop error","title":"v0.2.3"},{"location":"changelog/#v022","text":"Added improvement to earthengine authorization","title":"v0.2.2"},{"location":"changelog/#v021","text":"Added capability to handle PlanetScope 4Band Surface Reflectance Metadata Type General Improvements","title":"v0.2.1"},{"location":"changelog/#v020","text":"Tool improvements and enhancements","title":"v0.2.0"},{"location":"changelog/#v019","text":"New tool EE_Report was added","title":"v0.1.9"},{"location":"changelog/#v018","text":"Fixed issues with install Dependencies now part of setup.py Updated Parser and general improvements","title":"v0.1.8"},{"location":"installation/","text":"Prerequisites and Installation \u00b6 We assume Earth Engine Python API is installed and EE authorised as desribed here . From v0.3.4 onwards geeadd will only run on Python 3. Also with the new changes to the Earth Engine API library, the tool was completely modified to work with earthengine-api v0.1.127 and higher. Authenticate your earth engine client by using the following in your command line or terminal setup. earthengine authenticate Quick installation pip install geeadd or pip install geeadd --user To install using github: git clone https://github.com/samapriya/gee_asset_manager_addon cd gee_asset_manager_addon && pip install -r requirements.txt python setup.py install The advantage of having it installed is being able to execute geeadd as any command line tool. I recommend installation within virtual environment. To install run python setup.py develop or python setup.py install In a linux distribution sudo python setup.py develop or sudo python setup.py install","title":"General Installation"},{"location":"installation/#prerequisites-and-installation","text":"We assume Earth Engine Python API is installed and EE authorised as desribed here . From v0.3.4 onwards geeadd will only run on Python 3. Also with the new changes to the Earth Engine API library, the tool was completely modified to work with earthengine-api v0.1.127 and higher. Authenticate your earth engine client by using the following in your command line or terminal setup. earthengine authenticate Quick installation pip install geeadd or pip install geeadd --user To install using github: git clone https://github.com/samapriya/gee_asset_manager_addon cd gee_asset_manager_addon && pip install -r requirements.txt python setup.py install The advantage of having it installed is being able to execute geeadd as any command line tool. I recommend installation within virtual environment. To install run python setup.py develop or python setup.py install In a linux distribution sudo python setup.py develop or sudo python setup.py install","title":"Prerequisites and Installation"},{"location":"license/","text":"Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION Definitions. \"License\" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. \"Licensor\" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. \"Legal Entity\" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, \"control\" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. \"You\" (or \"Your\") shall mean an individual or Legal Entity exercising permissions granted by this License. \"Source\" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. \"Object\" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. \"Work\" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). \"Derivative Works\" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. \"Contribution\" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, \"submitted\" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as \"Not a Contribution.\" \"Contributor\" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and \u00a9 You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a \"NOTICE\" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets \"{}\" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same \"printed page\" as the copyright notice for easier identification within third-party archives. Copyright {2019} {Samapriya Roy} Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.","title":"License"},{"location":"projects/access/","text":"Change asset permissions \u00b6 This tool allows you to set asset access for either folder , collection or image recursively meaning you can add collection access properties for multiple assets at the same time. > geeadd access -h usage: geeadd access [-h] --asset ASSET --user USER --role ROLE optional arguments: -h, --help show this help message and exit Required named arguments.: --asset ASSET This is the path to the earth engine asset whose permission you are changing folder/collection/image --user USER \"user:person@example.com\" or \"group:team@example.com\" or \"serviceAccount:account@gserviceaccount.com\", try using \"allUsers\" to make it public --role ROLE Choose between reader, writer or delete","title":"Change asset permissions"},{"location":"projects/access/#change-asset-permissions","text":"This tool allows you to set asset access for either folder , collection or image recursively meaning you can add collection access properties for multiple assets at the same time. > geeadd access -h usage: geeadd access [-h] --asset ASSET --user USER --role ROLE optional arguments: -h, --help show this help message and exit Required named arguments.: --asset ASSET This is the path to the earth engine asset whose permission you are changing folder/collection/image --user USER \"user:person@example.com\" or \"group:team@example.com\" or \"serviceAccount:account@gserviceaccount.com\", try using \"allUsers\" to make it public --role ROLE Choose between reader, writer or delete","title":"Change asset permissions"},{"location":"projects/app2script/","text":"GEE app source \u00b6 This tool writes out or prints the underlying earthengine code for any public earthengine app. The tool has an option to export the code into a javascript file that you can then paste into Google Earth Engine code editor. Simple setup can be geeadd app2script --url \"https://gena.users.earthengine.app/view/urban-lights\" or write to a javascript file which you can then open with any text editor and paste in earthengine code editor geeadd app2script --url \"https://gena.users.earthengine.app/view/urban-lights\" --outfile \"Full path to javascript.js\"","title":"GEE app source"},{"location":"projects/app2script/#gee-app-source","text":"This tool writes out or prints the underlying earthengine code for any public earthengine app. The tool has an option to export the code into a javascript file that you can then paste into Google Earth Engine code editor. Simple setup can be geeadd app2script --url \"https://gena.users.earthengine.app/view/urban-lights\" or write to a javascript file which you can then open with any text editor and paste in earthengine code editor geeadd app2script --url \"https://gena.users.earthengine.app/view/urban-lights\" --outfile \"Full path to javascript.js\"","title":"GEE app source"},{"location":"projects/cancel_tasks/","text":"Cancel tasks \u00b6 This is a simple tool to cancel tasks with specific controls. This allows you to cancel all tasks, all running tasks, all ready tasks or just a single task with a task id. > geeadd cancel -h usage: geeadd cancel [-h] --tasks TASKS optional arguments: -h, --help show this help message and exit Required named arguments.: --tasks TASKS You can provide tasks as running or ready or all or even a single task id","title":"Cancel tasks"},{"location":"projects/cancel_tasks/#cancel-tasks","text":"This is a simple tool to cancel tasks with specific controls. This allows you to cancel all tasks, all running tasks, all ready tasks or just a single task with a task id. > geeadd cancel -h usage: geeadd cancel [-h] --tasks TASKS optional arguments: -h, --help show this help message and exit Required named arguments.: --tasks TASKS You can provide tasks as running or ready or all or even a single task id","title":"Cancel tasks"},{"location":"projects/copy/","text":"Copy assets \u00b6 This script allows us to recursively copy entire folders, collections, images or tables. If you have read acess to assets from another user this will also allow you to copy assets from their assets. geeadd copy -h usage: geeadd copy [-h] [--initial INITIAL] [--final FINAL] optional arguments: -h, --help show this help message and exit Required named arguments.: --initial INITIAL Existing path of assets --final FINAL New path for assets","title":"Copy Assets"},{"location":"projects/copy/#copy-assets","text":"This script allows us to recursively copy entire folders, collections, images or tables. If you have read acess to assets from another user this will also allow you to copy assets from their assets. geeadd copy -h usage: geeadd copy [-h] [--initial INITIAL] [--final FINAL] optional arguments: -h, --help show this help message and exit Required named arguments.: --initial INITIAL Existing path of assets --final FINAL New path for assets","title":"Copy assets"},{"location":"projects/delete/","text":"Delete Assets \u00b6 The delete is recursive, meaning it will delete also all children assets: images, collections and folders. Use with caution! > geeadd delete -h usage: geeadd delete [-h] --id ID optional arguments: -h, --help show this help message and exit Required named arguments.: --id ID Full path to asset for deletion. Recursively removes all folders, collections and images.","title":"Delete assets"},{"location":"projects/delete/#delete-assets","text":"The delete is recursive, meaning it will delete also all children assets: images, collections and folders. Use with caution! > geeadd delete -h usage: geeadd delete [-h] --id ID optional arguments: -h, --help show this help message and exit Required named arguments.: --id ID Full path to asset for deletion. Recursively removes all folders, collections and images.","title":"Delete Assets"},{"location":"projects/delete_metadata/","text":"Delete asset metadata \u00b6 This tool allows you to delete a specific property across a metadata. This is useful to reset any property for an ingested collection. > geeadd delete_metadata -h usage: geeadd delete_metadata [-h] --asset ASSET --property PROPERTY optional arguments: -h, --help show this help message and exit Required named arguments.: --asset ASSET This is the path to the earth engine asset whose permission you are changing collection/image --property PROPERTY Metadata name that you want to delete","title":"Delete asset metadata"},{"location":"projects/delete_metadata/#delete-asset-metadata","text":"This tool allows you to delete a specific property across a metadata. This is useful to reset any property for an ingested collection. > geeadd delete_metadata -h usage: geeadd delete_metadata [-h] --asset ASSET --property PROPERTY optional arguments: -h, --help show this help message and exit Required named arguments.: --asset ASSET This is the path to the earth engine asset whose permission you are changing collection/image --property PROPERTY Metadata name that you want to delete","title":"Delete asset metadata"},{"location":"projects/move/","text":"Assets Move \u00b6 This script allows us to recursively move entire folders, collections, images or table from one location to the other. > geeadd move -h usage: geeadd move [-h] [--initial INITIAL] [--final FINAL] optional arguments: -h, --help show this help message and exit Required named arguments.: --initial INITIAL Existing path of assets --final FINAL New path for assets","title":"Move Assets"},{"location":"projects/move/#assets-move","text":"This script allows us to recursively move entire folders, collections, images or table from one location to the other. > geeadd move -h usage: geeadd move [-h] [--initial INITIAL] [--final FINAL] optional arguments: -h, --help show this help message and exit Required named arguments.: --initial INITIAL Existing path of assets --final FINAL New path for assets","title":"Assets Move"},{"location":"projects/quota/","text":"Quota tool \u00b6 This tool is the very basic of tools in the toolbox which gives you your current quota. This gives you the total used and remaining quota in all your legacy folders or user root folders. It requires no additional arguments just that your earthengine api is enabled. Quota can now also handle Google Earth Engine with Google Cloud Projects enabled so you can pass project path as an arguments","title":"Quota tool"},{"location":"projects/quota/#quota-tool","text":"This tool is the very basic of tools in the toolbox which gives you your current quota. This gives you the total used and remaining quota in all your legacy folders or user root folders. It requires no additional arguments just that your earthengine api is enabled. Quota can now also handle Google Earth Engine with Google Cloud Projects enabled so you can pass project path as an arguments","title":"Quota tool"},{"location":"projects/report/","text":"Asset Report \u00b6 This tool recursively goes through all your assets(Includes Images, ImageCollection,Table,) and generates a report containing the following fields [Type,Asset Type, Path,Number of Assets,size(MB),unit,owner,readers,writers]. This tool creates a detailed report and may take sometime to complete. > geeadd ee_report -h usage: geeadd ee_report [-h] --outfile OUTFILE optional arguments: -h, --help show this help message and exit Required named arguments.: --outfile OUTFILE This it the location of your report csv file A simple setup is the following geeadd --outfile \"C:\\johndoe\\report.csv\"","title":"Asset Report"},{"location":"projects/report/#asset-report","text":"This tool recursively goes through all your assets(Includes Images, ImageCollection,Table,) and generates a report containing the following fields [Type,Asset Type, Path,Number of Assets,size(MB),unit,owner,readers,writers]. This tool creates a detailed report and may take sometime to complete. > geeadd ee_report -h usage: geeadd ee_report [-h] --outfile OUTFILE optional arguments: -h, --help show this help message and exit Required named arguments.: --outfile OUTFILE This it the location of your report csv file A simple setup is the following geeadd --outfile \"C:\\johndoe\\report.csv\"","title":"Asset Report"},{"location":"projects/search/","text":"Search GEE data catalog \u00b6 The search tool was added since v0.3.4 to enable users to search inside the Google Earth Engine catalog for images matching specific keywords and looks for matching images using names, ids , tags and so on. The result is reported as a JSON and include the Earth Engine asset type snippet along with start and end dates. Try for example geeadd search --keywords \"fire\"","title":"Search GEE data catalog"},{"location":"projects/search/#search-gee-data-catalog","text":"The search tool was added since v0.3.4 to enable users to search inside the Google Earth Engine catalog for images matching specific keywords and looks for matching images using names, ids , tags and so on. The result is reported as a JSON and include the Earth Engine asset type snippet along with start and end dates. Try for example geeadd search --keywords \"fire\"","title":"Search GEE data catalog"},{"location":"projects/size/","text":"Asset Size \u00b6 This tool allows you to query the size of any Earth Engine asset[Images, Image Collections, Tables and Folders] and prints out the number of assets and total asset size in non-byte encoding meaning KB, MB, GB, TB depending on size. > geeadd assetsize -h usage: geeadd assetsize [-h] --asset ASSET optional arguments: -h, --help show this help message and exit Required named arguments.: --asset ASSET Earth Engine Asset for which to get size properties","title":"Asset Size"},{"location":"projects/size/#asset-size","text":"This tool allows you to query the size of any Earth Engine asset[Images, Image Collections, Tables and Folders] and prints out the number of assets and total asset size in non-byte encoding meaning KB, MB, GB, TB depending on size. > geeadd assetsize -h usage: geeadd assetsize [-h] --asset ASSET optional arguments: -h, --help show this help message and exit Required named arguments.: --asset ASSET Earth Engine Asset for which to get size properties","title":"Asset Size"},{"location":"projects/task_status/","text":"Task status \u00b6 This script counts all currently running, cancelled, ready and failed tasks and requires no arguments. > geeadd tasks -h usage: geeadd tasks [-h] optional arguments: -h, --help show this help message and exit","title":"Task status"},{"location":"projects/task_status/#task-status","text":"This script counts all currently running, cancelled, ready and failed tasks and requires no arguments. > geeadd tasks -h usage: geeadd tasks [-h] optional arguments: -h, --help show this help message and exit","title":"Task status"}]}
      \ No newline at end of file
      +{"config":{"lang":["en"],"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"","text":"Google Earth Engine Batch Asset Manager with Addons \u00b6 Google Earth Engine Batch Asset Manager with Addons is an extension of the one developed by Lukasz here and additional tools were added to include functionality for moving assets, conversion of objects to fusion table, cleaning folders, querying tasks. The ambition is apart from helping user with batch actions on assets along with interacting and extending capabilities of existing GEE CLI. It is developed case by case basis to include more features in the future as it becomes available or as need arises. If you use this tool to download data for your research, and find this tool useful, star and cite it as below Samapriya Roy. (2020, April 25). samapriya/gee_asset_manager_addon: GEE Asset Manager with Addons (Version 0.4.4). Zenodo. http://doi.org/10.5281/zenodo.3766532","title":"Introduction"},{"location":"#google-earth-engine-batch-asset-manager-with-addons","text":"Google Earth Engine Batch Asset Manager with Addons is an extension of the one developed by Lukasz here and additional tools were added to include functionality for moving assets, conversion of objects to fusion table, cleaning folders, querying tasks. The ambition is apart from helping user with batch actions on assets along with interacting and extending capabilities of existing GEE CLI. It is developed case by case basis to include more features in the future as it becomes available or as need arises. If you use this tool to download data for your research, and find this tool useful, star and cite it as below Samapriya Roy. (2020, April 25). samapriya/gee_asset_manager_addon: GEE Asset Manager with Addons (Version 0.4.4). Zenodo. http://doi.org/10.5281/zenodo.3766532","title":"Google Earth Engine Batch Asset Manager with Addons"},{"location":"changelog/","text":"Changelog \u00b6 v0.5.2 \u00b6 Updated copy tool to allow for non mirrored copy Updated task and task cancel tools to account for states Pending and Cancelling v0.5.1 \u00b6 Updated quota tool to handle GCP projects inside GEE Updated Folder size reporting v0.5.0 \u00b6 Updated to use earthengine-api>= 0.1.222 Copy and move tool improvements to facilitate cloud alpha support. Updated task check tool to account for operations based handling. \u00b6 v0.4.9 \u00b6 Fixed issue 11 . Updated to recent API calls based on Issue and general improvements Added auto version check from pypi. v0.4.7 \u00b6 Fixed issue with delete tool and shell call. Fixed issue with copy and move function for single collections v0.4.6 \u00b6 Now inclues asset_url and thumbnail_url for search. Formatting and general improvements. v0.4.5 \u00b6 Now inclues license in sdist Fixed issue with app2script tool and string and text parsing. Added readme and version tools. Added readme docs and deployed environment. v0.4.4 \u00b6 Removed git dependency and used urllib instead based on feedback Created conda forge release based on Issue 10 v0.4.2 \u00b6 Fixed relative import issue for earthengine. Fixed image collection move tool to parse ee object type correctly as image_collection. v0.4.1 \u00b6 Made enhancement Issue 9 . Search tool now return earth engine asset snippet and start and end dates as JSON object. Removed pretty table dependency. v0.4.0 \u00b6 Improved quota tools to get all quota and asset counts. Added a search tool to search GEE catalog using keywords. Improved parsing for app to script tool. Detailed asset root for all root folders and recursively Cancel tasks now allows you to choose, running, ready or specific task ids. Assets copy and move now allows you to copy entire folders, collectiona and assets recursively Updated assets access tool Delete metadata allows you to delete metadata for existing collection. Overall general improvements and optimization. v0.3.3 \u00b6 General improvements Added tool to get underlying code from earthengine app v0.3.1 \u00b6 Updated list and asset size functions Updated function to generate earthengine asset report General optimization and improvements to distribution Better error handling v0.3.0 \u00b6 Removed upload function Upload handles by geeup General optimization and improvements to distribution Better error handling v0.2.8 \u00b6 Uses poster for streaming upload more stable with memory issues and large files Poster dependency limits use to Py 2.7 will fix in the new version v0.2.6 \u00b6 Major improvement to move, batch copy, and task reporting Major improvements to access tool to allow users read/write permission to entire Folder/collection. v0.2.5 \u00b6 Handles bandnames during upload thanks to Lukasz for original upload code Removed manifest option, that can be handled by seperate tool (ppipe) v0.2.3 \u00b6 Removing the initialization loop error v0.2.2 \u00b6 Added improvement to earthengine authorization v0.2.1 \u00b6 Added capability to handle PlanetScope 4Band Surface Reflectance Metadata Type General Improvements v0.2.0 \u00b6 Tool improvements and enhancements v0.1.9 \u00b6 New tool EE_Report was added v0.1.8 \u00b6 Fixed issues with install Dependencies now part of setup.py Updated Parser and general improvements","title":"Changelog"},{"location":"changelog/#changelog","text":"","title":"Changelog"},{"location":"changelog/#v052","text":"Updated copy tool to allow for non mirrored copy Updated task and task cancel tools to account for states Pending and Cancelling","title":"v0.5.2"},{"location":"changelog/#v051","text":"Updated quota tool to handle GCP projects inside GEE Updated Folder size reporting","title":"v0.5.1"},{"location":"changelog/#v050","text":"Updated to use earthengine-api>= 0.1.222 Copy and move tool improvements to facilitate cloud alpha support.","title":"v0.5.0"},{"location":"changelog/#updated-task-check-tool-to-account-for-operations-based-handling","text":"","title":"Updated task check tool to account for operations based handling."},{"location":"changelog/#v049","text":"Fixed issue 11 . Updated to recent API calls based on Issue and general improvements Added auto version check from pypi.","title":"v0.4.9"},{"location":"changelog/#v047","text":"Fixed issue with delete tool and shell call. Fixed issue with copy and move function for single collections","title":"v0.4.7"},{"location":"changelog/#v046","text":"Now inclues asset_url and thumbnail_url for search. Formatting and general improvements.","title":"v0.4.6"},{"location":"changelog/#v045","text":"Now inclues license in sdist Fixed issue with app2script tool and string and text parsing. Added readme and version tools. Added readme docs and deployed environment.","title":"v0.4.5"},{"location":"changelog/#v044","text":"Removed git dependency and used urllib instead based on feedback Created conda forge release based on Issue 10","title":"v0.4.4"},{"location":"changelog/#v042","text":"Fixed relative import issue for earthengine. Fixed image collection move tool to parse ee object type correctly as image_collection.","title":"v0.4.2"},{"location":"changelog/#v041","text":"Made enhancement Issue 9 . Search tool now return earth engine asset snippet and start and end dates as JSON object. Removed pretty table dependency.","title":"v0.4.1"},{"location":"changelog/#v040","text":"Improved quota tools to get all quota and asset counts. Added a search tool to search GEE catalog using keywords. Improved parsing for app to script tool. Detailed asset root for all root folders and recursively Cancel tasks now allows you to choose, running, ready or specific task ids. Assets copy and move now allows you to copy entire folders, collectiona and assets recursively Updated assets access tool Delete metadata allows you to delete metadata for existing collection. Overall general improvements and optimization.","title":"v0.4.0"},{"location":"changelog/#v033","text":"General improvements Added tool to get underlying code from earthengine app","title":"v0.3.3"},{"location":"changelog/#v031","text":"Updated list and asset size functions Updated function to generate earthengine asset report General optimization and improvements to distribution Better error handling","title":"v0.3.1"},{"location":"changelog/#v030","text":"Removed upload function Upload handles by geeup General optimization and improvements to distribution Better error handling","title":"v0.3.0"},{"location":"changelog/#v028","text":"Uses poster for streaming upload more stable with memory issues and large files Poster dependency limits use to Py 2.7 will fix in the new version","title":"v0.2.8"},{"location":"changelog/#v026","text":"Major improvement to move, batch copy, and task reporting Major improvements to access tool to allow users read/write permission to entire Folder/collection.","title":"v0.2.6"},{"location":"changelog/#v025","text":"Handles bandnames during upload thanks to Lukasz for original upload code Removed manifest option, that can be handled by seperate tool (ppipe)","title":"v0.2.5"},{"location":"changelog/#v023","text":"Removing the initialization loop error","title":"v0.2.3"},{"location":"changelog/#v022","text":"Added improvement to earthengine authorization","title":"v0.2.2"},{"location":"changelog/#v021","text":"Added capability to handle PlanetScope 4Band Surface Reflectance Metadata Type General Improvements","title":"v0.2.1"},{"location":"changelog/#v020","text":"Tool improvements and enhancements","title":"v0.2.0"},{"location":"changelog/#v019","text":"New tool EE_Report was added","title":"v0.1.9"},{"location":"changelog/#v018","text":"Fixed issues with install Dependencies now part of setup.py Updated Parser and general improvements","title":"v0.1.8"},{"location":"installation/","text":"Prerequisites and Installation \u00b6 We assume Earth Engine Python API is installed and EE authorised as desribed here . From v0.3.4 onwards geeadd will only run on Python 3. Also with the new changes to the Earth Engine API library, the tool was completely modified to work with earthengine-api v0.1.127 and higher. Authenticate your earth engine client by using the following in your command line or terminal setup. earthengine authenticate Quick installation pip install geeadd or pip install geeadd --user To install using github: git clone https://github.com/samapriya/gee_asset_manager_addon cd gee_asset_manager_addon && pip install -r requirements.txt python setup.py install The advantage of having it installed is being able to execute geeadd as any command line tool. I recommend installation within virtual environment. To install run python setup.py develop or python setup.py install In a linux distribution sudo python setup.py develop or sudo python setup.py install","title":"General Installation"},{"location":"installation/#prerequisites-and-installation","text":"We assume Earth Engine Python API is installed and EE authorised as desribed here . From v0.3.4 onwards geeadd will only run on Python 3. Also with the new changes to the Earth Engine API library, the tool was completely modified to work with earthengine-api v0.1.127 and higher. Authenticate your earth engine client by using the following in your command line or terminal setup. earthengine authenticate Quick installation pip install geeadd or pip install geeadd --user To install using github: git clone https://github.com/samapriya/gee_asset_manager_addon cd gee_asset_manager_addon && pip install -r requirements.txt python setup.py install The advantage of having it installed is being able to execute geeadd as any command line tool. I recommend installation within virtual environment. To install run python setup.py develop or python setup.py install In a linux distribution sudo python setup.py develop or sudo python setup.py install","title":"Prerequisites and Installation"},{"location":"license/","text":"Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION Definitions. \"License\" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. \"Licensor\" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. \"Legal Entity\" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, \"control\" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. \"You\" (or \"Your\") shall mean an individual or Legal Entity exercising permissions granted by this License. \"Source\" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. \"Object\" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. \"Work\" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). \"Derivative Works\" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. \"Contribution\" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, \"submitted\" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as \"Not a Contribution.\" \"Contributor\" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and \u00a9 You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a \"NOTICE\" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets \"{}\" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same \"printed page\" as the copyright notice for easier identification within third-party archives. Copyright {2019} {Samapriya Roy} Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.","title":"License"},{"location":"projects/access/","text":"Change asset permissions \u00b6 This tool allows you to set asset access for either folder , collection or image recursively meaning you can add collection access properties for multiple assets at the same time. > geeadd access -h usage: geeadd access [-h] --asset ASSET --user USER --role ROLE optional arguments: -h, --help show this help message and exit Required named arguments.: --asset ASSET This is the path to the earth engine asset whose permission you are changing folder/collection/image --user USER \"user:person@example.com\" or \"group:team@example.com\" or \"serviceAccount:account@gserviceaccount.com\", try using \"allUsers\" to make it public --role ROLE Choose between reader, writer or delete","title":"Change asset permissions"},{"location":"projects/access/#change-asset-permissions","text":"This tool allows you to set asset access for either folder , collection or image recursively meaning you can add collection access properties for multiple assets at the same time. > geeadd access -h usage: geeadd access [-h] --asset ASSET --user USER --role ROLE optional arguments: -h, --help show this help message and exit Required named arguments.: --asset ASSET This is the path to the earth engine asset whose permission you are changing folder/collection/image --user USER \"user:person@example.com\" or \"group:team@example.com\" or \"serviceAccount:account@gserviceaccount.com\", try using \"allUsers\" to make it public --role ROLE Choose between reader, writer or delete","title":"Change asset permissions"},{"location":"projects/app2script/","text":"GEE app source \u00b6 This tool writes out or prints the underlying earthengine code for any public earthengine app. The tool has an option to export the code into a javascript file that you can then paste into Google Earth Engine code editor. Simple setup can be geeadd app2script --url \"https://gena.users.earthengine.app/view/urban-lights\" or write to a javascript file which you can then open with any text editor and paste in earthengine code editor geeadd app2script --url \"https://gena.users.earthengine.app/view/urban-lights\" --outfile \"Full path to javascript.js\"","title":"GEE app source"},{"location":"projects/app2script/#gee-app-source","text":"This tool writes out or prints the underlying earthengine code for any public earthengine app. The tool has an option to export the code into a javascript file that you can then paste into Google Earth Engine code editor. Simple setup can be geeadd app2script --url \"https://gena.users.earthengine.app/view/urban-lights\" or write to a javascript file which you can then open with any text editor and paste in earthengine code editor geeadd app2script --url \"https://gena.users.earthengine.app/view/urban-lights\" --outfile \"Full path to javascript.js\"","title":"GEE app source"},{"location":"projects/cancel_tasks/","text":"Cancel tasks \u00b6 This is a simple tool to cancel tasks with specific controls. This allows you to cancel all tasks, all running tasks, all ready tasks or just a single task with a task id. > geeadd cancel -h usage: geeadd cancel [-h] --tasks TASKS optional arguments: -h, --help show this help message and exit Required named arguments.: --tasks TASKS You can provide tasks as running or pending or all or even a single task id","title":"Cancel tasks"},{"location":"projects/cancel_tasks/#cancel-tasks","text":"This is a simple tool to cancel tasks with specific controls. This allows you to cancel all tasks, all running tasks, all ready tasks or just a single task with a task id. > geeadd cancel -h usage: geeadd cancel [-h] --tasks TASKS optional arguments: -h, --help show this help message and exit Required named arguments.: --tasks TASKS You can provide tasks as running or pending or all or even a single task id","title":"Cancel tasks"},{"location":"projects/copy/","text":"Copy assets \u00b6 This script allows us to recursively copy entire folders, collections, images or tables. If you have read acess to assets from another user this will also allow you to copy assets from their assets. geeadd copy -h usage: geeadd copy [-h] [--initial INITIAL] [--final FINAL] optional arguments: -h, --help show this help message and exit Required named arguments.: --initial INITIAL Existing path of assets --final FINAL New path for assets","title":"Copy Assets"},{"location":"projects/copy/#copy-assets","text":"This script allows us to recursively copy entire folders, collections, images or tables. If you have read acess to assets from another user this will also allow you to copy assets from their assets. geeadd copy -h usage: geeadd copy [-h] [--initial INITIAL] [--final FINAL] optional arguments: -h, --help show this help message and exit Required named arguments.: --initial INITIAL Existing path of assets --final FINAL New path for assets","title":"Copy assets"},{"location":"projects/delete/","text":"Delete Assets \u00b6 The delete is recursive, meaning it will delete also all children assets: images, collections and folders. Use with caution! > geeadd delete -h usage: geeadd delete [-h] --id ID optional arguments: -h, --help show this help message and exit Required named arguments.: --id ID Full path to asset for deletion. Recursively removes all folders, collections and images.","title":"Delete assets"},{"location":"projects/delete/#delete-assets","text":"The delete is recursive, meaning it will delete also all children assets: images, collections and folders. Use with caution! > geeadd delete -h usage: geeadd delete [-h] --id ID optional arguments: -h, --help show this help message and exit Required named arguments.: --id ID Full path to asset for deletion. Recursively removes all folders, collections and images.","title":"Delete Assets"},{"location":"projects/delete_metadata/","text":"Delete asset metadata \u00b6 This tool allows you to delete a specific property across a metadata. This is useful to reset any property for an ingested collection. > geeadd delete_metadata -h usage: geeadd delete_metadata [-h] --asset ASSET --property PROPERTY optional arguments: -h, --help show this help message and exit Required named arguments.: --asset ASSET This is the path to the earth engine asset whose permission you are changing collection/image --property PROPERTY Metadata name that you want to delete","title":"Delete asset metadata"},{"location":"projects/delete_metadata/#delete-asset-metadata","text":"This tool allows you to delete a specific property across a metadata. This is useful to reset any property for an ingested collection. > geeadd delete_metadata -h usage: geeadd delete_metadata [-h] --asset ASSET --property PROPERTY optional arguments: -h, --help show this help message and exit Required named arguments.: --asset ASSET This is the path to the earth engine asset whose permission you are changing collection/image --property PROPERTY Metadata name that you want to delete","title":"Delete asset metadata"},{"location":"projects/move/","text":"Assets Move \u00b6 This script allows us to recursively move entire folders, collections, images or table from one location to the other. > geeadd move -h usage: geeadd move [-h] [--initial INITIAL] [--final FINAL] optional arguments: -h, --help show this help message and exit Required named arguments.: --initial INITIAL Existing path of assets --final FINAL New path for assets","title":"Move Assets"},{"location":"projects/move/#assets-move","text":"This script allows us to recursively move entire folders, collections, images or table from one location to the other. > geeadd move -h usage: geeadd move [-h] [--initial INITIAL] [--final FINAL] optional arguments: -h, --help show this help message and exit Required named arguments.: --initial INITIAL Existing path of assets --final FINAL New path for assets","title":"Assets Move"},{"location":"projects/quota/","text":"Quota tool \u00b6 This tool is the very basic of tools in the toolbox which gives you your current quota. This gives you the total used and remaining quota in all your legacy folders or user root folders. It requires no additional arguments just that your earthengine api is enabled. Quota can now also handle Google Earth Engine with Google Cloud Projects enabled so you can pass project path as an argument","title":"Quota tool"},{"location":"projects/quota/#quota-tool","text":"This tool is the very basic of tools in the toolbox which gives you your current quota. This gives you the total used and remaining quota in all your legacy folders or user root folders. It requires no additional arguments just that your earthengine api is enabled. Quota can now also handle Google Earth Engine with Google Cloud Projects enabled so you can pass project path as an argument","title":"Quota tool"},{"location":"projects/report/","text":"Asset Report \u00b6 This tool recursively goes through all your assets(Includes Images, ImageCollection,Table,) and generates a report containing the following fields [Type,Asset Type, Path,Number of Assets,size(MB),unit,owner,readers,writers]. This tool creates a detailed report and may take sometime to complete. > geeadd ee_report -h usage: geeadd ee_report [-h] --outfile OUTFILE optional arguments: -h, --help show this help message and exit Required named arguments.: --outfile OUTFILE This it the location of your report csv file A simple setup is the following geeadd --outfile \"C:\\johndoe\\report.csv\"","title":"Asset Report"},{"location":"projects/report/#asset-report","text":"This tool recursively goes through all your assets(Includes Images, ImageCollection,Table,) and generates a report containing the following fields [Type,Asset Type, Path,Number of Assets,size(MB),unit,owner,readers,writers]. This tool creates a detailed report and may take sometime to complete. > geeadd ee_report -h usage: geeadd ee_report [-h] --outfile OUTFILE optional arguments: -h, --help show this help message and exit Required named arguments.: --outfile OUTFILE This it the location of your report csv file A simple setup is the following geeadd --outfile \"C:\\johndoe\\report.csv\"","title":"Asset Report"},{"location":"projects/search/","text":"Search GEE data catalog \u00b6 The search tool was added since v0.3.4 to enable users to search inside the Google Earth Engine catalog for images matching specific keywords and looks for matching images using names, ids , tags and so on. The result is reported as a JSON and include the Earth Engine asset type snippet along with start and end dates. Try for example geeadd search --keywords \"fire\"","title":"Search GEE data catalog"},{"location":"projects/search/#search-gee-data-catalog","text":"The search tool was added since v0.3.4 to enable users to search inside the Google Earth Engine catalog for images matching specific keywords and looks for matching images using names, ids , tags and so on. The result is reported as a JSON and include the Earth Engine asset type snippet along with start and end dates. Try for example geeadd search --keywords \"fire\"","title":"Search GEE data catalog"},{"location":"projects/size/","text":"Asset Size \u00b6 This tool allows you to query the size of any Earth Engine asset[Images, Image Collections, Tables and Folders] and prints out the number of assets and total asset size in non-byte encoding meaning KB, MB, GB, TB depending on size. > geeadd assetsize -h usage: geeadd assetsize [-h] --asset ASSET optional arguments: -h, --help show this help message and exit Required named arguments.: --asset ASSET Earth Engine Asset for which to get size properties","title":"Asset Size"},{"location":"projects/size/#asset-size","text":"This tool allows you to query the size of any Earth Engine asset[Images, Image Collections, Tables and Folders] and prints out the number of assets and total asset size in non-byte encoding meaning KB, MB, GB, TB depending on size. > geeadd assetsize -h usage: geeadd assetsize [-h] --asset ASSET optional arguments: -h, --help show this help message and exit Required named arguments.: --asset ASSET Earth Engine Asset for which to get size properties","title":"Asset Size"},{"location":"projects/task_status/","text":"Task status \u00b6 This script counts all currently running, cancelled, pending and failed tasks and requires no arguments. > geeadd tasks -h usage: geeadd tasks [-h] optional arguments: -h, --help show this help message and exit","title":"Task status"},{"location":"projects/task_status/#task-status","text":"This script counts all currently running, cancelled, pending and failed tasks and requires no arguments. > geeadd tasks -h usage: geeadd tasks [-h] optional arguments: -h, --help show this help message and exit","title":"Task status"}]}
      \ No newline at end of file
      diff --git a/docs/sitemap.xml b/docs/sitemap.xml
      index b5689f6..0249fc6 100644
      --- a/docs/sitemap.xml
      +++ b/docs/sitemap.xml
      @@ -2,82 +2,82 @@
       
           
            https://github.com/samapriya/
      -     2020-08-13
      +     2020-09-25
            daily
           
           
            https://github.com/samapriya/license/
      -     2020-08-13
      +     2020-09-25
            daily
           
           
            https://github.com/samapriya/installation/
      -     2020-08-13
      +     2020-09-25
            daily
           
           
            https://github.com/samapriya/projects/quota/
      -     2020-08-13
      +     2020-09-25
            daily
           
           
            https://github.com/samapriya/projects/app2script/
      -     2020-08-13
      +     2020-09-25
            daily
           
           
            https://github.com/samapriya/projects/search/
      -     2020-08-13
      +     2020-09-25
            daily
           
           
            https://github.com/samapriya/projects/copy/
      -     2020-08-13
      +     2020-09-25
            daily
           
           
            https://github.com/samapriya/projects/move/
      -     2020-08-13
      +     2020-09-25
            daily
           
           
            https://github.com/samapriya/projects/access/
      -     2020-08-13
      +     2020-09-25
            daily
           
           
            https://github.com/samapriya/projects/delete/
      -     2020-08-13
      +     2020-09-25
            daily
           
           
            https://github.com/samapriya/projects/size/
      -     2020-08-13
      +     2020-09-25
            daily
           
           
            https://github.com/samapriya/projects/report/
      -     2020-08-13
      +     2020-09-25
            daily
           
           
            https://github.com/samapriya/projects/task_status/
      -     2020-08-13
      +     2020-09-25
            daily
           
           
            https://github.com/samapriya/projects/cancel_tasks/
      -     2020-08-13
      +     2020-09-25
            daily
           
           
            https://github.com/samapriya/projects/delete_metadata/
      -     2020-08-13
      +     2020-09-25
            daily
           
           
            https://github.com/samapriya/changelog/
      -     2020-08-13
      +     2020-09-25
            daily
           
       
      \ No newline at end of file
      diff --git a/docs/sitemap.xml.gz b/docs/sitemap.xml.gz
      index 9d92f3846fcf97530ef6d649df216bad9a2aa737..6a0df5b0ae7156251ba430645720fc5ca8db8bac 100644
      GIT binary patch
      literal 325
      zcmV-L0lNMliwFqNqHSLS|8r?{Wo=<_E_iKh0L_-oPQx$^$M1WJs`oXe5)wmQcjF1*
      zJQ>%tfi%ftcVj#~DI16@2PEf`#Bu)qDPK;zd!Jl!q{KG(ZFy7GWkDW8Z~d?>pB^99
      zcjc~IwR3VzQe}Yy{^otFUAw_{Rsd7EDN3;
      
      literal 325
      zcmV-L0lNMliwFp=Gc{iV|8r?{Wo=<_E_iKh0L_-YQo}F|$M-%(E_>s&EQL$cjVFM)
      zClryGI<{*mE#>KPXyI5HxRV##vi#TY{3SQL_t6z6N^FDQmaD2R3-TB`>-%l_{Peio
      zl)HA(Ovy1xk)1tn%RwYQ7;`?KE4D%-M6N>W4dakIY;HzVSNCPRC~}zvuC1bR0oz%D
      zvqW!Ym|iLjqhZKXlD&Xw%2m+I79Im-S}3y34~i+sy?B@IAdII<_5HcWKNo
      z%Qd|DiT@`OXOTRUA|mTqz&Vh-Uy86|3U7qM<~RibjbIStnlafZ8tIrI;h>QWL%e9@
      z8pDZHo-;&Z)=1WoBT>0#Y(G?TC5j=bd@ls}u+N!5CY47G!6Ui-OsV)P>_-ylKvllF
      X>bTJVAJbQre{=08a(bCY{Rsd7Gw_}R
      
      diff --git a/geeadd/__init__.py b/geeadd/__init__.py
      index 5465e07..229b6e3 100644
      --- a/geeadd/__init__.py
      +++ b/geeadd/__init__.py
      @@ -2,4 +2,4 @@
       
       __author__ = "Samapriya Roy"
       __email__ = "samapriya.roy@gmail.com"
      -__version__ = "0.5.1"
      +__version__ = "0.5.2"
      diff --git a/geeadd/batch_copy.py b/geeadd/batch_copy.py
      index 108adee..1557f8d 100644
      --- a/geeadd/batch_copy.py
      +++ b/geeadd/batch_copy.py
      @@ -61,6 +61,8 @@ def collection_copy(initial, replace_string, replaced_string, fpath):
           assets_names = [os.path.basename(asset["name"]) for asset in initial_list["assets"]]
           if replace_string == replaced_string or replace_string == None:
               collection_path = fpath
      +    elif initial.split('/')[-1] != fpath.split('/')[-1]:
      +         collection_path = fpath
           else:
               collection_path = initial.replace(replace_string, replaced_string)
           try:
      @@ -79,7 +81,7 @@ def collection_copy(initial, replace_string, replaced_string, fpath):
                       {"type": ee.data.ASSET_TYPE_IMAGE_COLL}, collection_path
                   )
       
      -    # print(collection_path)
      +    collection_path=ee.data.getAsset(collection_path)['name']
           final_list = ee.data.listAssets({"parent": collection_path})
           final_names = [os.path.basename(asset["name"]) for asset in final_list["assets"]]
           diff = set(assets_names) - set(final_names)
      diff --git a/geeadd/geeadd.py b/geeadd/geeadd.py
      index 4aa6e46..fa446b0 100644
      --- a/geeadd/geeadd.py
      +++ b/geeadd/geeadd.py
      @@ -119,7 +119,7 @@ def cancel_tasks(tasks):
                       task
                       for task in ee.data.listOperations()
                       if task["metadata"]["state"] == "RUNNING"
      -                or task["metadata"]["state"] == "READY"
      +                or task["metadata"]["state"] == "PENDING"
                   ]
                   if len(all_tasks) > 0:
                       for task in all_tasks:
      @@ -128,7 +128,7 @@ def cancel_tasks(tasks):
                           "Request completed task ID or task type {} cancelled".format(tasks)
                       )
                   elif len(all_tasks) == 0:
      -                print("No Running or Ready tasks found")
      +                print("No Running or Pending tasks found")
               except Exception as e:
                   print(e)
           elif tasks == "running":
      @@ -143,28 +143,28 @@ def cancel_tasks(tasks):
                       for task in running_tasks:
                           ee.data.cancelOperation(task["name"])
                       print(
      -                    "Request completed task ID or task type {} cancelled".format(tasks)
      +                    "Request completed task ID or task type: {} cancelled".format(tasks)
                       )
                   elif len(running_tasks) == 0:
                       print("No Running tasks found")
               except Exception as e:
                   print(e)
      -    elif tasks == "ready":
      +    elif tasks == "pending":
               try:
      -            print("Attempting to cancel queued tasks or ready tasks")
      +            print("Attempting to cancel queued tasks or pending tasks")
                   ready_tasks = [
                       task
                       for task in ee.data.listOperations()
      -                if task["metadata"]["state"] == "READY"
      +                if task["metadata"]["state"] == "PENDING"
                   ]
                   if len(ready_tasks) > 0:
                       for task in ready_tasks:
                           ee.data.cancelOperation(task["name"])
                       print(
      -                    "Request completed task ID or task type {} cancelled".format(tasks)
      +                    "Request completed task ID or task type: {} cancelled".format(tasks)
                       )
                   elif len(ready_tasks) == 0:
      -                print("No Ready tasks found")
      +                print("No Pending tasks found")
               except Exception as e:
                   print(e)
           elif tasks is not None:
      @@ -175,11 +175,11 @@ def cancel_tasks(tasks):
                   )
                   if (
                       get_status["metadata"]["state"] == "RUNNING"
      -                or get_status["metadata"]["state"] == "READY"
      +                or get_status["metadata"]["state"] == "PENDING"
                   ):
                       ee.data.cancelTask(task["id"])
                       print(
      -                    "Request completed task ID or task type {} cancelled".format(tasks)
      +                    "Request completed task ID or task type: {} cancelled".format(tasks)
                       )
                   else:
                       print("Task in status {}".format(get_status["metadata"]["state"]))
      @@ -282,10 +282,10 @@ def tasks():
           for status in statuses:
               st.append(status["metadata"]["state"])
           print("Tasks Running: " + str(st.count("RUNNING")))
      -    print("Tasks Ready: " + str(st.count("READY")))
      -    print("Tasks Completed: " + str(st.count("COMPLETED")))
      +    print("Tasks Pending: " + str(st.count("PENDING")))
      +    print("Tasks Completed: " + str(st.count("SUCCEEDED")))
           print("Tasks Failed: " + str(st.count("FAILED")))
      -    print("Tasks Cancelled: " + str(st.count("CANCELLED")))
      +    print("Tasks Cancelled: " + str(st.count("CANCELLED")+st.count("CANCELLING")))
       
       
       def tasks_from_parser(args):
      @@ -556,7 +556,7 @@ def main(args=None):
       
           parser_tasks = subparsers.add_parser(
               "tasks",
      -        help="Queries current task status [completed,running,ready,failed,cancelled]",
      +        help="Queries current task status [completed,running,pending,failed,cancelled]",
           )
           parser_tasks.set_defaults(func=tasks_from_parser)
       
      @@ -566,7 +566,7 @@ def main(args=None):
           required_named = parser_cancel.add_argument_group("Required named arguments.")
           required_named.add_argument(
               "--tasks",
      -        help="You can provide tasks as running or ready or all or even a single task id",
      +        help="You can provide tasks as running or pending or all or even a single task id",
               required=True,
               default=None,
           )
      diff --git a/setup.py b/setup.py
      index 0eec99a..43f537c 100644
      --- a/setup.py
      +++ b/setup.py
      @@ -3,7 +3,7 @@
       
       setup(
           name='geeadd',
      -    version='0.5.1',
      +    version='0.5.2',
           packages=['geeadd'],
           data_files=[("",["LICENSE"])],
           url='https://github.com/samapriya/gee_asset_manager_addon',