Ecoer Logo

@parths007

25

Learner

steemit.com/@parths007
VOTING POWER100.00%
DOWNVOTE POWER100.00%
RESOURCE CREDITS100.00%
REPUTATION PROGRESS0.00%
Net Worth
0.045USD
STEEM
0.000STEEM
SBD
0.017SBD
Effective Power
5.007SP
├── Own SP
0.630SP
└── Incoming Deleg
+4.377SP

Detailed Balance

STEEM
balance
0.000STEEM
market_balance
0.000STEEM
savings_balance
0.000STEEM
reward_steem_balance
0.000STEEM
STEEM POWER
Own SP
0.630SP
Delegated Out
0.000SP
Delegation In
4.377SP
Effective Power
5.007SP
Reward SP (pending)
0.003SP
SBD
sbd_balance
0.000SBD
sbd_conversions
0.000SBD
sbd_market_balance
0.000SBD
savings_sbd_balance
0.000SBD
reward_sbd_balance
0.017SBD
{
  "balance": "0.000 STEEM",
  "savings_balance": "0.000 STEEM",
  "reward_steem_balance": "0.000 STEEM",
  "vesting_shares": "1024.645800 VESTS",
  "delegated_vesting_shares": "0.000000 VESTS",
  "received_vesting_shares": "7119.014006 VESTS",
  "sbd_balance": "0.000 SBD",
  "savings_sbd_balance": "0.000 SBD",
  "reward_sbd_balance": "0.017 SBD",
  "conversions": []
}

Account Info

nameparths007
id540867
rank1,451,503
reputation54126066
created2017-12-30T21:58:51
recovery_accountsteem
proxyNone
post_count1
comment_count0
lifetime_vote_count0
witnesses_voted_for0
last_post2018-01-03T19:52:24
last_root_post2018-01-03T19:52:24
last_vote_time2018-01-03T20:01:48
proxied_vsf_votes0, 0, 0, 0
can_vote1
voting_power0
delayed_votes0
balance0.000 STEEM
savings_balance0.000 STEEM
sbd_balance0.000 SBD
savings_sbd_balance0.000 SBD
vesting_shares1024.645800 VESTS
delegated_vesting_shares0.000000 VESTS
received_vesting_shares7119.014006 VESTS
reward_vesting_balance6.144589 VESTS
vesting_balance0.000 STEEM
vesting_withdraw_rate0.000000 VESTS
next_vesting_withdrawal1969-12-31T23:59:59
withdrawn0
to_withdraw0
withdraw_routes0
savings_withdraw_requests0
last_account_recovery1970-01-01T00:00:00
reset_accountnull
last_owner_update1970-01-01T00:00:00
last_account_update2018-01-03T19:54:57
minedNo
sbd_seconds0
sbd_last_interest_payment1970-01-01T00:00:00
savings_sbd_last_interest_payment1970-01-01T00:00:00
{
  "id": 540867,
  "name": "parths007",
  "owner": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM5LBiAAFVfTrHdZnRuqfLu6UytzeGPTwfdnQpHVatEPo6X23v3D",
        1
      ]
    ]
  },
  "active": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM8kHjgyeT3KWHP9GznxMdxXm8sxE25f3MPCbD4M1SdJcDPPKYpp",
        1
      ]
    ]
  },
  "posting": {
    "weight_threshold": 1,
    "account_auths": [
      [
        "utopian.app",
        1
      ]
    ],
    "key_auths": [
      [
        "STM6JAmueQ7EwfrjiwEmTZuZ6FoJoRfyaKGNyaA9rGQ8DqcpKkzPH",
        1
      ]
    ]
  },
  "memo_key": "STM6ZTJUP88VW4oc3a9XxBjyje2cuwkyNsEnkL9JGVvpc94K7NdAe",
  "json_metadata": "{\"profile\":{\"name\":\"Parth  Shandilya\",\"about\":\"Learner\",\"location\":\"Earth\",\"profile_image\":\"https://pbs.twimg.com/profile_images/941074084187709440/PMz8vpbC_400x400.jpg\"}}",
  "posting_json_metadata": "{\"profile\":{\"name\":\"Parth  Shandilya\",\"about\":\"Learner\",\"location\":\"Earth\",\"profile_image\":\"https://pbs.twimg.com/profile_images/941074084187709440/PMz8vpbC_400x400.jpg\"}}",
  "proxy": "",
  "last_owner_update": "1970-01-01T00:00:00",
  "last_account_update": "2018-01-03T19:54:57",
  "created": "2017-12-30T21:58:51",
  "mined": false,
  "recovery_account": "steem",
  "last_account_recovery": "1970-01-01T00:00:00",
  "reset_account": "null",
  "comment_count": 0,
  "lifetime_vote_count": 0,
  "post_count": 1,
  "can_vote": true,
  "voting_manabar": {
    "current_mana": "8143659806",
    "last_update_time": 1779080175
  },
  "downvote_manabar": {
    "current_mana": 2035914951,
    "last_update_time": 1779080175
  },
  "voting_power": 0,
  "balance": "0.000 STEEM",
  "savings_balance": "0.000 STEEM",
  "sbd_balance": "0.000 SBD",
  "sbd_seconds": "0",
  "sbd_seconds_last_update": "1970-01-01T00:00:00",
  "sbd_last_interest_payment": "1970-01-01T00:00:00",
  "savings_sbd_balance": "0.000 SBD",
  "savings_sbd_seconds": "0",
  "savings_sbd_seconds_last_update": "1970-01-01T00:00:00",
  "savings_sbd_last_interest_payment": "1970-01-01T00:00:00",
  "savings_withdraw_requests": 0,
  "reward_sbd_balance": "0.017 SBD",
  "reward_steem_balance": "0.000 STEEM",
  "reward_vesting_balance": "6.144589 VESTS",
  "reward_vesting_steem": "0.003 STEEM",
  "vesting_shares": "1024.645800 VESTS",
  "delegated_vesting_shares": "0.000000 VESTS",
  "received_vesting_shares": "7119.014006 VESTS",
  "vesting_withdraw_rate": "0.000000 VESTS",
  "next_vesting_withdrawal": "1969-12-31T23:59:59",
  "withdrawn": 0,
  "to_withdraw": 0,
  "withdraw_routes": 0,
  "curation_rewards": 0,
  "posting_rewards": 6,
  "proxied_vsf_votes": [
    0,
    0,
    0,
    0
  ],
  "witnesses_voted_for": 0,
  "last_post": "2018-01-03T19:52:24",
  "last_root_post": "2018-01-03T19:52:24",
  "last_vote_time": "2018-01-03T20:01:48",
  "post_bandwidth": 0,
  "pending_claimed_accounts": 0,
  "vesting_balance": "0.000 STEEM",
  "reputation": 54126066,
  "transfer_history": [],
  "market_history": [],
  "post_history": [],
  "vote_history": [],
  "other_history": [],
  "witness_votes": [],
  "tags_usage": [],
  "guest_bloggers": [],
  "rank": 1451503
}

Withdraw Routes

IncomingOutgoing
Empty
Empty
{
  "incoming": [],
  "outgoing": []
}
From Date
To Date
steemdelegated 4.377 SP to @parths007
2026/05/18 04:56:15
delegatorsteem
delegateeparths007
vesting shares7119.014006 VESTS
Transaction InfoBlock #106149043/Trx 5a0a8c8a8ca1c424583a40c3d9d8a41e85eecc34
View Raw JSON Data
{
  "trx_id": "5a0a8c8a8ca1c424583a40c3d9d8a41e85eecc34",
  "block": 106149043,
  "trx_in_block": 0,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2026-05-18T04:56:15",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "parths007",
      "vesting_shares": "7119.014006 VESTS"
    }
  ]
}
steemdelegated 2.710 SP to @parths007
2026/05/12 22:51:18
delegatorsteem
delegateeparths007
vesting shares4406.803601 VESTS
Transaction InfoBlock #105998477/Trx 72f0698267826381e5ebb543fe29c4ba7c101916
View Raw JSON Data
{
  "trx_id": "72f0698267826381e5ebb543fe29c4ba7c101916",
  "block": 105998477,
  "trx_in_block": 4,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2026-05-12T22:51:18",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "parths007",
      "vesting_shares": "4406.803601 VESTS"
    }
  ]
}
steemdelegated 4.385 SP to @parths007
2026/04/26 04:10:00
delegatorsteem
delegateeparths007
vesting shares7131.529762 VESTS
Transaction InfoBlock #105516565/Trx 71f6e14ae587bce7b2e0bba92e1f03a60f15e092
View Raw JSON Data
{
  "trx_id": "71f6e14ae587bce7b2e0bba92e1f03a60f15e092",
  "block": 105516565,
  "trx_in_block": 0,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2026-04-26T04:10:00",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "parths007",
      "vesting_shares": "7131.529762 VESTS"
    }
  ]
}
steemdelegated 2.735 SP to @parths007
2026/01/23 20:23:45
delegatorsteem
delegateeparths007
vesting shares4448.350420 VESTS
Transaction InfoBlock #102866899/Trx 06d5e879551ad28051f72e6cc9c6d3d7b09b0b63
View Raw JSON Data
{
  "trx_id": "06d5e879551ad28051f72e6cc9c6d3d7b09b0b63",
  "block": 102866899,
  "trx_in_block": 1,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2026-01-23T20:23:45",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "parths007",
      "vesting_shares": "4448.350420 VESTS"
    }
  ]
}
steemdelegated 2.836 SP to @parths007
2024/12/17 15:34:48
delegatorsteem
delegateeparths007
vesting shares4612.569617 VESTS
Transaction InfoBlock #91313133/Trx 916262cf1a8a509c747031ea049bfb02cf3001a1
View Raw JSON Data
{
  "trx_id": "916262cf1a8a509c747031ea049bfb02cf3001a1",
  "block": 91313133,
  "trx_in_block": 2,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2024-12-17T15:34:48",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "parths007",
      "vesting_shares": "4612.569617 VESTS"
    }
  ]
}
steemdelegated 2.940 SP to @parths007
2023/11/14 07:16:03
delegatorsteem
delegateeparths007
vesting shares4781.703149 VESTS
Transaction InfoBlock #79867291/Trx c02aa3b244d23c26d40080fea1bb2f7c39f96bc2
View Raw JSON Data
{
  "trx_id": "c02aa3b244d23c26d40080fea1bb2f7c39f96bc2",
  "block": 79867291,
  "trx_in_block": 4,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2023-11-14T07:16:03",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "parths007",
      "vesting_shares": "4781.703149 VESTS"
    }
  ]
}
steemdelegated 4.746 SP to @parths007
2023/09/22 08:47:21
delegatorsteem
delegateeparths007
vesting shares7718.611935 VESTS
Transaction InfoBlock #78360949/Trx 681c4dbfdfa51a2b8a7ac541e584e444c1e55096
View Raw JSON Data
{
  "trx_id": "681c4dbfdfa51a2b8a7ac541e584e444c1e55096",
  "block": 78360949,
  "trx_in_block": 1,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2023-09-22T08:47:21",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "parths007",
      "vesting_shares": "7718.611935 VESTS"
    }
  ]
}
steemdelegated 4.883 SP to @parths007
2022/11/03 16:27:33
delegatorsteem
delegateeparths007
vesting shares7940.663373 VESTS
Transaction InfoBlock #69118942/Trx 13a986cacfd1d070910e1e94bfec52e55992638b
View Raw JSON Data
{
  "trx_id": "13a986cacfd1d070910e1e94bfec52e55992638b",
  "block": 69118942,
  "trx_in_block": 4,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2022-11-03T16:27:33",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "parths007",
      "vesting_shares": "7940.663373 VESTS"
    }
  ]
}
steemdelegated 5.018 SP to @parths007
2022/01/17 21:47:42
delegatorsteem
delegateeparths007
vesting shares8160.770974 VESTS
Transaction InfoBlock #60822353/Trx b52a864c985f4f6c690c236b1a53d0b67073d996
View Raw JSON Data
{
  "trx_id": "b52a864c985f4f6c690c236b1a53d0b67073d996",
  "block": 60822353,
  "trx_in_block": 4,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2022-01-17T21:47:42",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "parths007",
      "vesting_shares": "8160.770974 VESTS"
    }
  ]
}
steemdelegated 5.131 SP to @parths007
2021/06/14 05:01:57
delegatorsteem
delegateeparths007
vesting shares8344.965262 VESTS
Transaction InfoBlock #54612749/Trx b1d5ce14c00a86a6612aeae77606b7271041adc9
View Raw JSON Data
{
  "trx_id": "b1d5ce14c00a86a6612aeae77606b7271041adc9",
  "block": 54612749,
  "trx_in_block": 6,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2021-06-14T05:01:57",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "parths007",
      "vesting_shares": "8344.965262 VESTS"
    }
  ]
}
steemdelegated 5.246 SP to @parths007
2020/12/11 15:15:24
delegatorsteem
delegateeparths007
vesting shares8532.387236 VESTS
Transaction InfoBlock #49360051/Trx c076ba4e9047d370cc88029c64840e2458b68bea
View Raw JSON Data
{
  "trx_id": "c076ba4e9047d370cc88029c64840e2458b68bea",
  "block": 49360051,
  "trx_in_block": 4,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-12-11T15:15:24",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "parths007",
      "vesting_shares": "8532.387236 VESTS"
    }
  ]
}
steemdelegated 1.176 SP to @parths007
2020/12/06 08:51:39
delegatorsteem
delegateeparths007
vesting shares1912.543513 VESTS
Transaction InfoBlock #49211584/Trx 22b582e47ef877dce07b93f80b8bd4e0d612c9da
View Raw JSON Data
{
  "trx_id": "22b582e47ef877dce07b93f80b8bd4e0d612c9da",
  "block": 49211584,
  "trx_in_block": 1,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-12-06T08:51:39",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "parths007",
      "vesting_shares": "1912.543513 VESTS"
    }
  ]
}
steemdelegated 5.250 SP to @parths007
2020/12/05 18:53:12
delegatorsteem
delegateeparths007
vesting shares8538.595090 VESTS
Transaction InfoBlock #49195133/Trx 5f332c17934a54094c11cffb8d85345e09616044
View Raw JSON Data
{
  "trx_id": "5f332c17934a54094c11cffb8d85345e09616044",
  "block": 49195133,
  "trx_in_block": 7,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-12-05T18:53:12",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "parths007",
      "vesting_shares": "8538.595090 VESTS"
    }
  ]
}
steemdelegated 1.181 SP to @parths007
2020/11/03 00:12:12
delegatorsteem
delegateeparths007
vesting shares1920.017158 VESTS
Transaction InfoBlock #48267884/Trx fdbf7fef7c385a801c10d3abdc9c1cacb8112747
View Raw JSON Data
{
  "trx_id": "fdbf7fef7c385a801c10d3abdc9c1cacb8112747",
  "block": 48267884,
  "trx_in_block": 27,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-11-03T00:12:12",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "parths007",
      "vesting_shares": "1920.017158 VESTS"
    }
  ]
}
steemdelegated 5.375 SP to @parths007
2020/05/09 09:53:09
delegatorsteem
delegateeparths007
vesting shares8741.400449 VESTS
Transaction InfoBlock #43221893/Trx 646e6e5a282ff224b6f343e8ac6694bdec881f06
View Raw JSON Data
{
  "trx_id": "646e6e5a282ff224b6f343e8ac6694bdec881f06",
  "block": 43221893,
  "trx_in_block": 20,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-05-09T09:53:09",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "parths007",
      "vesting_shares": "8741.400449 VESTS"
    }
  ]
}
steemdelegated 1.201 SP to @parths007
2020/05/08 14:06:48
delegatorsteem
delegateeparths007
vesting shares1953.311140 VESTS
Transaction InfoBlock #43198725/Trx cb7c9e45a783643607cf70c78fa4ccab01a5f4a9
View Raw JSON Data
{
  "trx_id": "cb7c9e45a783643607cf70c78fa4ccab01a5f4a9",
  "block": 43198725,
  "trx_in_block": 12,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-05-08T14:06:48",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "parths007",
      "vesting_shares": "1953.311140 VESTS"
    }
  ]
}
steemdelegated 5.383 SP to @parths007
2020/04/16 02:31:24
delegatorsteem
delegateeparths007
vesting shares8754.287897 VESTS
Transaction InfoBlock #42568255/Trx df3c6f648b747259988b23e140c159df71a15163
View Raw JSON Data
{
  "trx_id": "df3c6f648b747259988b23e140c159df71a15163",
  "block": 42568255,
  "trx_in_block": 19,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-04-16T02:31:24",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "parths007",
      "vesting_shares": "8754.287897 VESTS"
    }
  ]
}
2019/12/30 22:38:27
parent authorparths007
parent permlinkintegrating-travis-ci-and-codecov-into-a-python-based-project
authorsteemitboard
permlinksteemitboard-notify-parths007-20191230t223826000z
title
bodyCongratulations @parths007! You received a personal award! <table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@parths007/birthday2.png</td><td>Happy Birthday! - You are on the Steem blockchain for 2 years!</td></tr></table> <sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@parths007) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=parths007)_</sub> ###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes!
json metadata{"image":["https://steemitboard.com/img/notify.png"]}
Transaction InfoBlock #39501939/Trx 351091b81085d260d72ec3cb9e11b3d58f8dcde0
View Raw JSON Data
{
  "trx_id": "351091b81085d260d72ec3cb9e11b3d58f8dcde0",
  "block": 39501939,
  "trx_in_block": 10,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2019-12-30T22:38:27",
  "op": [
    "comment",
    {
      "parent_author": "parths007",
      "parent_permlink": "integrating-travis-ci-and-codecov-into-a-python-based-project",
      "author": "steemitboard",
      "permlink": "steemitboard-notify-parths007-20191230t223826000z",
      "title": "",
      "body": "Congratulations @parths007! You received a personal award!\n\n<table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@parths007/birthday2.png</td><td>Happy Birthday! - You are on the Steem blockchain for 2 years!</td></tr></table>\n\n<sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@parths007) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=parths007)_</sub>\n\n\n###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes!",
      "json_metadata": "{\"image\":[\"https://steemitboard.com/img/notify.png\"]}"
    }
  ]
}
steemdelegated 5.503 SP to @parths007
2019/05/12 19:38:18
delegatorsteem
delegateeparths007
vesting shares8949.904710 VESTS
Transaction InfoBlock #32851167/Trx 9390be9aa06c030f2e1650115bd7d21810df8eb1
View Raw JSON Data
{
  "trx_id": "9390be9aa06c030f2e1650115bd7d21810df8eb1",
  "block": 32851167,
  "trx_in_block": 34,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2019-05-12T19:38:18",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "parths007",
      "vesting_shares": "8949.904710 VESTS"
    }
  ]
}
2018/12/30 22:46:18
parent authorparths007
parent permlinkintegrating-travis-ci-and-codecov-into-a-python-based-project
authorsteemitboard
permlinksteemitboard-notify-parths007-20181230t224617000z
title
bodyCongratulations @parths007! You received a personal award! <table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@parths007/birthday1.png</td><td>1 Year on Steemit</td></tr></table> <sub>_[Click here to view your Board](https://steemitboard.com/@parths007)_</sub> **Do not miss the last post from @steemitboard:** <table><tr><td><a href="https://steemit.com/christmas/@steemitboard/christmas-challenge-send-a-gift-to-to-your-friends-the-party-continues"><img src="https://steemitimages.com/64x128/http://i.cubeupload.com/kf4SJb.png"></a></td><td><a href="https://steemit.com/christmas/@steemitboard/christmas-challenge-send-a-gift-to-to-your-friends-the-party-continues">Christmas Challenge - The party continues</a></td></tr></table> > Support [SteemitBoard's project](https://steemit.com/@steemitboard)! **[Vote for its witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1)** and **get one more award**!
json metadata{"image":["https://steemitboard.com/img/notify.png"]}
Transaction InfoBlock #29028942/Trx 84668b61b6cd2cbe0206d7bbf44b02474a1c28ec
View Raw JSON Data
{
  "trx_id": "84668b61b6cd2cbe0206d7bbf44b02474a1c28ec",
  "block": 29028942,
  "trx_in_block": 2,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-12-30T22:46:18",
  "op": [
    "comment",
    {
      "parent_author": "parths007",
      "parent_permlink": "integrating-travis-ci-and-codecov-into-a-python-based-project",
      "author": "steemitboard",
      "permlink": "steemitboard-notify-parths007-20181230t224617000z",
      "title": "",
      "body": "Congratulations @parths007! You received a personal award!\n\n<table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@parths007/birthday1.png</td><td>1 Year on Steemit</td></tr></table>\n\n<sub>_[Click here to view your Board](https://steemitboard.com/@parths007)_</sub>\n\n\n**Do not miss the last post from @steemitboard:**\n<table><tr><td><a href=\"https://steemit.com/christmas/@steemitboard/christmas-challenge-send-a-gift-to-to-your-friends-the-party-continues\"><img src=\"https://steemitimages.com/64x128/http://i.cubeupload.com/kf4SJb.png\"></a></td><td><a href=\"https://steemit.com/christmas/@steemitboard/christmas-challenge-send-a-gift-to-to-your-friends-the-party-continues\">Christmas Challenge - The party continues</a></td></tr></table>\n\n> Support [SteemitBoard's project](https://steemit.com/@steemitboard)! **[Vote for its witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1)** and **get one more award**!",
      "json_metadata": "{\"image\":[\"https://steemitboard.com/img/notify.png\"]}"
    }
  ]
}
steemdelegated 5.626 SP to @parths007
2018/05/16 23:35:33
delegatorsteem
delegateeparths007
vesting shares9149.515578 VESTS
Transaction InfoBlock #22493812/Trx 542d4596a460f8a000af305244fcb1e5a779d13b
View Raw JSON Data
{
  "trx_id": "542d4596a460f8a000af305244fcb1e5a779d13b",
  "block": 22493812,
  "trx_in_block": 29,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-05-16T23:35:33",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "parths007",
      "vesting_shares": "9149.515578 VESTS"
    }
  ]
}
2018/01/10 19:52:24
authorparths007
permlinkintegrating-travis-ci-and-codecov-into-a-python-based-project
sbd payout0.017 SBD
steem payout0.000 STEEM
vesting payout6.144589 VESTS
Transaction InfoBlock #18864223/Virtual Operation #23
View Raw JSON Data
{
  "trx_id": "0000000000000000000000000000000000000000",
  "block": 18864223,
  "trx_in_block": 4294967295,
  "op_in_trx": 0,
  "virtual_op": 23,
  "timestamp": "2018-01-10T19:52:24",
  "op": [
    "author_reward",
    {
      "author": "parths007",
      "permlink": "integrating-travis-ci-and-codecov-into-a-python-based-project",
      "sbd_payout": "0.017 SBD",
      "steem_payout": "0.000 STEEM",
      "vesting_payout": "6.144589 VESTS"
    }
  ]
}
steemdelegated 18.263 SP to @parths007
2018/01/08 19:34:09
delegatorsteem
delegateeparths007
vesting shares29700.354200 VESTS
Transaction InfoBlock #18806304/Trx 5558fc18f6bd1159843ce3ff35c307940200ae78
View Raw JSON Data
{
  "trx_id": "5558fc18f6bd1159843ce3ff35c307940200ae78",
  "block": 18806304,
  "trx_in_block": 16,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-08T19:34:09",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "parths007",
      "vesting_shares": "29700.354200 VESTS"
    }
  ]
}
2018/01/08 16:32:39
voterjiffylube
authorparths007
permlinkintegrating-travis-ci-and-codecov-into-a-python-based-project
weight10000 (100.00%)
Transaction InfoBlock #18802681/Trx a88097d57f1e72261c9f97c96291d1ec2a027f99
View Raw JSON Data
{
  "trx_id": "a88097d57f1e72261c9f97c96291d1ec2a027f99",
  "block": 18802681,
  "trx_in_block": 5,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-08T16:32:39",
  "op": [
    "vote",
    {
      "voter": "jiffylube",
      "author": "parths007",
      "permlink": "integrating-travis-ci-and-codecov-into-a-python-based-project",
      "weight": 10000
    }
  ]
}
2018/01/05 20:02:00
votermaitland
authorparths007
permlinkintegrating-travis-ci-and-codecov-into-a-python-based-project
weight0 (0.00%)
Transaction InfoBlock #18720558/Trx b359c854c0dc2409338d618a0a72f746315c5e60
View Raw JSON Data
{
  "trx_id": "b359c854c0dc2409338d618a0a72f746315c5e60",
  "block": 18720558,
  "trx_in_block": 14,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-05T20:02:00",
  "op": [
    "vote",
    {
      "voter": "maitland",
      "author": "parths007",
      "permlink": "integrating-travis-ci-and-codecov-into-a-python-based-project",
      "weight": 0
    }
  ]
}
2018/01/05 20:01:45
votermaitland
authorparths007
permlinkintegrating-travis-ci-and-codecov-into-a-python-based-project
weight-10000 (-100.00%)
Transaction InfoBlock #18720553/Trx e4c7ffb981b710489c1b8567a60457eb0c74c5fd
View Raw JSON Data
{
  "trx_id": "e4c7ffb981b710489c1b8567a60457eb0c74c5fd",
  "block": 18720553,
  "trx_in_block": 45,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-05T20:01:45",
  "op": [
    "vote",
    {
      "voter": "maitland",
      "author": "parths007",
      "permlink": "integrating-travis-ci-and-codecov-into-a-python-based-project",
      "weight": -10000
    }
  ]
}
2018/01/04 00:21:27
parent authorparths007
parent permlinkintegrating-travis-ci-and-codecov-into-a-python-based-project
authorsteem-network
permlinkre-integrating-travis-ci-and-codecov-into-a-python-based-project-20180104t002125
title
body<html> <p>Congratulations <a href="/@parths007" target="_blank">@parths007</a>, you have decided to take the next big step with your first post! The Steem Network Team wishes you a great time among this awesome community.</p> <hr> <div class="pull-left"><img src="https://steemitimages.com/DQmaAdLUJ3yaSkmcmWECWyPGPWcjfbCoZ8Tu4RM6H4DbjCi/steem-network-thumbs-up.gif" alt="Thumbs up for Steem Network´s strategy" title="I suggest Steem Network´s strategy" width="320" height="222"></div> <h1>The proven road to boost your personal success in this amazing Steem Network</h1> <p>Do you already know that awesome content will get great profits by following these <a href="/steem-network/@steem-network/spread-your-posts-through-this-proven-strategy-and-get-great-profits-in-return--for-posts-created-at-2018-01-03" target="_blank" alt="Steem Network" title="Follow Steem Network´s suggestions to boost your success">simple steps</a>, that have been worked out by experts?</p> </html>
json metadata{"tags": ["steem-network"], "users": ["steem-network", "parths007"], "image": ["https://steemitimages.com/DQmaAdLUJ3yaSkmcmWECWyPGPWcjfbCoZ8Tu4RM6H4DbjCi/steem-network-thumbs-up.gif"], "links": ["/@parths007", "/steem-network/@steem-network/spread-your-posts-through-this-proven-strategy-and-get-great-profits-in-return--for-posts-created-at-2018-01-03"], "community": "steem-network", "app": "steem-network/1.0.1", "format": "html"}
Transaction InfoBlock #18668164/Trx 995c4c4cc84db2790f609974b3b364137d88e285
View Raw JSON Data
{
  "trx_id": "995c4c4cc84db2790f609974b3b364137d88e285",
  "block": 18668164,
  "trx_in_block": 6,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-04T00:21:27",
  "op": [
    "comment",
    {
      "parent_author": "parths007",
      "parent_permlink": "integrating-travis-ci-and-codecov-into-a-python-based-project",
      "author": "steem-network",
      "permlink": "re-integrating-travis-ci-and-codecov-into-a-python-based-project-20180104t002125",
      "title": "",
      "body": "<html>\n<p>Congratulations <a href=\"/@parths007\" target=\"_blank\">@parths007</a>, you have decided to take the next big step with your first post! The Steem Network Team wishes you a great time among this awesome community.</p>\n<hr>\n<div class=\"pull-left\"><img src=\"https://steemitimages.com/DQmaAdLUJ3yaSkmcmWECWyPGPWcjfbCoZ8Tu4RM6H4DbjCi/steem-network-thumbs-up.gif\" alt=\"Thumbs up for Steem Network´s strategy\" title=\"I suggest Steem Network´s strategy\" width=\"320\" height=\"222\"></div>\n<h1>The proven road to boost your personal success in this amazing Steem Network</h1>\n<p>Do you already know that awesome content will get great profits by following these <a href=\"/steem-network/@steem-network/spread-your-posts-through-this-proven-strategy-and-get-great-profits-in-return--for-posts-created-at-2018-01-03\" target=\"_blank\" alt=\"Steem Network\" title=\"Follow Steem Network´s suggestions to boost your success\">simple steps</a>, that have been worked out by experts?</p>\n</html>",
      "json_metadata": "{\"tags\": [\"steem-network\"], \"users\": [\"steem-network\", \"parths007\"], \"image\": [\"https://steemitimages.com/DQmaAdLUJ3yaSkmcmWECWyPGPWcjfbCoZ8Tu4RM6H4DbjCi/steem-network-thumbs-up.gif\"], \"links\": [\"/@parths007\", \"/steem-network/@steem-network/spread-your-posts-through-this-proven-strategy-and-get-great-profits-in-return--for-posts-created-at-2018-01-03\"], \"community\": \"steem-network\", \"app\": \"steem-network/1.0.1\", \"format\": \"html\"}"
    }
  ]
}
2018/01/03 20:06:09
parent author
parent permlinkcontinuousintegration
authorparths007
permlinkintegrating-travis-ci-and-codecov-into-a-python-based-project
titleIntegrating Travis CI and Codecov into a Python-based Project
body@@ -380,18 +380,16 @@ geyay). -%0A%0A It is a @@ -2933,17 +2933,16 @@ sh)%0A%60%60%60%0A -%0A BadgeYaY @@ -3127,17 +3127,16 @@ mation.%0A -%0A Basicall @@ -3407,17 +3407,16 @@ e%0A%7D%0A%60%60%60%0A -%0A Now I cr @@ -3823,15 +3823,14 @@ %0A + %60%60%60 %0A -%0A Here
json metadata{"tags":["continuousintegration","technology","python","travisci","devops"],"image":["https://steemitimages.com/DQmRPLWjr7Ccy95XwiWfqAHK1a5BrHBWgRxTmyXrdMBARPN/Copy%20of%20Copy%20of%20Web%20Scraping.png","https://cdn-images-1.medium.com/max/1600/1*qvdvN9h7oovqYD87IIXS5g.png"],"links":["https://github.com/fossasia","https://github.com/fossasia/badgeyay","https://heroku.com","https://travis-ci.org/","http://codecov.io","https://github.com/fossasia/badgeyay#badgeyay","https://www.explainxkcd.com/wiki/index.php/1629:_Tools","https://docs.python.org/3/library/unittest.html","https://github.com/SeleniumHQ/Selenium","https://github.com/fossasia/badgeyay/issues/383","https://github.com/ParthS007","http://docs.codecov.io","https://en.wikipedia.org/wiki/Code_coverage","https://www.codementor.io/parthshandilya/integrating-travis-ci-and-codecov-into-a-python-based-project-ez6e0tza6"],"app":"steemit/0.1","format":"markdown"}
Transaction InfoBlock #18663059/Trx 5ff74c9c702ceeccdfb215f56df3f0a94821fcff
View Raw JSON Data
{
  "trx_id": "5ff74c9c702ceeccdfb215f56df3f0a94821fcff",
  "block": 18663059,
  "trx_in_block": 9,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-03T20:06:09",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "continuousintegration",
      "author": "parths007",
      "permlink": "integrating-travis-ci-and-codecov-into-a-python-based-project",
      "title": "Integrating Travis CI and Codecov into a Python-based Project",
      "body": "@@ -380,18 +380,16 @@\n geyay). \n-%0A%0A\n It is a \n@@ -2933,17 +2933,16 @@\n sh)%0A%60%60%60%0A\n-%0A\n BadgeYaY\n@@ -3127,17 +3127,16 @@\n mation.%0A\n-%0A\n Basicall\n@@ -3407,17 +3407,16 @@\n e%0A%7D%0A%60%60%60%0A\n-%0A\n Now I cr\n@@ -3823,15 +3823,14 @@\n    %0A\n+\n %60%60%60  %0A\n-%0A\n Here\n",
      "json_metadata": "{\"tags\":[\"continuousintegration\",\"technology\",\"python\",\"travisci\",\"devops\"],\"image\":[\"https://steemitimages.com/DQmRPLWjr7Ccy95XwiWfqAHK1a5BrHBWgRxTmyXrdMBARPN/Copy%20of%20Copy%20of%20Web%20Scraping.png\",\"https://cdn-images-1.medium.com/max/1600/1*qvdvN9h7oovqYD87IIXS5g.png\"],\"links\":[\"https://github.com/fossasia\",\"https://github.com/fossasia/badgeyay\",\"https://heroku.com\",\"https://travis-ci.org/\",\"http://codecov.io\",\"https://github.com/fossasia/badgeyay#badgeyay\",\"https://www.explainxkcd.com/wiki/index.php/1629:_Tools\",\"https://docs.python.org/3/library/unittest.html\",\"https://github.com/SeleniumHQ/Selenium\",\"https://github.com/fossasia/badgeyay/issues/383\",\"https://github.com/ParthS007\",\"http://docs.codecov.io\",\"https://en.wikipedia.org/wiki/Code_coverage\",\"https://www.codementor.io/parthshandilya/integrating-travis-ci-and-codecov-into-a-python-based-project-ez6e0tza6\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
    }
  ]
}
2018/01/03 20:02:57
required auths[]
required posting auths["parths007"]
idfollow
json["follow",{"follower":"parths007","following":"schedutron","what":["blog"]}]
Transaction InfoBlock #18662995/Trx 233d2aabebf2f9a969b217b983231f8c55d5b471
View Raw JSON Data
{
  "trx_id": "233d2aabebf2f9a969b217b983231f8c55d5b471",
  "block": 18662995,
  "trx_in_block": 31,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-03T20:02:57",
  "op": [
    "custom_json",
    {
      "required_auths": [],
      "required_posting_auths": [
        "parths007"
      ],
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"parths007\",\"following\":\"schedutron\",\"what\":[\"blog\"]}]"
    }
  ]
}
2018/01/03 20:01:48
voterparths007
authorschedutron
permlinklet-s-write-a-chat-app-in-python
weight10000 (100.00%)
Transaction InfoBlock #18662972/Trx 035891440cc2d10dd5a34b3815b1ac41480a9469
View Raw JSON Data
{
  "trx_id": "035891440cc2d10dd5a34b3815b1ac41480a9469",
  "block": 18662972,
  "trx_in_block": 42,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-03T20:01:48",
  "op": [
    "vote",
    {
      "voter": "parths007",
      "author": "schedutron",
      "permlink": "let-s-write-a-chat-app-in-python",
      "weight": 10000
    }
  ]
}
2018/01/03 20:00:21
parent author
parent permlinkcontinuousintegration
authorparths007
permlinkintegrating-travis-ci-and-codecov-into-a-python-based-project
titleIntegrating Travis CI and Codecov into a Python-based Project
body![Copy of Copy of Web Scraping.png](https://steemitimages.com/DQmRPLWjr7Ccy95XwiWfqAHK1a5BrHBWgRxTmyXrdMBARPN/Copy%20of%20Copy%20of%20Web%20Scraping.png) A little background: over the last few months, I have been contributing to an open source organization [FOSSASIA](https://github.com/fossasia), where I’m working on a project called [BadgeYaY](https://github.com/fossasia/badgeyay). It is a badge generator with a simple web UI to add data and generate printable badges in PDF. BadgeYay uses Flask, which is a Python based microframework. I wanted to include a test coverage reporter in my continuous integration flow, which would ideally deploy to [Heroku](https://heroku.com) whenever my [TravisCI](https://travis-ci.org/) build passes. For that, I decided to use [codecov.io](http://codecov.io) for integrating code coverage. First, let’s take a look at what "code coverage” is, and then we shall move on to how to integrate Codecov with help of Travis CI. **What is Code Coverage&nbsp;?** Simply put, code coverage is a measurement used to express the degree to which the source code is executed when a test suite runs. A program with higher code coverage means that the test suite has had more of the source code executed when it runs. Thus, it implies that the source code has fewer chances of containing undetected bugs. We use three primary terms to describe source code lines executed. - **hit** indicates that the given source code was executed by the test suite. - **partial** indicates that the source code was not fully executed by the test suite and there are remaining branches that were not executed. - **miss** indicates that the source code was not executed by the test suite. Coverage is the ratio of `hits / (hit + partial + miss)`. A code base that has 5 lines executed by tests out of 12 total lines will receive a coverage ratio of 41%. I’m not boasting, but as of publication time, [BadgeYaY has 100% code coverage!](https://github.com/fossasia/badgeyay#badgeyay) 😎 ![](https://cdn-images-1.medium.com/max/1600/1*qvdvN9h7oovqYD87IIXS5g.png) *Code coverage is like a tool for building tools, and is integrated to other tools, like Git and Travis CI. Source:&nbsp;[XKCD](https://www.explainxkcd.com/wiki/index.php/1629:_Tools)* **How does CodeCov help in Code Coverage&nbsp;?** Codecov focuses on integration and promoting healthy pull requests. It delivers, or “injects” coverage metrics directly into the modern source code management workflow to promote more code coverage. This especially adds the convenience of checking coverage in pull requests where new features and bug fixes commonly occur. We can change the configuration of how Codecov processes reports and expresses coverage information. Let us see how I configured it to suit BadgeYaY — by integrating it with Travis CI. Now Codecov works great with Travis CI by using just one line: ``` bash < (curl -s https://codecov.io/bash) ``` BadgeYaY uses [Python unit tests](https://docs.python.org/3/library/unittest.html) for assertion, with the help of [Selenium](https://github.com/SeleniumHQ/Selenium) for web browser automation. Basically, that’s used for testing the code. I configured Codecov in such a way that it produces coverage reports based on the results of this testing, so I added the following to `scripts` in `travis.yml` ``` “scripts”: { — nosetests app/tests/test.py -v — with-coverage } ``` Now I created a `codecov.yml` file that tells the configuration of generated reports after code coverage. Here’s the code: ``` codecov: notify: require_ci_to_pass: yes coverage: precision: 2 round: down range: “70…100” status: project: yes patch: yes changes: no comment: layout: “reach, diff, flags, files, footer” behavior: default require_changes: no ``` Here is some of the code for `travis.yml`from the project repository of BadgeYaY, which integrates Codecov after successful builds. ``` Script: - python app/main.py >> log.txt 2>&1 & - nosetts app/tests/test.py -v — with-coverage - python3 -m pyflakes after_success: - bash < (curl -s https://codecov.io/bash) ``` _The other two scripts are not related to Codecov integration, but feel free to look them up if you’re interested._ Once all of this is set up, Codecov’s ready for action. Now, when anyone makes a pull request to BadgeYaY, Codecov will analyze it according to the above configuration and generate a report showing its code coverage. With that, we have reached the end of our discussion on integrating Travis CI and Codecov into a Python-based project. I wrote this post as a solution to this [issue](https://github.com/fossasia/badgeyay/issues/383) in the BadgeYaY project. If you liked this post, consider having a look at my other work on [GitHub](https://github.com/ParthS007) 🙂. Sources&nbsp;: [codecov.io](http://docs.codecov.io), [Wikipedia](https://en.wikipedia.org/wiki/Code_coverage) PS: I’m new to blogging, so constructive criticism is not only welcome, but very much wanted! I’m open to better writing styles, techniques and pedagogy — feel free to mention them in the comments. ------------------------------------------------------------------------------------------------------------------------------------------------------ This post is originally published by the author on [Codementor](https://www.codementor.io/parthshandilya/integrating-travis-ci-and-codecov-into-a-python-based-project-ez6e0tza6). This version has been edited for clarity and may appear different from the original post.
json metadata{"tags":["technology","python","travisci","devops","continuousintegration"],"image":["https://steemitimages.com/DQmRPLWjr7Ccy95XwiWfqAHK1a5BrHBWgRxTmyXrdMBARPN/Copy%20of%20Copy%20of%20Web%20Scraping.png","https://cdn-images-1.medium.com/max/1600/1*qvdvN9h7oovqYD87IIXS5g.png"],"links":["https://github.com/fossasia","https://github.com/fossasia/badgeyay","https://heroku.com","https://travis-ci.org/","http://codecov.io","https://github.com/fossasia/badgeyay#badgeyay","https://www.explainxkcd.com/wiki/index.php/1629:_Tools","https://docs.python.org/3/library/unittest.html","https://github.com/SeleniumHQ/Selenium","https://github.com/fossasia/badgeyay/issues/383","https://github.com/ParthS007","http://docs.codecov.io","https://en.wikipedia.org/wiki/Code_coverage","https://www.codementor.io/parthshandilya/integrating-travis-ci-and-codecov-into-a-python-based-project-ez6e0tza6"],"app":"steemit/0.1","format":"markdown"}
Transaction InfoBlock #18662943/Trx e1f95ae90a4aad77ea87c3b5076f00b847f5933d
View Raw JSON Data
{
  "trx_id": "e1f95ae90a4aad77ea87c3b5076f00b847f5933d",
  "block": 18662943,
  "trx_in_block": 38,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-03T20:00:21",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "continuousintegration",
      "author": "parths007",
      "permlink": "integrating-travis-ci-and-codecov-into-a-python-based-project",
      "title": "Integrating Travis CI and Codecov into a Python-based Project",
      "body": "![Copy of Copy of Web Scraping.png](https://steemitimages.com/DQmRPLWjr7Ccy95XwiWfqAHK1a5BrHBWgRxTmyXrdMBARPN/Copy%20of%20Copy%20of%20Web%20Scraping.png)\n\nA little background: over the last few months, I have been contributing to an open source organization [FOSSASIA](https://github.com/fossasia), where I’m working on a project called [BadgeYaY](https://github.com/fossasia/badgeyay). \n\nIt is a badge generator with a simple web UI to add data and generate printable badges in PDF. BadgeYay uses Flask, which is a Python based microframework.\n\nI wanted to include a test coverage reporter in my continuous integration flow, which would ideally deploy to [Heroku](https://heroku.com) whenever my [TravisCI](https://travis-ci.org/) build passes. For that, I decided to use [codecov.io](http://codecov.io) for integrating code coverage.\n\nFirst, let’s take a look at what \"code coverage” is, and then we shall move on to how to integrate Codecov with help of Travis CI.\n\n**What is Code Coverage&nbsp;?**\n\nSimply put, code coverage is a measurement used to express the degree to which the source code is executed when a test suite runs. A program with higher code coverage means that the test suite has had more of the source code executed when it runs.\n\nThus, it implies that the source code has fewer chances of containing undetected bugs. We use three primary terms to describe source code lines executed.\n\n- **hit** indicates that the given source code was executed by the test suite.\n- **partial** indicates that the source code was not fully executed by the test suite and there are remaining branches that were not executed.\n- **miss** indicates that the source code was not executed by the test suite.\n\nCoverage is the ratio of `hits / (hit + partial + miss)`. A code base that has 5 lines executed by tests out of 12 total lines will receive a coverage ratio of 41%. I’m not boasting, but as of publication time, [BadgeYaY has 100% code coverage!](https://github.com/fossasia/badgeyay#badgeyay) 😎\n\n  ![](https://cdn-images-1.medium.com/max/1600/1*qvdvN9h7oovqYD87IIXS5g.png)\n*Code coverage is like a tool for building tools, and is integrated to other tools, like Git and Travis CI. Source:&nbsp;[XKCD](https://www.explainxkcd.com/wiki/index.php/1629:_Tools)*\n\n**How does CodeCov help in Code Coverage&nbsp;?**\n\nCodecov focuses on integration and promoting healthy pull requests. It delivers, or “injects” coverage metrics directly into the modern source code management workflow to promote more code coverage. This especially adds the convenience of checking coverage in pull requests where new features and bug fixes commonly occur.\n\nWe can change the configuration of how Codecov processes reports and expresses coverage information. Let us see how I configured it to suit BadgeYaY — by integrating it with Travis CI.\n\nNow Codecov works great with Travis CI by using just one line:\n\n```\nbash < (curl -s https://codecov.io/bash)\n```\n\nBadgeYaY uses [Python unit tests](https://docs.python.org/3/library/unittest.html) for assertion, with the help of [Selenium](https://github.com/SeleniumHQ/Selenium) for web browser automation.\n\nBasically, that’s used for testing the code. I configured Codecov in such a way that it produces coverage reports based on the results of this testing, so I added the following to `scripts` in `travis.yml`\n\n```\n“scripts”: { \n— nosetests app/tests/test.py -v — with-coverage\n}\n```\n\nNow I created a `codecov.yml` file that tells the configuration of generated reports after code coverage. Here’s the code:\n\n```\ncodecov:\n    notify:\n    require_ci_to_pass: yes\n    \ncoverage:\n    precision: 2\n    round: down\n    range: “70…100”\n  status:\n    project: yes\n    patch: yes\n    changes: no\n\ncomment:\n    layout: “reach, diff, flags, files, footer”\n    behavior: default\n    require_changes: no\n    \n```  \n\nHere is some of the code for `travis.yml`from the project repository of BadgeYaY, which integrates Codecov after successful builds.\n\n```\nScript:\n- python app/main.py >> log.txt 2>&1 &\n- nosetts app/tests/test.py -v — with-coverage\n- python3 -m pyflakes\n\nafter_success:\n- bash < (curl -s https://codecov.io/bash)\n```\n\n_The other two scripts are not related to Codecov integration, but feel free to look them up if you’re interested._\n\nOnce all of this is set up, Codecov’s ready for action. Now, when anyone makes a pull request to BadgeYaY, Codecov will analyze it according to the above configuration and generate a report showing its code coverage.\n\nWith that, we have reached the end of our discussion on integrating Travis CI and Codecov into a Python-based project. I wrote this post as a solution to this [issue](https://github.com/fossasia/badgeyay/issues/383) in the BadgeYaY project. If you liked this post, consider having a look at my other work on [GitHub](https://github.com/ParthS007) 🙂.\n\nSources&nbsp;: [codecov.io](http://docs.codecov.io), [Wikipedia](https://en.wikipedia.org/wiki/Code_coverage)\n\nPS: I’m new to blogging, so constructive criticism is not only welcome, but very much wanted! I’m open to better writing styles, techniques and pedagogy — feel free to mention them in the comments.\n\n------------------------------------------------------------------------------------------------------------------------------------------------------\n\nThis post is originally published by the author on [Codementor](https://www.codementor.io/parthshandilya/integrating-travis-ci-and-codecov-into-a-python-based-project-ez6e0tza6). This version has been edited for clarity and may appear different from the original post.",
      "json_metadata": "{\"tags\":[\"technology\",\"python\",\"travisci\",\"devops\",\"continuousintegration\"],\"image\":[\"https://steemitimages.com/DQmRPLWjr7Ccy95XwiWfqAHK1a5BrHBWgRxTmyXrdMBARPN/Copy%20of%20Copy%20of%20Web%20Scraping.png\",\"https://cdn-images-1.medium.com/max/1600/1*qvdvN9h7oovqYD87IIXS5g.png\"],\"links\":[\"https://github.com/fossasia\",\"https://github.com/fossasia/badgeyay\",\"https://heroku.com\",\"https://travis-ci.org/\",\"http://codecov.io\",\"https://github.com/fossasia/badgeyay#badgeyay\",\"https://www.explainxkcd.com/wiki/index.php/1629:_Tools\",\"https://docs.python.org/3/library/unittest.html\",\"https://github.com/SeleniumHQ/Selenium\",\"https://github.com/fossasia/badgeyay/issues/383\",\"https://github.com/ParthS007\",\"http://docs.codecov.io\",\"https://en.wikipedia.org/wiki/Code_coverage\",\"https://www.codementor.io/parthshandilya/integrating-travis-ci-and-codecov-into-a-python-based-project-ez6e0tza6\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
    }
  ]
}
2018/01/03 19:59:12
voterschedutron
authorparths007
permlinkintegrating-travis-ci-and-codecov-into-a-python-based-project
weight10000 (100.00%)
Transaction InfoBlock #18662920/Trx e9293e9b11cba3864505a4a1994f72b3952e06a1
View Raw JSON Data
{
  "trx_id": "e9293e9b11cba3864505a4a1994f72b3952e06a1",
  "block": 18662920,
  "trx_in_block": 0,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-03T19:59:12",
  "op": [
    "vote",
    {
      "voter": "schedutron",
      "author": "parths007",
      "permlink": "integrating-travis-ci-and-codecov-into-a-python-based-project",
      "weight": 10000
    }
  ]
}
2018/01/03 19:56:06
parent author
parent permlinkcontinuousintegration
authorparths007
permlinkintegrating-travis-ci-and-codecov-into-a-python-based-project
titleIntegrating Travis CI and Codecov into a Python-based Project
body![Copy of Copy of Web Scraping.png](https://steemitimages.com/DQmRPLWjr7Ccy95XwiWfqAHK1a5BrHBWgRxTmyXrdMBARPN/Copy%20of%20Copy%20of%20Web%20Scraping.png) A little background: over the last few months, I have been contributing to an open source organization [FOSSASIA](https://github.com/fossasia), where I’m working on a project called [BadgeYaY](https://github.com/fossasia/badgeyay). It is a badge generator with a simple web UI to add data and generate printable badges in PDF. BadgeYay uses Flask, which is a Python based microframework. I wanted to include a test coverage reporter in my continuous integration flow, which would ideally deploy to [Heroku](https://heroku.com) whenever my [TravisCI](https://travis-ci.org/) build passes. For that, I decided to use [codecov.io](http://codecov.io) for integrating code coverage. First, let’s take a look at what "code coverage” is, and then we shall move on to how to integrate Codecov with help of Travis CI. **What is Code Coverage&nbsp;?** Simply put, code coverage is a measurement used to express the degree to which the source code is executed when a test suite runs. A program with higher code coverage means that the test suite has had more of the source code executed when it runs. Thus, it implies that the source code has fewer chances of containing undetected bugs. We use three primary terms to describe source code lines executed. - **hit** indicates that the given source code was executed by the test suite. - **partial** indicates that the source code was not fully executed by the test suite and there are remaining branches that were not executed. - **miss** indicates that the source code was not executed by the test suite. Coverage is the ratio of `hits / (hit + partial + miss)`. A code base that has 5 lines executed by tests out of 12 total lines will receive a coverage ratio of 41%. I’m not boasting, but as of publication time, [BadgeYaY has 100% code coverage!](https://github.com/fossasia/badgeyay#badgeyay) 😎 ![](https://cdn-images-1.medium.com/max/1600/1*qvdvN9h7oovqYD87IIXS5g.png) *Code coverage is like a tool for building tools, and is integrated to other tools, like Git and Travis CI. Source:&nbsp;[XKCD](https://www.explainxkcd.com/wiki/index.php/1629:_Tools)* **How does CodeCov help in Code Coverage&nbsp;?** Codecov focuses on integration and promoting healthy pull requests. It delivers, or “injects” coverage metrics directly into the modern source code management workflow to promote more code coverage. This especially adds the convenience of checking coverage in pull requests where new features and bug fixes commonly occur. We can change the configuration of how Codecov processes reports and expresses coverage information. Let us see how I configured it to suit BadgeYaY — by integrating it with Travis CI. Now Codecov works great with Travis CI by using just one line: ``` bash < (curl -s https://codecov.io/bash) ``` BadgeYaY uses [Python unit tests](https://docs.python.org/3/library/unittest.html) for assertion, with the help of [Selenium](https://github.com/SeleniumHQ/Selenium) for web browser automation. Basically, that’s used for testing the code. I configured Codecov in such a way that it produces coverage reports based on the results of this testing, so I added the following to `scripts` in `travis.yml` ``` “scripts”: { — nosetests app/tests/test.py -v — with-coverage } ``` Now I created a `codecov.yml` file that tells the configuration of generated reports after code coverage. Here’s the code: ``` codecov: notify: require_ci_to_pass: yes coverage: precision: 2 round: down range: “70…100” status: project: yes patch: yes changes: no comment: layout: “reach, diff, flags, files, footer” behavior: default require_changes: no ``` Here is some of the code for `travis.yml`from the project repository of BadgeYaY, which integrates Codecov after successful builds. ``` Script: - python app/main.py >> log.txt 2>&1 & - nosetts app/tests/test.py -v — with-coverage - python3 -m pyflakes after_success: - bash < (curl -s https://codecov.io/bash) ``` _The other two scripts are not related to Codecov integration, but feel free to look them up if you’re interested._ Once all of this is set up, Codecov’s ready for action. Now, when anyone makes a pull request to BadgeYaY, Codecov will analyze it according to the above configuration and generate a report showing its code coverage. With that, we have reached the end of our discussion on integrating Travis CI and Codecov into a Python-based project. I wrote this post as a solution to this [issue](https://github.com/fossasia/badgeyay/issues/383) in the BadgeYaY project. If you liked this post, consider having a look at my other work on [GitHub](https://github.com/ParthS007) 🙂. Sources&nbsp;: [codecov.io](http://docs.codecov.io), [Wikipedia](https://en.wikipedia.org/wiki/Code_coverage) PS: I’m new to blogging, so constructive criticism is not only welcome, but very much wanted! I’m open to better writing styles, techniques and pedagogy — feel free to mention them in the comments. ------------------------------------------------------------------------------------------------------------------------------------------------------ This post is originally published by the author on [Codementor](https://www.codementor.io/parthshandilya/integrating-travis-ci-and-codecov-into-a-python-based-project-ez6e0tza6). This version has been edited for clarity and may appear different from the original post.
json metadata{"tags":["continuousintegration","python","travisci","devops"],"image":["https://steemitimages.com/DQmRPLWjr7Ccy95XwiWfqAHK1a5BrHBWgRxTmyXrdMBARPN/Copy%20of%20Copy%20of%20Web%20Scraping.png","https://cdn-images-1.medium.com/max/1600/1*qvdvN9h7oovqYD87IIXS5g.png"],"links":["https://github.com/fossasia","https://github.com/fossasia/badgeyay","https://heroku.com","https://travis-ci.org/","http://codecov.io","https://github.com/fossasia/badgeyay#badgeyay","https://www.explainxkcd.com/wiki/index.php/1629:_Tools","https://docs.python.org/3/library/unittest.html","https://github.com/SeleniumHQ/Selenium","https://github.com/fossasia/badgeyay/issues/383","https://github.com/ParthS007","http://docs.codecov.io","https://en.wikipedia.org/wiki/Code_coverage","https://www.codementor.io/parthshandilya/integrating-travis-ci-and-codecov-into-a-python-based-project-ez6e0tza6"],"app":"steemit/0.1","format":"markdown"}
Transaction InfoBlock #18662858/Trx d37e8b5b49f27910e036736406ff3461bd7d4ff2
View Raw JSON Data
{
  "trx_id": "d37e8b5b49f27910e036736406ff3461bd7d4ff2",
  "block": 18662858,
  "trx_in_block": 21,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-03T19:56:06",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "continuousintegration",
      "author": "parths007",
      "permlink": "integrating-travis-ci-and-codecov-into-a-python-based-project",
      "title": "Integrating Travis CI and Codecov into a Python-based Project",
      "body": "![Copy of Copy of Web Scraping.png](https://steemitimages.com/DQmRPLWjr7Ccy95XwiWfqAHK1a5BrHBWgRxTmyXrdMBARPN/Copy%20of%20Copy%20of%20Web%20Scraping.png)\n\nA little background: over the last few months, I have been contributing to an open source organization [FOSSASIA](https://github.com/fossasia), where I’m working on a project called [BadgeYaY](https://github.com/fossasia/badgeyay). \n\nIt is a badge generator with a simple web UI to add data and generate printable badges in PDF. BadgeYay uses Flask, which is a Python based microframework.\n\nI wanted to include a test coverage reporter in my continuous integration flow, which would ideally deploy to [Heroku](https://heroku.com) whenever my [TravisCI](https://travis-ci.org/) build passes. For that, I decided to use [codecov.io](http://codecov.io) for integrating code coverage.\n\nFirst, let’s take a look at what \"code coverage” is, and then we shall move on to how to integrate Codecov with help of Travis CI.\n\n**What is Code Coverage&nbsp;?**\n\nSimply put, code coverage is a measurement used to express the degree to which the source code is executed when a test suite runs. A program with higher code coverage means that the test suite has had more of the source code executed when it runs.\n\nThus, it implies that the source code has fewer chances of containing undetected bugs. We use three primary terms to describe source code lines executed.\n\n- **hit** indicates that the given source code was executed by the test suite.\n- **partial** indicates that the source code was not fully executed by the test suite and there are remaining branches that were not executed.\n- **miss** indicates that the source code was not executed by the test suite.\n\nCoverage is the ratio of `hits / (hit + partial + miss)`. A code base that has 5 lines executed by tests out of 12 total lines will receive a coverage ratio of 41%. I’m not boasting, but as of publication time, [BadgeYaY has 100% code coverage!](https://github.com/fossasia/badgeyay#badgeyay) 😎\n\n  ![](https://cdn-images-1.medium.com/max/1600/1*qvdvN9h7oovqYD87IIXS5g.png)\n*Code coverage is like a tool for building tools, and is integrated to other tools, like Git and Travis CI. Source:&nbsp;[XKCD](https://www.explainxkcd.com/wiki/index.php/1629:_Tools)*\n\n**How does CodeCov help in Code Coverage&nbsp;?**\n\nCodecov focuses on integration and promoting healthy pull requests. It delivers, or “injects” coverage metrics directly into the modern source code management workflow to promote more code coverage. This especially adds the convenience of checking coverage in pull requests where new features and bug fixes commonly occur.\n\nWe can change the configuration of how Codecov processes reports and expresses coverage information. Let us see how I configured it to suit BadgeYaY — by integrating it with Travis CI.\n\nNow Codecov works great with Travis CI by using just one line:\n\n```\nbash < (curl -s https://codecov.io/bash)\n```\n\nBadgeYaY uses [Python unit tests](https://docs.python.org/3/library/unittest.html) for assertion, with the help of [Selenium](https://github.com/SeleniumHQ/Selenium) for web browser automation.\n\nBasically, that’s used for testing the code. I configured Codecov in such a way that it produces coverage reports based on the results of this testing, so I added the following to `scripts` in `travis.yml`\n\n```\n“scripts”: { \n— nosetests app/tests/test.py -v — with-coverage\n}\n```\n\nNow I created a `codecov.yml` file that tells the configuration of generated reports after code coverage. Here’s the code:\n\n```\ncodecov:\n    notify:\n    require_ci_to_pass: yes\n    \ncoverage:\n    precision: 2\n    round: down\n    range: “70…100”\n  status:\n    project: yes\n    patch: yes\n    changes: no\n\ncomment:\n    layout: “reach, diff, flags, files, footer”\n    behavior: default\n    require_changes: no\n    \n```  \n\nHere is some of the code for `travis.yml`from the project repository of BadgeYaY, which integrates Codecov after successful builds.\n\n```\nScript:\n- python app/main.py >> log.txt 2>&1 &\n- nosetts app/tests/test.py -v — with-coverage\n- python3 -m pyflakes\n\nafter_success:\n- bash < (curl -s https://codecov.io/bash)\n```\n\n_The other two scripts are not related to Codecov integration, but feel free to look them up if you’re interested._\n\nOnce all of this is set up, Codecov’s ready for action. Now, when anyone makes a pull request to BadgeYaY, Codecov will analyze it according to the above configuration and generate a report showing its code coverage.\n\nWith that, we have reached the end of our discussion on integrating Travis CI and Codecov into a Python-based project. I wrote this post as a solution to this [issue](https://github.com/fossasia/badgeyay/issues/383) in the BadgeYaY project. If you liked this post, consider having a look at my other work on [GitHub](https://github.com/ParthS007) 🙂.\n\nSources&nbsp;: [codecov.io](http://docs.codecov.io), [Wikipedia](https://en.wikipedia.org/wiki/Code_coverage)\n\nPS: I’m new to blogging, so constructive criticism is not only welcome, but very much wanted! I’m open to better writing styles, techniques and pedagogy — feel free to mention them in the comments.\n\n------------------------------------------------------------------------------------------------------------------------------------------------------\n\nThis post is originally published by the author on [Codementor](https://www.codementor.io/parthshandilya/integrating-travis-ci-and-codecov-into-a-python-based-project-ez6e0tza6). This version has been edited for clarity and may appear different from the original post.",
      "json_metadata": "{\"tags\":[\"continuousintegration\",\"python\",\"travisci\",\"devops\"],\"image\":[\"https://steemitimages.com/DQmRPLWjr7Ccy95XwiWfqAHK1a5BrHBWgRxTmyXrdMBARPN/Copy%20of%20Copy%20of%20Web%20Scraping.png\",\"https://cdn-images-1.medium.com/max/1600/1*qvdvN9h7oovqYD87IIXS5g.png\"],\"links\":[\"https://github.com/fossasia\",\"https://github.com/fossasia/badgeyay\",\"https://heroku.com\",\"https://travis-ci.org/\",\"http://codecov.io\",\"https://github.com/fossasia/badgeyay#badgeyay\",\"https://www.explainxkcd.com/wiki/index.php/1629:_Tools\",\"https://docs.python.org/3/library/unittest.html\",\"https://github.com/SeleniumHQ/Selenium\",\"https://github.com/fossasia/badgeyay/issues/383\",\"https://github.com/ParthS007\",\"http://docs.codecov.io\",\"https://en.wikipedia.org/wiki/Code_coverage\",\"https://www.codementor.io/parthshandilya/integrating-travis-ci-and-codecov-into-a-python-based-project-ez6e0tza6\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
    }
  ]
}
parths007updated their account properties
2018/01/03 19:54:57
accountparths007
memo keySTM6ZTJUP88VW4oc3a9XxBjyje2cuwkyNsEnkL9JGVvpc94K7NdAe
json metadata{"profile":{"name":"Parth Shandilya","about":"Learner","location":"Earth","profile_image":"https://pbs.twimg.com/profile_images/941074084187709440/PMz8vpbC_400x400.jpg"}}
Transaction InfoBlock #18662835/Trx 578a11753cf776902e06d49cff32158aa9e687a9
View Raw JSON Data
{
  "trx_id": "578a11753cf776902e06d49cff32158aa9e687a9",
  "block": 18662835,
  "trx_in_block": 3,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-03T19:54:57",
  "op": [
    "account_update",
    {
      "account": "parths007",
      "memo_key": "STM6ZTJUP88VW4oc3a9XxBjyje2cuwkyNsEnkL9JGVvpc94K7NdAe",
      "json_metadata": "{\"profile\":{\"name\":\"Parth  Shandilya\",\"about\":\"Learner\",\"location\":\"Earth\",\"profile_image\":\"https://pbs.twimg.com/profile_images/941074084187709440/PMz8vpbC_400x400.jpg\"}}"
    }
  ]
}
2018/01/03 19:52:24
voterparths007
authorparths007
permlinkintegrating-travis-ci-and-codecov-into-a-python-based-project
weight10000 (100.00%)
Transaction InfoBlock #18662784/Trx 1688ea5dff462236fe07c0d400b7dc7a56b3d50d
View Raw JSON Data
{
  "trx_id": "1688ea5dff462236fe07c0d400b7dc7a56b3d50d",
  "block": 18662784,
  "trx_in_block": 12,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-03T19:52:24",
  "op": [
    "vote",
    {
      "voter": "parths007",
      "author": "parths007",
      "permlink": "integrating-travis-ci-and-codecov-into-a-python-based-project",
      "weight": 10000
    }
  ]
}
2018/01/03 19:52:24
parent author
parent permlinkcontinuousintegration
authorparths007
permlinkintegrating-travis-ci-and-codecov-into-a-python-based-project
titleIntegrating Travis CI and Codecov into a Python-based Project
body![Copy of Copy of Web Scraping.png](https://steemitimages.com/DQmRPLWjr7Ccy95XwiWfqAHK1a5BrHBWgRxTmyXrdMBARPN/Copy%20of%20Copy%20of%20Web%20Scraping.png) A little background: over the last few months, I have been contributing to an open source organization [FOSSASIA](https://github.com/fossasia), where I’m working on a project called [BadgeYaY](https://github.com/fossasia/badgeyay). It is a badge generator with a simple web UI to add data and generate printable badges in PDF. BadgeYay uses Flask, which is a Python based microframework. I wanted to include a test coverage reporter in my continuous integration flow, which would ideally deploy to [Heroku](https://heroku.com) whenever my [TravisCI](https://travis-ci.org/) build passes. For that, I decided to use [codecov.io](http://codecov.io) for integrating code coverage. First, let’s take a look at what "code coverage” is, and then we shall move on to how to integrate Codecov with help of Travis CI. **What is Code Coverage&nbsp;?** Simply put, code coverage is a measurement used to express the degree to which the source code is executed when a test suite runs. A program with higher code coverage means that the test suite has had more of the source code executed when it runs. Thus, it implies that the source code has fewer chances of containing undetected bugs. We use three primary terms to describe source code lines executed. - **hit** indicates that the given source code was executed by the test suite. - **partial** indicates that the source code was not fully executed by the test suite and there are remaining branches that were not executed. - **miss** indicates that the source code was not executed by the test suite. Coverage is the ratio of `hits / (hit + partial + miss)`. A code base that has 5 lines executed by tests out of 12 total lines will receive a coverage ratio of 41%. I’m not boasting, but as of publication time, [BadgeYaY has 100% code coverage!](https://github.com/fossasia/badgeyay#badgeyay) 😎 ![](https://cdn-images-1.medium.com/max/1600/1*qvdvN9h7oovqYD87IIXS5g.png) *Code coverage is like a tool for building tools, and is integrated to other tools, like Git and Travis CI. Source:&nbsp;[XKCD](https://www.explainxkcd.com/wiki/index.php/1629:_Tools)* **How does CodeCov help in Code Coverage&nbsp;?** Codecov focuses on integration and promoting healthy pull requests. It delivers, or “injects” coverage metrics directly into the modern source code management workflow to promote more code coverage. This especially adds the convenience of checking coverage in pull requests where new features and bug fixes commonly occur. We can change the configuration of how Codecov processes reports and expresses coverage information. Let us see how I configured it to suit BadgeYaY — by integrating it with Travis CI. Now Codecov works great with Travis CI by using just one line: ``` bash < (curl -s https://codecov.io/bash) ``` BadgeYaY uses [Python unit tests](https://docs.python.org/3/library/unittest.html) for assertion, with the help of [Selenium](https://github.com/SeleniumHQ/Selenium) for web browser automation. Basically, that’s used for testing the code. I configured Codecov in such a way that it produces coverage reports based on the results of this testing, so I added the following to `scripts` in `travis.yml` ``` “scripts”: { — nosetests app/tests/test.py -v — with-coverage } ``` Now I created a `codecov.yml` file that tells the configuration of generated reports after code coverage. Here’s the code: ``` codecov: notify: require_ci_to_pass: yes coverage: precision: 2 round: down range: “70…100” status: project: yes patch: yes changes: no comment: layout: “reach, diff, flags, files, footer” behavior: default require_changes: no ``` Here is some of the code for `travis.yml`from the project repository of BadgeYaY, which integrates Codecov after successful builds. ``` Script: - python app/main.py >> log.txt 2>&1 & - nosetts app/tests/test.py -v — with-coverage - python3 -m pyflakes after_success: - bash < (curl -s https://codecov.io/bash) ``` _The other two scripts are not related to Codecov integration, but feel free to look them up if you’re interested._ Once all of this is set up, Codecov’s ready for action. Now, when anyone makes a pull request to BadgeYaY, Codecov will analyze it according to the above configuration and generate a report showing its code coverage. With that, we have reached the end of our discussion on integrating Travis CI and Codecov into a Python-based project. I wrote this post as a solution to this [issue](https://github.com/fossasia/badgeyay/issues/383) in the BadgeYaY project. If you liked this post, consider having a look at my other work on [GitHub](https://github.com/ParthS007) 🙂. Sources&nbsp;: [codecov.io](http://docs.codecov.io), [Wikipedia](https://en.wikipedia.org/wiki/Code_coverage) PS: I’m new to blogging, so constructive criticism is not only welcome, but very much wanted! I’m open to better writing styles, techniques and pedagogy — feel free to mention them in the comments. ------------------------------------------------------------------------------------------------------------------------------------------------------ This post is originally published by the author on [Codementor](https://www.codementor.io/parthshandilya/integrating-travis-ci-and-codecov-into-a-python-based-project-ez6e0tza6). This version has been edited for clarity and may appear different from the original post.
json metadata{"tags":["continuousintegration","python","travisci","devops"],"image":["https://steemitimages.com/DQmRPLWjr7Ccy95XwiWfqAHK1a5BrHBWgRxTmyXrdMBARPN/Copy%20of%20Copy%20of%20Web%20Scraping.png","https://cdn-images-1.medium.com/max/1600/1*qvdvN9h7oovqYD87IIXS5g.png"],"links":["https://github.com/fossasia","https://github.com/fossasia/badgeyay","https://heroku.com","https://travis-ci.org/","http://codecov.io","https://github.com/fossasia/badgeyay#badgeyay","https://www.explainxkcd.com/wiki/index.php/1629:_Tools","https://docs.python.org/3/library/unittest.html","https://github.com/SeleniumHQ/Selenium","https://github.com/fossasia/badgeyay/issues/383","https://github.com/ParthS007","http://docs.codecov.io","https://en.wikipedia.org/wiki/Code_coverage","https://www.codementor.io/parthshandilya/integrating-travis-ci-and-codecov-into-a-python-based-project-ez6e0tza6"],"app":"steemit/0.1","format":"markdown"}
Transaction InfoBlock #18662784/Trx 1688ea5dff462236fe07c0d400b7dc7a56b3d50d
View Raw JSON Data
{
  "trx_id": "1688ea5dff462236fe07c0d400b7dc7a56b3d50d",
  "block": 18662784,
  "trx_in_block": 12,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-03T19:52:24",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "continuousintegration",
      "author": "parths007",
      "permlink": "integrating-travis-ci-and-codecov-into-a-python-based-project",
      "title": "Integrating Travis CI and Codecov into a Python-based Project",
      "body": "![Copy of Copy of Web Scraping.png](https://steemitimages.com/DQmRPLWjr7Ccy95XwiWfqAHK1a5BrHBWgRxTmyXrdMBARPN/Copy%20of%20Copy%20of%20Web%20Scraping.png)\n\nA little background: over the last few months, I have been contributing to an open source organization [FOSSASIA](https://github.com/fossasia), where I’m working on a project called [BadgeYaY](https://github.com/fossasia/badgeyay). \n\nIt is a badge generator with a simple web UI to add data and generate printable badges in PDF. BadgeYay uses Flask, which is a Python based microframework.\n\nI wanted to include a test coverage reporter in my continuous integration flow, which would ideally deploy to [Heroku](https://heroku.com) whenever my [TravisCI](https://travis-ci.org/) build passes. For that, I decided to use [codecov.io](http://codecov.io) for integrating code coverage.\n\nFirst, let’s take a look at what \"code coverage” is, and then we shall move on to how to integrate Codecov with help of Travis CI.\n\n**What is Code Coverage&nbsp;?**\n\nSimply put, code coverage is a measurement used to express the degree to which the source code is executed when a test suite runs. A program with higher code coverage means that the test suite has had more of the source code executed when it runs.\n\nThus, it implies that the source code has fewer chances of containing undetected bugs. We use three primary terms to describe source code lines executed.\n\n- **hit** indicates that the given source code was executed by the test suite.\n- **partial** indicates that the source code was not fully executed by the test suite and there are remaining branches that were not executed.\n- **miss** indicates that the source code was not executed by the test suite.\n\nCoverage is the ratio of `hits / (hit + partial + miss)`. A code base that has 5 lines executed by tests out of 12 total lines will receive a coverage ratio of 41%. I’m not boasting, but as of publication time, [BadgeYaY has 100% code coverage!](https://github.com/fossasia/badgeyay#badgeyay) 😎\n\n  ![](https://cdn-images-1.medium.com/max/1600/1*qvdvN9h7oovqYD87IIXS5g.png)\n*Code coverage is like a tool for building tools, and is integrated to other tools, like Git and Travis CI. Source:&nbsp;[XKCD](https://www.explainxkcd.com/wiki/index.php/1629:_Tools)*\n\n**How does CodeCov help in Code Coverage&nbsp;?**\n\nCodecov focuses on integration and promoting healthy pull requests. It delivers, or “injects” coverage metrics directly into the modern source code management workflow to promote more code coverage. This especially adds the convenience of checking coverage in pull requests where new features and bug fixes commonly occur.\n\nWe can change the configuration of how Codecov processes reports and expresses coverage information. Let us see how I configured it to suit BadgeYaY — by integrating it with Travis CI.\n\nNow Codecov works great with Travis CI by using just one line:\n\n```\nbash < (curl -s https://codecov.io/bash)\n```\n\nBadgeYaY uses [Python unit tests](https://docs.python.org/3/library/unittest.html) for assertion, with the help of [Selenium](https://github.com/SeleniumHQ/Selenium) for web browser automation.\n\nBasically, that’s used for testing the code. I configured Codecov in such a way that it produces coverage reports based on the results of this testing, so I added the following to `scripts` in `travis.yml`\n\n```\n“scripts”: { \n— nosetests app/tests/test.py -v — with-coverage\n}\n```\n\nNow I created a `codecov.yml` file that tells the configuration of generated reports after code coverage. Here’s the code:\n\n```\ncodecov:\n    notify:\n    require_ci_to_pass: yes\n    \ncoverage:\n    precision: 2\n    round: down\n    range: “70…100”\n  status:\n    project: yes\n    patch: yes\n    changes: no\n\ncomment:\n    layout: “reach, diff, flags, files, footer”\n    behavior: default\n    require_changes: no\n    \n```  \n\nHere is some of the code for `travis.yml`from the project repository of BadgeYaY, which integrates Codecov after successful builds.\n\n```\nScript:\n- python app/main.py >> log.txt 2>&1 &\n- nosetts app/tests/test.py -v — with-coverage\n- python3 -m pyflakes\n\nafter_success:\n- bash < (curl -s https://codecov.io/bash)\n```\n\n_The other two scripts are not related to Codecov integration, but feel free to look them up if you’re interested._\n\nOnce all of this is set up, Codecov’s ready for action. Now, when anyone makes a pull request to BadgeYaY, Codecov will analyze it according to the above configuration and generate a report showing its code coverage.\n\nWith that, we have reached the end of our discussion on integrating Travis CI and Codecov into a Python-based project. I wrote this post as a solution to this [issue](https://github.com/fossasia/badgeyay/issues/383) in the BadgeYaY project. If you liked this post, consider having a look at my other work on [GitHub](https://github.com/ParthS007) 🙂.\n\nSources&nbsp;: [codecov.io](http://docs.codecov.io), [Wikipedia](https://en.wikipedia.org/wiki/Code_coverage)\n\nPS: I’m new to blogging, so constructive criticism is not only welcome, but very much wanted! I’m open to better writing styles, techniques and pedagogy — feel free to mention them in the comments.\n\n------------------------------------------------------------------------------------------------------------------------------------------------------\n\nThis post is originally published by the author on [Codementor](https://www.codementor.io/parthshandilya/integrating-travis-ci-and-codecov-into-a-python-based-project-ez6e0tza6). This version has been edited for clarity and may appear different from the original post.",
      "json_metadata": "{\"tags\":[\"continuousintegration\",\"python\",\"travisci\",\"devops\"],\"image\":[\"https://steemitimages.com/DQmRPLWjr7Ccy95XwiWfqAHK1a5BrHBWgRxTmyXrdMBARPN/Copy%20of%20Copy%20of%20Web%20Scraping.png\",\"https://cdn-images-1.medium.com/max/1600/1*qvdvN9h7oovqYD87IIXS5g.png\"],\"links\":[\"https://github.com/fossasia\",\"https://github.com/fossasia/badgeyay\",\"https://heroku.com\",\"https://travis-ci.org/\",\"http://codecov.io\",\"https://github.com/fossasia/badgeyay#badgeyay\",\"https://www.explainxkcd.com/wiki/index.php/1629:_Tools\",\"https://docs.python.org/3/library/unittest.html\",\"https://github.com/SeleniumHQ/Selenium\",\"https://github.com/fossasia/badgeyay/issues/383\",\"https://github.com/ParthS007\",\"http://docs.codecov.io\",\"https://en.wikipedia.org/wiki/Code_coverage\",\"https://www.codementor.io/parthshandilya/integrating-travis-ci-and-codecov-into-a-python-based-project-ez6e0tza6\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
    }
  ]
}
parths007updated their account properties
2018/01/03 19:38:33
accountparths007
memo keySTM6ZTJUP88VW4oc3a9XxBjyje2cuwkyNsEnkL9JGVvpc94K7NdAe
json metadata{"profile":{"name":"Parth Shandilya","about":"Learner","location":"Earth"}}
Transaction InfoBlock #18662507/Trx c200d44c7abf1617246c5e77302ea798667a0e7b
View Raw JSON Data
{
  "trx_id": "c200d44c7abf1617246c5e77302ea798667a0e7b",
  "block": 18662507,
  "trx_in_block": 9,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-03T19:38:33",
  "op": [
    "account_update",
    {
      "account": "parths007",
      "memo_key": "STM6ZTJUP88VW4oc3a9XxBjyje2cuwkyNsEnkL9JGVvpc94K7NdAe",
      "json_metadata": "{\"profile\":{\"name\":\"Parth  Shandilya\",\"about\":\"Learner\",\"location\":\"Earth\"}}"
    }
  ]
}
parths007updated their account properties
2017/12/30 22:01:45
accountparths007
posting{"weight_threshold":1,"account_auths":[["utopian.app",1]],"key_auths":[["STM6JAmueQ7EwfrjiwEmTZuZ6FoJoRfyaKGNyaA9rGQ8DqcpKkzPH",1]]}
memo keySTM6ZTJUP88VW4oc3a9XxBjyje2cuwkyNsEnkL9JGVvpc94K7NdAe
json metadata
Transaction InfoBlock #18550423/Trx a64c096b4d17a7fa0efc88c7839f08e60224913e
View Raw JSON Data
{
  "trx_id": "a64c096b4d17a7fa0efc88c7839f08e60224913e",
  "block": 18550423,
  "trx_in_block": 32,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2017-12-30T22:01:45",
  "op": [
    "account_update",
    {
      "account": "parths007",
      "posting": {
        "weight_threshold": 1,
        "account_auths": [
          [
            "utopian.app",
            1
          ]
        ],
        "key_auths": [
          [
            "STM6JAmueQ7EwfrjiwEmTZuZ6FoJoRfyaKGNyaA9rGQ8DqcpKkzPH",
            1
          ]
        ]
      },
      "memo_key": "STM6ZTJUP88VW4oc3a9XxBjyje2cuwkyNsEnkL9JGVvpc94K7NdAe",
      "json_metadata": ""
    }
  ]
}
steemcreated a new account: @parths007
2017/12/30 21:58:51
fee0.500 STEEM
delegation57000.000000 VESTS
creatorsteem
new account nameparths007
owner{"weight_threshold":1,"account_auths":[],"key_auths":[["STM5LBiAAFVfTrHdZnRuqfLu6UytzeGPTwfdnQpHVatEPo6X23v3D",1]]}
active{"weight_threshold":1,"account_auths":[],"key_auths":[["STM8kHjgyeT3KWHP9GznxMdxXm8sxE25f3MPCbD4M1SdJcDPPKYpp",1]]}
posting{"weight_threshold":1,"account_auths":[],"key_auths":[["STM6JAmueQ7EwfrjiwEmTZuZ6FoJoRfyaKGNyaA9rGQ8DqcpKkzPH",1]]}
memo keySTM6ZTJUP88VW4oc3a9XxBjyje2cuwkyNsEnkL9JGVvpc94K7NdAe
json metadata
extensions[]
Transaction InfoBlock #18550365/Trx 696c8985bb0d274dff1cea398ec6b989a418a821
View Raw JSON Data
{
  "trx_id": "696c8985bb0d274dff1cea398ec6b989a418a821",
  "block": 18550365,
  "trx_in_block": 22,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2017-12-30T21:58:51",
  "op": [
    "account_create_with_delegation",
    {
      "fee": "0.500 STEEM",
      "delegation": "57000.000000 VESTS",
      "creator": "steem",
      "new_account_name": "parths007",
      "owner": {
        "weight_threshold": 1,
        "account_auths": [],
        "key_auths": [
          [
            "STM5LBiAAFVfTrHdZnRuqfLu6UytzeGPTwfdnQpHVatEPo6X23v3D",
            1
          ]
        ]
      },
      "active": {
        "weight_threshold": 1,
        "account_auths": [],
        "key_auths": [
          [
            "STM8kHjgyeT3KWHP9GznxMdxXm8sxE25f3MPCbD4M1SdJcDPPKYpp",
            1
          ]
        ]
      },
      "posting": {
        "weight_threshold": 1,
        "account_auths": [],
        "key_auths": [
          [
            "STM6JAmueQ7EwfrjiwEmTZuZ6FoJoRfyaKGNyaA9rGQ8DqcpKkzPH",
            1
          ]
        ]
      },
      "memo_key": "STM6ZTJUP88VW4oc3a9XxBjyje2cuwkyNsEnkL9JGVvpc94K7NdAe",
      "json_metadata": "",
      "extensions": []
    }
  ]
}

Account Metadata

POSTING JSON METADATA
profile{"name":"Parth Shandilya","about":"Learner","location":"Earth","profile_image":"https://pbs.twimg.com/profile_images/941074084187709440/PMz8vpbC_400x400.jpg"}
JSON METADATA
profile{"name":"Parth Shandilya","about":"Learner","location":"Earth","profile_image":"https://pbs.twimg.com/profile_images/941074084187709440/PMz8vpbC_400x400.jpg"}
{
  "posting_json_metadata": {
    "profile": {
      "name": "Parth  Shandilya",
      "about": "Learner",
      "location": "Earth",
      "profile_image": "https://pbs.twimg.com/profile_images/941074084187709440/PMz8vpbC_400x400.jpg"
    }
  },
  "json_metadata": {
    "profile": {
      "name": "Parth  Shandilya",
      "about": "Learner",
      "location": "Earth",
      "profile_image": "https://pbs.twimg.com/profile_images/941074084187709440/PMz8vpbC_400x400.jpg"
    }
  }
}

Auth Keys

Owner
Single Signature
Public Keys
STM5LBiAAFVfTrHdZnRuqfLu6UytzeGPTwfdnQpHVatEPo6X23v3D1/1
Active
Single Signature
Public Keys
STM8kHjgyeT3KWHP9GznxMdxXm8sxE25f3MPCbD4M1SdJcDPPKYpp1/1
Posting
Single Signature
Public Keys
STM6JAmueQ7EwfrjiwEmTZuZ6FoJoRfyaKGNyaA9rGQ8DqcpKkzPH1/1
App Permissions
Memo
STM6ZTJUP88VW4oc3a9XxBjyje2cuwkyNsEnkL9JGVvpc94K7NdAe
{
  "owner": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM5LBiAAFVfTrHdZnRuqfLu6UytzeGPTwfdnQpHVatEPo6X23v3D",
        1
      ]
    ]
  },
  "active": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM8kHjgyeT3KWHP9GznxMdxXm8sxE25f3MPCbD4M1SdJcDPPKYpp",
        1
      ]
    ]
  },
  "posting": {
    "weight_threshold": 1,
    "account_auths": [
      [
        "utopian.app",
        1
      ]
    ],
    "key_auths": [
      [
        "STM6JAmueQ7EwfrjiwEmTZuZ6FoJoRfyaKGNyaA9rGQ8DqcpKkzPH",
        1
      ]
    ]
  },
  "memo": "STM6ZTJUP88VW4oc3a9XxBjyje2cuwkyNsEnkL9JGVvpc94K7NdAe"
}

Witness Votes

0 / 30
No active witness votes.
[]