{"action":"created","comment":{"url":"https://api.github.com/repos/ironmussa/Optimus/pulls/comments/209820831","pull_request_review_id":145907541,"id":209820831,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwOTgyMDgzMQ==","diff_hunk":"@@ -0,0 +1,511 @@\n+from optimus import Optimus\n+from pyspark.sql.types import *\n+from pyspark.sql import Row\n+from pyspark.sql import functions as F\n+\n+op = Optimus()\n+sc = op.sc\n+\n+\n+class TestDataFrameCols(object):\n+\n+    def test_lower_case(self):\n+        source_df = op.create.df(\n+            rows=[\n+                (\"BOB\", 1),\n+                (\"JoSe\", 2)\n+            ],\n+            cols=[\n+                (\"name\", StringType(), True),\n+                (\"age\", IntegerType(), False)\n+            ]\n+        )\n+\n+        actual_df = source_df.cols.lower(\"*\")\n+\n+        expected_df = op.create.df(\n+            rows=[\n+                (\"bob\", 1),\n+                (\"jose\", 2)\n+            ],\n+            cols=\n+            [\n+                (\"name\", StringType(), True),\n+                (\"age\", IntegerType(), False)\n+            ]\n+        )\n+\n+        assert (expected_df.collect() == actual_df.collect())\n+\n+    def test_upper_case(self):\n+        source_df = op.create.df(\n+            rows=[\n+                (\"BOB\", 1),\n+                (\"JoSe\", 2)\n+            ],\n+            cols=\n+            [\n+                (\"name\", StringType(), True),\n+                (\"age\", IntegerType(), False)\n+            ]\n+        )\n+\n+        actual_df = source_df.cols.upper(\"name\")\n+\n+        expected_df = op.create.df(\n+            rows=[\n+                (\"BOB\", 1),\n+                (\"JOSE\", 2)\n+            ],\n+            cols=\n+            [\n+                (\"name\", StringType(), True),\n+                (\"age\", IntegerType(), False)\n+            ]\n+        )\n+\n+        assert (expected_df.collect() == actual_df.collect())\n+\n+    def test_trim_col(self):\n+        source_df = op.create.df(\n+            rows=[\n+                (\"  ron\", 1),\n+                (\"      bill     \", 2)\n+            ],\n+            cols=[\n+                (\"name\", StringType(), True),\n+                (\"age\", IntegerType(), False)\n+            ]\n+        )\n+\n+        actual_df = source_df.cols.trim(\"name\")\n+\n+        expected_df = op.create.df(\n+            rows=[\n+                (\"ron\", 1),\n+                (\"bill\", 2)\n+            ],\n+            cols=[\n+                (\"name\", StringType(), True),\n+                (\"age\", IntegerType(), False)\n+            ]\n+        )\n+        expected_df.show()\n+        actual_df.show()\n+\n+        assert (expected_df.collect() == actual_df.collect())\n+\n+    def test_drop_col(self):\n+        source_df = op.create.df(\n+            rows=[\n+                (\"happy\", 1, 8),\n+                (\"excited\", 2, 8)\n+            ],\n+            cols=[\n+                (\"emotion\", StringType(), True),\n+                (\"num1\", IntegerType(), True),\n+                (\"num2\", IntegerType(), True)\n+            ]\n+        )\n+\n+        actual_df = source_df.cols.drop(\"num1\")\n+\n+        expected_df = op.create.df(\n+            rows=[\n+                (\"happy\", 8),\n+                (\"excited\", 8)\n+            ],\n+            cols=\n+            [\n+                (\"emotion\", StringType(), True),\n+                (\"num2\", IntegerType(), True)\n+            ]\n+        )\n+        assert (expected_df.collect() == actual_df.collect())\n+\n+    def test_replace_col(self):\n+        source_df = op.create.df(\n+            rows=[\n+                (\"happy\", 1),\n+                (\"excited and happy\", 2)\n+            ],\n+            cols=[\n+                (\"emotion\", StringType(), True),\n+                (\"num1\", IntegerType(), True)\n+            ]\n+        )\n+\n+        actual_df = source_df.cols.replace(\"emotion\", [(\"happy\", \"elated\")])\n+\n+        expected_df = op.create.df(\n+            rows=[\n+                (\"elated\", 1),\n+                (\"excited and happy\", 2)\n+            ],\n+            cols=[\n+                (\"emotion\", StringType(), True),\n+                (\"num1\", IntegerType(), True)\n+            ]\n+        )\n+        assert (expected_df.collect() == actual_df.collect())\n+\n+    def test_set_apply_exp(self):\n+        source_df = op.create.df(\n+            rows=[\n+                (\"cafe\", 1),\n+                (\"discoteca\", 2)\n+            ],\n+            cols=[\n+                (\"place\", StringType(), True),\n+                (\"num1\", IntegerType(), True)\n+            ]\n+        )\n+\n+        def func(col_name, attrs):\n+            return F.col(col_name) * 2\n+\n+        actual_df = source_df.cols.apply_exp(\"num1\", func)\n+\n+        expected_df = op.create.df(\n+            rows=[\n+                (\"cafe\", 2),\n+                (\"discoteca\", 4)\n+            ],\n+            cols=[\n+                (\"place\", StringType(), True),\n+                (\"num1\", IntegerType(), True)\n+            ]\n+        )\n+\n+        assert (expected_df.collect() == actual_df.collect())\n+\n+    def test_append_number(self):\n+        source_df = op.create.df(\n+            rows=[\n+                (\"happy\", 1, 8),\n+                (\"excited\", 2, 8)\n+            ],\n+            cols=[\n+                (\"emotion\", StringType(), True),\n+                (\"num1\", IntegerType(), True),\n+                (\"num2\", IntegerType(), True)\n+            ]\n+        )\n+\n+        actual_df = source_df.cols.append(\"num3\", 1)\n+\n+        expected_df = op.create.df(\n+            rows=[\n+                (\"happy\", 1, 8, 1),\n+                (\"excited\", 2, 8, 1)\n+            ],\n+            cols=[\n+                (\"emotion\", StringType(), True),\n+                (\"num1\", IntegerType(), True),\n+                (\"num2\", IntegerType(), True),\n+                (\"num3\", IntegerType(), True)\n+            ]\n+        )\n+\n+        assert (actual_df.collect() == expected_df.collect())\n+\n+    def test_append_advanced(self):\n+        source_df = op.create.df(\n+            rows=[\n+                (\"happy\", 1, 8),\n+                (\"excited\", 2, 8)\n+            ],\n+            cols=[\n+                (\"emotion\", StringType(), True),\n+                (\"num1\", IntegerType(), True),\n+                (\"num2\", IntegerType(), True)\n+            ]\n+        )\n+\n+        actual_df = source_df.cols.append([(\"new_col_4\", \"test\"),\n+                                           (\"new_col_5\", source_df['num1'] * 2),\n+                                           (\"new_col_6\", [1, 2, 3])\n+                                           ])\n+\n+        expected_df = op.create.df(\n+            rows=[\n+                (\"happy\", 1, 8, \"test\", 2, [1, 2, 3]),\n+                (\"excited\", 2, 8, \"test\", 4, [1, 2, 3])\n+            ],\n+            cols=[\n+                (\"emotion\", StringType(), True),\n+                (\"num1\", IntegerType(), True),\n+                (\"num2\", IntegerType(), True),\n+                (\"new_col_4\", StringType(), True),\n+                (\"new_col_5\", IntegerType(), True),\n+                (\"new_col_6\", ArrayType(IntegerType()), True)\n+            ]\n+        )\n+\n+        assert (actual_df.collect() == expected_df.collect())\n+\n+    def test_rename_simple(self):\n+        source_df = op.create.df(\n+            rows=[\n+                (\"happy\", 1),\n+                (\"excited\", 2)\n+            ],\n+            cols=[\n+                (\"emotion\", StringType(), True),\n+                (\"num\", IntegerType(), True)\n+            ]\n+        )\n+\n+        actual_df = source_df.cols.rename('num', 'number')\n+\n+        expected_df = op.create.df(\n+            rows=[\n+                (\"happy\", 1),\n+                (\"excited\", 2)\n+            ],\n+            cols=[\n+                (\"emotion\", StringType(), True),\n+                (\"number\", IntegerType(), True)\n+            ]\n+        )\n+\n+        assert (actual_df.collect() == expected_df.collect())\n+\n+    def test_rename_list(self):\n+        source_df = op.create.df(\n+            rows=[\n+                (\"happy\", 1),\n+                (\"excited\", 2)\n+            ],\n+            cols=[\n+                (\"emotion\", StringType(), True),\n+                (\"num\", IntegerType(), True)\n+            ]\n+        )\n+\n+        actual_df = source_df.cols.rename([('num', 'number'), ('emotion', 'emotions')])\n+\n+        expected_df = op.create.df(\n+            rows=[\n+                (\"happy\", 1),\n+                (\"excited\", 2)\n+            ],\n+            cols=[\n+                (\"emotion\", StringType(), True),\n+                (\"number\", IntegerType(), True)\n+            ]\n+        )\n+\n+        assert (actual_df.collect() == expected_df.collect())\n+\n+    def test_rename_advanced(self):\n+        source_df = op.create.df(\n+            rows=[\n+                (\"happy\", 1),\n+                (\"excited\", 2)\n+            ],\n+            cols=[\n+                (\"emotion\", StringType(), True),\n+                (\"num\", IntegerType(), True)\n+            ]\n+        )\n+\n+        actual_df = source_df.cols.rename(str.upper)\n+\n+        expected_df = op.create.df(\n+            rows=[\n+                (\"happy\", 1),\n+                (\"excited\", 2)\n+            ],\n+            cols=[\n+                (\"EMOTION\", StringType(), True),\n+                (\"NUM\", IntegerType(), True)\n+            ]\n+        )\n+\n+        assert (actual_df.collect() == expected_df.collect())\n+\n+    def test_cast_simple(self):\n+        source_df = op.create.df(\n+            rows=[\n+                (\"happy\", 1),\n+                (\"excited\", 2)\n+            ],\n+            cols=[\n+                (\"emotion\", StringType(), True),\n+                (\"num\", IntegerType(), True)\n+            ]\n+        )\n+\n+        actual_df = source_df.cols.cast(\"num\", \"string\")\n+\n+        expected_df = op.create.df(\n+            rows=[\n+                (\"happy\", 1),\n+                (\"excited\", 2)\n+            ],\n+            cols=[\n+                (\"emotion\", StringType(), True),\n+                (\"num\", StringType(), True)\n+            ]\n+        )\n+\n+        assert (actual_df.collect() == expected_df.collect())\n+\n+    def test_cast_advanced(self):\n+        source_df = op.create.df(\n+            rows=[\n+                (\"happy\", 1),\n+                (\"excited\", 2)\n+            ],\n+            cols=[\n+                (\"emotion\", StringType(), True),\n+                (\"num\", IntegerType(), True)\n+            ]\n+        )\n+\n+        actual_df = source_df.cols.cast(\"*\", \"string\")\n+\n+        expected_df = op.create.df(\n+            rows=[\n+                (\"happy\", 1),\n+                (\"excited\", 2)\n+            ],\n+            cols=[\n+                (\"emotion\", StringType(), True),\n+                (\"num\", StringType(), True)\n+            ]\n+        )\n+\n+        assert (actual_df.collect() == expected_df.collect())\n+\n+    def test_keep(self):\n+        source_df = op.create.df(\n+            rows=[\n+                (\"happy\", 1),\n+                (\"excited\", 2)\n+            ],\n+            cols=[\n+                (\"emotion\", StringType(), True),\n+                (\"num\", IntegerType(), True)\n+            ]\n+        )\n+\n+        actual_df = source_df.cols.keep(\"num\")\n+\n+        schema = StructType([StructField('num', IntegerType())])\n+        rows = [Row(num=1), Row(num=2)]\n+\n+        expected_df = op.spark.createDataFrame(rows, schema)\n+\n+        assert (actual_df.collect() == expected_df.collect())\n+\n+    def test_move(self):\n+        source_df = op.create.df(\n+            rows=[\n+                (\"happy\", 1),\n+                (\"excited\", 2)\n+            ],\n+            cols=[\n+                (\"emotion\", StringType(), True),\n+                (\"num\", IntegerType(), True)\n+            ]\n+        )\n+\n+        actual_df = source_df.cols.move(\"emotion\", \"after\", \"num\")\n+\n+        expected_df = op.create.df(\n+            rows=[\n+                (1, \"happy\"),\n+                (2, \"excited\")\n+            ],\n+            cols=[\n+                (\"num\", IntegerType(), True),\n+                (\"emotion\", StringType(), True)\n+            ]\n+        )\n+\n+        assert (actual_df.collect() == expected_df.collect())\n+\n+    def test_select(self):\n+        source_df = op.create.df(\n+            rows=[\n+                (\"happy\", 1, 8),\n+                (\"excited\", 2, 8)\n+            ],\n+            cols=[\n+                (\"emotion\", StringType(), True),\n+                (\"num1\", IntegerType(), True),\n+                (\"num2\", IntegerType(), True)\n+            ]\n+        )\n+\n+        actual_df = source_df.cols.select([\"emotion\", 1])\n+\n+        expected_df = op.create.df(\n+            rows=[\n+                (\"happy\", 1),\n+                (\"excited\", 2)\n+            ],\n+            cols=[\n+                (\"emotion\", StringType(), True),\n+                (\"num1\", IntegerType(), True)\n+            ]\n+        )\n+\n+        assert (actual_df.collect() == expected_df.collect())\n+\n+    def test_select_regex(self):\n+        source_df = op.create.df(\n+            rows=[\n+                (\"happy\", 1, 8),\n+                (\"excited\", 2, 8)\n+            ],\n+            cols=[\n+                (\"emotion\", StringType(), True),\n+                (\"num1\", IntegerType(), True),\n+                (\"num2\", IntegerType(), True)\n+            ]\n+        )\n+\n+        actual_df = source_df.cols.select(\"n.*\", regex=True)\n+\n+        expected_df = op.create.df(\n+            rows=[\n+                (1, 8),\n+                (2, 8)\n+            ],\n+            cols=[\n+                (\"num1\", IntegerType(), True),\n+                (\"num2\", IntegerType(), True)\n+            ]\n+        )\n+\n+        assert (actual_df.collect() == expected_df.collect())\n+\n+    def test_sort(self):","path":"tests/test_cols.py","position":486,"original_position":486,"commit_id":"5ae5cc29a4953a61e93e6bc738eedb11fe10d4c3","original_commit_id":"5ae5cc29a4953a61e93e6bc738eedb11fe10d4c3","user":{"login":"codacy-bot","id":19940114,"node_id":"MDQ6VXNlcjE5OTQwMTE0","avatar_url":"https://avatars1.githubusercontent.com/u/19940114?v=4","gravatar_id":"","url":"https://api.github.com/users/codacy-bot","html_url":"https://github.com/codacy-bot","followers_url":"https://api.github.com/users/codacy-bot/followers","following_url":"https://api.github.com/users/codacy-bot/following{/other_user}","gists_url":"https://api.github.com/users/codacy-bot/gists{/gist_id}","starred_url":"https://api.github.com/users/codacy-bot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/codacy-bot/subscriptions","organizations_url":"https://api.github.com/users/codacy-bot/orgs","repos_url":"https://api.github.com/users/codacy-bot/repos","events_url":"https://api.github.com/users/codacy-bot/events{/privacy}","received_events_url":"https://api.github.com/users/codacy-bot/received_events","type":"User","site_admin":false},"body":"![Codacy](https://app.codacy.com/assets/images/favicon.png) Issue found: [Method could be a function](https://app.codacy.com/app/favio.vazquezp/Optimus/pullRequest?prid=2013067)","created_at":"2018-08-14T03:41:09Z","updated_at":"2018-08-14T03:41:09Z","html_url":"https://github.com/ironmussa/Optimus/pull/290#discussion_r209820831","pull_request_url":"https://api.github.com/repos/ironmussa/Optimus/pulls/290","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/ironmussa/Optimus/pulls/comments/209820831"},"html":{"href":"https://github.com/ironmussa/Optimus/pull/290#discussion_r209820831"},"pull_request":{"href":"https://api.github.com/repos/ironmussa/Optimus/pulls/290"}}},"pull_request":{"url":"https://api.github.com/repos/ironmussa/Optimus/pulls/290","id":206880005,"node_id":"MDExOlB1bGxSZXF1ZXN0MjA2ODgwMDA1","html_url":"https://github.com/ironmussa/Optimus/pull/290","diff_url":"https://github.com/ironmussa/Optimus/pull/290.diff","patch_url":"https://github.com/ironmussa/Optimus/pull/290.patch","issue_url":"https://api.github.com/repos/ironmussa/Optimus/issues/290","number":290,"state":"open","locked":false,"title":"Optimus version 2 official","user":{"login":"FavioVazquez","id":10162068,"node_id":"MDQ6VXNlcjEwMTYyMDY4","avatar_url":"https://avatars2.githubusercontent.com/u/10162068?v=4","gravatar_id":"","url":"https://api.github.com/users/FavioVazquez","html_url":"https://github.com/FavioVazquez","followers_url":"https://api.github.com/users/FavioVazquez/followers","following_url":"https://api.github.com/users/FavioVazquez/following{/other_user}","gists_url":"https://api.github.com/users/FavioVazquez/gists{/gist_id}","starred_url":"https://api.github.com/users/FavioVazquez/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/FavioVazquez/subscriptions","organizations_url":"https://api.github.com/users/FavioVazquez/orgs","repos_url":"https://api.github.com/users/FavioVazquez/repos","events_url":"https://api.github.com/users/FavioVazquez/events{/privacy}","received_events_url":"https://api.github.com/users/FavioVazquez/received_events","type":"User","site_admin":false},"body":"@argenisleon working on this and me :)","created_at":"2018-08-08T03:03:03Z","updated_at":"2018-08-14T03:41:09Z","closed_at":null,"merged_at":null,"merge_commit_sha":"67704e375e6710ade369b2819ea7361757992be2","assignee":{"login":"FavioVazquez","id":10162068,"node_id":"MDQ6VXNlcjEwMTYyMDY4","avatar_url":"https://avatars2.githubusercontent.com/u/10162068?v=4","gravatar_id":"","url":"https://api.github.com/users/FavioVazquez","html_url":"https://github.com/FavioVazquez","followers_url":"https://api.github.com/users/FavioVazquez/followers","following_url":"https://api.github.com/users/FavioVazquez/following{/other_user}","gists_url":"https://api.github.com/users/FavioVazquez/gists{/gist_id}","starred_url":"https://api.github.com/users/FavioVazquez/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/FavioVazquez/subscriptions","organizations_url":"https://api.github.com/users/FavioVazquez/orgs","repos_url":"https://api.github.com/users/FavioVazquez/repos","events_url":"https://api.github.com/users/FavioVazquez/events{/privacy}","received_events_url":"https://api.github.com/users/FavioVazquez/received_events","type":"User","site_admin":false},"assignees":[{"login":"FavioVazquez","id":10162068,"node_id":"MDQ6VXNlcjEwMTYyMDY4","avatar_url":"https://avatars2.githubusercontent.com/u/10162068?v=4","gravatar_id":"","url":"https://api.github.com/users/FavioVazquez","html_url":"https://github.com/FavioVazquez","followers_url":"https://api.github.com/users/FavioVazquez/followers","following_url":"https://api.github.com/users/FavioVazquez/following{/other_user}","gists_url":"https://api.github.com/users/FavioVazquez/gists{/gist_id}","starred_url":"https://api.github.com/users/FavioVazquez/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/FavioVazquez/subscriptions","organizations_url":"https://api.github.com/users/FavioVazquez/orgs","repos_url":"https://api.github.com/users/FavioVazquez/repos","events_url":"https://api.github.com/users/FavioVazquez/events{/privacy}","received_events_url":"https://api.github.com/users/FavioVazquez/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":645896927,"node_id":"MDU6TGFiZWw2NDU4OTY5Mjc=","url":"https://api.github.com/repos/ironmussa/Optimus/labels/bug","name":"bug","color":"ee0701","default":true},{"id":647151202,"node_id":"MDU6TGFiZWw2NDcxNTEyMDI=","url":"https://api.github.com/repos/ironmussa/Optimus/labels/documentation","name":"documentation","color":"0052cc","default":false},{"id":645896929,"node_id":"MDU6TGFiZWw2NDU4OTY5Mjk=","url":"https://api.github.com/repos/ironmussa/Optimus/labels/enhancement","name":"enhancement","color":"84b6eb","default":true},{"id":721871911,"node_id":"MDU6TGFiZWw3MjE4NzE5MTE=","url":"https://api.github.com/repos/ironmussa/Optimus/labels/testing","name":"testing","color":"d93f0b","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/ironmussa/Optimus/pulls/290/commits","review_comments_url":"https://api.github.com/repos/ironmussa/Optimus/pulls/290/comments","review_comment_url":"https://api.github.com/repos/ironmussa/Optimus/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ironmussa/Optimus/issues/290/comments","statuses_url":"https://api.github.com/repos/ironmussa/Optimus/statuses/5ae5cc29a4953a61e93e6bc738eedb11fe10d4c3","head":{"label":"ironmussa:new_interface","ref":"new_interface","sha":"5ae5cc29a4953a61e93e6bc738eedb11fe10d4c3","user":{"login":"ironmussa","id":30134402,"node_id":"MDEyOk9yZ2FuaXphdGlvbjMwMTM0NDAy","avatar_url":"https://avatars2.githubusercontent.com/u/30134402?v=4","gravatar_id":"","url":"https://api.github.com/users/ironmussa","html_url":"https://github.com/ironmussa","followers_url":"https://api.github.com/users/ironmussa/followers","following_url":"https://api.github.com/users/ironmussa/following{/other_user}","gists_url":"https://api.github.com/users/ironmussa/gists{/gist_id}","starred_url":"https://api.github.com/users/ironmussa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ironmussa/subscriptions","organizations_url":"https://api.github.com/users/ironmussa/orgs","repos_url":"https://api.github.com/users/ironmussa/repos","events_url":"https://api.github.com/users/ironmussa/events{/privacy}","received_events_url":"https://api.github.com/users/ironmussa/received_events","type":"Organization","site_admin":false},"repo":{"id":97071697,"node_id":"MDEwOlJlcG9zaXRvcnk5NzA3MTY5Nw==","name":"Optimus","full_name":"ironmussa/Optimus","owner":{"login":"ironmussa","id":30134402,"node_id":"MDEyOk9yZ2FuaXphdGlvbjMwMTM0NDAy","avatar_url":"https://avatars2.githubusercontent.com/u/30134402?v=4","gravatar_id":"","url":"https://api.github.com/users/ironmussa","html_url":"https://github.com/ironmussa","followers_url":"https://api.github.com/users/ironmussa/followers","following_url":"https://api.github.com/users/ironmussa/following{/other_user}","gists_url":"https://api.github.com/users/ironmussa/gists{/gist_id}","starred_url":"https://api.github.com/users/ironmussa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ironmussa/subscriptions","organizations_url":"https://api.github.com/users/ironmussa/orgs","repos_url":"https://api.github.com/users/ironmussa/repos","events_url":"https://api.github.com/users/ironmussa/events{/privacy}","received_events_url":"https://api.github.com/users/ironmussa/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ironmussa/Optimus","description":":rocket: Optimus is the missing framework for cleansing (cleaning and much more), pre-processing and exploratory data analysis in a distributed fashion with Apache Spark.","fork":false,"url":"https://api.github.com/repos/ironmussa/Optimus","forks_url":"https://api.github.com/repos/ironmussa/Optimus/forks","keys_url":"https://api.github.com/repos/ironmussa/Optimus/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ironmussa/Optimus/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ironmussa/Optimus/teams","hooks_url":"https://api.github.com/repos/ironmussa/Optimus/hooks","issue_events_url":"https://api.github.com/repos/ironmussa/Optimus/issues/events{/number}","events_url":"https://api.github.com/repos/ironmussa/Optimus/events","assignees_url":"https://api.github.com/repos/ironmussa/Optimus/assignees{/user}","branches_url":"https://api.github.com/repos/ironmussa/Optimus/branches{/branch}","tags_url":"https://api.github.com/repos/ironmussa/Optimus/tags","blobs_url":"https://api.github.com/repos/ironmussa/Optimus/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ironmussa/Optimus/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ironmussa/Optimus/git/refs{/sha}","trees_url":"https://api.github.com/repos/ironmussa/Optimus/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ironmussa/Optimus/statuses/{sha}","languages_url":"https://api.github.com/repos/ironmussa/Optimus/languages","stargazers_url":"https://api.github.com/repos/ironmussa/Optimus/stargazers","contributors_url":"https://api.github.com/repos/ironmussa/Optimus/contributors","subscribers_url":"https://api.github.com/repos/ironmussa/Optimus/subscribers","subscription_url":"https://api.github.com/repos/ironmussa/Optimus/subscription","commits_url":"https://api.github.com/repos/ironmussa/Optimus/commits{/sha}","git_commits_url":"https://api.github.com/repos/ironmussa/Optimus/git/commits{/sha}","comments_url":"https://api.github.com/repos/ironmussa/Optimus/comments{/number}","issue_comment_url":"https://api.github.com/repos/ironmussa/Optimus/issues/comments{/number}","contents_url":"https://api.github.com/repos/ironmussa/Optimus/contents/{+path}","compare_url":"https://api.github.com/repos/ironmussa/Optimus/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ironmussa/Optimus/merges","archive_url":"https://api.github.com/repos/ironmussa/Optimus/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ironmussa/Optimus/downloads","issues_url":"https://api.github.com/repos/ironmussa/Optimus/issues{/number}","pulls_url":"https://api.github.com/repos/ironmussa/Optimus/pulls{/number}","milestones_url":"https://api.github.com/repos/ironmussa/Optimus/milestones{/number}","notifications_url":"https://api.github.com/repos/ironmussa/Optimus/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ironmussa/Optimus/labels{/name}","releases_url":"https://api.github.com/repos/ironmussa/Optimus/releases{/id}","deployments_url":"https://api.github.com/repos/ironmussa/Optimus/deployments","created_at":"2017-07-13T02:31:18Z","updated_at":"2018-08-14T03:10:58Z","pushed_at":"2018-08-14T03:39:04Z","git_url":"git://github.com/ironmussa/Optimus.git","ssh_url":"git@github.com:ironmussa/Optimus.git","clone_url":"https://github.com/ironmussa/Optimus.git","svn_url":"https://github.com/ironmussa/Optimus","homepage":"https://hioptimus.com","size":4373,"stargazers_count":289,"watchers_count":289,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":76,"mirror_url":null,"archived":false,"open_issues_count":10,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":76,"open_issues":10,"watchers":289,"default_branch":"master"}},"base":{"label":"ironmussa:master","ref":"master","sha":"2aabd7387b100fda2ec0ee37c3f43fe122850558","user":{"login":"ironmussa","id":30134402,"node_id":"MDEyOk9yZ2FuaXphdGlvbjMwMTM0NDAy","avatar_url":"https://avatars2.githubusercontent.com/u/30134402?v=4","gravatar_id":"","url":"https://api.github.com/users/ironmussa","html_url":"https://github.com/ironmussa","followers_url":"https://api.github.com/users/ironmussa/followers","following_url":"https://api.github.com/users/ironmussa/following{/other_user}","gists_url":"https://api.github.com/users/ironmussa/gists{/gist_id}","starred_url":"https://api.github.com/users/ironmussa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ironmussa/subscriptions","organizations_url":"https://api.github.com/users/ironmussa/orgs","repos_url":"https://api.github.com/users/ironmussa/repos","events_url":"https://api.github.com/users/ironmussa/events{/privacy}","received_events_url":"https://api.github.com/users/ironmussa/received_events","type":"Organization","site_admin":false},"repo":{"id":97071697,"node_id":"MDEwOlJlcG9zaXRvcnk5NzA3MTY5Nw==","name":"Optimus","full_name":"ironmussa/Optimus","owner":{"login":"ironmussa","id":30134402,"node_id":"MDEyOk9yZ2FuaXphdGlvbjMwMTM0NDAy","avatar_url":"https://avatars2.githubusercontent.com/u/30134402?v=4","gravatar_id":"","url":"https://api.github.com/users/ironmussa","html_url":"https://github.com/ironmussa","followers_url":"https://api.github.com/users/ironmussa/followers","following_url":"https://api.github.com/users/ironmussa/following{/other_user}","gists_url":"https://api.github.com/users/ironmussa/gists{/gist_id}","starred_url":"https://api.github.com/users/ironmussa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ironmussa/subscriptions","organizations_url":"https://api.github.com/users/ironmussa/orgs","repos_url":"https://api.github.com/users/ironmussa/repos","events_url":"https://api.github.com/users/ironmussa/events{/privacy}","received_events_url":"https://api.github.com/users/ironmussa/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ironmussa/Optimus","description":":rocket: Optimus is the missing framework for cleansing (cleaning and much more), pre-processing and exploratory data analysis in a distributed fashion with Apache Spark.","fork":false,"url":"https://api.github.com/repos/ironmussa/Optimus","forks_url":"https://api.github.com/repos/ironmussa/Optimus/forks","keys_url":"https://api.github.com/repos/ironmussa/Optimus/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ironmussa/Optimus/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ironmussa/Optimus/teams","hooks_url":"https://api.github.com/repos/ironmussa/Optimus/hooks","issue_events_url":"https://api.github.com/repos/ironmussa/Optimus/issues/events{/number}","events_url":"https://api.github.com/repos/ironmussa/Optimus/events","assignees_url":"https://api.github.com/repos/ironmussa/Optimus/assignees{/user}","branches_url":"https://api.github.com/repos/ironmussa/Optimus/branches{/branch}","tags_url":"https://api.github.com/repos/ironmussa/Optimus/tags","blobs_url":"https://api.github.com/repos/ironmussa/Optimus/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ironmussa/Optimus/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ironmussa/Optimus/git/refs{/sha}","trees_url":"https://api.github.com/repos/ironmussa/Optimus/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ironmussa/Optimus/statuses/{sha}","languages_url":"https://api.github.com/repos/ironmussa/Optimus/languages","stargazers_url":"https://api.github.com/repos/ironmussa/Optimus/stargazers","contributors_url":"https://api.github.com/repos/ironmussa/Optimus/contributors","subscribers_url":"https://api.github.com/repos/ironmussa/Optimus/subscribers","subscription_url":"https://api.github.com/repos/ironmussa/Optimus/subscription","commits_url":"https://api.github.com/repos/ironmussa/Optimus/commits{/sha}","git_commits_url":"https://api.github.com/repos/ironmussa/Optimus/git/commits{/sha}","comments_url":"https://api.github.com/repos/ironmussa/Optimus/comments{/number}","issue_comment_url":"https://api.github.com/repos/ironmussa/Optimus/issues/comments{/number}","contents_url":"https://api.github.com/repos/ironmussa/Optimus/contents/{+path}","compare_url":"https://api.github.com/repos/ironmussa/Optimus/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ironmussa/Optimus/merges","archive_url":"https://api.github.com/repos/ironmussa/Optimus/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ironmussa/Optimus/downloads","issues_url":"https://api.github.com/repos/ironmussa/Optimus/issues{/number}","pulls_url":"https://api.github.com/repos/ironmussa/Optimus/pulls{/number}","milestones_url":"https://api.github.com/repos/ironmussa/Optimus/milestones{/number}","notifications_url":"https://api.github.com/repos/ironmussa/Optimus/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ironmussa/Optimus/labels{/name}","releases_url":"https://api.github.com/repos/ironmussa/Optimus/releases{/id}","deployments_url":"https://api.github.com/repos/ironmussa/Optimus/deployments","created_at":"2017-07-13T02:31:18Z","updated_at":"2018-08-14T03:10:58Z","pushed_at":"2018-08-14T03:39:04Z","git_url":"git://github.com/ironmussa/Optimus.git","ssh_url":"git@github.com:ironmussa/Optimus.git","clone_url":"https://github.com/ironmussa/Optimus.git","svn_url":"https://github.com/ironmussa/Optimus","homepage":"https://hioptimus.com","size":4373,"stargazers_count":289,"watchers_count":289,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":76,"mirror_url":null,"archived":false,"open_issues_count":10,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":76,"open_issues":10,"watchers":289,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ironmussa/Optimus/pulls/290"},"html":{"href":"https://github.com/ironmussa/Optimus/pull/290"},"issue":{"href":"https://api.github.com/repos/ironmussa/Optimus/issues/290"},"comments":{"href":"https://api.github.com/repos/ironmussa/Optimus/issues/290/comments"},"review_comments":{"href":"https://api.github.com/repos/ironmussa/Optimus/pulls/290/comments"},"review_comment":{"href":"https://api.github.com/repos/ironmussa/Optimus/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ironmussa/Optimus/pulls/290/commits"},"statuses":{"href":"https://api.github.com/repos/ironmussa/Optimus/statuses/5ae5cc29a4953a61e93e6bc738eedb11fe10d4c3"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"codacy-bot"}}