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 DelegationsDeleg
+4.377SP
Detailed Balance
| STEEM | ||
| balance | 0.000STEEM | STEEM |
| market_balance | 0.000STEEM | STEEM |
| savings_balance | 0.000STEEM | STEEM |
| reward_steem_balance | 0.000STEEM | STEEM |
| STEEM POWER | ||
| Own SP | 0.630SP | SP |
| Delegated Out | 0.000SP | SP |
| Delegation In | 4.377SP | SP |
| Effective Power | 5.007SP | SP |
| Reward SP (pending) | 0.003SP | SP |
| SBD | ||
| sbd_balance | 0.000SBD | SBD |
| sbd_conversions | 0.000SBD | SBD |
| sbd_market_balance | 0.000SBD | SBD |
| savings_sbd_balance | 0.000SBD | SBD |
| reward_sbd_balance | 0.017SBD | SBD |
{
"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
| name | parths007 |
| id | 540867 |
| rank | 1,451,503 |
| reputation | 54126066 |
| created | 2017-12-30T21:58:51 |
| recovery_account | steem |
| proxy | None |
| post_count | 1 |
| comment_count | 0 |
| lifetime_vote_count | 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 |
| proxied_vsf_votes | 0, 0, 0, 0 |
| can_vote | 1 |
| voting_power | 0 |
| delayed_votes | 0 |
| balance | 0.000 STEEM |
| savings_balance | 0.000 STEEM |
| sbd_balance | 0.000 SBD |
| savings_sbd_balance | 0.000 SBD |
| vesting_shares | 1024.645800 VESTS |
| delegated_vesting_shares | 0.000000 VESTS |
| received_vesting_shares | 7119.014006 VESTS |
| reward_vesting_balance | 6.144589 VESTS |
| vesting_balance | 0.000 STEEM |
| vesting_withdraw_rate | 0.000000 VESTS |
| next_vesting_withdrawal | 1969-12-31T23:59:59 |
| withdrawn | 0 |
| to_withdraw | 0 |
| withdraw_routes | 0 |
| savings_withdraw_requests | 0 |
| last_account_recovery | 1970-01-01T00:00:00 |
| reset_account | null |
| last_owner_update | 1970-01-01T00:00:00 |
| last_account_update | 2018-01-03T19:54:57 |
| mined | No |
| sbd_seconds | 0 |
| sbd_last_interest_payment | 1970-01-01T00:00:00 |
| savings_sbd_last_interest_payment | 1970-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
| Incoming | Outgoing |
|---|---|
Empty | Empty |
{
"incoming": [],
"outgoing": []
}From Date
To Date
steemdelegated 4.377 SP to @parths0072026/05/18 04:56:15
steemdelegated 4.377 SP to @parths007
2026/05/18 04:56:15
| delegator | steem |
| delegatee | parths007 |
| vesting shares | 7119.014006 VESTS |
| Transaction Info | Block #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 @parths0072026/05/12 22:51:18
steemdelegated 2.710 SP to @parths007
2026/05/12 22:51:18
| delegator | steem |
| delegatee | parths007 |
| vesting shares | 4406.803601 VESTS |
| Transaction Info | Block #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 @parths0072026/04/26 04:10:00
steemdelegated 4.385 SP to @parths007
2026/04/26 04:10:00
| delegator | steem |
| delegatee | parths007 |
| vesting shares | 7131.529762 VESTS |
| Transaction Info | Block #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 @parths0072026/01/23 20:23:45
steemdelegated 2.735 SP to @parths007
2026/01/23 20:23:45
| delegator | steem |
| delegatee | parths007 |
| vesting shares | 4448.350420 VESTS |
| Transaction Info | Block #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 @parths0072024/12/17 15:34:48
steemdelegated 2.836 SP to @parths007
2024/12/17 15:34:48
| delegator | steem |
| delegatee | parths007 |
| vesting shares | 4612.569617 VESTS |
| Transaction Info | Block #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 @parths0072023/11/14 07:16:03
steemdelegated 2.940 SP to @parths007
2023/11/14 07:16:03
| delegator | steem |
| delegatee | parths007 |
| vesting shares | 4781.703149 VESTS |
| Transaction Info | Block #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 @parths0072023/09/22 08:47:21
steemdelegated 4.746 SP to @parths007
2023/09/22 08:47:21
| delegator | steem |
| delegatee | parths007 |
| vesting shares | 7718.611935 VESTS |
| Transaction Info | Block #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 @parths0072022/11/03 16:27:33
steemdelegated 4.883 SP to @parths007
2022/11/03 16:27:33
| delegator | steem |
| delegatee | parths007 |
| vesting shares | 7940.663373 VESTS |
| Transaction Info | Block #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 @parths0072022/01/17 21:47:42
steemdelegated 5.018 SP to @parths007
2022/01/17 21:47:42
| delegator | steem |
| delegatee | parths007 |
| vesting shares | 8160.770974 VESTS |
| Transaction Info | Block #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 @parths0072021/06/14 05:01:57
steemdelegated 5.131 SP to @parths007
2021/06/14 05:01:57
| delegator | steem |
| delegatee | parths007 |
| vesting shares | 8344.965262 VESTS |
| Transaction Info | Block #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 @parths0072020/12/11 15:15:24
steemdelegated 5.246 SP to @parths007
2020/12/11 15:15:24
| delegator | steem |
| delegatee | parths007 |
| vesting shares | 8532.387236 VESTS |
| Transaction Info | Block #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 @parths0072020/12/06 08:51:39
steemdelegated 1.176 SP to @parths007
2020/12/06 08:51:39
| delegator | steem |
| delegatee | parths007 |
| vesting shares | 1912.543513 VESTS |
| Transaction Info | Block #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 @parths0072020/12/05 18:53:12
steemdelegated 5.250 SP to @parths007
2020/12/05 18:53:12
| delegator | steem |
| delegatee | parths007 |
| vesting shares | 8538.595090 VESTS |
| Transaction Info | Block #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 @parths0072020/11/03 00:12:12
steemdelegated 1.181 SP to @parths007
2020/11/03 00:12:12
| delegator | steem |
| delegatee | parths007 |
| vesting shares | 1920.017158 VESTS |
| Transaction Info | Block #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 @parths0072020/05/09 09:53:09
steemdelegated 5.375 SP to @parths007
2020/05/09 09:53:09
| delegator | steem |
| delegatee | parths007 |
| vesting shares | 8741.400449 VESTS |
| Transaction Info | Block #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 @parths0072020/05/08 14:06:48
steemdelegated 1.201 SP to @parths007
2020/05/08 14:06:48
| delegator | steem |
| delegatee | parths007 |
| vesting shares | 1953.311140 VESTS |
| Transaction Info | Block #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 @parths0072020/04/16 02:31:24
steemdelegated 5.383 SP to @parths007
2020/04/16 02:31:24
| delegator | steem |
| delegatee | parths007 |
| vesting shares | 8754.287897 VESTS |
| Transaction Info | Block #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
2019/12/30 22:38:27
| 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! <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 Info | Block #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 @parths0072019/05/12 19:38:18
steemdelegated 5.503 SP to @parths007
2019/05/12 19:38:18
| delegator | steem |
| delegatee | parths007 |
| vesting shares | 8949.904710 VESTS |
| Transaction Info | Block #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
2018/12/30 22:46:18
| 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! <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 Info | Block #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 @parths0072018/05/16 23:35:33
steemdelegated 5.626 SP to @parths007
2018/05/16 23:35:33
| delegator | steem |
| delegatee | parths007 |
| vesting shares | 9149.515578 VESTS |
| Transaction Info | Block #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"
}
]
}parths007received 0.017 SBD, 0.004 SP author reward for @parths007 / integrating-travis-ci-and-codecov-into-a-python-based-project2018/01/10 19:52:24
parths007received 0.017 SBD, 0.004 SP author reward for @parths007 / integrating-travis-ci-and-codecov-into-a-python-based-project
2018/01/10 19:52:24
| 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 |
| Transaction Info | Block #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 @parths0072018/01/08 19:34:09
steemdelegated 18.263 SP to @parths007
2018/01/08 19:34:09
| delegator | steem |
| delegatee | parths007 |
| vesting shares | 29700.354200 VESTS |
| Transaction Info | Block #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"
}
]
}jiffylubeupvoted (100.00%) @parths007 / integrating-travis-ci-and-codecov-into-a-python-based-project2018/01/08 16:32:39
jiffylubeupvoted (100.00%) @parths007 / integrating-travis-ci-and-codecov-into-a-python-based-project
2018/01/08 16:32:39
| voter | jiffylube |
| author | parths007 |
| permlink | integrating-travis-ci-and-codecov-into-a-python-based-project |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}
]
}maitlandremoved vote from (0.00%) @parths007 / integrating-travis-ci-and-codecov-into-a-python-based-project2018/01/05 20:02:00
maitlandremoved vote from (0.00%) @parths007 / integrating-travis-ci-and-codecov-into-a-python-based-project
2018/01/05 20:02:00
| voter | maitland |
| author | parths007 |
| permlink | integrating-travis-ci-and-codecov-into-a-python-based-project |
| weight | 0 (0.00%) |
| Transaction Info | Block #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
}
]
}maitlandflagged (-100.00%) @parths007 / integrating-travis-ci-and-codecov-into-a-python-based-project2018/01/05 20:01:45
maitlandflagged (-100.00%) @parths007 / integrating-travis-ci-and-codecov-into-a-python-based-project
2018/01/05 20:01:45
| voter | maitland |
| author | parths007 |
| permlink | integrating-travis-ci-and-codecov-into-a-python-based-project |
| weight | -10000 (-100.00%) |
| Transaction Info | Block #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
2018/01/04 00:21:27
| 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> <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 Info | Block #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\"}"
}
]
}parths007published a new post: integrating-travis-ci-and-codecov-into-a-python-based-project2018/01/03 20:06:09
parths007published a new post: integrating-travis-ci-and-codecov-into-a-python-based-project
2018/01/03 20:06:09
| 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 @@ 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 Info | Block #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\"}"
}
]
}parths007followed @schedutron2018/01/03 20:02:57
parths007followed @schedutron
2018/01/03 20:02:57
| required auths | [] |
| required posting auths | ["parths007"] |
| id | follow |
| json | ["follow",{"follower":"parths007","following":"schedutron","what":["blog"]}] |
| Transaction Info | Block #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\"]}]"
}
]
}parths007upvoted (100.00%) @schedutron / let-s-write-a-chat-app-in-python2018/01/03 20:01:48
parths007upvoted (100.00%) @schedutron / let-s-write-a-chat-app-in-python
2018/01/03 20:01:48
| voter | parths007 |
| author | schedutron |
| permlink | let-s-write-a-chat-app-in-python |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}
]
}parths007published a new post: integrating-travis-ci-and-codecov-into-a-python-based-project2018/01/03 20:00:21
parths007published a new post: integrating-travis-ci-and-codecov-into-a-python-based-project
2018/01/03 20:00:21
| 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 |  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 ?** 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) 😎  *Code coverage is like a tool for building tools, and is integrated to other tools, like Git and Travis CI. Source: [XKCD](https://www.explainxkcd.com/wiki/index.php/1629:_Tools)* **How does CodeCov help in Code Coverage ?** 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 : [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 Info | Block #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": "\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 ?**\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 \n*Code coverage is like a tool for building tools, and is integrated to other tools, like Git and Travis CI. Source: [XKCD](https://www.explainxkcd.com/wiki/index.php/1629:_Tools)*\n\n**How does CodeCov help in Code Coverage ?**\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 : [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\"}"
}
]
}schedutronupvoted (100.00%) @parths007 / integrating-travis-ci-and-codecov-into-a-python-based-project2018/01/03 19:59:12
schedutronupvoted (100.00%) @parths007 / integrating-travis-ci-and-codecov-into-a-python-based-project
2018/01/03 19:59:12
| voter | schedutron |
| author | parths007 |
| permlink | integrating-travis-ci-and-codecov-into-a-python-based-project |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}
]
}parths007published a new post: integrating-travis-ci-and-codecov-into-a-python-based-project2018/01/03 19:56:06
parths007published a new post: integrating-travis-ci-and-codecov-into-a-python-based-project
2018/01/03 19:56:06
| 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 |  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 ?** 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) 😎  *Code coverage is like a tool for building tools, and is integrated to other tools, like Git and Travis CI. Source: [XKCD](https://www.explainxkcd.com/wiki/index.php/1629:_Tools)* **How does CodeCov help in Code Coverage ?** 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 : [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 Info | Block #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": "\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 ?**\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 \n*Code coverage is like a tool for building tools, and is integrated to other tools, like Git and Travis CI. Source: [XKCD](https://www.explainxkcd.com/wiki/index.php/1629:_Tools)*\n\n**How does CodeCov help in Code Coverage ?**\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 : [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 properties2018/01/03 19:54:57
parths007updated their account properties
2018/01/03 19:54:57
| 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"}} |
| Transaction Info | Block #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\"}}"
}
]
}parths007upvoted (100.00%) @parths007 / integrating-travis-ci-and-codecov-into-a-python-based-project2018/01/03 19:52:24
parths007upvoted (100.00%) @parths007 / integrating-travis-ci-and-codecov-into-a-python-based-project
2018/01/03 19:52:24
| voter | parths007 |
| author | parths007 |
| permlink | integrating-travis-ci-and-codecov-into-a-python-based-project |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}
]
}parths007published a new post: integrating-travis-ci-and-codecov-into-a-python-based-project2018/01/03 19:52:24
parths007published a new post: integrating-travis-ci-and-codecov-into-a-python-based-project
2018/01/03 19:52:24
| 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 |  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 ?** 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) 😎  *Code coverage is like a tool for building tools, and is integrated to other tools, like Git and Travis CI. Source: [XKCD](https://www.explainxkcd.com/wiki/index.php/1629:_Tools)* **How does CodeCov help in Code Coverage ?** 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 : [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 Info | Block #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": "\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 ?**\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 \n*Code coverage is like a tool for building tools, and is integrated to other tools, like Git and Travis CI. Source: [XKCD](https://www.explainxkcd.com/wiki/index.php/1629:_Tools)*\n\n**How does CodeCov help in Code Coverage ?**\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 : [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 properties2018/01/03 19:38:33
parths007updated their account properties
2018/01/03 19:38:33
| account | parths007 |
| memo key | STM6ZTJUP88VW4oc3a9XxBjyje2cuwkyNsEnkL9JGVvpc94K7NdAe |
| json metadata | {"profile":{"name":"Parth Shandilya","about":"Learner","location":"Earth"}} |
| Transaction Info | Block #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 properties2017/12/30 22:01:45
parths007updated their account properties
2017/12/30 22:01:45
| account | parths007 |
| posting | {"weight_threshold":1,"account_auths":[["utopian.app",1]],"key_auths":[["STM6JAmueQ7EwfrjiwEmTZuZ6FoJoRfyaKGNyaA9rGQ8DqcpKkzPH",1]]} |
| memo key | STM6ZTJUP88VW4oc3a9XxBjyje2cuwkyNsEnkL9JGVvpc94K7NdAe |
| json metadata | |
| Transaction Info | Block #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: @parths0072017/12/30 21:58:51
steemcreated a new account: @parths007
2017/12/30 21:58:51
| 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 | [] |
| Transaction Info | Block #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": []
}
]
}Manabar
Voting Power100.00%
Downvote Power100.00%
Resource Credits100.00%
Reputation Progress0.00%
{
"voting_manabar": {
"current_mana": "8143659806",
"last_update_time": 1779080175
},
"downvote_manabar": {
"current_mana": 2035914951,
"last_update_time": 1779080175
},
"rc_account": {
"account": "parths007",
"rc_manabar": {
"current_mana": "10164408779",
"last_update_time": 1779080175
},
"max_rc_creation_adjustment": {
"amount": "2020748973",
"precision": 6,
"nai": "@@000000037"
},
"max_rc": "10164408779"
}
}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
@utopian.app1/1
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.
[]