From ff4281be97a9db83ac45cc963623d49b6ee61a72 Mon Sep 17 00:00:00 2001 From: Juan David Burgos Oquendo Date: Wed, 17 Jan 2024 09:23:58 -0500 Subject: [PATCH 1/8] Change all the shotgrid/shotgun occurrences in the repository. --- HISTORY.rst | 12 ++--- README.md | 8 +-- SECURITY.md | 8 +-- azure-pipelines-templates/run-tests.yml | 2 +- docs/advanced/packaging.rst | 4 +- docs/authentication.rst | 22 ++++---- docs/cookbook.rst | 8 +-- docs/cookbook/attachments.rst | 32 +++++------ .../examples/ami_version_packager.rst | 12 ++--- docs/cookbook/examples/basic_create_shot.rst | 10 ++-- .../basic_create_shot_task_template.rst | 6 +-- .../basic_create_version_link_shot.rst | 4 +- docs/cookbook/examples/basic_delete_shot.rst | 4 +- docs/cookbook/examples/basic_find_shot.rst | 6 +-- docs/cookbook/examples/basic_sg_instance.rst | 12 ++--- docs/cookbook/examples/basic_update_shot.rst | 10 ++-- .../basic_upload_thumbnail_version.rst | 8 +-- docs/cookbook/examples/svn_integration.rst | 40 +++++++------- docs/cookbook/smart_cut_fields.rst | 2 +- docs/cookbook/tasks/split_tasks.rst | 2 +- docs/cookbook/tasks/task_dependencies.rst | 8 +-- docs/cookbook/tasks/updating_tasks.rst | 14 ++--- docs/cookbook/tutorials.rst | 2 +- docs/cookbook/usage_tips.rst | 18 +++---- docs/index.rst | 14 ++--- docs/installation.rst | 4 +- docs/reference.rst | 54 +++++++++---------- setup.py | 2 +- shotgun_api3/lib/README.md | 14 ++--- shotgun_api3/lib/mockgun/mockgun.py | 4 +- shotgun_api3/shotgun.py | 12 ++--- tests/base.py | 2 +- tests/example_config | 2 +- tests/mockgun/schema.pickle | 2 +- 34 files changed, 182 insertions(+), 182 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index 0b923f21a..04a889ef2 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -1,6 +1,6 @@ -***************************** -ShotGrid Python API Changelog -***************************** +********************************************* +Flow Production Tracking Python API Changelog +********************************************* Here you can see the full list of changes between each Python API release. @@ -48,7 +48,7 @@ v3.3.5 (2023 Jan 5) - Add "Setting Up Your Environment with the Python API" to Python Docs (python-api docs). - [Python API Documentation] Update Python version requirements. - Rename Shotgun to Shotgrid in every about text like tk-multi-demo git repository. -- Rename Shotgun servers to ShotGrid servers in the documentation. +- Rename Shotgun servers to Flow Production Tracking servers in the documentation. v3.3.4 (2022 June 9) ==================== @@ -59,7 +59,7 @@ v3.3.4 (2022 June 9) v3.3.3 (2021 December 1) ========================== -- Replaces shotgunsoftware urls with Autodesk Knowledge Network and ShotGrid Developer Documentation pages. +- Replaces shotgunsoftware urls with Autodesk Knowledge Network and Flow Production Tracking Developer Documentation pages. v3.3.2 (2021 September 27) ========================== @@ -71,7 +71,7 @@ v3.3.1 (2021 July 12) v3.3.0 (2021 Jun 7) =================== -- Updates documentation and error messages to mention ShotGrid. +- Updates documentation and error messages to mention Flow Production Tracking. v3.2.6 (2020 Nov 24) ===================== diff --git a/README.md b/README.md index 161612f5b..fa6bda8f0 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,9 @@ [![Build Status](https://dev.azure.com/shotgun-ecosystem/Python%20API/_apis/build/status/shotgunsoftware.python-api?branchName=master)](https://dev.azure.com/shotgun-ecosystem/Python%20API/_build/latest?definitionId=108&branchName=master) [![Coverage Status](https://coveralls.io/repos/github/shotgunsoftware/python-api/badge.svg?branch=master)](https://coveralls.io/github/shotgunsoftware/python-api?branch=master) -# ShotGrid Python API +# Flow Production Tracking Python API -ShotGrid provides a simple Python-based API for accessing ShotGrid and integrating with other tools. This is the official API that is maintained by ShotGrid Software (https://knowledge.autodesk.com/contact-support) +Flow Production Tracking provides a simple Python-based API for accessing Flow Production Tracking and integrating with other tools. This is the official API that is maintained by Flow Production Tracking Software (https://knowledge.autodesk.com/contact-support) The latest version can always be found at http://github.com/shotgunsoftware/python-api @@ -48,8 +48,8 @@ Integration and unit tests are provided. - A `tests/config` file (you can copy an example from `tests/example_config`). - Tests can be run individually like this: `nosetests --config="nose.cfg" tests/test_client.py` - Make sure to not forget the `--config="nose.cfg"` option. This option tells nose to use our config file. This will exclude python 2- and 3-specific files in the `/lib` directory, preventing a failure from being reported by nose for compilation due to incompatible syntax in those files. -- `test_client` and `tests_unit` use mock server interaction and do not require a ShotGrid instance to be available (no modifications to `tests/config` are necessary). -- `test_api` and `test_api_long` *do* require a ShotGrid instance, with a script key available for the tests. The server and script user values must be supplied in the `tests/config` file. The tests will add test data to your server based on information in your config. This data will be manipulated by the tests, and should not be used for other purposes. +- `test_client` and `tests_unit` use mock server interaction and do not require a Flow Production Tracking instance to be available (no modifications to `tests/config` are necessary). +- `test_api` and `test_api_long` *do* require a Flow Production Tracking instance, with a script key available for the tests. The server and script user values must be supplied in the `tests/config` file. The tests will add test data to your server based on information in your config. This data will be manipulated by the tests, and should not be used for other purposes. - To run all of the tests, use the shell script `run-tests`. ## Release process diff --git a/SECURITY.md b/SECURITY.md index b8899696a..c32c73245 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -4,18 +4,18 @@ At Autodesk, we know that the security of your data is critical to your studio’s operation. -As the industry shifts to the cloud, ShotGrid knows that security and service +As the industry shifts to the cloud, Flow Production Tracking knows that security and service models are more important than ever. The confidentiality, integrity, and availability of your content is at the top of our priority list. -Not only do we have a team of ShotGrid engineers dedicated to platform security +Not only do we have a team of Flow Production Tracking engineers dedicated to platform security and performance, we are also backed by Autodesk’s security team, also invests heavily in the security for broad range of industries and customers. We constantly reassess, develop, and improve our risk management program because we know that the landscape of security is ever-changing. -If you believe you have found a security vulnerability in any ShotGrid-owned +If you believe you have found a security vulnerability in any Flow Production Tracking-owned repository, please report it to us as described below. @@ -32,4 +32,4 @@ configurations, reproduction steps, exploit code, impact, etc. ## Additional Information -Please check out the [ShotGrid Security White Paper](https://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Administrator_ar_general_security_ar_security_white_paper_html). \ No newline at end of file +Please check out the [Flow Production Tracking Security White Paper](https://help.autodesk.com/view/SGSUB/ENU/?guid=SG_Administrator_ar_general_security_ar_security_white_paper_html). \ No newline at end of file diff --git a/azure-pipelines-templates/run-tests.yml b/azure-pipelines-templates/run-tests.yml index b73ca1eb0..34345a332 100644 --- a/azure-pipelines-templates/run-tests.yml +++ b/azure-pipelines-templates/run-tests.yml @@ -99,7 +99,7 @@ jobs: pytest -v --cov shotgun_api3 --cov-report xml --test-run-title="${{parameters.name}}-$(python.version)" displayName: Running tests env: - # Pass the values needed to authenticate with the Shotgun site and create some entities. + # Pass the values needed to authenticate with the Flow Production Tracking site and create some entities. # Remember, on a pull request from a client or on forked repos, those variables # will be empty! SG_SERVER_URL: $(ci_site) diff --git a/docs/advanced/packaging.rst b/docs/advanced/packaging.rst index 630a32f44..ce16e5430 100644 --- a/docs/advanced/packaging.rst +++ b/docs/advanced/packaging.rst @@ -14,7 +14,7 @@ There are caveats you need to be aware of when creating such an app. ******************************** HTTPS Validation and cacerts.txt ******************************** -When creating the connection to ShotGrid a file is used to validate the ShotGrid certificate. This +When creating the connection to Flow Production Tracking a file is used to validate the Flow Production Tracking certificate. This file is located at ``shotgun_api3/lib/httplib2/cacerts.txt``. Because this file is not a Python file imported by your application, py2app will not know to include it in your package, it will need to be explicitly specified in your ``setup.py`` file (edit the path based on the location @@ -31,7 +31,7 @@ following structure:: ./Contents/Resources/my_script.py Where in ``my_script.py`` you can access the ``cacerts.txt`` file using a relative path to pass it -into the ShotGrid connection's constructor:: +into the Flow Production Tracking connection's constructor:: ca_certs = os.path.join(os.path.dirname(__file__), 'shotgun_api3', 'cacerts.txt') sg = shotgun_api3.Shotgun('https://my-site.shotgrid.autodesk.com', 'script_name', 'script_key', diff --git a/docs/authentication.rst b/docs/authentication.rst index 445820248..5dbf750a8 100644 --- a/docs/authentication.rst +++ b/docs/authentication.rst @@ -2,7 +2,7 @@ Authentication ############## -In order to communicate with your ShotGrid server via the API, you must provide valid authentication credentials. The API allows you to authenticate with user-based, or script-based credentials. +In order to communicate with your Flow Production Tracking server via the API, you must provide valid authentication credentials. The API allows you to authenticate with user-based, or script-based credentials. ************************* User-based Authentication @@ -17,24 +17,24 @@ When authenticating as a user, you provide your normal login and password when i *************************** Script-based Authentication *************************** -In order to authenticate as a script, your script must be :ref:`registered with ShotGrid and have a valid API key `. When creating your :class:`shotgun_api3.Shotgun` object, provide the ``script_name`` and ``api_key``.:: +In order to authenticate as a script, your script must be :ref:`registered with Flow Production Tracking and have a valid API key `. When creating your :class:`shotgun_api3.Shotgun` object, provide the ``script_name`` and ``api_key``.:: sg = shotgun_api3.Shotgun("https://my-site.shotgrid.autodesk.com", script_name="compress", api_key="0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef") -.. note:: When using script-based authentication, we **strongly** recommend you register each script separately with ShotGrid and have individual API keys for each. This allows you to track down each of your scripts and the actions they are performing much more accurately in the event logs. +.. note:: When using script-based authentication, we **strongly** recommend you register each script separately with Flow Production Tracking and have individual API keys for each. This allows you to track down each of your scripts and the actions they are performing much more accurately in the event logs. .. _setting_up_shotgrid: Adding Script Users =================== -If you'll be using script-based authentication, you need to create a Script entity in ShotGrid. To create a new key, click the + button on the "Scripts" page in the Admin section and give your script a useful name. It's a good idea to add any other relevant information that be be helpful to your other friendly ShotGrid users such as a description of what the script does that is using this key, the email address of the maintainer, etc.: +If you'll be using script-based authentication, you need to create a Script entity in Flow Production Tracking. To create a new key, click the + button on the "Scripts" page in the Admin section and give your script a useful name. It's a good idea to add any other relevant information that be be helpful to your other friendly Flow Production Tracking users such as a description of what the script does that is using this key, the email address of the maintainer, etc.: .. image:: images/scripts_page.png -Once you save your new Script entity, ShotGrid will automatically generate an application key which will act as the script's password. The key will look something like this: ``0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef``. +Once you save your new Script entity, Flow Production Tracking will automatically generate an application key which will act as the script's password. The key will look something like this: ``0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef``. Why have different application keys for different scripts? ========================================================== @@ -42,24 +42,24 @@ We recommend you create a new Script entity (and application key) for each scrip Event Logging ============= -By default, events generated by scripts using an script-based authentication are logged in ShotGrid's event log. You can turn this off by un-checking the "Generate Events" checkbox either in the script detail page or from the main Scripts admin page in ShotGrid. +By default, events generated by scripts using an script-based authentication are logged in Flow Production Tracking's event log. You can turn this off by un-checking the "Generate Events" checkbox either in the script detail page or from the main Scripts admin page in Flow Production Tracking. .. note:: Turning off event logging will also prevent any email notifications from being triggered by your scripts since the email notifier relies on the event log to find events to notify for. -Scripts using user-based authentication will generate events similarly to if you were performing the same actions in the ShotGrid web application, though there is some additional metadata stored in the ``EventLogEntry`` that identifies the event as created from a script acting on behalf of the user. +Scripts using user-based authentication will generate events similarly to if you were performing the same actions in the Flow Production Tracking web application, though there is some additional metadata stored in the ``EventLogEntry`` that identifies the event as created from a script acting on behalf of the user. Why would you want to turn event logging off for scripts? --------------------------------------------------------- -It is an optimization that is not used often, but some users have integration scripts that are pushing data into ShotGrid just for reference, like publishes from their asset management system. This publish data is never changed later, so the data itself has the entire history, and the events would just clutter the event log. The event log can grow very large. So if you have no need to audit the history of what your script does, and it's generating an large amount of event log entries, you may find it's not necessary to create these events. +It is an optimization that is not used often, but some users have integration scripts that are pushing data into Flow Production Tracking just for reference, like publishes from their asset management system. This publish data is never changed later, so the data itself has the entire history, and the events would just clutter the event log. The event log can grow very large. So if you have no need to audit the history of what your script does, and it's generating an large amount of event log entries, you may find it's not necessary to create these events. *********** Permissions *********** -Users and scripts are both bound by the restrictions of their permission role in ShotGrid. The permission role is assigned by the **Permission Role** field for each entity type. +Users and scripts are both bound by the restrictions of their permission role in Flow Production Tracking. The permission role is assigned by the **Permission Role** field for each entity type. -For Scripts, the default permission role is "API Admin User" which allows full access to create, update, and delete entities and fields, including editing the "date created" audit field and creating event log entries. If you have other permission roles for ApiUsers, you can set the default role that will be assigned when a new script is created, in your ShotGrid site preferences. +For Scripts, the default permission role is "API Admin User" which allows full access to create, update, and delete entities and fields, including editing the "date created" audit field and creating event log entries. If you have other permission roles for ApiUsers, you can set the default role that will be assigned when a new script is created, in your Flow Production Tracking site preferences. -When using user-based authentication in your script, it will be bound by the permission role assigned to you in ShotGrid. For example, if you don't have access to edit the status field on Shots, your script won't be able to either. Attempting to perform actions that are prohibited by permissions will raise an appropriate exception. +When using user-based authentication in your script, it will be bound by the permission role assigned to you in Flow Production Tracking. For example, if you don't have access to edit the status field on Shots, your script won't be able to either. Attempting to perform actions that are prohibited by permissions will raise an appropriate exception. .. seealso:: `Permissions Documentation `_ diff --git a/docs/cookbook.rst b/docs/cookbook.rst index 756c44c5b..40e109894 100644 --- a/docs/cookbook.rst +++ b/docs/cookbook.rst @@ -29,7 +29,7 @@ and paste any of these into your own scripts. .. rubric:: Working With Files You'll probably be doing some work with files at your studio. This is a deep dive into some of -the inners of how ShotGrid handles files (also called Attachments) and the different ways to link +the inners of how Flow Production Tracking handles files (also called Attachments) and the different ways to link to them. .. toctree:: @@ -39,9 +39,9 @@ to them. .. rubric:: Working With Tasks -Scheduling is a complex beast. ShotGrid can handle lots of different types of functionality around +Scheduling is a complex beast. Flow Production Tracking can handle lots of different types of functionality around scheduling like split tasks, dependencies, and more. These docs walk you through the details of -how ShotGrid thinks when it's handling Task changes and how you can make your scripts do what you +how Flow Production Tracking thinks when it's handling Task changes and how you can make your scripts do what you need to do. .. toctree:: @@ -52,7 +52,7 @@ need to do. .. rubric:: Smart Cut Fields Smart Cut Fields are deprecated in favor of the -`new cut support added in ShotGrid v7.0 `_. +`new cut support added in Flow Production Tracking v7.0 `_. This documentation remains only to support studios who may not have upgraded to the new cut support features. diff --git a/docs/cookbook/attachments.rst b/docs/cookbook/attachments.rst index 5e41f0bd6..e265071e8 100644 --- a/docs/cookbook/attachments.rst +++ b/docs/cookbook/attachments.rst @@ -4,26 +4,26 @@ Details About Working With Files ################################ -The ShotGrid web application stores Files as Attachment entities. You can see these on a Files page, +The Flow Production Tracking web application stores Files as Attachment entities. You can see these on a Files page, or a Files tab on a detail page, for example. You can access Attachments via the API to create and modify uploaded files, url links, and local files, and link them to other entities (Shots, -Versions, etc). This entity works a lot like other entity types within ShotGrid with a few +Versions, etc). This entity works a lot like other entity types within Flow Production Tracking with a few exceptions which are detailed below. .. note:: - If you are simply looking for information about how to upload and link things in ShotGrid, this + If you are simply looking for information about how to upload and link things in Flow Production Tracking, this doc is not for you. Instead look at the :meth:`~shotgun_api3.Shotgun.upload` and :meth:`~shotgun_api3.Shotgun.upload_thumbnail` methods. This doc describes the detailed structure of the Attachment entities that represent files - in ShotGrid and how to interact with them. If that sounds cool too, then read on! + in Flow Production Tracking and how to interact with them. If that sounds cool too, then read on! .. versionadded:: 3.0.3 ***************** Default structure ***************** -The following is a list of the default fields that ShotGrid creates for Attachments. Your server +The following is a list of the default fields that Flow Production Tracking creates for Attachments. Your server instance may look slightly different depending on your own customizations. Many of these fields are optional and some are automatically filled in. These exceptions are listed below in the descriptions of each field. @@ -46,7 +46,7 @@ descriptions of each field. the size of the file in bytes. - **id** (:obj:`int`): - The internal ShotGrid id for this Attachment entity. + The internal Flow Production Tracking id for this Attachment entity. - **attachment_links** (:obj:`list`): A list of entity dictionaries used for linking Attachments to multiple entities. @@ -74,7 +74,7 @@ descriptions of each field. List of tags (as strings) that are currently assigned to the Attachment. - **image** (:obj:`str`): - The url location of the thumbnail image assigned to this Attachment. For uploads, ShotGrid + The url location of the thumbnail image assigned to this Attachment. For uploads, Flow Production Tracking automatically tries to create a thumbnail from the file. See :ref:`interpreting_image_field_strings`. Alternatively, you can assign your own thumbnail to an Attachment using the :meth:`~shotgun_api3.Shotgun.upload_thumbnail` method. @@ -94,8 +94,8 @@ Depending on the type of file the Attachment entity is representing, the value o will vary. - **Uploads** - Designated by ``link_type: 'upload'``, this represents a file that was uploaded to ShotGrid. - Uploading files to ShotGrid can be done using the :meth:`~shotgun_api3.Shotgun.upload` method. + Designated by ``link_type: 'upload'``, this represents a file that was uploaded to Flow Production Tracking. + Uploading files to Flow Production Tracking can be done using the :meth:`~shotgun_api3.Shotgun.upload` method. You cannot create an Attachment with an uploaded file directly. :: @@ -174,14 +174,14 @@ Updating Attachments ******************** You cannot modify the ``this_file`` field after you create an Attachment. If you need to provide a different file, you will have to create a new Attachment entity. Otherwise, the process for -updating Attachments is exactly like updating other entity types in ShotGrid and is the same for all +updating Attachments is exactly like updating other entity types in Flow Production Tracking and is the same for all Attachment types. See :meth:`~shotgun_api3.Shotgun.update` for more info. ******************** Deleting Attachments ******************** -The process of deleting an Attachment is just like other entities in ShotGrid. See +The process of deleting an Attachment is just like other entities in Flow Production Tracking. See :meth:`~shotgun_api3.Shotgun.delete` for more info. .. _local_files: @@ -190,14 +190,14 @@ The process of deleting an Attachment is just like other entities in ShotGrid. S Working With Local File Types ***************************** -We added support for linking to local files in the UI in ShotGrid Server v2.1. This doc covers how +We added support for linking to local files in the UI in Flow Production Tracking Server v2.1. This doc covers how to work with these local file links using the API. Requirements ============ - Python API v3.0.3+ -- ShotGrid Server v2.1.10+ +- Flow Production Tracking Server v2.1.10+ Structure of Local File Values ============================== @@ -275,7 +275,7 @@ Returns:: Creating & Updating Local file Fields ===================================== -When setting a file/link field value to a local file, only the ``local_path`` is mandatory. ShotGrid +When setting a file/link field value to a local file, only the ``local_path`` is mandatory. Flow Production Tracking will automatically select the appropriate matching local storage for your file based on the path. You can optionally specify the ``name`` and ``content_type`` fields if you wish to override their defaults. Any other keys that are provided will be ignored. @@ -289,7 +289,7 @@ defaults. Any other keys that are provided will be ignored. Optional display name of the local file. This is set to the filename by default. * **local_path** :obj:`str`: - The full local path to the file. ShotGrid will find the LocalStorage + The full local path to the file. Flow Production Tracking will find the LocalStorage that has the most specific match to this path and automatically assign that LocalStorage to the file. @@ -315,7 +315,7 @@ Returns:: 'url': 'file:///Users/kp/Movies/testing/test_movie_002.mov'}, 'type': 'Version'}] -The ``content_type`` was assigned a best-guess value based on the file extension. ShotGrid selected +The ``content_type`` was assigned a best-guess value based on the file extension. Flow Production Tracking selected the most appropriate specific LocalStorage match and assigned it to local_storage automatically. Un-setting local file field values diff --git a/docs/cookbook/examples/ami_version_packager.rst b/docs/cookbook/examples/ami_version_packager.rst index 3ac7917d0..5d3035014 100644 --- a/docs/cookbook/examples/ami_version_packager.rst +++ b/docs/cookbook/examples/ami_version_packager.rst @@ -20,7 +20,7 @@ It is intended to be used in conjunction with the script dicussed in :ref:`ami_h """ version_packager.py - This example script is meant to be run from an ActionMenuItem in ShotGrid. The menu item uses a custom + This example script is meant to be run from an ActionMenuItem in Flow Production Tracking. The menu item uses a custom protocol in order to launch this script, and is followed by the action 'package4client'. So the full url would be something like launchme://package4client?.... See: https://developer.shotgridsoftware.com/python-api/cookbook/examples/ami_handler.html @@ -29,9 +29,9 @@ It is intended to be used in conjunction with the script dicussed in :ref:`ami_h POST variables. For more information about it and accessing the variables in the ActionMenuItem POST request, See: http://developer.shotgridsoftware.com/python-api/examples/ami_handler - The purpose of this script is to download attachment files from ShotGrid, create an archive of them + The purpose of this script is to download attachment files from Flow Production Tracking, create an archive of them and copy them to a specified directory. You can invoke it with the following minimal example to connect - to ShotGrid, download any file that exists in the specified field ('sg_qt') for each selected_id passed from the + to Flow Production Tracking, download any file that exists in the specified field ('sg_qt') for each selected_id passed from the ActionMenu. Then it will create a single archive of the files and move it to the specified directory ('/path/where/i/want/to/put/the/archive/'). The archive is named with the Project Name, timestamp, and user login who ran the ActionMenuItem ('Demo_Project_2010-04-29-172210_kp.tar.gz'): @@ -59,7 +59,7 @@ It is intended to be used in conjunction with the script dicussed in :ref:`ami_h # --------------------------------------------------------------------------------------------- # Variables # --------------------------------------------------------------------------------------------- - # ShotGrid server auth info + # Flow Production Tracking server auth info shotgun_conf = { 'url':'https://my-site.shotgrid.autodesk.com', 'name':'YOUR_SCRIPT_NAME_HERE', @@ -79,7 +79,7 @@ It is intended to be used in conjunction with the script dicussed in :ref:`ami_h # ---------------------------------------------- - # Generic ShotGrid Exception Class + # Generic Flow Production Tracking Exception Class # ---------------------------------------------- class ShotgunException(Exception): pass @@ -125,7 +125,7 @@ It is intended to be used in conjunction with the script dicussed in :ref:`ami_h attachment_id = extract_attachment_id(attachment) if type(attachment_id) != int: return None - # download the attachment file from ShotGrid and write it to local disk + # download the attachment file from Flow Production Tracking and write it to local disk logger.info("Downloading Attachment #%s" % (attachment_id)) stream = sg.download_attachment(attachment_id) try: diff --git a/docs/cookbook/examples/basic_create_shot.rst b/docs/cookbook/examples/basic_create_shot.rst index 5c70585cf..4a9ece5f6 100644 --- a/docs/cookbook/examples/basic_create_shot.rst +++ b/docs/cookbook/examples/basic_create_shot.rst @@ -27,7 +27,7 @@ This will create a new Shot named "100_010" in the Project "Gunslinger" (which h - ``data`` is a list of key/value pairs where the key is the column name to update and the value is the the value to set. -- ``sg`` is the ShotGrid API instance you created in :ref:`example_sg_instance`. +- ``sg`` is the Flow Production Tracking API instance you created in :ref:`example_sg_instance`. - ``create()`` is the :meth:`shotgun_api3.Shotgun.create` API method we are calling. We pass in the entity type we're searching for and the data we're setting. @@ -44,11 +44,11 @@ The variable ``result`` now contains a dictionary hash with the Shot information 'type': 'Shot' } -In addition, ShotGrid has returned the ``id`` that it has assigned to the Shot, as well as a +In addition, Flow Production Tracking has returned the ``id`` that it has assigned to the Shot, as well as a ``type`` value. ``type`` is provided for convenience simply to help you identify what entity type -this dictionary represents. It does not correspond to any field in ShotGrid. +this dictionary represents. It does not correspond to any field in Flow Production Tracking. -ShotGrid will *always* return the ``id`` and ``type`` keys in the dictionary when there are results +Flow Production Tracking will *always* return the ``id`` and ``type`` keys in the dictionary when there are results representing an entity. The Complete Example @@ -66,7 +66,7 @@ The Complete Example # -------------------------------------- # Globals # -------------------------------------- - # make sure to change this to match your ShotGrid server and auth credentials. + # make sure to change this to match your Flow Production Tracking server and auth credentials. SERVER_PATH = "https://my-site.shotgrid.autodesk.com" SCRIPT_NAME = 'my_script' SCRIPT_KEY = '27b65d7063f46b82e670fe807bd2b6f3fd1676c1' diff --git a/docs/cookbook/examples/basic_create_shot_task_template.rst b/docs/cookbook/examples/basic_create_shot_task_template.rst index 4144bf460..0fa3b0828 100644 --- a/docs/cookbook/examples/basic_create_shot_task_template.rst +++ b/docs/cookbook/examples/basic_create_shot_task_template.rst @@ -1,6 +1,6 @@ Create a Shot with a Task Template ================================== -Creating a new Shot with a Task Template is just like linking it to another entity, but ShotGrid will apply the Task Template in the background and create the appropriate Tasks on the Shot for you. +Creating a new Shot with a Task Template is just like linking it to another entity, but Flow Production Tracking will apply the Task Template in the background and create the appropriate Tasks on the Shot for you. Find the Task Template ---------------------- @@ -31,7 +31,7 @@ Now we can create the Shot with the link to the ``TaskTemplate`` to apply. result = sg.create('Shot', data) This will create a new Shot named "100_010" linked to the TaskTemplate "3D Shot Template" and -ShotGrid will then create the Tasks defined in the template and link them to the Shot you just +Flow Production Tracking will then create the Tasks defined in the template and link them to the Shot you just created. - ``data`` is a list of key/value pairs where the key is the column name to update and the value is @@ -65,7 +65,7 @@ If we now search for the Tasks linked to the Shot, we'll find the Tasks that mat tasks = sg.find('Task', filters=[['entity', 'is', result]]) .. note:: You can use an entity dictionary that was returned from the API in a filter as we have - done above. ShotGrid will only look at the ``id`` and ``type`` keys and will ignore the rest. + done above. Flow Production Tracking will only look at the ``id`` and ``type`` keys and will ignore the rest. This is a handy way to pass around entity dictionaries without having to reformat them. Now the ``tasks`` variable contains the following:: diff --git a/docs/cookbook/examples/basic_create_version_link_shot.rst b/docs/cookbook/examples/basic_create_version_link_shot.rst index bdec9ef46..71e6f3e1e 100644 --- a/docs/cookbook/examples/basic_create_version_link_shot.rst +++ b/docs/cookbook/examples/basic_create_version_link_shot.rst @@ -1,6 +1,6 @@ Create a Version Linked to a Shot ================================= -You've just created a sweet new Version of your shot. Now you want to update ShotGrid and create a +You've just created a sweet new Version of your shot. Now you want to update Flow Production Tracking and create a new ``Version`` entity linked to the Shot. Find the Shot @@ -28,7 +28,7 @@ variable from the previous search) and the Task Name, which maps to the ``conten .. note:: Linking a Task to the Version is good practice. By doing so it is easy for users to see at what stage a particular Version was created, and opens up other possibilities for tracking - in ShotGrid. We highly recommend doing this whenever possible. + in Flow Production Tracking. We highly recommend doing this whenever possible. Create the Version ------------------ diff --git a/docs/cookbook/examples/basic_delete_shot.rst b/docs/cookbook/examples/basic_delete_shot.rst index 5041ee269..5275735d6 100644 --- a/docs/cookbook/examples/basic_delete_shot.rst +++ b/docs/cookbook/examples/basic_delete_shot.rst @@ -3,7 +3,7 @@ Delete A Shot Calling :meth:`~shotgun_api3.Shotgun.delete` -------------------------------------------- -Deleting an entity in ShotGrid is pretty straight-forward. No extraneous steps required.:: +Deleting an entity in Flow Production Tracking is pretty straight-forward. No extraneous steps required.:: result = sg.delete("Shot", 40435) @@ -28,7 +28,7 @@ The Complete Example # -------------------------------------- # Globals # -------------------------------------- - # make sure to change this to match your ShotGrid server and auth credentials. + # make sure to change this to match your Flow Production Tracking server and auth credentials. SERVER_PATH = "https://my-site.shotgrid.autodesk.com" SCRIPT_NAME = 'my_script' SCRIPT_KEY = '27b65d7063f46b82e670fe807bd2b6f3fd1676c1' diff --git a/docs/cookbook/examples/basic_find_shot.rst b/docs/cookbook/examples/basic_find_shot.rst index 19fed7cf9..88c8c81e0 100644 --- a/docs/cookbook/examples/basic_find_shot.rst +++ b/docs/cookbook/examples/basic_find_shot.rst @@ -14,7 +14,7 @@ Pretty simple right? Well here's a little more insight into what's going on. - ``filters`` is an list of filter conditions. In this example we are filtering for Shots where the ``id`` column is **40435**. -- ``sg`` is the ShotGrid API instance. +- ``sg`` is the Flow Production Tracking API instance. - ``find_one()`` is the :meth:`~shotgun_api3.Shotgun.find_one` API method we are calling. We provide it with the entity type we're searching for and our filters. @@ -26,7 +26,7 @@ So what does this return? The variable result now contains:: {'type': 'Shot','id': 40435} By default, :meth:`~shotgun_api3.Shotgun.find_one` returns a single dictionary object with -the ``type`` and ``id`` fields. So in this example, we found a Shot matching that id, and ShotGrid +the ``type`` and ``id`` fields. So in this example, we found a Shot matching that id, and Flow Production Tracking returned it as a dictionary object with ``type`` and ``id`` keys . How do we know that result contains the Shot dictionary object? You can trust us... but just to be @@ -52,7 +52,7 @@ The Complete Example # -------------------------------------- # Globals # -------------------------------------- - # make sure to change this to match your ShotGrid server and auth credentials. + # make sure to change this to match your Flow Production Tracking server and auth credentials. SERVER_PATH = "https://my-site.shotgrid.autodesk.com" SCRIPT_NAME = 'my_script' SCRIPT_KEY = '27b65d7063f46b82e670fe807bd2b6f3fd1676c1' diff --git a/docs/cookbook/examples/basic_sg_instance.rst b/docs/cookbook/examples/basic_sg_instance.rst index fed8a6c51..b39c78432 100644 --- a/docs/cookbook/examples/basic_sg_instance.rst +++ b/docs/cookbook/examples/basic_sg_instance.rst @@ -1,11 +1,11 @@ .. _example_sg_instance: -Create a ShotGrid API instance -============================= +Create a Flow Production Tracking API instance +============================================== -This example shows you how to establish your initial connection to ShotGrid using script-based -authentication. ``sg`` represents your ShotGrid API instance. Be sure you've read -:ref:`Setting Up ShotGrid for API Access `. +This example shows you how to establish your initial connection to Flow Production Tracking using script-based +authentication. ``sg`` represents your Flow Production Tracking API instance. Be sure you've read +:ref:`Setting Up Flow Production Tracking for API Access `. :: import pprint # Useful for debugging @@ -22,5 +22,5 @@ authentication. ``sg`` represents your ShotGrid API instance. Be sure you've rea # sg connection object pprint.pprint([symbol for symbol in sorted(dir(sg)) if not symbol.startswith('_')]) -For further information on what you can do with this ShotGrid object you can read the +For further information on what you can do with this Flow Production Tracking object you can read the :ref:`API reference `. \ No newline at end of file diff --git a/docs/cookbook/examples/basic_update_shot.rst b/docs/cookbook/examples/basic_update_shot.rst index 5d1b4ff9b..52e57e70e 100644 --- a/docs/cookbook/examples/basic_update_shot.rst +++ b/docs/cookbook/examples/basic_update_shot.rst @@ -17,7 +17,7 @@ This will update the ``description`` and the ``sg_status_list`` fields for the S - ``data`` is a list of key/value pairs where the key is the field name to update and the value to update it to. -- ``sg`` is the ShotGrid API instance. +- ``sg`` is the Flow Production Tracking API instance. - ``update()`` is the :meth:`shotgun_api3.Shotgun.update` API method we are calling. We provide it with the entity type we're updating, the ``id`` of the entity, and the data we're updating it with. @@ -33,11 +33,11 @@ The variable ``result`` now contains the Shot object that with the updated value 'id': 40435 } -In addition, ShotGrid has returned the ``id`` for the Shot, as well as a ``type`` value. ``type`` +In addition, Flow Production Tracking has returned the ``id`` for the Shot, as well as a ``type`` value. ``type`` is provided for convenience simply to help you identify what entity type this dictionary represents. -It does not correspond to any field in ShotGrid. +It does not correspond to any field in Flow Production Tracking. -ShotGrid will *always* return the ``id`` and ``type`` keys in the dictionary when there are results +Flow Production Tracking will *always* return the ``id`` and ``type`` keys in the dictionary when there are results representing an entity. The Complete Example @@ -55,7 +55,7 @@ The Complete Example # -------------------------------------- # Globals # -------------------------------------- - # make sure to change this to match your ShotGrid server and auth credentials. + # make sure to change this to match your Flow Production Tracking server and auth credentials. SERVER_PATH = "https://my-site.shotgrid.autodesk.com" SCRIPT_NAME = 'my_script' SCRIPT_KEY = '27b65d7063f46b82e670fe807bd2b6f3fd1676c1' diff --git a/docs/cookbook/examples/basic_upload_thumbnail_version.rst b/docs/cookbook/examples/basic_upload_thumbnail_version.rst index ed8b51827..2ae399d5f 100644 --- a/docs/cookbook/examples/basic_upload_thumbnail_version.rst +++ b/docs/cookbook/examples/basic_upload_thumbnail_version.rst @@ -1,10 +1,10 @@ Upload a Thumbnail for a Version ================================ -So you've created a new Version of a Shot, and you've updated ShotGrid, but now you want to upload a +So you've created a new Version of a Shot, and you've updated Flow Production Tracking, but now you want to upload a beauty frame to display as the thumbnail for your Version. We'll assume you already have the image made (located on your machine at ``/v1/gun/s100/010/beauties/anim/100_010_animv1.jpg``) . And since -you've just created your Version in ShotGrid, you know its ``id`` is **214**. +you've just created your Version in Flow Production Tracking, you know its ``id`` is **214**. .. note:: If you upload a movie file or image to the ``sg_uploaded_movie`` field and you have transcoding enabled on your server (the default for hosted sites), a thumbnail will be @@ -18,9 +18,9 @@ Upload the Image using :meth:`~shotgun_api3.Shotgun.upload_thumbnail` sg.upload_thumbnail("Version", 214, "/v1/gun/s100/010/beauties/anim/100_010_animv1.jpg") -ShotGrid will take care of resizing the thumbnail for you. If something does go wrong, an exception +Flow Production Tracking will take care of resizing the thumbnail for you. If something does go wrong, an exception will be thrown and you'll see the error details. .. note:: The result returned by :meth:`~shotgun_api3.Shotgun.upload_thumbnail` is an integer - representing the id of a special ``Attachment`` entity in ShotGrid. Working with Attachments + representing the id of a special ``Attachment`` entity in Flow Production Tracking. Working with Attachments is beyond the scope of this example. :) \ No newline at end of file diff --git a/docs/cookbook/examples/svn_integration.rst b/docs/cookbook/examples/svn_integration.rst index c0c3730b5..f98de2637 100644 --- a/docs/cookbook/examples/svn_integration.rst +++ b/docs/cookbook/examples/svn_integration.rst @@ -4,10 +4,10 @@ Subversion (SVN) Integration ############################ -Integrating ShotGrid with Subversion consists of two basic parts: +Integrating Flow Production Tracking with Subversion consists of two basic parts: - Setup a post-commit hook in Subversion. -- Create a ShotGrid API script to create the Revision in ShotGrid. This script will be called by +- Create a Flow Production Tracking API script to create the Revision in Flow Production Tracking. This script will be called by the post-commit hook. **************** @@ -21,7 +21,7 @@ To setup the post-commit hook: as a starting point for the real thing. - Create your very own executable script, and save it in the same ``hooks`` folder, name it ``post-commit``, and give it executable permission. -- In your ``post-commit`` script, invoke your ShotGrid API script. +- In your ``post-commit`` script, invoke your Flow Production Tracking API script. If this is entirely new to you, we highly suggest reading up on the topic. O'Reilly has `a free online guide for Subversion 1.5 and 1.6 @@ -55,14 +55,14 @@ Explanation of selected lines our ``REPOS`` and ``REV`` values, first with the ``author``, and then with ``log`` subcommand. These are actually the first two original lines of code - everything else to this point was pre-written already in the ``post-commit.tmpl`` file. nice :) -- line ``10``: This is the absolute path to our ShotGrid API Script. +- line ``10``: This is the absolute path to our Flow Production Tracking API Script. -****************** -ShotGrid API Script -****************** +*********************************** +Flow Production Tracking API Script +*********************************** -This script will create the Revision and populate it with some metadata using the ShotGrid Python -API. It will create our Revision in ShotGrid along with the author, comment, and because we use +This script will create the Revision and populate it with some metadata using the Flow Production Tracking Python +API. It will create our Revision in Flow Production Tracking along with the author, comment, and because we use Trac (a web-based interface for Subversion), it will also populate a URL field with a clickable link to the Revision. @@ -105,7 +105,7 @@ link to the Revision. # Set the Trac path for this specific revision revision_url = REVISIONS_PATH + revision_code - # Validate that author is a valid ShotGrid HumanUser + # Validate that author is a valid Flow Production Tracking HumanUser result = sg.find_one("HumanUser", [['login', 'is', author]]) if result: # Create Revision @@ -121,33 +121,33 @@ link to the Revision. # Send error message if valid HumanUser is not found else: - print("Unable to find valid ShotGrid User with login: "+author+", Revision not created in ShotGrid.") + print("Unable to find valid Flow Production Tracking User with login: "+author+", Revision not created in Flow Production Tracking.") Explanation of selected lines: ============================== -- line ``14``: This should be the URL to your instance of ShotGrid. +- line ``14``: This should be the URL to your instance of Flow Production Tracking. - lines ``15-16``: Make sure you get these values from the "Scripts" page in the Admin section of - the ShotGrid web application. If you're not sure how to do this, check out :doc:`authentication`. + the Flow Production Tracking web application. If you're not sure how to do this, check out :doc:`authentication`. - line ``17``: This is the address of Trac, our web-based interface that we use with Subversion. You may use a different interface, or none at all, so feel free to adjust this line or ignore it as your case may be. -- line ``18``: Every Revision in ShotGrid must have a Project, which is passed to the API as a +- line ``18``: Every Revision in Flow Production Tracking must have a Project, which is passed to the API as a dictionary with two keys, the ``type`` and the ``id``. Of course the ``type`` value will always remain ``Project`` (case sensitive), but the ``id`` will change by Project. To find out the - ``id`` of your Project, go to the Projects page in the ShotGrid web application, locate the + ``id`` of your Project, go to the Projects page in the Flow Production Tracking web application, locate the Project where you want your Revisions created, and then locate its ``id`` field (which you may need to display - if you don't see it, right click on any column header then select "Insert Column" > "Id"). Note that for this example we assume that all Revisions in this Subversion repository will belong to the same Project. - lines ``28-31``: Grab the values from the objects that were left for us in the environment. - line ``34``: Add the Revision number to complete the path of our Trac url. -- line ``37``: Make sure that a valid User exists in ShotGrid. In our example, we assume that our - Users' ShotGrid logins match their Subversion names. If the user exists in ShotGrid, that +- line ``37``: Make sure that a valid User exists in Flow Production Tracking. In our example, we assume that our + Users' Flow Production Tracking logins match their Subversion names. If the user exists in Flow Production Tracking, that user's ``id`` will be returned as ``result['id']``, which we will need later on in line 46. -- lines ``40-48``: Use all the meta data we've gathered to create a Revision in ShotGrid. If none +- lines ``40-48``: Use all the meta data we've gathered to create a Revision in Flow Production Tracking. If none of these lines make any sense, check out more on the :meth:`~shotgun_api3.Shotgun.create` method here. Line 41 deserves special mention: notice that we define a dictionary called ``url`` that has three important keys: ``content_type``, ``url``, and ``name``, and we then pass this in as @@ -164,7 +164,7 @@ My post-commit script is simply not running. I can run it manually, but commits Make sure that the script is has explicitly been made executable and that all users who will invoke it have appropriate permissions for the script and that folders going back to root. -My ShotGrid API script is not getting called by the post-commit hook. -==================================================================== +My Flow Production Tracking API script is not getting called by the post-commit hook. +===================================================================================== Make sure that the script is called using its absolute path. diff --git a/docs/cookbook/smart_cut_fields.rst b/docs/cookbook/smart_cut_fields.rst index 23d8669da..0949386cf 100644 --- a/docs/cookbook/smart_cut_fields.rst +++ b/docs/cookbook/smart_cut_fields.rst @@ -5,7 +5,7 @@ Smart Cut Fields ################ .. warning:: - Smart Cut Fields should be considered deprecated. ShotGrid v7.0, introduced a new version of + Smart Cut Fields should be considered deprecated. Flow Production Tracking v7.0, introduced a new version of cut support. `Read the Cut Support Documentation here `_. If you want to work with 'smart' cut fields through the API, your script should use a corresponding diff --git a/docs/cookbook/tasks/split_tasks.rst b/docs/cookbook/tasks/split_tasks.rst index ade069f99..45dfc303f 100644 --- a/docs/cookbook/tasks/split_tasks.rst +++ b/docs/cookbook/tasks/split_tasks.rst @@ -5,7 +5,7 @@ Split Tasks ########### Split tasks can be created and edited via the API but must comply to some rules. Before going -further, a good understanding of :ref:`how ShotGrid handles task dates is useful `. +further, a good understanding of :ref:`how Flow Production Tracking handles task dates is useful `. ******** Overview diff --git a/docs/cookbook/tasks/task_dependencies.rst b/docs/cookbook/tasks/task_dependencies.rst index 48a09e686..a5cfc20be 100644 --- a/docs/cookbook/tasks/task_dependencies.rst +++ b/docs/cookbook/tasks/task_dependencies.rst @@ -5,7 +5,7 @@ Task Dependencies ################# Task dependencies work the same way in the API as they do in the UI. You can filter and sort on -any of the fields. For information about Task Dependencies in ShotGrid, check out the `main +any of the fields. For information about Task Dependencies in Flow Production Tracking, check out the `main documentation page on our support site `_ @@ -232,7 +232,7 @@ Our Tasks now look like this:: ... Because the "Anm" Task ``start_date`` depends on the ``due_date`` of the "Layout" Task, this -change creates a dependency violation. The update succeeds, but ShotGrid has also set the +change creates a dependency violation. The update succeeds, but Flow Production Tracking has also set the ``dependency_violation`` field to ``True`` and has also updated the ``pinned`` field to ``True``. The ``pinned`` field simply means that if the upstream Task(s) are moved, the "Anm" Task will no @@ -315,7 +315,7 @@ Updating the ``pinned`` field on a Task with a Dependency Violation Let's go back a couple of steps to where our "Anm" Task had a Dependency Violation because we had moved the Start Date up before the "Layout" Task End Date. Remember that the ``pinned`` field -was also ``True``. If we simply update the ``pinned`` field to be ``False``, ShotGrid will also +was also ``True``. If we simply update the ``pinned`` field to be ``False``, Flow Production Tracking will also automatically update the Task dates to satisfy the upstream dependencies and reset the ``dependency_violation`` value to ``False``:: @@ -349,7 +349,7 @@ Our Tasks now look like this:: ... -Notice by updating ``pinned`` to ``False``, ShotGrid also updated the ``start_date`` and +Notice by updating ``pinned`` to ``False``, Flow Production Tracking also updated the ``start_date`` and ``due_date`` fields of our "Anm" Task so it will satisfy the upstream Task dependencies. And since that succeeded, the ``dependency_violation`` field has also been set to ``False`` diff --git a/docs/cookbook/tasks/updating_tasks.rst b/docs/cookbook/tasks/updating_tasks.rst index 3f8f9d5b7..97eb8c7b7 100644 --- a/docs/cookbook/tasks/updating_tasks.rst +++ b/docs/cookbook/tasks/updating_tasks.rst @@ -1,11 +1,11 @@ .. _updating_tasks: -####################################### -Updating Task Dates: How ShotGrid Thinks -####################################### +######################################################## +Updating Task Dates: How Flow Production Tracking Thinks +######################################################## When updating Task dates in an API update() request, there is no specified order to the values that -are passed in. ShotGrid also does automatic calculation of the``start_date``,``due_date``, and ``duration`` fields for convenience. In order to clarify how updates are handled by ShotGrid we are +are passed in. Flow Production Tracking also does automatic calculation of the``start_date``,``due_date``, and ``duration`` fields for convenience. In order to clarify how updates are handled by Flow Production Tracking we are providing some general rules below and examples of what will happen when you make updates to your Tasks. @@ -16,12 +16,12 @@ General Rules - Updating the ``start_date`` automatically updates the ``due_date`` (``duration`` remains constant) - Updating the ``due_date`` automatically updates the ``duration`` (``start_date`` remains constant) - Updating the ``duration`` automatically updates the ``due_date`` (``start_date`` remains constant) -- When updating Task values, ShotGrid sets schedule fields (``milestone``, ``duration``, +- When updating Task values, Flow Production Tracking sets schedule fields (``milestone``, ``duration``, ``start_date``, ``due_date``) after all other fields, because the Project and Task Assignees affect schedule calculations. - If ``start_date`` and ``due_date`` are both set, ``duration`` is ignored (``duration`` can often be wrong since it's easy to calculate scheduling incorrectly). -- If both ``start_date`` and ``due_date`` are provided, ShotGrid sets ``start_date`` before +- If both ``start_date`` and ``due_date`` are provided, Flow Production Tracking sets ``start_date`` before ``due_date``. - Set ``milestone`` before other schedule fields (because ``start_date``, ``due_date``, and ``duration`` get lost if ``milestone`` is not set to ``False`` first) @@ -39,7 +39,7 @@ Examples The following examples show what the resulting Task object will look like after being run on the initial Task object listed under the header of each section. -The ``duration`` values in the following examples assume your ShotGrid instance is set to +The ``duration`` values in the following examples assume your Flow Production Tracking instance is set to 10-hour work days. If your server is configured with a different setting, the ``duration`` values will vary. diff --git a/docs/cookbook/tutorials.rst b/docs/cookbook/tutorials.rst index 18235db89..99f56da02 100644 --- a/docs/cookbook/tutorials.rst +++ b/docs/cookbook/tutorials.rst @@ -3,7 +3,7 @@ Examples ######## Here's a list of various simple tutorials to walk through that should provide you with a good base -understanding of how to use the ShotGrid API and what you can do with it. +understanding of how to use the Flow Production Tracking API and what you can do with it. ***** Basic diff --git a/docs/cookbook/usage_tips.rst b/docs/cookbook/usage_tips.rst index 389eb5227..620a96426 100644 --- a/docs/cookbook/usage_tips.rst +++ b/docs/cookbook/usage_tips.rst @@ -2,7 +2,7 @@ API Usage Tips ############## -Below is a list of helpful tips when using the ShotGrid API. We have tried to make the API very +Below is a list of helpful tips when using the Flow Production Tracking API. We have tried to make the API very simple to use with predictable results while remaining a powerful tool to integrate with your pipeline. However, there's always a couple of things that crop up that our users might not be aware of. Those are the types of things you'll find below. We'll be adding to this document over @@ -28,7 +28,7 @@ Don't:: *************** Multi-threading *************** -The ShotGrid API is not thread-safe. If you want to do threading we strongly suggest that you use +The Flow Production Tracking API is not thread-safe. If you want to do threading we strongly suggest that you use one connection object per thread and not share the connection. .. _entity-fields: @@ -105,7 +105,7 @@ example of a field that resides on the connection entity between Playlists and V connection entity is appropriately called `PlaylistVersionConnection`. Because any Version can exist in multiple Playlists, the sort order isn't specific to the Version, it's specific to each _instance_ of the Version in a Playlist. These instances are tracked using connection -entities in Shtogun and are accessible just like any other entity type in ShotGrid. +entities in Shtogun and are accessible just like any other entity type in Flow Production Tracking. To find information about your Versions in the Playlist "Director Review" (let's say it has an ``id`` of 4). We'd run a query like so:: @@ -175,9 +175,9 @@ We can pull in field values from the linked Playlist and Version entities using entity. The field we are interested on the Version is ``code``. Put those together with our f riend the dot and we have ``version.Version.code``. -******************************************* -ShotGrid UI fields not available via the API -******************************************* +************************************************************ +Flow Production Tracking UI fields not available via the API +************************************************************ Summary type fields like Query Fields and Pipeline Step summary fields are currently only available via the UI. Some other fields may not work as expected through the API because they are "display @@ -244,14 +244,14 @@ To see the logging output in stdout, define a streamhandler in your script:: import shotgun_api3 as shotgun logging.basicConfig(level=logging.DEBUG) -To write logging output from the ShotGrid API to a file, define a file handler in your script:: +To write logging output from the Flow Production Tracking API to a file, define a file handler in your script:: import logging import shotgun_api3 as shotgun logging.basicConfig(level=logging.DEBUG, filename='/path/to/your/log') To suppress the logging output from the API in a script which uses logging, set the level of the -ShotGrid logger to a higher level:: +Flow Production Tracking logger to a higher level:: import logging import shotgun_api3 as shotgun @@ -267,7 +267,7 @@ Optimizations Combining Related Queries ========================= Reducing round-trips for data via the API can significantly improve the speed of your application. -Much like "Bubble Fields" / "Field Hopping" in the UI, we can poll ShotGrid for data on the fields +Much like "Bubble Fields" / "Field Hopping" in the UI, we can poll Flow Production Tracking for data on the fields of entities linked to our main query, both as a part of the query parameters as well as in the data returned. diff --git a/docs/index.rst b/docs/index.rst index 177453e46..5eef5a61c 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -1,21 +1,21 @@ -################### -ShotGrid Python API3 -################### +#################################### +Flow Production Tracking Python API3 +#################################### Release |version|. (:ref:`Installation `) .. image:: https://img.shields.io/badge/shotgun-api-blue.svg -ShotGrid provides a simple Python-based API for accessing ShotGrid and integrating with other tools. -The ShotGrid API allows users to integrate their tools with ShotGrid very easily. Using this simple -but powerful python module , you can quickly get your scripts integrated with ShotGrid's CRUD-based +Flow Production Tracking provides a simple Python-based API for accessing Flow Production Tracking and integrating with other tools. +The Flow Production Tracking API allows users to integrate their tools with Flow Production Tracking very easily. Using this simple +but powerful python module , you can quickly get your scripts integrated with Flow Production Tracking's CRUD-based API. Because the needs of every studio can prove to be very different, we don't include a lot of "automation" or "smarts" in our API. We have kept it pretty low-level and leave most of those decisions to you. The API is powerful enough you can write your own "smarts" in a wrapper on top -of the ShotGrid API. +of the Flow Production Tracking API. .. _pythonoverviewvideo: diff --git a/docs/installation.rst b/docs/installation.rst index c40f61560..b082b1669 100644 --- a/docs/installation.rst +++ b/docs/installation.rst @@ -9,10 +9,10 @@ Minimum Requirements - Python 3.7 .. note:: - Some features of the API are only supported by more recent versions of the ShotGrid server. + Some features of the API are only supported by more recent versions of the Flow Production Tracking server. These features are added to the Python API in a backwards compatible way so that existing scripts will continue to function as expected. Accessing a method that is not supported for - your version of ShotGrid will raise an appropriate exception. In general, we attempt to + your version of Flow Production Tracking will raise an appropriate exception. In general, we attempt to document these where possible. ****************************** diff --git a/docs/reference.rst b/docs/reference.rst index e7558f65c..c4da96caf 100644 --- a/docs/reference.rst +++ b/docs/reference.rst @@ -26,9 +26,9 @@ Shotgun() .. autoclass:: Shotgun :show-inheritance: -*************** -ShotGrid Methods -*************** +******************************** +Flow Production Tracking Methods +******************************** The majority of functionality is contained within the :class:`~shotgun_api3.Shotgun` class. The documentation for all of the methods you'll need in your scripts lives in here. @@ -91,7 +91,7 @@ The documentation for all of the methods you'll need in your scripts lives in he Shotgun.followers Shotgun.following -.. rubric:: Working with the ShotGrid Schema and Preferences +.. rubric:: Working with the Flow Production Tracking Schema and Preferences .. autosummary:: :nosignatures: @@ -109,7 +109,7 @@ The documentation for all of the methods you'll need in your scripts lives in he Connection & Authentication =========================== -These methods are used for connecting and authenticating with your ShotGrid server. Most of +These methods are used for connecting and authenticating with your Flow Production Tracking server. Most of this is done automatically when you instantiate your instance. But if you need finer-grain control, these methods are available. @@ -169,7 +169,7 @@ Methods that handle uploading and downloading files including thumbnails. Activity Stream =============== -Methods that relate to the activity stream and following of entities in ShotGrid. +Methods that relate to the activity stream and following of entities in Flow Production Tracking. .. automethod:: Shotgun.activity_stream_read .. automethod:: Shotgun.follow @@ -177,10 +177,10 @@ Methods that relate to the activity stream and following of entities in ShotGrid .. automethod:: Shotgun.followers .. automethod:: Shotgun.following -Working with the ShotGrid Schema -=============================== +Working with the Flow Production Tracking Schema +================================================ -Methods allow you to introspect and modify the ShotGrid schema. +Methods allow you to introspect and modify the Flow Production Tracking schema. .. automethod:: Shotgun.schema_entity_read .. automethod:: Shotgun.schema_field_read @@ -195,7 +195,7 @@ Methods allow you to introspect and modify the ShotGrid schema. Exceptions ********** -These are the various exceptions that the ShotGrid API will raise. +These are the various exceptions that the Flow Production Tracking API will raise. .. autoclass:: shotgun_api3.ShotgunError :show-inheritance: @@ -479,7 +479,7 @@ Valid Operators By Data Type Additional Filter Presets ========================= -As of ShotGrid version 7.0 it is possible to also use filter presets. These presets provide a simple +As of Flow Production Tracking version 7.0 it is possible to also use filter presets. These presets provide a simple way to specify powerful query filters that would otherwise be costly and difficult to craft using traditional filters. @@ -651,7 +651,7 @@ date_time :range: Year must be >= 1970 .. note:: - Datetimes are stored as UTC on the server. The ShotGrid API is configured to automatically + Datetimes are stored as UTC on the server. The Flow Production Tracking API is configured to automatically convert between client local time and UTC. This can be overridden. duration @@ -852,15 +852,15 @@ There are three possible states for values returned by an ``image`` field: Event Types *********** -Whenever a user makes a change to any data in ShotGrid, an event log entry record is created, -capturing the value before and after. ShotGrid also logs some additional useful events that help keep -track of various activity on your ShotGrid instance. +Whenever a user makes a change to any data in Flow Production Tracking, an event log entry record is created, +capturing the value before and after. Flow Production Tracking also logs some additional useful events that help keep +track of various activity on your Flow Production Tracking instance. Event-based Triggers ==================== Events are particularlly useful when used in conjunction with a trigger framework like the -`ShotGrid Event Daemon `_. This allows you to +`Flow Production Tracking Event Daemon `_. This allows you to write plug-ins that watch for certain types of events and then run code when they occur. Structure of Event Types @@ -870,11 +870,11 @@ The basic structure of event types is broken into 3 parts: ``Application_EntityType_Action`` -- ``Application``: Is always "Shotgun" for events automatically created by the ShotGrid server. - Other ShotGrid products may use their name in here, for example, Toolkit has its own events +- ``Application``: Is always "Shotgun" for events automatically created by the Flow Production Tracking server. + Other Flow Production Tracking products may use their name in here, for example, Toolkit has its own events that it logs and the application portion is identified by "Toolkit". If you decide to use the EventLogEntry entity to log events for your scripts or tools, you would use your tool name here. -- ``EntityType``: This is the entity type in ShotGrid that was acted upon (eg. Shot, Asset, etc.) +- ``EntityType``: This is the entity type in Flow Production Tracking that was acted upon (eg. Shot, Asset, etc.) - ``Action``: The general action that was taken. (eg. New, Change, Retirement, Revival) @@ -892,14 +892,14 @@ deleted, and revived. They follow this pattern: Additional Event Types ====================== -These are _some_ of the additional event types that are logged by ShotGrid: +These are _some_ of the additional event types that are logged by Flow Production Tracking: - ``Shotgun_Attachment_View``: an Attachment (file) was viewed by a user. - ``Shotgun_Reading_Change``: a threaded entity has been marked read or unread. For example, a Note was read by a user. The readings are unique to the entity<->user connection so when a Note is read by user "joe" it may still be unread by user "jane". -- ``Shotgun_User_Login``: a user logged in to ShotGrid. -- ``Shotgun_User_Logout``: a user logged out of ShotGrid. +- ``Shotgun_User_Login``: a user logged in to Flow Production Tracking. +- ``Shotgun_User_Logout``: a user logged out of Flow Production Tracking. Custom Event Types @@ -907,10 +907,10 @@ Custom Event Types Since ``EventLogEntries`` are entities themselves, you can create them using the API just like any other entity type. As mentioned previously, if you'd like to have your scripts or tools log to -the ShotGrid event log, simply devise a thoughtful naming structure for your event types and +the Flow Production Tracking event log, simply devise a thoughtful naming structure for your event types and create the EventLogEntry as needed following the usual methods for creating entities via the API. -Again, other ShotGrid products like Toolkit use event logs this way. +Again, other Flow Production Tracking products like Toolkit use event logs this way. .. note:: EventLogEntries cannot be updated or deleted (that would defeat the purpose of course). @@ -918,13 +918,13 @@ Again, other ShotGrid products like Toolkit use event logs this way. Performance =========== -Event log database tables can get large very quickly. While ShotGrid does very well with event logs +Event log database tables can get large very quickly. While Flow Production Tracking does very well with event logs that get into the millions of records, there's an inevitable degradation of performance for pages that display them in the web application as well as any API queries for events when they get too big. This volume of events is not the norm, but can be reached if your server expereinces high usage. -This **does not** mean your ShotGrid server performance will suffer in general, just any pages that +This **does not** mean your Flow Production Tracking server performance will suffer in general, just any pages that are specifically displaying EventLogEntries in the web application, or API queries on the event log that are run. We are always looking for ways to improve this in the future. If you have any immediate concerns, please `reach out to our support team `_ @@ -953,7 +953,7 @@ In the case that both this environment variable and the config's ``rpc_attempt_i Localization ************ -The ShotGrid API offers the ability to return localized display names in the current user's language. +The Flow Production Tracking API offers the ability to return localized display names in the current user's language. Requests made from script/API users are localized in the site settings. This functionality is currently supported by the methods ``Shotgun.schema_entity_read``, ``Shotgun.schema_field_read``, and ``Shotgun.schema_read``. diff --git a/setup.py b/setup.py index 93a9de948..8b8fdc8b5 100644 --- a/setup.py +++ b/setup.py @@ -28,7 +28,7 @@ setup( name='shotgun_api3', version='3.4.2', - description='ShotGrid Python API ', + description='Flow Production Tracking Python API ', long_description=readme, author='ShotGrid Software', author_email='https://www.autodesk.com/support/contact-support', diff --git a/shotgun_api3/lib/README.md b/shotgun_api3/lib/README.md index e8fc31cd6..1bdec6f78 100644 --- a/shotgun_api3/lib/README.md +++ b/shotgun_api3/lib/README.md @@ -6,7 +6,7 @@ Some third-party modules are bundled with `python-api` inside lib. ### httplib2 -`httplib2` is used to make http connections to the ShotGrid server. We bundle both python2 and python3 compatible versions since httplib2 chose to maintain parallel versions of the module for python 2 and 3 compatibility. +`httplib2` is used to make http connections to the Flow Production Tracking server. We bundle both python2 and python3 compatible versions since httplib2 chose to maintain parallel versions of the module for python 2 and 3 compatibility. The version of `httplib2` bundled should be updated manually, however its version is included in the unused `shotgun_api3/lib/requirements.txt` to allow Github's automated CVE notifications to work. @@ -29,7 +29,7 @@ Six is a Python 2/3 compatibility library. In python-api, it's used to make sim The version of `six` bundled should be updated manually, however its version is included in the unused `shotgun_api3/lib/requirements.txt` to allow Github's automated CVE notifications to work. -## ShotGrid Modules +## Flow Production Tracking Modules ### sgsix @@ -41,15 +41,15 @@ The version of `six` bundled should be updated manually, however its version is ### mockgun -Mockgun is a ShotGrid API mocker. It's a class that has got *most* of the same -methods and parameters that the ShotGrid API has got. Mockgun is essentially a -ShotGrid *emulator* that (for basic operations) looks and feels like ShotGrid. +Mockgun is a Flow Production Tracking API mocker. It's a class that has got *most* of the same +methods and parameters that the Flow Production Tracking API has got. Mockgun is essentially a +Flow Production Tracking *emulator* that (for basic operations) looks and feels like Flow Production Tracking. The primary purpose of Mockgun is to drive unit test rigs where it becomes -too slow, cumbersome or non-practical to connect to a real ShotGrid. Using a +too slow, cumbersome or non-practical to connect to a real Flow Production Tracking. Using a Mockgun for unit tests means that a test can be rerun over and over again from exactly the same database state. This can be hard to do if you connect -to a live ShotGrid instance. +to a live Flow Production Tracking instance. ## Lib `requirements.txt` diff --git a/shotgun_api3/lib/mockgun/mockgun.py b/shotgun_api3/lib/mockgun/mockgun.py index eab05f88d..fbe7ff085 100644 --- a/shotgun_api3/lib/mockgun/mockgun.py +++ b/shotgun_api3/lib/mockgun/mockgun.py @@ -201,7 +201,7 @@ def __init__(self, if schema_path is None or schema_entity_path is None: raise MockgunError("Cannot create Mockgun instance because no schema files have been defined. " "Before creating a Mockgun instance, please call Mockgun.set_schema_paths() " - "in order to specify which ShotGrid schema Mockgun should operate against.") + "in order to specify which Flow Production Tracking schema Mockgun should operate against.") self._schema, self._schema_entity = SchemaFactory.get_schemas(schema_path, schema_entity_path) @@ -504,7 +504,7 @@ def _validate_entity_data(self, entity_type, data): "url": dict}[sg_type] except KeyError: raise ShotgunError( - "Field %s.%s: Handling for ShotGrid type %s is not implemented" % + "Field %s.%s: Handling for Flow Production Tracking type %s is not implemented" % (entity_type, field, sg_type) ) diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index 2ec07823a..8f05e42e6 100644 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -224,10 +224,10 @@ def __init__(self, host, meta): except AttributeError: self.version = None if not self.version: - raise ShotgunError("The ShotGrid Server didn't respond with a version number. " + raise ShotgunError("The Flow Production Tracking Server didn't respond with a version number. " "This may be because you are running an older version of " - "ShotGrid against a more recent version of the ShotGrid API. " - "For more information, please contact ShotGrid Support.") + "Flow Production Tracking against a more recent version of the Flow Production Tracking API. " + "For more information, please contact Flow Production Tracking Support.") if len(self.version) > 3 and self.version[3] == "Dev": self.is_dev = True @@ -3679,7 +3679,7 @@ def _parse_http_status(self, status): if status[0] >= 300: headers = "HTTP error from server" if status[0] == 503: - errmsg = "ShotGrid is currently down for maintenance or too busy to reply. Please try again later." + errmsg = "Flow Production Tracking is currently down for maintenance or too busy to reply. Please try again later." raise ProtocolError(self.config.server, error_code, errmsg, @@ -3765,12 +3765,12 @@ def _response_errors(self, sg_response): raise UserCredentialsNotAllowedForSSOAuthenticationFault( sg_response.get("message", "Authentication using username/password is not " - "allowed for an SSO-enabled ShotGrid site") + "allowed for an SSO-enabled Flow Production Tracking site") ) elif sg_response.get("error_code") == ERR_OXYG: raise UserCredentialsNotAllowedForOxygenAuthenticationFault( sg_response.get("message", "Authentication using username/password is not " - "allowed for an Autodesk Identity enabled ShotGrid site") + "allowed for an Autodesk Identity enabled Flow Production Tracking site") ) else: # raise general Fault diff --git a/tests/base.py b/tests/base.py index 5f4b61aa0..9720280b9 100644 --- a/tests/base.py +++ b/tests/base.py @@ -1,4 +1,4 @@ -"""Base class for ShotGrid API tests.""" +"""Base class for Flow Production Tracking API tests.""" import contextlib import os import random diff --git a/tests/example_config b/tests/example_config index 01501d23d..11e4aa104 100644 --- a/tests/example_config +++ b/tests/example_config @@ -13,7 +13,7 @@ [SERVER_INFO] -# Full url to the ShotGrid server server +# Full url to the Flow Production Tracking server server # e.g. https://my-site.shotgrid.autodesk.com # be careful to not end server_url with a "/", or some tests may fail server_url : http://0.0.0.0:3000 diff --git a/tests/mockgun/schema.pickle b/tests/mockgun/schema.pickle index 20ef8ee02..affaa8aba 100644 --- a/tests/mockgun/schema.pickle +++ b/tests/mockgun/schema.pickle @@ -86870,7 +86870,7 @@ p42730 I01 sS'value' p42731 -S'File field to contain the uploaded movie file. Used for playback of lower resolution movie media stored in ShotGrid.' +S'File field to contain the uploaded movie file. Used for playback of lower resolution movie media stored in Flow Production Tracking.' p42732 sssS'user' p42733 From 6b2be10574308626a18300c498b9d6f37fd6f66b Mon Sep 17 00:00:00 2001 From: Juan David Burgos Oquendo Date: Wed, 17 Jan 2024 14:01:14 -0500 Subject: [PATCH 2/8] fix PRs comments --- HISTORY.rst | 6 +++--- README.md | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index 04a889ef2..da4cc8e57 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -48,7 +48,7 @@ v3.3.5 (2023 Jan 5) - Add "Setting Up Your Environment with the Python API" to Python Docs (python-api docs). - [Python API Documentation] Update Python version requirements. - Rename Shotgun to Shotgrid in every about text like tk-multi-demo git repository. -- Rename Shotgun servers to Flow Production Tracking servers in the documentation. +- Rename Shotgun servers to ShotGrid servers in the documentation. v3.3.4 (2022 June 9) ==================== @@ -59,7 +59,7 @@ v3.3.4 (2022 June 9) v3.3.3 (2021 December 1) ========================== -- Replaces shotgunsoftware urls with Autodesk Knowledge Network and Flow Production Tracking Developer Documentation pages. +- Replaces shotgunsoftware urls with Autodesk Knowledge Network and ShotGrid Developer Documentation pages. v3.3.2 (2021 September 27) ========================== @@ -71,7 +71,7 @@ v3.3.1 (2021 July 12) v3.3.0 (2021 Jun 7) =================== -- Updates documentation and error messages to mention Flow Production Tracking. +- Updates documentation and error messages to mention ShotGrid. v3.2.6 (2020 Nov 24) ===================== diff --git a/README.md b/README.md index fa6bda8f0..d7c013431 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ # Flow Production Tracking Python API -Flow Production Tracking provides a simple Python-based API for accessing Flow Production Tracking and integrating with other tools. This is the official API that is maintained by Flow Production Tracking Software (https://knowledge.autodesk.com/contact-support) +Flow Production Tracking provides a simple Python-based API for accessing Flow Production Tracking and integrating with other tools. This is the official API that is maintained by Autodesk (https://knowledge.autodesk.com/contact-support) The latest version can always be found at http://github.com/shotgunsoftware/python-api From dcf4321dd371fc3eaf7da1aa153d9e56489f221b Mon Sep 17 00:00:00 2001 From: Juan David Burgos Oquendo Date: Thu, 1 Feb 2024 09:07:03 -0500 Subject: [PATCH 3/8] fix PRs comments --- README.md | 2 +- docs/advanced/packaging.rst | 4 ++-- docs/authentication.rst | 2 +- docs/cookbook/examples/svn_integration.rst | 2 +- shotgun_api3/shotgun.py | 2 +- tests/example_config | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index d7c013431..eaf1e9ccc 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ # Flow Production Tracking Python API -Flow Production Tracking provides a simple Python-based API for accessing Flow Production Tracking and integrating with other tools. This is the official API that is maintained by Autodesk (https://knowledge.autodesk.com/contact-support) +Autodesk provides a simple Python-based API for accessing Flow Production Tracking and integrating with other tools. This is the official API that is maintained by Autodesk (https://knowledge.autodesk.com/contact-support) The latest version can always be found at http://github.com/shotgunsoftware/python-api diff --git a/docs/advanced/packaging.rst b/docs/advanced/packaging.rst index ce16e5430..d46426e73 100644 --- a/docs/advanced/packaging.rst +++ b/docs/advanced/packaging.rst @@ -14,8 +14,8 @@ There are caveats you need to be aware of when creating such an app. ******************************** HTTPS Validation and cacerts.txt ******************************** -When creating the connection to Flow Production Tracking a file is used to validate the Flow Production Tracking certificate. This -file is located at ``shotgun_api3/lib/httplib2/cacerts.txt``. Because this file is not a Python +When creating the connection to Flow Production Tracking, a file is used to validate the Flow Production Tracking +certificate. This file is located at ``shotgun_api3/lib/httplib2/cacerts.txt``. Because this file is not a Python file imported by your application, py2app will not know to include it in your package, it will need to be explicitly specified in your ``setup.py`` file (edit the path based on the location where your ``shotgun_api3`` package is located):: diff --git a/docs/authentication.rst b/docs/authentication.rst index 5dbf750a8..0e5fe8572 100644 --- a/docs/authentication.rst +++ b/docs/authentication.rst @@ -2,7 +2,7 @@ Authentication ############## -In order to communicate with your Flow Production Tracking server via the API, you must provide valid authentication credentials. The API allows you to authenticate with user-based, or script-based credentials. +In order to communicate with your server via the API, you must provide valid authentication credentials. The API allows you to authenticate with user-based, or script-based credentials. ************************* User-based Authentication diff --git a/docs/cookbook/examples/svn_integration.rst b/docs/cookbook/examples/svn_integration.rst index f98de2637..9a877b322 100644 --- a/docs/cookbook/examples/svn_integration.rst +++ b/docs/cookbook/examples/svn_integration.rst @@ -121,7 +121,7 @@ link to the Revision. # Send error message if valid HumanUser is not found else: - print("Unable to find valid Flow Production Tracking User with login: "+author+", Revision not created in Flow Production Tracking.") + print("Unable to find a valid Flow Production Tracking User with login: {}, Revision not created in Flow Production Tracking.".format(author)) diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index 8f05e42e6..72df68bfc 100644 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -227,7 +227,7 @@ def __init__(self, host, meta): raise ShotgunError("The Flow Production Tracking Server didn't respond with a version number. " "This may be because you are running an older version of " "Flow Production Tracking against a more recent version of the Flow Production Tracking API. " - "For more information, please contact Flow Production Tracking Support.") + "For more information, please contact the Autodesk support.") if len(self.version) > 3 and self.version[3] == "Dev": self.is_dev = True diff --git a/tests/example_config b/tests/example_config index 11e4aa104..1aee7ba33 100644 --- a/tests/example_config +++ b/tests/example_config @@ -13,7 +13,7 @@ [SERVER_INFO] -# Full url to the Flow Production Tracking server server +# Full url to the Flow Production Tracking server # e.g. https://my-site.shotgrid.autodesk.com # be careful to not end server_url with a "/", or some tests may fail server_url : http://0.0.0.0:3000 From d5f8cde3dc7ff482c6cd820afb5c80b5db23763e Mon Sep 17 00:00:00 2001 From: Juan David Burgos Oquendo Date: Thu, 1 Feb 2024 09:14:57 -0500 Subject: [PATCH 4/8] change SG to PTR --- HISTORY.rst | 4 ++-- shotgun_api3/shotgun.py | 6 +++--- tests/base.py | 2 +- tests/example_config | 2 +- tests/test_api.py | 18 +++++++++--------- tests/test_client.py | 4 ++-- tests/test_unit.py | 4 ++-- 7 files changed, 20 insertions(+), 20 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index da4cc8e57..7b1bf86b7 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -165,7 +165,7 @@ v3.0.33 (2017 July 18) - Raise an exception when uploading an empty file using :meth:`upload`, :meth:`upload_thumbnail` or :meth:`upload_filmstrip_thumbnail` before calling out to the server. - Multiple enhancements and bugfixes to Mockgun -- Added ``nav_search_string()`` and ``nav_search_entity()`` methods as experimental, internal methods for querying SG hierarchy. +- Added ``nav_search_string()`` and ``nav_search_entity()`` methods as experimental, internal methods for querying PTR hierarchy. - Introduces a :meth:`following` query method, that accepts a user entity and optionally an entity type and/or project. v3.0.32 (2016 Sep 22) @@ -173,7 +173,7 @@ v3.0.32 (2016 Sep 22) - Optimized import speed of the API on Python 2.7. - Integrated the latest fixes to the ``mimetypes`` module. -- Added ``nav_expand()`` method as an experimental, internal method for querying SG hierarchy. +- Added ``nav_expand()`` method as an experimental, internal method for querying PTR hierarchy. - Ported all documentation to sphinx. See http://developer.shotgridsoftware.com/python-api. - Moved Changelog to dedicated HISTORY file. diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index 72df68bfc..fd15aa36f 100644 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -339,7 +339,7 @@ class ClientCapabilities(object): :ivar str platform: The current client platform. Valid values are ``mac``, ``linux``, ``windows``, or ``None`` (if the current platform couldn't be determined). - :ivar str local_path_field: The SG field used for local file paths. This is calculated using + :ivar str local_path_field: ThePTRfield used for local file paths. This is calculated using the value of ``platform``. Ex. ``local_path_mac``. :ivar str py_version: Simple version of Python executable as a string. Eg. ``2.7``. :ivar str ssl_version: Version of OpenSSL installed. Eg. ``OpenSSL 1.0.2g 1 Mar 2016``. This @@ -3441,8 +3441,8 @@ def _call_rpc(self, method, params, include_auth_params=True, first=False): except ProtocolError as e: e.headers = resp_headers - # We've seen some rare instances of SG returning 502 for issues that - # appear to be caused by something internal to SG. We're going to + # We've seen some rare instances ofPTRreturning 502 for issues that + # appear to be caused by something internal toPTR. We're going to # allow for limited retries for those specifically. if attempt != max_attempts and e.errcode in [502, 504]: LOG.debug("Got a 502 or 504 response. Waiting and retrying...") diff --git a/tests/base.py b/tests/base.py index 9720280b9..c51398c90 100644 --- a/tests/base.py +++ b/tests/base.py @@ -152,7 +152,7 @@ def _setup_mock(self, s3_status_code_error=503): {"version": [2, 4, 0]}) def _mock_http(self, data, headers=None, status=None): - """Setup a mock response from the SG server. + """Setup a mock response from thePTRserver. Only has an affect if the server has been mocked. """ diff --git a/tests/example_config b/tests/example_config index 1aee7ba33..064eaba6a 100644 --- a/tests/example_config +++ b/tests/example_config @@ -24,7 +24,7 @@ http_proxy : session_uuid : [TEST_DATA] -project_name : SG unittest project +project_name : PTR unittest project human_name : Sg unittest human human_login : sgunittesthuman diff --git a/tests/test_api.py b/tests/test_api.py index be3201fd6..c87cf2412 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -1737,7 +1737,7 @@ def test_following(self): '''Test following method''' if not self.sg.server_caps.version or self.sg.server_caps.version < (7, 0, 12): - warnings.warn("Test bypassed because SG server used does not support this feature.", FutureWarning) + warnings.warn("Test bypassed becausePTRserver used does not support this feature.", FutureWarning) return with self.gen_entity( @@ -2607,7 +2607,7 @@ class TestReadAdditionalFilterPresets(base.LiveTestBase): def test_simple_case(self): if self.sg_version < (7, 0, 0): - warnings.warn("Test bypassed because SG server used does not support this feature.", FutureWarning) + warnings.warn("Test bypassed becausePTRserver used does not support this feature.", FutureWarning) return filters = [ @@ -2626,7 +2626,7 @@ def test_simple_case(self): def test_find_one(self): if self.sg_version < (7, 0, 0): - warnings.warn("Test bypassed because SG server used does not support this feature.", FutureWarning) + warnings.warn("Test bypassed becausePTRserver used does not support this feature.", FutureWarning) return filters = [ @@ -2644,7 +2644,7 @@ def test_find_one(self): def test_filter_with_no_name(self): if self.sg_version < (7, 0, 0): - warnings.warn("Test bypassed because SG server used does not support this feature.", FutureWarning) + warnings.warn("Test bypassed becausePTRserver used does not support this feature.", FutureWarning) return filters = [ @@ -2662,7 +2662,7 @@ def test_filter_with_no_name(self): def test_invalid_filter(self): if self.sg_version < (7, 0, 0): - warnings.warn("Test bypassed because SG server used does not support this feature.", FutureWarning) + warnings.warn("Test bypassed becausePTRserver used does not support this feature.", FutureWarning) return filters = [ @@ -2680,7 +2680,7 @@ def test_invalid_filter(self): def test_filter_not_iterable(self): if self.sg_version < (7, 0, 0): - warnings.warn("Test bypassed because SG server used does not support this feature.", FutureWarning) + warnings.warn("Test bypassed becausePTRserver used does not support this feature.", FutureWarning) return filters = [ @@ -2698,7 +2698,7 @@ def test_filter_not_iterable(self): def test_filter_not_list_of_iterable(self): if self.sg_version < (7, 0, 0): - warnings.warn("Test bypassed because SG server used does not support this feature.", FutureWarning) + warnings.warn("Test bypassed becausePTRserver used does not support this feature.", FutureWarning) return filters = [ @@ -2716,7 +2716,7 @@ def test_filter_not_list_of_iterable(self): def test_multiple_latest_filters(self): if self.sg_version < (7, 0, 0): - warnings.warn("Test bypassed because SG server used does not support this feature.", FutureWarning) + warnings.warn("Test bypassed becausePTRserver used does not support this feature.", FutureWarning) return filters = [ @@ -2740,7 +2740,7 @@ def test_modify_visibility(self): # If the version of Shotgun is too old, do not run this test. # TODO: Update this with the real version number once the feature is released. if self.sg_version < (8, 5, 0): - warnings.warn("Test bypassed because SG server used does not support this feature.", FutureWarning) + warnings.warn("Test bypassed becausePTRserver used does not support this feature.", FutureWarning) return field_display_name = "Project Visibility Test" diff --git a/tests/test_client.py b/tests/test_client.py index f7e783b2c..c6b0305c5 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -244,7 +244,7 @@ def test_authorization(self): self.assertEqual(expected, headers.get("Authorization")) def test_localization_header_default(self): - """Localization header not passed to server without explicitly setting SG localization config to True""" + """Localization header not passed to server without explicitly settingPTRlocalization config to True""" self.sg.info() args, _ = self.sg._http_request.call_args @@ -254,7 +254,7 @@ def test_localization_header_default(self): self.assertEqual(None, headers.get("locale")) def test_localization_header_when_localized(self): - """Localization header passed to server when setting SG localization config to True""" + """Localization header passed to server when settingPTRlocalization config to True""" self.sg.config.localized = True self.sg.info() diff --git a/tests/test_unit.py b/tests/test_unit.py index c8ce4fcc9..9d46d772b 100644 --- a/tests/test_unit.py +++ b/tests/test_unit.py @@ -440,7 +440,7 @@ def _check_url_with_urllib(self, url): """ Given a url it will perform a simple request and return a result. """ - # create a request using the opener generated by the SG API. + # create a request using the opener generated by thePTRAPI. # The `_build_opener` method internally should use the correct certs. opener = self.sg._build_opener(urllib.request.HTTPHandler) request = urllib.request.Request(url) @@ -460,7 +460,7 @@ def test_found_correct_cert(self): # Call dirname to remove from __init__.py os.path.join(os.path.dirname(api.__file__), "lib", "certifi", "cacert.pem") ) - # Now ensure that the path the SG API has found is correct. + # Now ensure that the path thePTRAPI has found is correct. self.assertEqual(cert_path, self.certs) self.assertTrue(os.path.isfile(self.certs)) From 6ae0e2f405d6e94bde272b4b02c8cb48e67ed886 Mon Sep 17 00:00:00 2001 From: Juan David Burgos Oquendo Date: Mon, 5 Feb 2024 11:05:52 -0500 Subject: [PATCH 5/8] fix PR comments --- shotgun_api3/shotgun.py | 6 +++--- tests/base.py | 2 +- tests/test_api.py | 18 +++++++++--------- tests/test_client.py | 4 ++-- tests/test_unit.py | 4 ++-- 5 files changed, 17 insertions(+), 17 deletions(-) diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index fd15aa36f..4a55145ab 100644 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -339,7 +339,7 @@ class ClientCapabilities(object): :ivar str platform: The current client platform. Valid values are ``mac``, ``linux``, ``windows``, or ``None`` (if the current platform couldn't be determined). - :ivar str local_path_field: ThePTRfield used for local file paths. This is calculated using + :ivar str local_path_field: The PTR field used for local file paths. This is calculated using the value of ``platform``. Ex. ``local_path_mac``. :ivar str py_version: Simple version of Python executable as a string. Eg. ``2.7``. :ivar str ssl_version: Version of OpenSSL installed. Eg. ``OpenSSL 1.0.2g 1 Mar 2016``. This @@ -3441,8 +3441,8 @@ def _call_rpc(self, method, params, include_auth_params=True, first=False): except ProtocolError as e: e.headers = resp_headers - # We've seen some rare instances ofPTRreturning 502 for issues that - # appear to be caused by something internal toPTR. We're going to + # We've seen some rare instances of PTR returning 502 for issues that + # appear to be caused by something internal to PTR. We're going to # allow for limited retries for those specifically. if attempt != max_attempts and e.errcode in [502, 504]: LOG.debug("Got a 502 or 504 response. Waiting and retrying...") diff --git a/tests/base.py b/tests/base.py index c51398c90..01b39bd15 100644 --- a/tests/base.py +++ b/tests/base.py @@ -152,7 +152,7 @@ def _setup_mock(self, s3_status_code_error=503): {"version": [2, 4, 0]}) def _mock_http(self, data, headers=None, status=None): - """Setup a mock response from thePTRserver. + """Setup a mock response from the PTR server. Only has an affect if the server has been mocked. """ diff --git a/tests/test_api.py b/tests/test_api.py index c87cf2412..4fdaab038 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -1737,7 +1737,7 @@ def test_following(self): '''Test following method''' if not self.sg.server_caps.version or self.sg.server_caps.version < (7, 0, 12): - warnings.warn("Test bypassed becausePTRserver used does not support this feature.", FutureWarning) + warnings.warn("Test bypassed because PTR server used does not support this feature.", FutureWarning) return with self.gen_entity( @@ -2607,7 +2607,7 @@ class TestReadAdditionalFilterPresets(base.LiveTestBase): def test_simple_case(self): if self.sg_version < (7, 0, 0): - warnings.warn("Test bypassed becausePTRserver used does not support this feature.", FutureWarning) + warnings.warn("Test bypassed because PTR server used does not support this feature.", FutureWarning) return filters = [ @@ -2626,7 +2626,7 @@ def test_simple_case(self): def test_find_one(self): if self.sg_version < (7, 0, 0): - warnings.warn("Test bypassed becausePTRserver used does not support this feature.", FutureWarning) + warnings.warn("Test bypassed because PTR server used does not support this feature.", FutureWarning) return filters = [ @@ -2644,7 +2644,7 @@ def test_find_one(self): def test_filter_with_no_name(self): if self.sg_version < (7, 0, 0): - warnings.warn("Test bypassed becausePTRserver used does not support this feature.", FutureWarning) + warnings.warn("Test bypassed because PTR server used does not support this feature.", FutureWarning) return filters = [ @@ -2662,7 +2662,7 @@ def test_filter_with_no_name(self): def test_invalid_filter(self): if self.sg_version < (7, 0, 0): - warnings.warn("Test bypassed becausePTRserver used does not support this feature.", FutureWarning) + warnings.warn("Test bypassed because PTR server used does not support this feature.", FutureWarning) return filters = [ @@ -2680,7 +2680,7 @@ def test_invalid_filter(self): def test_filter_not_iterable(self): if self.sg_version < (7, 0, 0): - warnings.warn("Test bypassed becausePTRserver used does not support this feature.", FutureWarning) + warnings.warn("Test bypassed because PTR server used does not support this feature.", FutureWarning) return filters = [ @@ -2698,7 +2698,7 @@ def test_filter_not_iterable(self): def test_filter_not_list_of_iterable(self): if self.sg_version < (7, 0, 0): - warnings.warn("Test bypassed becausePTRserver used does not support this feature.", FutureWarning) + warnings.warn("Test bypassed because PTR server used does not support this feature.", FutureWarning) return filters = [ @@ -2716,7 +2716,7 @@ def test_filter_not_list_of_iterable(self): def test_multiple_latest_filters(self): if self.sg_version < (7, 0, 0): - warnings.warn("Test bypassed becausePTRserver used does not support this feature.", FutureWarning) + warnings.warn("Test bypassed because PTR server used does not support this feature.", FutureWarning) return filters = [ @@ -2740,7 +2740,7 @@ def test_modify_visibility(self): # If the version of Shotgun is too old, do not run this test. # TODO: Update this with the real version number once the feature is released. if self.sg_version < (8, 5, 0): - warnings.warn("Test bypassed becausePTRserver used does not support this feature.", FutureWarning) + warnings.warn("Test bypassed because PTR server used does not support this feature.", FutureWarning) return field_display_name = "Project Visibility Test" diff --git a/tests/test_client.py b/tests/test_client.py index c6b0305c5..9a6b0f9b8 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -244,7 +244,7 @@ def test_authorization(self): self.assertEqual(expected, headers.get("Authorization")) def test_localization_header_default(self): - """Localization header not passed to server without explicitly settingPTRlocalization config to True""" + """Localization header not passed to server without explicitly setting PTR localization config to True""" self.sg.info() args, _ = self.sg._http_request.call_args @@ -254,7 +254,7 @@ def test_localization_header_default(self): self.assertEqual(None, headers.get("locale")) def test_localization_header_when_localized(self): - """Localization header passed to server when settingPTRlocalization config to True""" + """Localization header passed to server when setting PTR localization config to True""" self.sg.config.localized = True self.sg.info() diff --git a/tests/test_unit.py b/tests/test_unit.py index 9d46d772b..84bd35b60 100644 --- a/tests/test_unit.py +++ b/tests/test_unit.py @@ -440,7 +440,7 @@ def _check_url_with_urllib(self, url): """ Given a url it will perform a simple request and return a result. """ - # create a request using the opener generated by thePTRAPI. + # create a request using the opener generated by the PTR API. # The `_build_opener` method internally should use the correct certs. opener = self.sg._build_opener(urllib.request.HTTPHandler) request = urllib.request.Request(url) @@ -460,7 +460,7 @@ def test_found_correct_cert(self): # Call dirname to remove from __init__.py os.path.join(os.path.dirname(api.__file__), "lib", "certifi", "cacert.pem") ) - # Now ensure that the path thePTRAPI has found is correct. + # Now ensure that the path the PTR API has found is correct. self.assertEqual(cert_path, self.certs) self.assertTrue(os.path.isfile(self.certs)) From 5212f8a302a7313a4ad74c87a55821c48cf8c41f Mon Sep 17 00:00:00 2001 From: Juan David Burgos Oquendo Date: Thu, 8 Feb 2024 10:40:51 -0500 Subject: [PATCH 6/8] fix PR comments --- HISTORY.rst | 4 ++-- docs/cookbook.rst | 2 +- docs/cookbook/smart_cut_fields.rst | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index 7b1bf86b7..6e3f139fb 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -165,7 +165,7 @@ v3.0.33 (2017 July 18) - Raise an exception when uploading an empty file using :meth:`upload`, :meth:`upload_thumbnail` or :meth:`upload_filmstrip_thumbnail` before calling out to the server. - Multiple enhancements and bugfixes to Mockgun -- Added ``nav_search_string()`` and ``nav_search_entity()`` methods as experimental, internal methods for querying PTR hierarchy. +- Added ``nav_search_string()`` and ``nav_search_entity()`` methods as experimental, internal methods for querying SG hierarchy. - Introduces a :meth:`following` query method, that accepts a user entity and optionally an entity type and/or project. v3.0.32 (2016 Sep 22) @@ -173,7 +173,7 @@ v3.0.32 (2016 Sep 22) - Optimized import speed of the API on Python 2.7. - Integrated the latest fixes to the ``mimetypes`` module. -- Added ``nav_expand()`` method as an experimental, internal method for querying PTR hierarchy. +- Added ``nav_expand()`` method as an experimental, internal method for querying SG hierarchy. - Ported all documentation to sphinx. See http://developer.shotgridsoftware.com/python-api. - Moved Changelog to dedicated HISTORY file. diff --git a/docs/cookbook.rst b/docs/cookbook.rst index 40e109894..f69334a7b 100644 --- a/docs/cookbook.rst +++ b/docs/cookbook.rst @@ -52,7 +52,7 @@ need to do. .. rubric:: Smart Cut Fields Smart Cut Fields are deprecated in favor of the -`new cut support added in Flow Production Tracking v7.0 `_. +`new cut support added in ShotGrid v7.0 `_. This documentation remains only to support studios who may not have upgraded to the new cut support features. diff --git a/docs/cookbook/smart_cut_fields.rst b/docs/cookbook/smart_cut_fields.rst index 0949386cf..0ee74d189 100644 --- a/docs/cookbook/smart_cut_fields.rst +++ b/docs/cookbook/smart_cut_fields.rst @@ -5,7 +5,7 @@ Smart Cut Fields ################ .. warning:: - Smart Cut Fields should be considered deprecated. Flow Production Tracking v7.0, introduced a new version of + Smart Cut Fields should be considered deprecated. ShotGrid v7.0, introduced a new version of cut support. `Read the Cut Support Documentation here `_. If you want to work with 'smart' cut fields through the API, your script should use a corresponding From 2f88b435c4f7672fee771b138bb1a1ae87557780 Mon Sep 17 00:00:00 2001 From: Juan David Burgos Oquendo Date: Fri, 9 Feb 2024 08:06:33 -0500 Subject: [PATCH 7/8] Fix PR comments. --- setup.py | 2 +- software_credits | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index 8b8fdc8b5..a2624aea6 100644 --- a/setup.py +++ b/setup.py @@ -30,7 +30,7 @@ version='3.4.2', description='Flow Production Tracking Python API ', long_description=readme, - author='ShotGrid Software', + author='Autodesk', author_email='https://www.autodesk.com/support/contact-support', url='https://github.com/shotgunsoftware/python-api', license=license, diff --git a/software_credits b/software_credits index aa6e87c5c..819f81ee6 100644 --- a/software_credits +++ b/software_credits @@ -1,4 +1,4 @@ -The ShotGrid Python API uses the following software. Thanks to their creators, license information below. +The Flow Production Tracking Python API uses the following software. Thanks to their creators, license information below. ============================== PYTHON ============================== From 17134e4e01f6eec64e57c7ad21f99412f12e003e Mon Sep 17 00:00:00 2001 From: Juan David Burgos Oquendo Date: Fri, 9 Feb 2024 10:23:19 -0500 Subject: [PATCH 8/8] Update images. --- docs/images/scripts_page.png | Bin 73074 -> 72478 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/images/scripts_page.png b/docs/images/scripts_page.png index fdbc3c38d664f8c8aa783f57a9420812fcd64006..d53da1cac240f19eda0b3649f6699eef53fb3bbd 100644 GIT binary patch literal 72478 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
I^~4DL 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 literal 73074 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

    uRH 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 r@x64zBlC1ZQ@wT6