{"id":6148,"date":"2024-01-18T15:32:04","date_gmt":"2024-01-18T22:32:04","guid":{"rendered":"https:\/\/jeremywhittaker.com\/?p=6148"},"modified":"2024-01-23T14:10:06","modified_gmt":"2024-01-23T21:10:06","slug":"pyfolio-attributeerror-series-object-has-no-attribute-iteritems-attributeerror-numpy-int64-object-has-no-attribute-to_pydatetime","status":"publish","type":"post","link":"https:\/\/new.jeremywhittaker.com\/index.php\/2024\/01\/18\/pyfolio-attributeerror-series-object-has-no-attribute-iteritems-attributeerror-numpy-int64-object-has-no-attribute-to_pydatetime\/","title":{"rendered":"Pyfolio &#8211; AttributeError: &#8216;Series&#8217; object has no attribute &#8216;iteritems&#8217; &#038; AttributeError: &#8216;numpy.int64&#8217; object has no attribute &#8216;to_pydatetime&#8217;"},"content":{"rendered":"\n<p>Recently I was following a paper and in the example they used <a href=\"https:\/\/github.com\/quantopian\/pyfolio\">Pyfolio <\/a>which is an awesome performance and risk analysis library in Python developed by Quantopian Inc when they were still around. Given that Quantopian is no longer around nobody is maintaining this library. I ran into a few errors and figured I would outline the solutions below in case anyone has these issues. But before I dive too deep into modifying this library you may be better off just uninstalling Pyfolio and loading<a href=\"https:\/\/github.com\/stefan-jansen\/pyfolio-reloaded\"> Pyfolio-reloaded<\/a>. <\/p>\n\n\n\n<p>Also, if you&#8217;re interested here is an article on <a href=\"https:\/\/new.jeremywhittaker.com\/index.php\/2024\/01\/23\/modifying-pyfolio-to-output-to-html\/\">modifying PyFolio to output charts and data to an HTM<\/a>L.<br><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Pyfolio-reloaded<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>pip uninstall pyfolio\npip install git+https:\/\/github.com\/stefan-jansen\/pyfolio-reloaded.git\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">First Error<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>Traceback (most recent call last):\n  File \"\/home\/shared\/algos\/ml4t\/pairs_trading_backtest.py\", line 512, in &lt;module&gt;\n    pf.create_full_tear_sheet(returns,\n  File \"\/opt\/anaconda3\/envs\/ml4t\/lib\/python3.10\/site-packages\/pyfolio\/tears.py\", line 201, in create_full_tear_sheet\n    create_returns_tear_sheet(\n  File \"\/opt\/anaconda3\/envs\/ml4t\/lib\/python3.10\/site-packages\/pyfolio\/plotting.py\", line 52, in call_w_context\n    return func(*args, **kwargs)\n  File \"\/opt\/anaconda3\/envs\/ml4t\/lib\/python3.10\/site-packages\/pyfolio\/tears.py\", line 496, in create_returns_tear_sheet\n    plotting.show_perf_stats(returns, benchmark_rets,\n  File \"\/opt\/anaconda3\/envs\/ml4t\/lib\/python3.10\/site-packages\/pyfolio\/plotting.py\", line 648, in show_perf_stats\n    for stat, value in perf_stats&#91;column].iteritems():\n  File \"\/opt\/anaconda3\/envs\/ml4t\/lib\/python3.10\/site-packages\/pandas\/core\/generic.py\", line 5989, in __getattr__\n    return object.__getattribute__(self, name)\nAttributeError: 'Series' object has no attribute 'iteritems'\n\nProcess finished with exit code 1\n<\/code><\/pre>\n\n\n\n<p>This is the first error I received which was generated by this line of code: <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\npf.create_full_tear_sheet(returns, \n                          positions=positions, \n                          transactions=transactions, \n                          benchmark_rets=benchmark.loc&#91;returns.index], \n                          estimate_intraday=False)\n<\/code><\/pre>\n\n\n\n<p>This can be fixed by modifying the file, \/opt\/anaconda3\/envs\/ml4t\/lib\/python3.10\/site-packages\/pyfolio\/plotting.py<br><br>The line of code I&#8217;m going to change is as follows:<br><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Existing:\nfor stat, value in perf_stats&#91;column].iteritems():\n\nNew:\nfor stat, value in perf_stats&#91;column].items():\n\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Second Error:<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>Traceback (most recent call last):\n  File \"\/home\/shared\/algos\/ml4t\/pairs_trading_backtest.py\", line 512, in &lt;module&gt;\n    pf.create_full_tear_sheet(returns,\n  File \"\/opt\/anaconda3\/envs\/ml4t\/lib\/python3.10\/site-packages\/pyfolio\/tears.py\", line 201, in create_full_tear_sheet\n    create_returns_tear_sheet(\n  File \"\/opt\/anaconda3\/envs\/ml4t\/lib\/python3.10\/site-packages\/pyfolio\/plotting.py\", line 52, in call_w_context\n    return func(*args, **kwargs)\n  File \"\/opt\/anaconda3\/envs\/ml4t\/lib\/python3.10\/site-packages\/pyfolio\/tears.py\", line 504, in create_returns_tear_sheet\n    plotting.show_worst_drawdown_periods(returns)\n  File \"\/opt\/anaconda3\/envs\/ml4t\/lib\/python3.10\/site-packages\/pyfolio\/plotting.py\", line 1664, in show_worst_drawdown_periods\n    drawdown_df = timeseries.gen_drawdown_table(returns, top=top)\n  File \"\/opt\/anaconda3\/envs\/ml4t\/lib\/python3.10\/site-packages\/pyfolio\/timeseries.py\", line 1008, in gen_drawdown_table\n    df_drawdowns.loc&#91;i, 'Valley date'] = (valley.to_pydatetime()\nAttributeError: 'numpy.int64' object has no attribute 'to_pydatetime'<\/code><\/pre>\n\n\n\n<p>To fix this I modified this file \/opt\/anaconda3\/envs\/ml4t\/lib\/python3.10\/site-packages\/pyfolio\/timeseries.py<br><br>The issue is within the function get_max_drawdown_underwater() the code is returning the index position for valley and it needs to be the date not the index position itself. The fixed code is below<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\ndef get_max_drawdown_underwater(underwater):\n    \"\"\"\n    Determines peak, valley, and recovery dates given an 'underwater'\n    DataFrame.\n\n    An underwater DataFrame is a DataFrame that has precomputed\n    rolling drawdown.\n\n    Parameters\n    ----------\n    underwater : pd.Series\n       Underwater returns (rolling drawdown) of a strategy.\n\n    Returns\n    -------\n    peak : datetime\n        The maximum drawdown's peak.\n    valley : datetime\n        The maximum drawdown's valley.\n    recovery : datetime\n        The maximum drawdown's recovery.\n    \"\"\"\n\n    valley_idx = np.argmin(underwater)  # end of the period, as an index position\n    valley_date = underwater.index&#91;valley_idx]  # convert index position to timestamp\n    # Find first 0\n    peak = underwater&#91;:valley_date]&#91;underwater&#91;:valley_date] == 0].index&#91;-1]\n    # Find last 0\n    try:\n        recovery = underwater&#91;valley_date:]&#91;underwater&#91;valley_date:] == 0].index&#91;0]\n    except IndexError:\n        recovery = np.nan  # drawdown not recovered\n    logging.info(f'get_max_drawdown_underwater is returning \\n {peak} \\n {valley_date} \\n {recovery}')\n    return peak, valley_date, recovery\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Recently I was following a paper and in the example they used Pyfolio which is an awesome performance and risk analysis library in Python developed by Quantopian Inc&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-6148","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Pyfolio - AttributeError: &#039;Series&#039; object has no attribute &#039;iteritems&#039; &amp; AttributeError: &#039;numpy.int64&#039; object has no attribute &#039;to_pydatetime&#039; - Jeremy Whittaker<\/title>\n<meta name=\"robots\" content=\"noindex, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Pyfolio - AttributeError: &#039;Series&#039; object has no attribute &#039;iteritems&#039; &amp; AttributeError: &#039;numpy.int64&#039; object has no attribute &#039;to_pydatetime&#039; - Jeremy Whittaker\" \/>\n<meta property=\"og:description\" content=\"Recently I was following a paper and in the example they used Pyfolio which is an awesome performance and risk analysis library in Python developed by Quantopian Inc...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/new.jeremywhittaker.com\/index.php\/2024\/01\/18\/pyfolio-attributeerror-series-object-has-no-attribute-iteritems-attributeerror-numpy-int64-object-has-no-attribute-to_pydatetime\/\" \/>\n<meta property=\"og:site_name\" content=\"Jeremy Whittaker\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/WhittakerJeremy\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/WhittakerJeremy\" \/>\n<meta property=\"article:published_time\" content=\"2024-01-18T22:32:04+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-23T21:10:06+00:00\" \/>\n<meta name=\"author\" content=\"JeremyWhittaker\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"JeremyWhittaker\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/new.jeremywhittaker.com\/index.php\/2024\/01\/18\/pyfolio-attributeerror-series-object-has-no-attribute-iteritems-attributeerror-numpy-int64-object-has-no-attribute-to_pydatetime\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/new.jeremywhittaker.com\/index.php\/2024\/01\/18\/pyfolio-attributeerror-series-object-has-no-attribute-iteritems-attributeerror-numpy-int64-object-has-no-attribute-to_pydatetime\/\"},\"author\":{\"name\":\"JeremyWhittaker\",\"@id\":\"https:\/\/new.jeremywhittaker.com\/#\/schema\/person\/ed0edfdefb3e180693efef453372980c\"},\"headline\":\"Pyfolio &#8211; AttributeError: &#8216;Series&#8217; object has no attribute &#8216;iteritems&#8217; &#038; AttributeError: &#8216;numpy.int64&#8217; object has no attribute &#8216;to_pydatetime&#8217;\",\"datePublished\":\"2024-01-18T22:32:04+00:00\",\"dateModified\":\"2024-01-23T21:10:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/new.jeremywhittaker.com\/index.php\/2024\/01\/18\/pyfolio-attributeerror-series-object-has-no-attribute-iteritems-attributeerror-numpy-int64-object-has-no-attribute-to_pydatetime\/\"},\"wordCount\":229,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/new.jeremywhittaker.com\/#\/schema\/person\/ed0edfdefb3e180693efef453372980c\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/new.jeremywhittaker.com\/index.php\/2024\/01\/18\/pyfolio-attributeerror-series-object-has-no-attribute-iteritems-attributeerror-numpy-int64-object-has-no-attribute-to_pydatetime\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/new.jeremywhittaker.com\/index.php\/2024\/01\/18\/pyfolio-attributeerror-series-object-has-no-attribute-iteritems-attributeerror-numpy-int64-object-has-no-attribute-to_pydatetime\/\",\"url\":\"https:\/\/new.jeremywhittaker.com\/index.php\/2024\/01\/18\/pyfolio-attributeerror-series-object-has-no-attribute-iteritems-attributeerror-numpy-int64-object-has-no-attribute-to_pydatetime\/\",\"name\":\"Pyfolio - AttributeError: 'Series' object has no attribute 'iteritems' & AttributeError: 'numpy.int64' object has no attribute 'to_pydatetime' - Jeremy Whittaker\",\"isPartOf\":{\"@id\":\"https:\/\/new.jeremywhittaker.com\/#website\"},\"datePublished\":\"2024-01-18T22:32:04+00:00\",\"dateModified\":\"2024-01-23T21:10:06+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/new.jeremywhittaker.com\/index.php\/2024\/01\/18\/pyfolio-attributeerror-series-object-has-no-attribute-iteritems-attributeerror-numpy-int64-object-has-no-attribute-to_pydatetime\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/new.jeremywhittaker.com\/index.php\/2024\/01\/18\/pyfolio-attributeerror-series-object-has-no-attribute-iteritems-attributeerror-numpy-int64-object-has-no-attribute-to_pydatetime\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/new.jeremywhittaker.com\/index.php\/2024\/01\/18\/pyfolio-attributeerror-series-object-has-no-attribute-iteritems-attributeerror-numpy-int64-object-has-no-attribute-to_pydatetime\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/new.jeremywhittaker.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Pyfolio &#8211; AttributeError: &#8216;Series&#8217; object has no attribute &#8216;iteritems&#8217; &#038; AttributeError: &#8216;numpy.int64&#8217; object has no attribute &#8216;to_pydatetime&#8217;\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/new.jeremywhittaker.com\/#website\",\"url\":\"https:\/\/new.jeremywhittaker.com\/\",\"name\":\"Jeremy Whittaker\",\"description\":\"Research, software, markets, housing, and energy\",\"publisher\":{\"@id\":\"https:\/\/new.jeremywhittaker.com\/#\/schema\/person\/ed0edfdefb3e180693efef453372980c\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/new.jeremywhittaker.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/new.jeremywhittaker.com\/#\/schema\/person\/ed0edfdefb3e180693efef453372980c\",\"name\":\"JeremyWhittaker\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/c8ac20e6dfa86b5f27ce9bffee4851099770cbea5ae7338a274865bfbc8c0218?s=96&d=retro&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c8ac20e6dfa86b5f27ce9bffee4851099770cbea5ae7338a274865bfbc8c0218?s=96&d=retro&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c8ac20e6dfa86b5f27ce9bffee4851099770cbea5ae7338a274865bfbc8c0218?s=96&d=retro&r=g\",\"caption\":\"JeremyWhittaker\"},\"logo\":{\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/c8ac20e6dfa86b5f27ce9bffee4851099770cbea5ae7338a274865bfbc8c0218?s=96&d=retro&r=g\"},\"sameAs\":[\"http:\/\/www.jeremywhittaker.com\",\"https:\/\/www.facebook.com\/WhittakerJeremy\",\"https:\/\/www.linkedin.com\/in\/jeremywhittaker\/\"],\"url\":\"https:\/\/new.jeremywhittaker.com\/index.php\/author\/jeremywhittaker\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Pyfolio - AttributeError: 'Series' object has no attribute 'iteritems' & AttributeError: 'numpy.int64' object has no attribute 'to_pydatetime' - Jeremy Whittaker","robots":{"index":"noindex","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"en_US","og_type":"article","og_title":"Pyfolio - AttributeError: 'Series' object has no attribute 'iteritems' & AttributeError: 'numpy.int64' object has no attribute 'to_pydatetime' - Jeremy Whittaker","og_description":"Recently I was following a paper and in the example they used Pyfolio which is an awesome performance and risk analysis library in Python developed by Quantopian Inc...","og_url":"https:\/\/new.jeremywhittaker.com\/index.php\/2024\/01\/18\/pyfolio-attributeerror-series-object-has-no-attribute-iteritems-attributeerror-numpy-int64-object-has-no-attribute-to_pydatetime\/","og_site_name":"Jeremy Whittaker","article_publisher":"https:\/\/www.facebook.com\/WhittakerJeremy","article_author":"https:\/\/www.facebook.com\/WhittakerJeremy","article_published_time":"2024-01-18T22:32:04+00:00","article_modified_time":"2024-01-23T21:10:06+00:00","author":"JeremyWhittaker","twitter_card":"summary_large_image","twitter_misc":{"Written by":"JeremyWhittaker","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/new.jeremywhittaker.com\/index.php\/2024\/01\/18\/pyfolio-attributeerror-series-object-has-no-attribute-iteritems-attributeerror-numpy-int64-object-has-no-attribute-to_pydatetime\/#article","isPartOf":{"@id":"https:\/\/new.jeremywhittaker.com\/index.php\/2024\/01\/18\/pyfolio-attributeerror-series-object-has-no-attribute-iteritems-attributeerror-numpy-int64-object-has-no-attribute-to_pydatetime\/"},"author":{"name":"JeremyWhittaker","@id":"https:\/\/new.jeremywhittaker.com\/#\/schema\/person\/ed0edfdefb3e180693efef453372980c"},"headline":"Pyfolio &#8211; AttributeError: &#8216;Series&#8217; object has no attribute &#8216;iteritems&#8217; &#038; AttributeError: &#8216;numpy.int64&#8217; object has no attribute &#8216;to_pydatetime&#8217;","datePublished":"2024-01-18T22:32:04+00:00","dateModified":"2024-01-23T21:10:06+00:00","mainEntityOfPage":{"@id":"https:\/\/new.jeremywhittaker.com\/index.php\/2024\/01\/18\/pyfolio-attributeerror-series-object-has-no-attribute-iteritems-attributeerror-numpy-int64-object-has-no-attribute-to_pydatetime\/"},"wordCount":229,"commentCount":0,"publisher":{"@id":"https:\/\/new.jeremywhittaker.com\/#\/schema\/person\/ed0edfdefb3e180693efef453372980c"},"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/new.jeremywhittaker.com\/index.php\/2024\/01\/18\/pyfolio-attributeerror-series-object-has-no-attribute-iteritems-attributeerror-numpy-int64-object-has-no-attribute-to_pydatetime\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/new.jeremywhittaker.com\/index.php\/2024\/01\/18\/pyfolio-attributeerror-series-object-has-no-attribute-iteritems-attributeerror-numpy-int64-object-has-no-attribute-to_pydatetime\/","url":"https:\/\/new.jeremywhittaker.com\/index.php\/2024\/01\/18\/pyfolio-attributeerror-series-object-has-no-attribute-iteritems-attributeerror-numpy-int64-object-has-no-attribute-to_pydatetime\/","name":"Pyfolio - AttributeError: 'Series' object has no attribute 'iteritems' & AttributeError: 'numpy.int64' object has no attribute 'to_pydatetime' - Jeremy Whittaker","isPartOf":{"@id":"https:\/\/new.jeremywhittaker.com\/#website"},"datePublished":"2024-01-18T22:32:04+00:00","dateModified":"2024-01-23T21:10:06+00:00","breadcrumb":{"@id":"https:\/\/new.jeremywhittaker.com\/index.php\/2024\/01\/18\/pyfolio-attributeerror-series-object-has-no-attribute-iteritems-attributeerror-numpy-int64-object-has-no-attribute-to_pydatetime\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/new.jeremywhittaker.com\/index.php\/2024\/01\/18\/pyfolio-attributeerror-series-object-has-no-attribute-iteritems-attributeerror-numpy-int64-object-has-no-attribute-to_pydatetime\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/new.jeremywhittaker.com\/index.php\/2024\/01\/18\/pyfolio-attributeerror-series-object-has-no-attribute-iteritems-attributeerror-numpy-int64-object-has-no-attribute-to_pydatetime\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/new.jeremywhittaker.com\/"},{"@type":"ListItem","position":2,"name":"Pyfolio &#8211; AttributeError: &#8216;Series&#8217; object has no attribute &#8216;iteritems&#8217; &#038; AttributeError: &#8216;numpy.int64&#8217; object has no attribute &#8216;to_pydatetime&#8217;"}]},{"@type":"WebSite","@id":"https:\/\/new.jeremywhittaker.com\/#website","url":"https:\/\/new.jeremywhittaker.com\/","name":"Jeremy Whittaker","description":"Research, software, markets, housing, and energy","publisher":{"@id":"https:\/\/new.jeremywhittaker.com\/#\/schema\/person\/ed0edfdefb3e180693efef453372980c"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/new.jeremywhittaker.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/new.jeremywhittaker.com\/#\/schema\/person\/ed0edfdefb3e180693efef453372980c","name":"JeremyWhittaker","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/c8ac20e6dfa86b5f27ce9bffee4851099770cbea5ae7338a274865bfbc8c0218?s=96&d=retro&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/c8ac20e6dfa86b5f27ce9bffee4851099770cbea5ae7338a274865bfbc8c0218?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c8ac20e6dfa86b5f27ce9bffee4851099770cbea5ae7338a274865bfbc8c0218?s=96&d=retro&r=g","caption":"JeremyWhittaker"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/c8ac20e6dfa86b5f27ce9bffee4851099770cbea5ae7338a274865bfbc8c0218?s=96&d=retro&r=g"},"sameAs":["http:\/\/www.jeremywhittaker.com","https:\/\/www.facebook.com\/WhittakerJeremy","https:\/\/www.linkedin.com\/in\/jeremywhittaker\/"],"url":"https:\/\/new.jeremywhittaker.com\/index.php\/author\/jeremywhittaker\/"}]}},"_links":{"self":[{"href":"https:\/\/new.jeremywhittaker.com\/index.php\/wp-json\/wp\/v2\/posts\/6148","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/new.jeremywhittaker.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/new.jeremywhittaker.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/new.jeremywhittaker.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/new.jeremywhittaker.com\/index.php\/wp-json\/wp\/v2\/comments?post=6148"}],"version-history":[{"count":4,"href":"https:\/\/new.jeremywhittaker.com\/index.php\/wp-json\/wp\/v2\/posts\/6148\/revisions"}],"predecessor-version":[{"id":6217,"href":"https:\/\/new.jeremywhittaker.com\/index.php\/wp-json\/wp\/v2\/posts\/6148\/revisions\/6217"}],"wp:attachment":[{"href":"https:\/\/new.jeremywhittaker.com\/index.php\/wp-json\/wp\/v2\/media?parent=6148"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/new.jeremywhittaker.com\/index.php\/wp-json\/wp\/v2\/categories?post=6148"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/new.jeremywhittaker.com\/index.php\/wp-json\/wp\/v2\/tags?post=6148"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}