{"action":"created","issue":{"url":"https://api.github.com/repos/psiinon/pontoon/issues/288","repository_url":"https://api.github.com/repos/psiinon/pontoon","labels_url":"https://api.github.com/repos/psiinon/pontoon/issues/288/labels{/name}","comments_url":"https://api.github.com/repos/psiinon/pontoon/issues/288/comments","events_url":"https://api.github.com/repos/psiinon/pontoon/issues/288/events","html_url":"https://github.com/psiinon/pontoon/pull/288","id":358058948,"node_id":"MDExOlB1bGxSZXF1ZXN0MjEzOTIxNjc4","number":288,"title":"Scheduled daily dependency update on friday","user":{"login":"pyup-bot","id":16239342,"node_id":"MDQ6VXNlcjE2MjM5MzQy","avatar_url":"https://avatars0.githubusercontent.com/u/16239342?v=4","gravatar_id":"","url":"https://api.github.com/users/pyup-bot","html_url":"https://github.com/pyup-bot","followers_url":"https://api.github.com/users/pyup-bot/followers","following_url":"https://api.github.com/users/pyup-bot/following{/other_user}","gists_url":"https://api.github.com/users/pyup-bot/gists{/gist_id}","starred_url":"https://api.github.com/users/pyup-bot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pyup-bot/subscriptions","organizations_url":"https://api.github.com/users/pyup-bot/orgs","repos_url":"https://api.github.com/users/pyup-bot/repos","events_url":"https://api.github.com/users/pyup-bot/events{/privacy}","received_events_url":"https://api.github.com/users/pyup-bot/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2018-09-07T13:04:12Z","updated_at":"2018-09-08T13:03:15Z","closed_at":null,"author_association":"NONE","pull_request":{"url":"https://api.github.com/repos/psiinon/pontoon/pulls/288","html_url":"https://github.com/psiinon/pontoon/pull/288","diff_url":"https://github.com/psiinon/pontoon/pull/288.diff","patch_url":"https://github.com/psiinon/pontoon/pull/288.patch"},"body":"\n\n\n\n\n### Update [mercurial](https://pypi.org/project/mercurial) from **4.1.2** to **4.7.1**.\n\n\n*The bot wasn't able to find a changelog for this release. [Got an idea?](https://github.com/pyupio/changelogs/issues/new)*\n\n<details>\n  <summary>Links</summary>\n  \n  - PyPI: https://pypi.org/project/mercurial\n  - Homepage: https://mercurial-scm.org/\n</details>\n\n\n\n\n\n### Update [newrelic](https://pypi.org/project/newrelic) from **2.50.0.39** to **4.2.0.100**.\n\n\n<details>\n  <summary>Changelog</summary>\n  \n  \n   ### 4.2.0.100\n   ```\n   This release of the Python agent introduces distributed tracing, adds improvement to our Pyramid instrumentation, adds support for custom CA bundles, and contains bug fixes.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n\nFeatures\n\n\nDistributed tracing support\n\nDistributed tracing lets you see the path that a request takes as it travels through your distributed system. By showing the distributed activity through a unified view, you can troubleshoot and understand a complex system better than ever before.\n\nDistributed tracing is available with an APM Pro or equivalent subscription. To see a complete distributed trace, you need to enable the feature on a set of neighboring services. Enabling distributed tracing changes the behavior of some New Relic features, so carefully consult the transition guide before you enable this feature.\n\nTo enable distributed tracing, add distributed_tracing.enabled = true to your newrelic.ini file or use the environment variable NEW_RELIC_DISTRIBUTED_TRACING_ENABLED=true.\nAdd support for tracing Pyramid tweens\n\nPyramid tweens are now automatically timed and added to the transaction detail view. The time spent in a Pyramid tween will be displayed in the transaction breakdown table and in the trace details of a transaction trace.\nProvide configuration option for custom CA bundle\n\nCustomers can now use the ca_bundle_path configuration option or set the NEW_RELIC_CA_BUNDLE_PATH environment variable to set the path to a local CA bundle. This CA bundle will be used to validate the SSL certificate presented by New Relic&#39;s data collection service.\n\n\nBug Fixes\n\n\nCustom Insights event data attached to transactions in excess of 100 events were omitted\n\nThe agent may have failed to send custom event data (record_custom_event) to insights when recorded as part of a Transaction containing over 100 custom events. This issue has now been corrected.\n   ```\n   \n  \n  \n   ### 4.0.0.99\n   ```\n   This release of the Python agent removes previously deprecated APIs, and removes support for Python 2.6 and Python 3.3.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n\nDeprecations\n\n\nRemoved previously deprecated APIs\n\nThe following APIs have been removed:\n\n\nTransaction.add_user_attribute (use Transaction.add_custom_parameter)\nTransaction.add_user_attributes (use Transaction.add_custom_parameters)\nwrap_callable (use FunctionWrapper)\n\nRemoved support for Python 2.6 and Python 3.3\n\nPython 2.6 and Python 3.3 are no longer supported. Please consider upgrading your application to a supported version of Python in order to continue to receive updates to the Python Agent.\n   ```\n   \n  \n  \n   ### 3.4.0.95\n   ```\n   This release of the Python agent adds support for Python 3.7 and contains various bug fixes.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n\nNew Features\n\n\nSupport Python 3.7\n\nThe New Relic Python Agent now supports Python 3.7.\n\n\nBug Fixes\n\n\nAgent raises a KeyError: &#39;NEW_RELIC_ADMIN_COMMAND&#39; exception causing a crash\n\nUnder certain conditions, using the newrelic-admin wrapper script could cause\nan application to crash shortly after startup with a KeyError exception. The\ncause of the crash has been addressed.\nAgent raises an AttributeError on Python 3 when using WSGI overrides with multiple app names\n\nWhen using WSGI environ overrides to specify multiple app names as described in the docs https://docs.newrelic.com/docs/agents/manage-apm-agents/app-naming/use-m... the agent will raise an AttributeError. This error has been corrected.\nAgent raises an AttributeError exception under rare conditions when halting a trace\n\nUnder certain rare conditions, the agent might raise an exception when trying\nto trace an external call in a transaction that has been forcibly halted.\nThe cause of the exception has been addressed.\nAgent raises a RuntimeError exception under particular conditions when using the Tornado r3 instrumentation\n\nWhen attempting to yield many times from a wrapped tornado.gen.coroutine\nwhen using Tornado&#39;s r3 instrumentation, a RuntimeError due to hitting\nthe maximum recursion limit can occur. The cause of this exception has\nbeen patched.\n   ```\n   \n  \n  \n   ### 3.2.2.94\n   ```\n   This release of the Python agent contains various bug fixes.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n\nBug Fixes\n\n\nImproved handling of celery max-tasks-per-child\n\nData recorded by the Python Agent may not have been reported when celery was operated with the max-tasks-per-child setting. All data is now reported independent of the max tasks per child setting.\nImprove support for PyMongo v3.x\n\nPyMongo v3 added many new methods on the pymongo.Collection object that did not exist in v2. These methods have now been instrumented. Calls to these methods will now appear in APM.\nScheduling tasks that run after a transaction ends causes an error\n\nCoroutines scheduled to execute after a transaction ends using create_task or ensure_future may have caused the runtime instrumentation error and subsequent crash:\n\nThe transaction already completed meaning a child called complete trace after the trace had been finalized.\n\nCoroutines that execute beyond the end of a transaction will no longer cause an error.\n   ```\n   \n  \n  \n   ### 3.2.1.93\n   ```\n   This release of the Python agent contains various bug fixes.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n\nBug Fixes\n\n\nDo not run explain plans for psycopg2 connections using the async_ kwarg\n\nAs &quot;async&quot; is now a keyword in Python 3.7, psycopg2 now allows &quot;async_&quot; as an alias for its &quot;async&quot; kwarg for psycopg2.connect as of psycopg2 v2.7.4. Previously, explain plans were attempted for these connections and a traceback would be seen in the logs. This has now been fixed.\nFix traceback when using callbacks as partials in pika consumers\n\nWhen passing a callback that is a functools partial to pika channel consumers, a traceback occurred in some instances. This issue has now been fixed.\ncx_Oracle database calls that use SessionPool objects were not recorded\n\nWhen using the cx_Oracle SessionPool interace, database transactions made through the acquired pool connection may not have been reported. Database transactions that using connections generated by SessionPool are now reported as expected.\nSQL targets for call statements may contain a period\n\nFor a SQL command like CALL foo.bar(:baz), APM would show metrics under the target name foo instead of the full name foo.bar. This has been fixed.\n   ```\n   \n  \n  \n   ### 3.2.0.91\n   ```\n   This release of the Python agent adds the request.uri attribute on transaction events in insights, adds built-in cheroot instrumentation, adds support for recording flask-restful/flask-restplus exceptions, and contains bug fixes.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n\nImproved Features\n\n\nAdd request.uri attribute to transaction and error events\n\nThe Python agent will now report request.uri as an attribute on transaction events and error events. To disable this feature, add request.uri to the attributes.exclude list in the newrelic.ini configuration file.\nRecord Flask RESTful and Flask RestPlus exceptions\n\nSince Flask RESTful and Flask RestPlus handle all errors that are raised in their handlers, these errors were not being captured by the normal Flask instrumentation in the Python agent. Exception handling has now been added for these two components.\nAdd instrumentation hooks for the Cheroot WSGI server\n\nAny customers using Cheroot with an unsupported application framework will now see data reported in New Relic APM.\n\n\nBug Fixes\n\n\nFix CherryPy ignore by status code for exceptions using reason phrases\n\nCherryPy accepts string values for HTTPError status (reason phrases). When creating HTTPError exceptions in this way, responses were not properly ignored by status code. Responses generated by HTTPError exceptions using reason phrases are now properly ignored.\nUsing send_file with Flask Compress middleware may have caused an application crash\n\nWhen using browser monitoring auto instrumentation on an application using Flask Compress, the use of the Flask send_file helper to send html files resulted in an application crash. This issue has now been resolved.\nFix incorrect parenting for traces of coroutines scheduled with asyncio gather/ensure_future\n\nCoroutines scheduled with asyncio gather/ensure_future may have been reported as being a child of the wrong function. This issue has now been corrected.\n   ```\n   \n  \n  \n   ### 3.0.0.89\n   ```\n   This release of the Python agent removes previously deprecated APIs, makes SSL communication with New Relic mandatory, and updates support for aiohttp middleware.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n\nDeprecations\n\n\nRemoved previously deprecated APIs\n\nThe following APIs have been removed:\n\n\ntransaction (use current_transaction)\nname_transaction (use set_transaction_name)\nApplication.record_metric (use Application.record_custom_metric)\nApplication.record_metrics (use Application.record_custom_metrics)\nTransaction.notice_error (use Transaction.record_exception)\nTransaction.record_metric (use Transaction.record_custom_metric)\nTransaction.name_transaction (use Transaction.set_transaction_name)\n\nDeprecate Transaction.add_user_attribute\n\nTransaction.add_user_attribute has been deprecated in favor of Transaction.add_custom_parameter. Transaction.add_user_attribute will be removed in a future release.\nDeprecate Transaction.add_user_attributes\n\nTransaction.add_user_attributes has been deprecated in favor of Transaction.add_custom_parameters. Transaction.add_user_attributes will be removed in a future release.\nDeprecate wrap_callable\n\nwrap_callable has been deprecated in favor of FunctionWrapper. wrap_callable will be removed in a future release.\nRemove data-source admin command\n\nThe platform API (used by newrelic-admin data-source) has been removed. Please use data sources in place of the platform API.\n\n\nSSL\n\nSSL connections to New Relic are now mandatory\n\nPrior to this version, using an SSL connection to New Relic was the default behavior. SSL connections are now enforced (not overrideable).\n\nAIOHTTP Updates\n\n\nAdd automatic tracing of AIOHTTP 3 middleware\n\nIn addition to the old-style middleware previously supported, the AIOHTTP 3 style middleware is now automatically traced as part of the AIOHTTP instrumentation package.\n   ```\n   \n  \n  \n   ### 2.106.1.88\n   ```\n   This release of the Python agent includes a fix for security bulletin nr18-07.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n   ```\n   \n  \n  \n   ### 2.106.0.87\n   ```\n   This release of the Python agent adds support for AIOHTTP version 3.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n\nImproved AIOHTTP Support\n\n\nSupport for AIOHTTP 3\n\nAIOHTTP major version 3 is now supported by the New Relic Python agent.\n   ```\n   \n  \n  \n   ### 2.104.0.86\n   ```\n   This release of the Python agent adds a deprecation warning for customers that disable SSL, and adds bugfixes for supported async frameworks that use asyncio.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n\nMandatory SSL\n\n\nDisabling SSL connections to New Relic has been deprecated\n\nSSL connections are enabled by default. In a future release, the option to\ndisable SSL will be removed.\n\n\nBug Fixes\n\n\nUsing asyncio.gather or asyncio.ensure_future now tracks transaction context\n\nPrior to this release, using asyncio.gather or asyncio.ensure_future may\nresult in certain traces (such as external calls) not being reported in the\ntransaction. Traces scheduled with asyncio.gather or asyncio.ensure_future\nfrom within the context of a transaction should now be properly attributed to\nthe transaction.\n   ```\n   \n  \n  \n   ### 2.102.0.85\n   ```\n   This release of the Python agent contains improvements to the time tracing API as well as bug fixes.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n\nTime Trace API Improvements\n\n\nTime trace APIs (such as function_trace) can now be used with coroutines\n\nThe following decorator APIs can now be used with native coroutines and generators:\n\n\nfunction_trace\ndatabase_trace\ndatastore_trace\nexternal_trace\nmessage_trace\nmemcache_trace\n\n\nExample:\n\nfunction_trace(name=&#39;my_coroutine&#39;)\nasync def my_coroutine():\n  await asyncio.sleep(0.1)\n\n\nBug Fixes\n\n\ngRPC instrumentation used on Python 2.x can cause a memory leak\n\nWhen using gRPC on Python 2, gRPC futures would not be garbage collected\nresulting in a memory leak. gRPC futures will now be garbage collected.\nInstrumentation for Dropbox v8.0 and newer caused error log messages\n\nDropbox client version 8.0 or higher raised instrumentation errors. These\nerrors did not prevent metrics on Dropbox from being sent. These errors have\nbeen removed.\nValues from negated ranges were sometimes added to ignore_status_codes\n\nNegated status codes not found in the current ignore_status_codes were \nadded if they were part of a range of values. This issue has been addressed.\n   ```\n   \n  \n  \n   ### 2.100.0.84\n   ```\n   This release of the Python agent contains security related updates as well as bug fixes.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n\nSecurity Updates\n\nSee the associated security bulletins for custom API parameters in high security mode and for SQL params for SQLite.\n\nBug Fixes\n\n\nUsing the aiohttp client may result in an application crash\n\nUnder certain circumstances, using the aiohttp client may have resulted in an application crash. This issue has been addressed.\nDatabase queries made with psycopg2 may not have been recorded\n\nWhen using the &quot;with&quot; statement to create a cursor, time spent on database calls may not have been properly recorded. This issue has been addressed.\nUsage of the pika library resulted in a memory leak\n\nWhen using the pika library with New Relic, Channel objects would not be cleared from memory as expected. This would result in abnormally high memory utilization in some cases. The memory leak has now been fixed.\nDeprecationWarning generated for async/await keywords\n\nUsing the agent may have generated a DeprecationWarning around async/await being reserved keywords. The DeprecationWarning should no longer be generated.\n   ```\n   \n  \n  \n   ### 2.98.0.81\n   ```\n   This release of the Python agent adds improvements to django instrumentation,  improvements to django rest framework instrumentation, and various bug fixes.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n\nImproved Features\n\n\nEnabled reporting of handled exceptions in Django REST Framework\n\nExceptions handled by django rest framework are now reported if the resulting response code is not ignored (see ignore_status_codes for details).\nAdd support for the error_collector.ignore_status_codes setting in Django\n\nIgnoring exceptions in Django was previously limited to the error_collector.ignore_errors configuration option. Ignoring exceptions by response status code is now supported for Django through the use of the error_collector.ignore_status_codes configuration option.\n\n\nBug Fixes\n\n\nServicing aiohttp websocket requests results in an application crash\n\nServicing a websocket request in an aiohttp application may have resulted in an application crash when using the New Relic python agent. The application will now operate as expected when handling a websocket request.\nIgnore incomplete aiohttp transactions\n\nIn aiohttp, connections can be terminated prior to the HTTP response being generated and sent. In those cases, the request handler may be cancelled. These transactions are no longer reported.\nFix HTTP status reporting for Tornado transactions\n\nHTTP status was not properly added to Tornado transaction events and transaction traces. HTTP status is now automatically added to Tornado transaction events in Insights and transaction traces in APM.\nFix reporting of concurrent external requests in Tornado\n\nExternal requests that execute in parallel in a tornado application may not have been recorded. This issue has been addressed.\n   ```\n   \n  \n  \n   ### 2.96.0.80\n   ```\n   This release of the Python agent adds instrumentation for aiohttp framework, adds support for displaying Heroku dyno names, and various bug fixes.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n\nNew Features\n\n\nAdd instrumentation for aiohttp framework\n\nData is now automatically collected for applications using the aiohttp framework. Data for aiohttp applications will appear in both APM and Insights. Additionally, cross application tracing is supported for incoming requests for aiohttp applications. In addition to service maps, aiohttp applications will now show the calling application in transaction traces.\nAdd support for displaying Heroku dyno names\n\nHeroku-friendly logic is now applied to how dyno names are displayed. This includes being able to collapse dyno hostnames based on prefix.\n\n\nBug Fixes\n\n\nFix crash for gunicorn gaiohttp driver\n\nUsing gunicorn&#39;s gaiohttp worker with New Relic Browser monitoring enabled may have resulted in an application crash. This crash has been fixed and the gaiohttp worker is now fully supported with the New Relic Python Agent.\nFix crash for pika versions 0.9.x and earlier\n\nUsing the agent with pika versions 0.9.x and earlier could have resulted in an application crash. This issue has now been fixed.\n   ```\n   \n  \n  \n   ### 2.94.0.79\n   ```\n   This release of the Python agent adds instrumentation for aiohttp client.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n\nNew Features\n\n\nAdd instrumentation for aiohttp client\n\nOutbound HTTP requests through the aiohttp library are now recorded. aiohttp Cross Application Tracing is now supported for outbound requests. In addition to Service Maps, applications accessed through the aiohttp client will now appear in transaction traces.\n\n\nBug Fixes\n\n\nFix crash when using psycopg2 v2.7 composable queries\n\nThe psycopg2 library introduced a module to generate SQL dynamically (psycopg2.sql) in version 2.7. Passing a Composable type object (psycopg2.sql.Composable) to execute or executemany resulted in an application crash. The agent now correctly handles psycopg2 Composable objects.\n   ```\n   \n  \n  \n   ### 2.92.0.78\n   ```\n   This release of the Python agent adds support for monitoring of outbound gRPC requests and adds an API for cross application tracing of custom non-HTTP transports. For details on APIs for cross application tracing see the cross application tracing document.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index  or can be downloaded directly from the New Relic download site.\n\nNew Features\n\n\nAdd API for cross application tracing of non-HTTP external services\n\n\nA new API is now exposed for implementing cross application tracing in custom instrumentation of non-HTTP transport libraries. For usage of this API see the cross application tracing document.\n\nAdd instrumentation for gRPC client calls\n\n\nOutbound gRPC requests will now show up in APM under the External Services tab and in transaction traces.\n\n\n\nBug Fixes\n\n\nFixes erroneous recording of TastyPie NotFound exceptions\n\n\nWhen a TastyPie API view raised a NotFound exception resulting in a 404 response, the agent may have erroneously recorded the exception. This has now been fixed.\n   ```\n   \n  \n  \n   ### 2.90.0.75\n   ```\n   This release of the Python agent includes bug fixes and improvements to the builtin pika instrumentation.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n\nImproved Feature\n\n\nNaming of Pika Message Transactions\n\nThis release improves the naming of message transactions . Message consumer transactions are now split based on the name of the consume callback.\nImproved metadata collection for cloud providers\n\nThe agent now collects additional metadata when running in AWS, GCP, Azure, and PCF.  This information is used to provide an enhanced experience when the agent is deployed on those platforms.\n\n\nBug Fixes\n\n\nCherryPy WSGI Server automatic instrumentation\n\nThis release fixes a bug where cherrypy.wsgiserver.CherryPyWSGIServer was not being instrumented. This bugfix impacts CherryPy versions v6.1.0 to v8.9.1.\n   ```\n   \n  \n  \n   ### 2.88.1.73\n   ```\n   This release of the Python agent includes bug fixes for the pika RabbitMQ library instrumentation.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n\nBug Fixes\n\n\nUsing pika to make RPC-style calls from Tornado could result in an application crash\n\nWhen making a remote procedure call from a tornado web application using the pika RabbitMQ library&#39;s Tornado connection, it is possible for the tornado web application to crash. Pika Tornado connections no longer result in an application crash.\nAttributeError generated from an unregistered application starting a MessageTransaction\n\nApplications which consume message transactions and do not call register_application can raise an AttributeError resulting in an application crash. This issue has now been fixed.\n   ```\n   \n  \n  \n   ### 2.88.0.72\n   ```\n   This release of the Python agent adds built-in instrumentation for the pika RabbitMQ library, a message broker API which can be used to add custom instrumentation for additional message brokers, and various bug fixes.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n\nNew Features\n\n\nPika Instrumentation\n\nThe RabbitMQ pika library is now automatically instrumented. The agent will report data for messages sent and received by an application. Data on messages is available in both APM and Insights.  Applications connected through a RabbitMQ exchange will now also be visible on Service Maps as part of Cross Application Tracing.\nMessage Broker API\n\nA Message Broker API is now available for use in custom instrumentation. The Message Broker API will send data to APM and Insights (through message.routingKey and message.queueName attributes) for message broker related operations.\nTornado 4.5 Support\n\nThe Python Agent&#39;s out-of-the-box Tornado 4 instrumentation now supports Tornado version 4.5.\nTornado AsyncIO Loop\n\nIn addition to the Tornado PollIOLoop, the AsyncIO loop is now supported as part of our Tornado instrumentation.  When Tornado is configured to use the AsyncIO loop, data will now be sent to New Relic.  Note that AsyncIO is not yet generally supported.\n\n\nBug Fixes\n\n\nSQL comments beginning with a &quot;--&quot; resulted in an improperly parsed query\n\nWhen executing SQL queries with comments that used the &quot;--&quot; comment syntax, the database operation and table was not properly parsed resulting in queries being absent from the Databases tab. Queries with &quot;--&quot; comments should now show up in the Database tab.\nAttributeError generated when using Tornado 4 HTTPRequest objects in an external web call\n\nWhen using the Tornado 4 HTTPRequest object as an argument to HTTPClient.fetch, it was possible to generate an AttributeError. The web call now completes as expected.\nSlow network connections may result in lost data\n\nWhen, due to a slow network, a 408 error is returned from New Relic data was not retransmitted. Data is now retransmitted when a 408 is received.\n   ```\n   \n  \n  \n   ### 2.86.3.70\n   ```\n   This release of the Python agent includes various bug fixes as described below.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n\nBug Fixes\n\n\nHandle exceptions generated by Tornado 4 AsyncHTTPClient during fetch\n\nExceptions generated by a call to the AsyncHTTPClient resulted in an agent instrumentation error. Exceptions generated by AsyncHTTPClient are now recorded and properly handled.\nUsing gevent/eventlet on Python 3.6 resulted in a RecursionError\n\nPython 3.6 introduced a change to the ssl library.  This change can result in a recursion error when the New Relic agent imports ssl prior to eventlet/gevent patching the ssl library (as is the case with use of the newrelic-admin script). This recursion error has been fully mitigated.\n   ```\n   \n  \n  \n   ### 2.86.3.69\n   ```\n   This release of the Python agent includes various bug fixes as described below.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n\nBug Fixes\n\n\nHandle exceptions generated by Tornado 4 AsyncHTTPClient during fetch\n\nExceptions generated by a call to the AsyncHTTPClient resulted in an agent instrumentation error. Exceptions generated by AsyncHTTPClient are now recorded and properly handled.\nUsing gevent/eventlet on Python 3.6 resulted in a RecursionError\n\nPython 3.6 introduced a change to the ssl library.  This change can result in a recursion error when the New Relic agent imports ssl prior to eventlet/gevent patching the ssl library (as is the case with use of the newrelic-admin script). This recursion error has been fully mitigated.\n   ```\n   \n  \n  \n   ### 2.86.2.68\n   ```\n   This release is the same as 2.86.0.65 except it has been re-published to pypi due to an issue with 2.86.1.66.\n   ```\n   \n  \n  \n   ### 2.86.1.66\n   ```\n   This release has been superseded. Please use version 2.86.2.68 or higher.\n\n\nThis release of the Python agent includes various bug fixes as described below.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n\nBug Fixes\n\n\nHandle exceptions generated by Tornado 4 AsyncHTTPClient during fetch\n\nExceptions generated by a call to the Tornado 4 AsyncHTTPClient resulted in an agent instrumentation error. Exceptions generated by AsyncHTTPClient are now recorded and properly handled.\nUsing gevent/eventlet on Python 3.6 resulted in a RecursionError\n\nPython 3.6 introduced a change to the ssl library.  This change can result in a recursion error when the New Relic agent imports ssl prior to eventlet/gevent patching the ssl library (as is the case with use of the newrelic-admin script). This recursion error has been mitigated when using newrelic-admin to start applications.\n   ```\n   \n  \n  \n   ### 2.86.0.65\n   ```\n   This release of the Python agent includes improvements to our introductory support for Tornado 4 applications as well as bug fixes.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n\nNew Feature\n\n\nTornado 4 Outbound Cross Application Tracing\n\nTornado 4 Cross Application Tracing is now supported for outbound web transactions. In addition to Service Maps, Tornado 4 transaction traces will now contain links to the application it called. With this update, Cross Application Tracing is now fully supported for Tornado 4 applications.\n\n\nBug Fixes\n\n\nDjango 1.10+ browser monitoring with new-style gzip middleware\n\nBrowser monitoring was not automatically inserted when using new style Django 1.10+ gzip middleware. Browser monitoring code is now inserted as expected.\nUsing motor versions 1.X generated instrumentation errors\n\nMotor 1.0 removed the MotorReplicaSetClient class which resulted in the New Relic Python Agent generating an instrumentation error when attempting to access that class. The instrumentation has been fixed.\n   ```\n   \n  \n  \n   ### 2.84.0.64\n   ```\n   This release of the Python agent includes bug fixes and improvements to the precision of the duration data recorded for transaction traces.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n\nImproved Feature\n\n\nTransaction trace precision\n\nThis release improves the precision of transaction traces. Duration of functions in a transaction trace are now recorded at sub-millisecond precision.\n\n\nBug Fixes\n\n\nCustom classmethod traces may incorrectly return the parent class\n\nWrapping classmethods in classes that are subclassed could cause the subclassed classmethod to be improperly bound to the parent class.  This would result in the classmethod returning an instance of the parent class when the method was called on a child class.\nHandle incomplete Tornado coroutine traces\n\nTracing a Tornado coroutine that never completed and was later garbage collected, could result in an application hang.  This has been fixed.\n   ```\n   \n  \n  \n   ### 2.82.1.63\n   ```\n   This release of the Python agent includes a bug fix for our introductory support for Tornado 4 applications.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n\nBug Fixes\n\n\nEnding Tornado 4 transactions inside of a traced function results in an internal agent error\n\nEnding a Tornado 4 web transaction within a traced function previously resulted in the generation of an agent traceback. The agent now completes tracing the function before ending the transaction, resulting in the correct reporting of these transactions to New Relic.\n   ```\n   \n  \n  \n   ### 2.82.0.62\n   ```\n   This release of the Python agent improves our introductory support for Tornado 4 applications by adding Cross Application Tracing for web transactions that are sent to a Tornado 4 application.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n\nNew Feature\n\n\nTornado 4 applications will now appear in Service Maps\n\nTornado 4 Cross Application Tracing is now supported for inbound web transactions. In addition to Service Maps, the calling application&#39;s APM will now have links to the Tornado 4 application it called in the External Services tab and in Transaction Traces.\n\n\nBug Fixes\n\n\nRecord exceptions outside of view handlers in Django 1.10\n\nUnhandled exceptions that occurred outside of a view handler in Django 1.10 were not reported. In addition to middleware exceptions, these unhandled exceptions can be generated when a view handler returns a TemplateResponse and rendering that template would result in an exception.\nConsistent WSGI/Application and WSGI/Response segments\n\nPrior to this release, the agent would group segments under WSGI/Application and WSGI/Response differently, depending on whether or not browser monitoring was enabled. This has now been made consistent.\nImproved New Relic WSGI middleware behavior\n\nThe New Relic agent is now resilient when called by non-conforming middleware.  Transactions will continue to be reported normally when the New Relic agent is called by WSGI middleware that does not call the close() method as described in the PEP 333 specification.\n   ```\n   \n  \n  \n   ### 2.80.1.61\n   ```\n   This release of the Python agent is a hotfix release to address a problem with the Tornado 4 instrumentation for curl_httpclient introduced in our last release (v2.80.0.60). Under the circumstances described below, calling CurlAsyncHTTPClient.fetch_impl() could result in an agent error.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from our download site.\n\nBug Fix\n\n\nFix CurlAsyncHTTPClient.fetch_impl() instrumentation\n\nIf fetch_impl() was called by passing the request argument positionally, but passing callback as a keyword argument, then the agent would throw an error. In practice, this only affected customers who implemented a custom version of fetch_impl(), but for those affected customers, this is now fixed.\n   ```\n   \n  \n  \n   ### 2.80.0.60\n   ```\n   This release of the Python agent enhances our introductory support for Tornado 4, most notably by adding support for tornado.curl_httpclient.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n\nNew Features\n\n\nTornado 4 curl_httpclient support\n\nPreviously, the agent&#39;s Tornado 4 instrumentation only supported the default tornado.simple_httpclient. With this release, support has been added for tornado.curl_httpclient as well.\nTornado 4 ZeroMQ IOLoop support\n\nUsing ZMQIOLoop in place of the default Tornado IOLoop is now supported for Tornado 4 applications.\n\n\nImproved Feature\n\n\nImproved transaction names for Django REST Framework\n\nWhen using the Python agent with Django REST Framework and Python 3, function-based views wrapped with the rest_framework.decorators.api_view decorator would result in transactions with names based on the decorator (WrappedAPIView.handler) rather than names based on the original view function. (This did not affect applications running with Python 2.)\n\nWith this release, the transaction names for these wrapped views are now based on the name of the original view function in both Python 2 and Python 3.\n\n\nBug Fix\n\n\nEnd transactions correctly with Tornado 4 asynchronous decorator\n\nWhen the agent records a transaction for a Tornado 4 RequestHandler method that is decorated with the tornado.web.asynchronous decorator, the transaction should remain open until RequestHandler.finish() is called. Prior to this release, there were some circumstances where the agent closed the transaction prematurely, resulting in transaction durations that were too short. This has now been fixed.\n   ```\n   \n  \n  \n   ### 2.78.0.57\n   ```\n   This release of the Python agent adds support for reporting datastore instance information for the elasticsearch library.\n\nOver the past few releases, support has been added to the agent for collecting datastore instance information for a number of drivers. See a complete list of supported packages.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n\nNew Feature\n\n\nDatastore instance information for elasticsearch\n\nFor operations made using the official Elasticsearch client, the Python agent will collect the host and port of the elasticsearch server. This data will be displayed in transaction traces and in slow query traces in APM.\n\n\nBug Fix\n\n\nCornice 2.3.0 TypeError\n\nWhen using the latest version of Cornice,the Python agent would raise a TypeError exception due to not handling the changed signature of cornice.Service.decorate_view(). Earlier versions of Cornice were not affected, and with this release, the Python agent no longer raises an error for version 2.3.0.\n   ```\n   \n  \n  \n   ### 2.76.0.55\n   ```\n   This release of the Python agent adds support for reporting datastore instance information for the python-memcached library. It also addresses a couple of Python 3 issues related to naming metrics and transactions.\n\nOver the past few releases, support has been added to the agent for collecting datastore instance information for a number of drivers. See a complete list of supported packages.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n\nNew Features\n\n\nDatastore instance information for python-memcached\n\nFor most memcached operations made using the python-memcached package, the Python agent will collect the host and port of the memcached server, as well as the memcached database index number. This data will be displayed in transaction traces and in slow query traces in APM.\n\nSupported operations include: add, append, cas, decr, delete, get, gets, incr, prepend, replace, set.\n\nCurrently, the Python agent does not collect instance information for operations that interact with multiple memcached instances. These include: delete_multi, flush_all, get_multi, get_slabs, get_stats, set_multi.\n\n\nBug Fixes\n\n\nNames for subclass methods in Python 3\n\nPreviously, when using Python 3, if a method was defined on a base class, but was called as a method on an instance of a subclass, the agent would generate a metric name or transaction name for that method using the base class. It would also use the module name of the base class in the metric or transaction name.\n\nWith this release, the metric name or transaction name will use the class name of the subclass, as well as the module name of the subclass. This is consistent with how the naming works for Python 2.\nNames for Flask pluggable views in Python 3\n\nWhen monitoring Python 3 Flask applications, the agent would create metric and transaction names for Flask pluggable (or, class-based) views using the name of the View.as_view() classmethod, making it impossible to distinguish between different views in APM. Now, the metric and transaction name uses the name that is passed into View.as_view().\n\nFor example, a view defined as view_func=ShowUsersView.as_view(&#39;show_users&#39;) would use show_users as the view name. This is consistent with how the naming works for Python 2.\nRedis client with custom connection pool\n\nIf a custom connection pool was used with the redis client, the agent could throw an AttributeError when attempting to gather datastore instance information. One library known to define a custom connection pool that encountered this issue is Redis Blaster. With this release, the agent will no longer throw an error for custom connection pools. In addition, the agent will now be able to gather datastore instance information for some operations, even when using a custom connection pool.\nDeveloper Mode error message during &quot;fake&quot; harvest\n\nWhen using the configuration setting of developer_mode = True, the agent does not transmit any data to New Relic. Instead, it performs a &quot;fake harvest&quot;. In some cases, it was possible for the agent to log an AssertionError during the &quot;fake harvest&quot;, but this issue has now been fixed.\n   ```\n   \n  \n  \n   ### 2.74.0.54\n   ```\n   This release of the Python agent adds support for reporting datastore instance information for both the redis and MySQLdb drivers.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from the New Relic download site.\n\nNew Features\n\n\nDatastore instance information for redis\n\nFor redis operations made using the redis-py package, the Python agent will collect the host and port of the redis server, as well as the redis database index number. This data will be displayed in transaction traces and in slow query traces in APM.\nDatastore instance information for MySQLdb\n\nFor queries made with the  MySQLdb driver, the Python agent will collect the host and port of the database server, as well as the database name. This data will be displayed in transaction traces and in slow query traces in APM.\n   ```\n   \n  \n  \n   ### 2.72.1.53\n   ```\n   This release of the Python agent is a hotfix release to address a problem introduced in our last release (v2.72.0.52) where users of the psycopg2 Postgresql database adapter could see extra Datastore entries in the Breakdown Table on the Transactions page in APM.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from our download site.\n\nBug Fix\n\n\nRemove extra Datastore segments from the Transactions Breakdown Table\n\nDue to the extra Datastore segments in the Breakdown Table on the Transactions page in APM, the &quot;% Time&quot; column would add up to greater than 100%. This problem has now been fixed. Users of psycopg2 who are using v2.72.0.52 of the Python agent are encouraged to upgrade to this latest version.\n   ```\n   \n  \n  \n   ### 2.72.0.52\n   ```\n   This release of the Python agent adds support for reporting datastore instance information for the psycopg2 Postgresql driver.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from our download site.\n\nNew Feature\n\n\nDatastore instance information for psycopg2\n\nFor queries made with the psycopg2 Postgresql driver, the Python agent will collect the host and port of the database server, as well as the database name. This data will be displayed in transaction traces and in slow query traces in APM.\n   ```\n   \n  \n  \n   ### 2.70.0.51\n   ```\n   This release of the Python agent adds support for the improved Django middleware introduced in Django v1.10, and also adds instrumentation for the boto3 and awscli packages.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from our download site.\n\nNew Features\n\n\nDjango 1.10 Middleware Support\n\nAs described in Django Enhancement Proposal 5 and in the Django v1.10 middleware documentation, Django introduced a new style of middleware in version 1.10. Previously, Django allowed you to define certain methods on middleware classes: process_request() methods would run before the view handler was invoked, and process_response() methods would run after the response was generated. Accordingly, the Python agent would instrument these as separate, self-contained methods, and in the Transaction Trace Details view, they would be displayed at the same level as the view handler in the segments hierarchy.\n\nWith the improved version in Django v1.10, the middleware classes form a &quot;chain&quot;, and each middleware calls the next middleware, until it reaches the end of the chain and calls the actual view. This means that new-style middleware acts as a wrapper, and each one is nested inside the previous one. As a result, in the Transaction Trace Details view, each middleware will be nested inside the previous one, and the actual view handler will be displayed nested inside the innermost middleware class. Furthermore, the duration of each middleware segment will include the duration of the middleware nested inside it.\n\nBecause Django v1.10 is backwards-compatible with the old-style middleware, the agent also supports instrumenting old-style middleware in Django v1.10\nBoto3 and AWS CLI Support\n\nWith this release, API calls to Amazon Web Services endpoints made with the boto3 and awscli packages will be recorded as External Traces and will be visible in the External Services tab in APM. This is achieved by instrumenting the botocore library, which both boto3 and awscli utilize.\n\n\nBug Fixes\n\n\nProxy Scheme Output of network-config Command\n\nPrior to this release, the newrelic-admin network-config command would output the incorrect proxy scheme. That is now fixed.\nDebug Console Works with Python 3\n\nThe newrelic-admin debug-console is now compatible with Python 3.\n   ```\n   \n  \n  \n   ### 2.68.0.50\n   ```\n   This release of the Python agent is a bug fix release that addresses several recently reported issues.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from our download site.\n\nBug Fixes\n\n\nWebSocket requests could cause application errors\n\nWhen an application is using gevent-websocket to serve a mixture of WSGI and WebSocket endpoints, it is possible for WebSocket requests to interfere with the instrumentation of non-WebSocket requests, and cause application errors. While a fix for this has been added to the &#39;gevent-websocket` main branch, that fix has not been released to PyPI yet. To address the problem now, the Python agent explicitly ignores WebSocket requests.\nDisabling browser monitoring inadvertently disabled other features\n\nDisabling browser monitoring had the unintended effect of disabling certain other Response-related features of the agent. Specifically, the response.status attribute was not recorded, and the Cross Application Tracing headers were not added to the HTTP headers of the outgoing response. With this release, those features now work when using the configuration setting of browser.monitoring.enabled = False.\nCalling a Celery task within another task could cause a RuntimeError\n\nThe Python agent would throw a RuntimeError(&#39;transaction already active&#39;) when instrumenting a Celery task that performed the following combination of actions:\n\n\nUtilized the agent API to end the transaction early (end_of_transaction), or to ignore the transaction altogether (ignore_transaction).\nAfter ending or ignoring the transaction, called another Celery task that would run synchronously.\n\n\nThis scenario, which most commonly occurs when taking advantage of Celery Workflows to compose multiple tasks together, will no longer result in a RuntimeError.\n   ```\n   \n  \n  \n   ### 2.66.0.49\n   ```\n   This release of the Python agent is a bug fix release that addresses several outstanding issues. In addition, the agent&#39;s instrumentation for the Pyramid web framework was updated to handle changes introduced in version 1.7 of Pyramid.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from our download site.\n\nFor a list of known issues with the Python agent, see Status of the Python agent.\n\nNew Feature\n\n\nSupport for Pyramid 1.7\n\nIn version 1.7 of the Pyramid web framework, the ViewDeriver class was removed and replaced with a custom view pipeline, composed with view derivers. This required a change to where the agent applied it&#39;s instrumentation, since we were previously instrumenting the ViewDeriver class.\n\n\nBug Fixes\n\n\nGevent and Python 3.4+\n\nWhen running the agent with gevent in Python 3.4+, the agent would throw an AttributeError when accessing the _sleep attribute in the threading module, which was removed in Python 3.4. The agent now handles this properly.\nPossible missing application exceptions in APM Error Analytics\n\nUsing the record_exception() API, it is possible to record an exception against the application, but outside of a transaction. If there was a time window in which no transaction exceptions were recorded, but only application exceptions were recorded, then no exceptions would be displayed when viewing that time window in APM Error Analytics. With this release, application exceptions show up as expected, whether or not transaction exceptions were also recorded.\nCherryPyWSGIServer and keyword arguments\n\nPreviously, the agent would fail to instrument CherryPyWSGIServer correctly when it was initialized using keyword arguments. That is now handled correctly.\nMissing attributes in Transaction Events\n\nIn version 2.60.0.46 of the agent, two response header attributes were renamed, but they were not added to Transaction Events as they should have been.\n\n\nresponse.headers.contentLength\nresponse.headers.contentType\n\n\nThese attributes are now included in Transaction Events.\n\n\nChanged Feature\n\n\nCapture port for all HTTP requests to External Services\n\nPrior to this release, the agent would capture the port for HTTP requests to external services for only some of the HTTP libraries that the agent instruments. Notably, the port was missing when using these libraries directly: httplib, httplib2, and urllib3. The agent now captures the port for these libraries.\n   ```\n   \n  \n  \n   ### 2.64.0.48\n   ```\n   This release of the Python agent is a bug fix release which improves our introductory support for instrumenting Tornado 4 applications. Full details about the status of our Tornado 4 support can be found on our Introductory Tornado 4 support page.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from our download site.\n\nFor a list of known issues with the Python agent, see Status of the Python agent.\n\nNew Feature\n\n\nNew attributes captured for Tornado 4 applications\n\nThe following attributes are now captured for requests made to Tornado 4 applications:\n\n\nrequest.headers.accept\nrequest.headers.host\nport\n\n\n\nBug Fixes\n\n\nPotentially too many metrics created for tornado.httpclient function traces\n\nThe tornado.httpclient instrumentation for Tornado 4 applications could cause a &quot;metric grouping issue&quot; in the function traces it created, if it was used to make requests to a large number of unique URLs. To address this issue, the URL is no longer included in the name of the function trace.\nTransactions in Tornado 4 applications could be created with invalid agent settings\n\nIn the prior release, if a transaction started before the agent had completed registration with the collector, the transaction could have invalid settings, which would result in various errors in the agent log, including an AttributeError when an external call was made during the transaction. These errors only happened at application startup until registration was complete. With this release, transactions cannot start with invalid settings.\nThe httplib2 instrumentation did not process the cross application tracing headers in the response\n\nFailing to process the response headers resulted in the inability to link to cross application tracing details in the Transaction Trace Details view, as well as missing ExternalTransaction and ExternalApp metrics. Now, the httplib2 instrumentation in the agent processes the cross application tracing headers correctly.\n\n\nKnown Tornado 4 Limitations Addressed\n\n\nExplain plans for queries made with psycopg2&#39;s &quot;async mode&quot; are disabled automatically\n\nCurrently, the Python agent does not support explain plans for queries made in psycopg2&#39;s &quot;async mode.&quot; In the prior release, it was necessary to add the configuration setting transaction_tracer.explain_enabled = false to disable explain plans, or else errors would occur during data harvest, potentially causing loss of data. With this release, the agent disables explain plans automatically when async mode is detected.\nAdded support for Synthetics Transaction Traces\n\nTornado 4 applications will now recognize incoming requests from Synthetics and generate transaction traces for Synthetic requests.\n\n\nStatus of Tornado 4 Support\n\nA current list of known limitations can be found on our Introductory Tornado 4 support page. No new known limitations have been added since our introductory release (v2.62.0.47). In the next few releases, we plan to continue addressing these issues.\n   ```\n   \n  \n  \n   ### 2.62.0.47\n   ```\n   This release of the Python agent adds introductory support for instrumenting Tornado 4 applications.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from our download site.\n\nFor a list of known issues with the Python agent, see Status of the Python agent.\n\nNew Feature\n\n\nIntroductory Support for Tornado 4. (See below for details.)\n\n\nBug Fix\n\n\nDjango Template Tags for Browser Monitoring Fixed for Django 1.9\n\n\nFor manual insertion of the browser monitoring javascript for page load timing, the Python agent offers two Django template tags: newrelic_browser_timing_header and newrelic_browser_timing_footer.\n\nStarting in Django version 1.9, the output of simple_tag is now escaped, which results in the browser monitoring javascript being included as escaped text in the HTML output. To fix this issue, the agent now uses django.utils.safestring:mark_safe() to prevent automatic escaping for these two template tags.\n\nIntroductory Support for Tornado 4\n\nNew Relic is pleased to announce introductory support for Tornado 4. While not all features are supported at this point, providing it at an early stage allows interested customers to preview our Tornado 4 support, and provide feedback on what works well and what doesn&#39;t.\n\n\nWe strongly advise running the introductory Tornado 4 instrumentation in a testing or staging environment before considering using it in a production environment.\n\n\nFor detailed information about the introductory Tornado 4 support, including Supported Features, Design Decisions, and Known Limitations, see Introductory Tornado 4 support.\n\nStatus of Tornado 4 Support\n\nThe following is a list of known limitations for our Tornado 4 support as it exists in the current version of the agent. In the next few releases, we plan to address these issues.\n\n\nIf you use psycopg2 in aynchronous mode, you must disable explain plans in the Python agent, or else the agent will throw an error when it attempts to run an explain plan query. Add this setting to your newrelic.ini configuration file:\n\ntransaction_tracer.explain_enabled = false\n\nMetric names should be more consistent. For a method of a class, the metric name should contain both the name of the class and the method, but sometimes, the metric name will be missing the class name.\nThe nesting of segments in a Transaction Trace should be improved. Right now, transaction traces give a good indication of the order that callbacks run on the IOLoop, but they do not group together callbacks that belong to the same coroutine, nor do they show how callbacks relate to each other.\nTransaction Traces mislabel time spent in &quot;Application code&quot;. Because the Tornado 4 instrumentation traces all callbacks that run on the IOLoop, nearly everything that happens in a transaction is recorded. Very little is uninstrumented &quot;Application code&quot;. When you see &quot;Application code&quot; time in a transaction trace, that usually means that the IOLoop was either busy running callbacks belonging to another transaction, or was waiting and not doing any work. This will be made clearer in a future release.\nIn the current version of the agent, the Total Time for a transaction will always equal the duration of the transaction. In future versions, we may begin measuring the time spent waiting for asynchronous External Traces and Datastore Traces to return results, which will increase the Total Time for a transaction, making it possible to have a Total Time greater than the duration of the transaction.\nWhen using tornado.httpclient, no Cross Application Tracing headers are added to the outgoing requests. (This is true for both HTTPClient and AsyncHTTPClient.) That means that the application that the httpclient connects to will not show up in any of the following: trace maps, transaction maps, and service maps.\nAsynchronous External Traces only trace the initial HTTP connection. They do not trace the time for the response to come back.\nIf you monitor your Tornado 4 application with Synthetics, the Python agent will not capture transaction traces for Synthetics checks, so you will be unable to connect your Synthetics results to APM transaction traces.\nMeasuring thread utilization is disabled for Tornado applications.\nExceptions thrown in RequestHandler.initialize() are not recorded.\nUse of Tornado&#39;s built-in multi-process mode to start multiple processes and have them all share the same port is untested and unsupported.\nUse of tornado.wsgi.WSGIAdapter and tornado.wsgi.WSGIContainer is untested and unsupported.\nUse of tornado.platform.asyncio to bridge between asyncio and Tornado IOLoop is untested and unsupported. Currently, the agent only supports the use of the tornado.ioloop.IOLoop.\nUse of the async and await keywords is untested and unsupported.\nIntegration with Twisted is untested and unsupported.\n   ```\n   \n  \n  \n   ### 2.60.0.46\n   ```\n   This release of the Python agent enables the ability to add Custom Insights Events through a new record_custom_event() API.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from our download site.\n\nFor a list of known issues with the Python agent, see Status of the Python agent.\n\nNew Feature\n\n\nCustom Insights Events\n\n\nPrior to this release, the Python agent had the capability to record two types of Insights events automatically: Transaction and TransactionError events. In addition, custom attributes could be added to those events. Now, with the addition of the record_custom_event() API, it is possible to define your own custom event types, enabling greater flexibility about what types of events you can view and query in Insights.\n\nFor details, see the Insights documentation on Inserting Custom Events.\n\nChanged Feature\n\n\nAttributes renamed\n\n\nTwo attributes have been renamed, in order to be consistent with the naming convention of other New Relic agents. The affected attributes are:\n\n\nresponse.headers.contentLength (was response.contentLength)\nresponse.headers.contentType (was response.contentType)\n   ```\n   \n  \n  \n   ### 2.58.2.45\n   ```\n   This release of the Python agent is a hotfix release to address a problem where the agent could fail to validate the SSL certificate of the New Relic collector in some environments.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from our download site.\n\nFor a list of known issues with the Python agent, see Status of the Python agent.\n\nBug Fix\n\nIf the Python agent was used in an environment where the certifi package was installed, the Python agent would use the certifi CA certificates bundle to validate the certificate of the New Relic collector. However, the latest release of certifi (November 20, 2015) removed some older CA certificates with 1024-bit keys.\n\nThe SSL certificate for the New Relic collector is cross-signed with both a 1024-bit certificate and a 2048-bit certificate, but in some circumstances, the stronger root certificate was not used for validation. When the 1024-bit certificate was no longer included in the certifi bundle, SSL validation would fail. Affected customers would see warnings in their agent log stating &quot;Data collector is not contactable&quot; due to an SSLError.\n\nTo address this issue, the agent no longer uses the certifi CA certificates bundle, nor the certificates bundled with requests. Instead, it only uses the CA bundle included with the agent to validate the New Relic collector certificate.\n   ```\n   \n  \n  \n   ### 2.58.1.44\n   ```\n   This release of the Python agent is a hotfix release to address a problem where the package failed to install under certain circumstances.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from our download site.\n\nFor a list of known issues with the Python agent, see Status of the Python agent.\n\nBug Fix\n\nThe README.rst file contained non-ASCII characters, which could result in a UnicodeDecodeError during installation. Those characters have been removed.\n   ```\n   \n  \n  \n   ### 2.58.0.43\n   ```\n   This release of the Python agent reports error events to Insights and captures enhanced error data to support the new Advanced Error Analytics feature in APM.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from our download site.\n\nFor a list of known issues with the Python agent, see Status of the Python agent.\n\nNew Feature\n\n\nError Events\n\n\nThe Python agent now sends TransactionError events for Advanced Error Analytics, which power the new APM Errors functionality (currently in Beta). This allows users to create charts that facet and filter their error data by attributes, as well as explore their error events in Insights. For details, see the APM Errors documentation.\n\nChanged Feature\n\n\nAdditional Attributes collected\n\n\nThe agent now collects additional attributes for web transactions:\n\n\nHTTP request headers:  Host and Accept \nHTTP response header :Content-Length\n\n\nBug Fix\n\n\nImproved unicode support for exception messages\n\n\nUnicode exception messages will still be preserved, even if sys.setdefaultencoding() has been called to change the default encoding.\n   ```\n   \n  \n  \n   ### 2.56.0.42\n   ```\n   This release of the Python agent adds much more flexibility around what attributes are sent to New Relic, and where they are displayed.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from our download site.\n\nFor a list of known issues with the Python agent, see Status of the Python agent.\n\nNew Feature\n\n\nFlexible capturing of attributes\n\n\nAttributes are key-value pairs that contain additional information to be added to an event or transaction. These key-value pairs can be viewed within transaction traces in New Relic APM, traced errors in New Relic APM, transaction events in Insights, and page views in Insights.\n\nA number of new configuration settings have been introduced to allow you to customize exactly which attributes will be sent to each of these destinations.\n\nFor details, see Python agent attributes.\n\nDeprecated Settings\n\nSeveral configuration settings have been deprecated. The most commonly used of the deprecated settings are capture_params and ignored_params. It is still possible to achieve the same functionality as the old settings by using the new attributes.include and attributes.exclude settings. For examples, see Python agent attribute examples.\n\nA complete list of deprecated settings can be found in deprecated configuration settings.\n\nWhile the usage of  deprecated settings is still supported, we recommend upgrading your configuration to use the new settings as soon as possible.\n\nChanged Feature\n\nPreviously, it was possible to save a list, dict, or tuple as an attribute value that could be displayed in transaction and error traces. However, these same attributes could not be displayed in Insights events. Now, all attributes are handled in a consistent manner, which means that all attribute values must be one of the following types:\n\nPython 2: str, unicode, int, long, float, bool\nPython 3: str, bytes, int, float, bool\n\n\nAll values which are not one of these types are automatically converted by calling str(value).\n   ```\n   \n  \n  \n   ### 2.54.0.41\n   ```\n   This release of the Python agent adds the ability to strip exception messages from error traces, in order to prevent the inadvertent capture of sensitive information.\n\nThe agent can be installed using easy_install/pip/distribute via the Python Package Index or can be downloaded directly from our download site.\n\nFor a list of known issues with the Python agent, see Status of the Python agent.\n\nNew Features\n\n\nException Message Whitelisting\n\n\nBecause an exception message can contain sensitive information, the agent now provides the ability to strip exception messages before sending error traces to APM. Exception messages will be stripped automatically in high security mode. For exception messages you know to be safe, you can add them to a whitelist so that those messages are passed unaltered to APM. Two new configuration settings control this feature: strip_exception_messages.enabled and strip_exception_messages.whitelist.\n\nBug Fixes\n\n\ncapture_request_params API disabled for high security mode\n\n\nWhen operating in high security mode, the agent should not capture query string parameters. However, prior to this release, it was possible to call newrelic.agent.capture_request_params(flag=True), even if the agent was in high security mode, and the agent would capture and report query string parameters. Now, the capture_request_params API call does not override the capture_params setting when the agent is in high security mode, so query parameters are not captured.\n   ```\n   \n  \n  \n   ### 2.52.0.40\n   ```\n   This release of the Python agent adds the ability to customize the hostname displayed in the APM UI, as well as updating the solrpy and pysolr instrum"},"comment":{"url":"https://api.github.com/repos/psiinon/pontoon/issues/comments/419640648","html_url":"https://github.com/psiinon/pontoon/pull/288#issuecomment-419640648","issue_url":"https://api.github.com/repos/psiinon/pontoon/issues/288","id":419640648,"node_id":"MDEyOklzc3VlQ29tbWVudDQxOTY0MDY0OA==","user":{"login":"pyup-bot","id":16239342,"node_id":"MDQ6VXNlcjE2MjM5MzQy","avatar_url":"https://avatars0.githubusercontent.com/u/16239342?v=4","gravatar_id":"","url":"https://api.github.com/users/pyup-bot","html_url":"https://github.com/pyup-bot","followers_url":"https://api.github.com/users/pyup-bot/followers","following_url":"https://api.github.com/users/pyup-bot/following{/other_user}","gists_url":"https://api.github.com/users/pyup-bot/gists{/gist_id}","starred_url":"https://api.github.com/users/pyup-bot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pyup-bot/subscriptions","organizations_url":"https://api.github.com/users/pyup-bot/orgs","repos_url":"https://api.github.com/users/pyup-bot/repos","events_url":"https://api.github.com/users/pyup-bot/events{/privacy}","received_events_url":"https://api.github.com/users/pyup-bot/received_events","type":"User","site_admin":false},"created_at":"2018-09-08T13:03:15Z","updated_at":"2018-09-08T13:03:15Z","author_association":"NONE","body":"Closing this in favor of #289"}}
{"actor":{"display_login":"pyup-bot"}}