diff --git a/docs/_extra/ads.txt b/docs/_extra/ads.txt index 08a732487..52291a930 100644 --- a/docs/_extra/ads.txt +++ b/docs/_extra/ads.txt @@ -1,156 +1,340 @@ -google.com, pub-2802445174821308, RESELLER, f08c47fec0942fa0 - - -appnexus.com, 8692, DIRECT, f5ab79cb980f11d1 - - -districtm.io, 100835, DIRECT -appnexus.com, 1908, RESELLER, f5ab79cb980f11d1 -google.com, pub-9685734445476814, RESELLER, f08c47fec0942fa0 - - -appnexus.com, 1613, reseller -appnexus.com, 3326, reseller -google.com, pub-1409765517756851, reseller -google.com, pub-4075894099602271, reseller -freewheel.tv, 146081, reseller -rubiconproject.com, 8861, reseller, 0bfd66d529a55807 - - -aol.com, 11119, DIRECT -adtech.com, 11341, DIRECT -coxmt.com, 2000067907202, RESELLER -Openx.com, 537143344, RESELLER -indexexchange.com, 175407, RESELLER - - -sonobi.com, 337f0e70cc, DIRECT -rhythmone.com, 1059622079, RESELLER -contextweb.com, 560606, RESELLER - - -sovrn.com, 217352, DIRECT, fafdf38b16bf6b2b -lijit.com, 217352, DIRECT, fafdf38b16bf6b2b -openx.com, 537120960, RESELLER -openx.com, 83499, RESELLER -openx.com, 538959099, RESELLER -pubmatic.com, 137711, RESELLER -pubmatic.com, 156212, RESELLER -pubmatic.com, 62483, RESELLER -contextweb.com, 558511, RESELLER -gumgum.com, 11645, RESELLER, ffdef49475d318a9 - - -openx.com, 539824308, RESELLER, 6a698e2ec38604c6 - - -rubiconproject.com, 17822, DIRECT, 0bfd66d529a55807 - - -gumgum.com, 13174, DIRECT, ffdef49475d318a9 +33across.com, 0010b00002Mpn7AAAR, DIRECT, bbea06d9c4d2853c +33across.com, 0013300001kQj2HAAS, RESELLER, bbea06d9c4d2853c +33across.com, 0013300001qkdlwAAA, RESELLER 33across.com, 0013300001r0t9mAAA, RESELLER +33across.com, 0014000001aXjnGAAS, RESELLER, bbea06d9c4d2853c # 33 Across +33across.com,0013300001r0t9mAAA,reseller,bbea06d9c4d2853c +ad-generation.jp,12474,RESELLER,7f4ea9029ac04e53 +adform.com, 183, RESELLER +adform.com, 2708, DIRECT, 9f5210a2f0999e32 +adtech.com, 10947, DIRECT, e1a5b5b6e3255540 +adtech.com, 11095, RESELLER +adtech.com, 11119, RESELLER +adtech.com, 11208, RESELLER +adtech.com, 11341, DIRECT +adtech.com, 12094, RESELLER +adtech.com, 12094, RESELLER # 33 Across adtech.com, 9904, RESELLER +adtech.com,12068,RESELLER,e1a5b5b6e3255540 +advangelists.com, 8d3bba7425e7c98c50f52ca1b52d3735, RESELLER, 60d26397ec060f98 +advangelists.com, 8d3bba7425e7c98c50f52ca1b52d3735, RESELLER, 60d26397ec060f98 # 33 Across +advertising.com, 11602, RESELLER Advertising.com, 16736, RESELLER +advertising.com, 19623, RESELLER # AOL - One +advertising.com, 24410, RESELLER +advertising.com, 28409, DIRECT, e1a5b5b6e3255540 +advertising.com, 28509, DIRECT, e1a5b5b6e3255540 +advertising.com, 28605, RESELLER # RhythmOne +advertising.com, 7372, RESELLER +advertising.com, 8603, RESELLER # Taboola +amxrtb.com, 105199384, DIRECT +aol.com, 11119, DIRECT +aol.com, 53392, RESELLER # Taboola aolcloud.net, 9904, RESELLER appnexus.com, 1001, RESELLER, f5ab79cb980f11d1 +appnexus.com, 10239, RESELLER, f5ab79cb980f11d1 +appnexus.com, 10239, RESELLER, f5ab79cb980f11d1 # 33 Across +appnexus.com, 11786, RESELLER, f5ab79cb980f11d1 +appnexus.com, 11801, RESELLER +appnexus.com, 11924, RESELLER, f5ab79cb980f11d1 +appnexus.com, 12061, RESELLER +appnexus.com, 12263, RESELLER +appnexus.com, 12290, RESELLER, f5ab79cb980f11d1 +appnexus.com, 12366, RESELLER, f5ab79cb980f11d1 +appnexus.com, 1314, RESELLER +Appnexus.com, 1356, RESELLER, f5ab79cb980f11d1 +appnexus.com, 1360, RESELLER, f5ab79cb980f11d1 +appnexus.com, 1613, reseller +appnexus.com, 1908, RESELLER +appnexus.com, 1908, RESELLER, f5ab79cb980f11d1 +appnexus.com, 1908, RESELLER, f5ab79cb980f11d1 # DistrictM appnexus.com, 1942, RESELLER, f5ab79cb980f11d1 +appnexus.com, 2530, RESELLER appnexus.com, 2758, RESELLER, f5ab79cb980f11d1 appnexus.com, 3135, RESELLER, f5ab79cb980f11d1 +appnexus.com, 3153, DIRECT +appnexus.com, 3153, RESELLER +appnexus.com, 3153, RESELLER, f5ab79cb980f11d1 +appnexus.com, 3326, reseller +appnexus.com, 4052, RESELLER +appnexus.com, 4052, RESELLER, f5ab79cb980f11d1 # Conversant +appnexus.com, 6849, RESELLER, f5ab79cb980f11d1 # RhythmOne +appnexus.com, 7118, RESELLER +appnexus.com, 7556, DIRECT, f5ab79cb980f11d1 appnexus.com, 7597, RESELLER, f5ab79cb980f11d1 +appnexus.com, 7911, RESELLER #yieldmo +appnexus.com, 7944, RESELLER +appnexus.com, 8692, DIRECT, f5ab79cb980f11d1 +appnexus.com, 9316, RESELLER, f5ab79cb980f11d1 # AppNexus +appnexus.com, 9393, DIRECT +appnexus.com, 9393, RESELLER #Video #Display, f5ab79cb980f11d1 +appnexus.com,1001,reseller,f5ab79cb980f11d1 +appnexus.com,10239,reseller,f5ab79cb980f11d1 +appnexus.com,1356,reseller,f5ab79cb980f11d1 +appnexus.com,1908,RESELLER,f5ab79cb980f11d1 +appnexus.com,2758,reseller,f5ab79cb980f11d1 +appnexus.com,3663,RESELLER,f5ab79cb980f11d1 +appnexus.com,7597,reseller,f5ab79cb980f11d1 +appnexus.com,9316,reseller,f5ab79cb980f11d1 +aps.amazon.com,094e2c86-72d9-47d6-a647-d95ce39ad4c7,DIRECT +aps.amazon.com,2840f06c-5d89-4853-a03e-3bfa567dd33c,reseller +aps.amazon.com,48266a61-b3d9-4cb7-b172-553abc6a42a4,DIRECT +aralego.com, par-488A3E6BD8D997D0ED8B3BD34D8BA4B, RESELLER # ucFunnel +audienciad.com, 202922, DIRECT bidtellect.com, 1407, RESELLER, 1c34aa2d85d45e93 +bidtellect.com,1407,reseller,1c34aa2d85d45e93 +brightcom.com, 20292, DIRECT +ccoxmt.com, 2000067997702, RESELLER +consumable.com, 2000908, DIRECT, aefcd3d2f45b5070 contextweb.com, 558355, RESELLER +contextweb.com, 558511, RESELLER +contextweb.com, 560606, RESELLER +contextweb.com, 560606, RESELLER, 89ff185a4c4e857 +contextweb.com, 560606, RESELLER, 89ff185a4c4e857c +contextweb.com, 561118, RESELLER, 89ff185a4c4e857c #yieldmo +contextweb.com, 561998, RESELLER, 89ff185a4c4e857c +contextweb.com, 562350, RESELLER, 89ff185a4c4e857c +contextweb.com,558355,reseller +conversantmedia.com, 20923, RESELLER # Conversant +conversantmedia.com, 39882, DIRECT, 03113cd04947736d +conversantmedia.com, 40790, RESELLER, 03113cd04947736d +conversantmedia.com, 41812, DIRECT +coxmt.com, 2000067907202, RESELLER criteo.com, 109412, DIRECT, 9fac4a4a87c2a44f +districtm.io, 100808, DIRECT +districtm.io, 100835, DIRECT +districtm.io, 100835, DIRECT, 3fd707be9c4527c3 +districtm.io, 101080, RESELLER +districtm.io, 101769, RESELLER, 3fd707be9c4527c3 # DistrictM +districtm.io,100962,RESELLER,3fd707be9c4527c3 +EMXDGT.com, 1133, DIRECT, 1e1d41537f7cad7f +emxdgt.com, 20, DIRECT, 1e1d41537f7cad7f +emxdgt.com, 326, RESELLER, 1e1d41537f7cad7f +emxdgt.com, 326, RESELLER, 1e1d41537f7cad7f # 33 Across +EMXDGT.com,1284,reseller,1e1d41537f7cad7f +engagebdr.com, 10417, RESELLER # EngageDBR +freewheel.tv, 146081, reseller +freewheel.tv, 19129, RESELLER +freewheel.tv, 19133, RESELLER +freewheel.tv, 33081, RESELLER +freewheel.tv, 33601, RESELLER +freewheel.tv, 799841, RESELLER # Taboola +freewheel.tv, 799921, RESELLER # Taboola +google.com, pub-1320774679920841, RESELLER, f08c47fec0942fa0 +google.com, pub-1409765517756851, reseller +google.com, pub-2290755540215120, RESELLER, f08c47fec0942fa0 +google.com, pub-2802445174821308, RESELLER, f08c47fec0942fa0 google.com, pub-3848273848634341, RESELLER, f08c47fec0942fa0 +google.com, pub-4075894099602271, reseller +google.com, pub-4207323757133151, RESELLER, f08c47fec0942fa0 +google.com, pub-4641608711979091, DIRECT, f08c47fec0942fa0 +google.com, pub-5231479214411897, RESELLER, f08c47fec0942fa0 +Google.com, pub-5995202563537249, RESELLER, f08c47fec0942fa0 +google.com, pub-6314168058065736, RESELLER, f08c47fec0942fa0 +google.com, pub-8172268348509349, RESELLER, f08c47fec0942fa0 google.com, pub-9557089510405422, RESELLER, f08c47fec0942fa0 +google.com, pub-9557089510405422, RESELLER, f08c47fec0942fa0 # 33 Across +google.com, pub-9685734445476814, RESELLER, f08c47fec0942fa0 +google.com, pub-9685734445476814, RESELLER, f08c47fec0942fa0 # DistrictM +google.com,pub-3848273848634341,reseller,f08c47fec0942fa0 +google.com,pub-9557089510405422,reseller,f08c47fec0942fa0 +gumgum.com, 11645, RESELLER, ffdef49475d318a9 +gumgum.com, 13174, DIRECT, ffdef49475d318a9 +gumgum.com, 13318, RESELLER, ffdef49475d318a9 +gumgum.com, 13318, RESELLER, ffdef49475d318a9 # 33 Across +gumgum.com, 13504, RESELLER, ffdef49475d318a9 +gumgum.com,13174,DIRECT,ffdef49475d318a9 +gumgum.com,14141,RESELLER,ffdef49475d318a9 +improvedigital.com, 1362, RESELLER +improvedigital.com, 1669, RESELLER # ImproveDigital +improvedigital.com, 185, RESELLER +indexexchange.com, 175407, RESELLER indexexchange.com, 177754, RESELLER, 50b1c356f2c5c8fc +indexexchange.com, 182257, RESELLER, 50b1c356f2c5c8fc # RhythmOne +indexexchange.com, 183965, RESELLER, 50b1c356f2c5c8fc # AOL - One +indexexchange.com, 184914, DIRECT, 50b1c356f2c5c8fc +indexexchange.com, 186046, RESELLER +indexexchange.com, 186248, DIRECT, 50b1c356f2c5c8fc +indexexchange.com, 187196, DIRECT +indexexchange.com, 187454, DIRECT, 50b1c356f2c5c8fc +indexexchange.com, 189744, RESELLER +indexexchange.com, 189872, RESELLER +indexexchange.com, 191503, RESELLER, 50b1c356f2c5c8fc +indexexchange.com, 191740, RESELLER, 50b1c356f2c5c8fc # Index +indexexchange.com, 191923, RESELLER +indexexchange.com, 191973, RESELLER, 50b1c356f2c5c8fc +indexexchange.com, 193351, DIRECT +lijit.com, 217352, DIRECT, fafdf38b16bf6b2b +lijit.com, 217352-eb, DIRECT, fafdf38b16bf6b2b +lijit.com, 248396, DIRECT, fafdf38b16bf6b2b +lijit.com, 248396-eb, DIRECT, fafdf38b16bf6b2b +lijit.com, 260380, RESELLER, fafdf38b16bf6b2b +lijit.com, 270524, RESELLER, fafdf38b16bf6b2b +lijit.com,217352,DIRECT,fafdf38b16bf6b2b lkqd.com, 470, RESELLER, 59c49fa9598a0117 lkqd.net, 470, RESELLER, 59c49fa9598a0117 +Newormedia.com, 2169, DIRECT +newormedia.com, 4908, DIRECT +onetag.com, 572a470226457b8, RESELLER # OneTag +onetag.com, 664e107d9f2b748, RESELLER #yieldmo +onomagic.com, 202921, DIRECT +openx.com, 539824308, RESELLER, 6a698e2ec38604c6 openx.com, 537120563, RESELLER, 6a698e2ec38604c6 +openx.com, 537120563, RESELLER, 6a698e2ec38604c6 # 33 Across +openx.com, 537120960, RESELLER +openx.com, 537127577, RESELLER, 6a698e2ec38604c6 +Openx.com, 537143344, RESELLER openx.com, 537149485, RESELLER, 6a698e2ec38604c6 +openx.com, 537150004, DIRECT, 6a698e2ec38604c6 +openx.com, 537153209, RESELLER, 6a698e2ec38604c6 +openx.com, 538959099, RESELLER +openx.com, 538959099, RESELLER, 6a698e2ec38604c6 +openx.com, 539699341, DIRECT, 6a698e2ec38604c6 +openx.com, 539824308, RESELLER, 6a698e2ec38604c6 openx.com, 540003333, RESELLER, 6a698e2ec38604c6 -outbrain.com, 01a755b08c8c22b15d46a8b753ab6955d4, RESELLER +openx.com, 540031703, RESELLER, 6a698e2ec38604c6 +openx.com, 540031703, RESELLER, 6a698e2ec38604c6 # Conversant +openx.com, 540258065, RESELLER, 6a698e2ec38604c6 +openx.com, 540274407, RESELLER, 6a698e2ec38604c6 +openx.com, 540337213, RESELLER, 6a698e2ec38604c6 +openx.com, 540401713, RESELLER, 6a698e2ec38604c6 # OpenX +openx.com, 541159484, RESELLER, 6a698e2ec38604c6 +openx.com, 542511596, RESELLER, 6a698e2ec38604c6 +openx.com, 83499, RESELLER +openx.com,537149485,reseller,6a698e2ec38604c6 +openx.com,540191398,RESELLER,6a698e2ec38604c6 +openx.com,540833447, RESELLER, 6a698e2ec38604c6 outbrain.com, 01a755b08c8c22b15d46a8b753ab6955d4, DIRECT -pubmatic.com, 50758, RESELLER, 5d62403b186f2ace -revcontent.com, 76611, RESELLER -rhythmone.com, 78519861, RESELLER -smaato.com, 1100033117, RESELLER -spotx.tv, 147949, RESELLER, 7842df1d2fe2db34 -spotxchange.com, 147949, RESELLER, 7842df1d2fe2db34 -springserve.com, 686, DIRECT, a24eb641fc82e93d - - -indexexchange.com, 187196, DIRECT - -rhythmone.com, 1059622079, RESELLER, a670c89d4a324e47 -contextweb.com, 560606, RESELLER, 89ff185a4c4e857 -ccoxmt.com, 2000067997702, RESELLER -adtech.com, 11119, RESELLER -33across.com, 0013300001r0t9mAAA, RESELLER -adtech.com, 9904, RESELLER -Advertising.com, 16736, RESELLER -aolcloud.net, 9904, RESELLER -appnexus.com, 7597, RESELLER, f5ab79cb980f11d1 -bidtellect.com, 1407, RESELLER, 1c34aa2d85d45e93 -contextweb.com, 558355, RESELLER -criteo.com, 109412, DIRECT, 9fac4a4a87c2a44f -indexexchange.com, 177754, RESELLER, 50b1c356f2c5c8fc -lkqd.com, 470, RESELLER, 59c49fa9598a0117 -lkqd.net, 470, RESELLER, 59c49fa9598a0117 outbrain.com, 01a755b08c8c22b15d46a8b753ab6955d4, RESELLER -outbrain.com, 01a755b08c8c22b15d46a8b753ab6955d4, DIRECT -revcontent.com, 76611, RESELLER -smaato.com, 1100033117, RESELLER -spotx.tv, 147949, RESELLER, 7842df1d2fe2db34 -spotxchange.com, 147949, RESELLER, 7842df1d2fe2db34 -springserve.com, 686, DIRECT, a24eb641fc82e93d - -33across.com, 0010b00002Mpn7AAAR, DIRECT, bbea06d9c4d2853c -rubiconproject.com, 16414, RESELLER, 0bfd66d529a55807 +outbrain.com,00254374f0c468f3b2732db17fd42cb6e5,reseller +pubmatic.com, 137711, RESELLER +pubmatic.com, 137711, RESELLER, 5d62403b186f2ace +pubmatic.com, 156084, RESELLER, 5d62403b186f2ace # AOL - One +pubmatic.com, 156212, RESELLER +pubmatic.com, 156212, RESELLER, 5d62403b186f2ace +pubmatic.com, 156307, RESELLER, 5d62403b186f2ace # Taboola +pubmatic.com, 156319, DIRECT, 5d62403b186f2ace +pubmatic.com, 156325, RESELLER, 5d62403b186f2ace # AOL - One +pubmatic.com, 156344, RESELLER, 5d62403b186f2ace # Pubmatic pubmatic.com, 156423, RESELLER, 5d62403b186f2ace -appnexus.com, 10239, RESELLER, f5ab79cb980f11d1 -openx.com, 537120563, RESELLER, 6a698e2ec38604c6 -rhythmone.com, 2439829435, RESELLER, a670c89d4a324e47 -emxdgt.com, 326, RESELLER, 1e1d41537f7cad7f -gumgum.com, 13318, RESELLER, ffdef49475d318a9 -adtech.com, 12094, RESELLER -advangelists.com, 8d3bba7425e7c98c50f52ca1b52d3735, RESELLER, 60d26397ec060f98 -EMXDGT.com, 1133, DIRECT, 1e1d41537f7cad7f -Appnexus.com, 1356, RESELLER, f5ab79cb980f11d1 -Google.com, pub-5995202563537249, RESELLER, f08c47fec0942fa0 -sharethrough.com, 3a0f657b, DIRECT, d53b998a7bd4ecd2 -spotxchange.com, 212457, RESELLER -spotx.tv, 212457, RESELLER +pubmatic.com, 156423, RESELLER, 5d62403b186f2ace # 33 Across +pubmatic.com, 156458, RESELLER, 5d62403b186f2ace # AOL - One pubmatic.com, 156557, RESELLER -rubiconproject.com, 18694, RESELLER, 0bfd66d529a55807 -openx.com, 540274407, RESELLER, 6a698e2ec38604c6 -appnexus.com, 2530, RESELLER -appnexus.com, 3153, DIRECT -advertising.com, 11602, RESELLER -vertamedia.com, 287605, DIRECT, 7de89dc7742b5b11 -vertamedia.com, 287605, RESELLER, 7de89dc7742b5b11 -appnexus.com, 9393, DIRECT -adtech.com, 11095, RESELLER -coxmt.com, 2000067907202, RESELLER -openx.com, 537143344, RESELLER -indexexchange.com, 175407, RESELLER -districtm.io, 100808, DIRECT -appnexus.com, 7944, RESELLER -appnexus.com, 1908, RESELLER -openx.com, 537127577, RESELLER, 6a698e2ec38604c6 -openx.com, 540337213, RESELLER, 6a698e2ec38604c6 +pubmatic.com, 156595, RESELLER, 5d62403b186f2ace +pubmatic.com, 157367, DIRECT, 5d62403b186f2ace +pubmatic.com, 158100, RESELLER, 5d62403b186f2ace +pubmatic.com, 158355 , RESELLER, 5d62403b186f2ace +pubmatic.com, 158723, RESELLER, 5d62403b186f2ace +pubmatic.com, 159117, DIRECT, 5d62403b186f2ace +pubmatic.com, 159277, RESELLER, 5d62403b186f2ace # RhythmOne +pubmatic.com, 159330, RESELLER, 5d62403b186f2ace +pubmatic.com, 159477,RESELLER,5d62403b186f2ace +pubmatic.com, 160082 , RESELLER, 5d62403b186f2ace +pubmatic.com, 160131, RESELLER, 5d62403b186f2ace +pubmatic.com, 32987, RESELLER, 5d62403b186f2ace +pubmatic.com, 50758, RESELLER, 5d62403b186f2ace +pubmatic.com, 62483, RESELLER +pubmatic.com, 79136 , RESELLER, 5d62403b186f2ace +pubmatic.com,157150,RESELLER,5d62403b186f2ace +pubmatic.com,157897,reseller,5d62403b186f2ace +pubmatic.com,160006,RESELLER,5d62403b186f2ace +pubmatic.com,160096,RESELLER,5d62403b186f2ace +pubnative.net, 1007284, RESELLER, d641df8625486a7b #yieldmodisplay +pubnative.net, 1007285, RESELLER, d641df8625486a7b #yieldmonative +pubnative.net, 1007286, RESELLER, d641df8625486a7b #yieldmovideo +pubnx.com, 337-1, RESELLER, 8728b7e97e589da4 # Vertoz +revcontent.com, 76611, RESELLER +rhythmone.com, 1059622079, RESELLER +rhythmone.com, 1059622079, RESELLER, a670c89d4a324e47 rhythmone.com, 1114124056, RESELLER, a670c89d4a324e47 +rhythmone.com, 1166984029, RESELLER, a670c89d4a324e47 # Taboola rhythmone.com, 2241341073, RESELLER, a670c89d4a324e47 +rhythmone.com, 2310154583, DIRECT, a670c89d4a324e47 +rhythmone.com, 2439829435, RESELLER, a670c89d4a324e47 +rhythmone.com, 2439829435, RESELLER, a670c89d4a324e47 # 33 Across +rhythmone.com, 78519861, RESELLER +rhythmone.com, 905992537, RESELLER, a670c89d4a324e47 # RhythmOne +rhythmone.com,1654642120,RESELLER,a670c89d4a324e47 +rhythmone.com,2310154583,DIRECT,a670c89d4a324e47 +rhythmone.com,78519861,reseller,a670c89d4a324e47 rtk.io, 819, DIRECT +rubiconproject.com, 13344, RESELLER, 0bfd66d529a55807 # Rubicon +rubiconproject.com, 15268, RESELLER, 0bfd66d529a55807 # RhythmOne +rubiconproject.com, 16414, RESELLER, 0bfd66d529a55807 +rubiconproject.com, 16414, RESELLER, 0bfd66d529a55807 # 33 Across +rubiconproject.com, 17070, RESELLER, 0bfd66d529a55807 #yieldmo +rubiconproject.com, 17632, DIRECT, 0bfd66d529a55807 rubiconproject.com, 17790, RESELLER, 0bfd66d529a55807 rubiconproject.com, 17792, RESELLER, 0bfd66d529a55807 - -triplelift.com, 7205, DIRECT, 6c33edb13117fd86 -appnexus.com, 1314, RESELLER -spotxchange.com, 228454, RESELLER, 7842df1d2fe2db34 +rubiconproject.com, 17822, DIRECT, 0bfd66d529a55807 +rubiconproject.com, 17822, RESELLER, 0bfd66d529a55807 +rubiconproject.com, 17960, RESELLER, 0bfd66d529a55807 +rubiconproject.com, 18222, RESELLER, 0bfd66d529a55807 # AOL - One +rubiconproject.com, 18694, RESELLER, 0bfd66d529a55807 +rubiconproject.com, 18890, DIRECT, 0bfd66d529a55807 +rubiconproject.com, 20130, RESELLER, 0bfd66d529a55807 +rubiconproject.com, 20416, RESELLER, 0bfd66d529a55807 +rubiconproject.com, 21310, RESELLER , 0bfd66d529a55807 +rubiconproject.com, 21642, RESELLER, 0bfd66d529a55807 +rubiconproject.com, 8861, reseller, 0bfd66d529a55807 +rubiconproject.com,18020,RESELLER,0bfd66d529a55807 +Sekindo.com, 20749, DIRECT, b6b21d256ef43532 +sharethrough.com, 3a0f657b, DIRECT, d53b998a7bd4ecd2 +sharethrough.com, d09156e5, RESELLER, d53b998a7bd4ecd2 +smaato.com, 1100033117, RESELLER +smaato.com, 1100047713, RESELLER, 07bcf65f187117b4 +smaato.com,1100044650,RESELLER,07bcf65f187117b4 +smartadserver.com, 3436, RESELLER +sonobi.com, 337f0e70cc, DIRECT +sonobi.com, 37dd19ad4a, RESELLER, d1a215d9eb5aee9e +sonobi.com, 6e5cfb5420, DIRECT, d1a215d9eb5aee9e +sonobi.com, e55fb5d7c2, DIRECT, d1a215d9eb5aee9e +sovrn.com, 217352, DIRECT, fafdf38b16bf6b2b +sovrn.com, 248396, DIRECT, fafdf38b16bf6b2b +sovrn.com, 260380, RESELLER, fafdf38b16bf6b2b +sovrn.com, 270524, RESELLER, fafdf38b16bf6b2b +sovrn.com,217352,DIRECT,fafdf38b16bf6b2b +sparcmedia.com, 310627, Direct +spotx.tv, 108933, RESELLER, 7842df1d2fe2db34 +spotx.tv, 147949, RESELLER, 7842df1d2fe2db34 +spotx.tv, 212457, RESELLER spotx.tv, 228454, RESELLER, 7842df1d2fe2db34 - -google.com, pub-4641608711979091, DIRECT, f08c47fec0942fa0 -Newormedia.com, 2169, DIRECT - +spotx.tv, 270977, DIRECT, 7842df1d2fe2db34 +spotx.tv, 285547, RESELLER, 7842df1d2fe2db34 # RhythmOne +spotx.tv, 71451, RESELLER, 7842df1d2fe2db34 # Taboola +spotx.tv, 84294, RESELLER, 7842df1d2fe2db34 +spotx.tv, 94794, RESELLER, 7842df1d2fe2db34 # SpotX +spotxchange.com, 108933, RESELLER, 7842df1d2fe2db34 +spotxchange.com, 147949, RESELLER, 7842df1d2fe2db34 +spotxchange.com, 212457, RESELLER +spotxchange.com, 228454, RESELLER, 7842df1d2fe2db34 +spotxchange.com, 270977, DIRECT, 7842df1d2fe2db34 +spotxchange.com, 285547, RESELLER, 7842df1d2fe2db34 # RhythmOne +spotxchange.com, 71451, RESELLER, 7842df1d2fe2db34 # Taboola +spotxchange.com, 84294, RESELLER, 7842df1d2fe2db34 +spotxchange.com, 94794, RESELLER, 7842df1d2fe2db34 # SpotX +springserve.com, 686, DIRECT, a24eb641fc82e93d +synacor.com, 82350, RESELLER, e108f11b2cdf7d5b +synacor.com,82151,reseller,e108f11b2cdf7d5b +teads.tv, 19014, DIRECT, 15a9c44f6d26cbe1 +telaria.com, mb9eo-oqsbf, RESELLER, 1a4e959a1b50034a +telaria.com, vtrdn-wjdav, DIRECT, 1a4e959a1b50034a +telaria.com, vtrdn-ysjam, DIRECT, 1a4e959a1b50034a +themediagrid.com, P5JONV, RESELLER, 35d5010d7789b49d # Media Grid (IPONWEB) +tremorhub.com, mb9eo-oqsbf, RESELLER, 1a4e959a1b50034a +tremorhub.com, vtrdn-wjdav, DIRECT, 1a4e959a1b50034a +tremorhub.com, vtrdn-ysjam, DIRECT, 1a4e959a1b50034a +tremorhub.com, z87wm, RESELLER, 1a4e959a1b50034a # Taboola +triplelift.com, 7205, DIRECT, 6c33edb13117fd86 +ucfunnel.com, par-488A3E6BD8D997D0ED8B3BD34D8BA4B, RESELLER # ucFunnel +vertamedia.com, 287605, DIRECT, 7de89dc7742b5b11 +vertamedia.com, 287605, RESELLER, 7de89dc7742b5b11 +video.unrulymedia.com, 2310154583, DIRECT +video.unrulymedia.com, 905992537, RESELLER, a670c89d4a324e47 # RhythmOne +yahoo.com, 55771, RESELLER, e1a5b5b6e3255540 +yahoo.com, 55104, DIRECT, e1a5b5b6e3255540 +yahoo.com, 55317, RESELLER # Verizon +yahoo.com, 57289, RESELLER, e1a5b5b6e3255540 +yahoo.com, 57695, DIRECT, e1a5b5b6e3255540 +yahoo.com,55029,RESELLER,e1a5b5b6e3255540 yieldmo.com, 2417496099628458357, DIRECT -rhythmone.com, 2310154583, DIRECT, a670c89d4a324e47 diff --git a/docs/dev/pip-virtualenv.rst b/docs/dev/pip-virtualenv.rst index ee223078e..667f30c7a 100644 --- a/docs/dev/pip-virtualenv.rst +++ b/docs/dev/pip-virtualenv.rst @@ -79,7 +79,7 @@ adding the following to your :file:`~/.bashrc` file: .. code-block:: console gpip() { - PIP_REQUIRE_VIRTUALENV="" pip "$@" + PIP_REQUIRE_VIRTUALENV=false pip "$@" } After saving the changes and sourcing your :file:`~/.bashrc` file you can now diff --git a/docs/dev/virtualenvs.rst b/docs/dev/virtualenvs.rst index b4591e43b..fe6bd3f9e 100644 --- a/docs/dev/virtualenvs.rst +++ b/docs/dev/virtualenvs.rst @@ -156,7 +156,7 @@ when you share your project with others. You should get output similar to this Adding requests to Pipfile's [packages]... P.S. You have excellent taste! ✨ 🍰 ✨ -.. _Requests: http://docs.python-requests.org/en/master/ +.. _Requests: https://requests.readthedocs.io/en/latest/ Using installed packages diff --git a/docs/intro/learning.rst b/docs/intro/learning.rst index c6d534549..b0c957398 100644 --- a/docs/intro/learning.rst +++ b/docs/intro/learning.rst @@ -253,7 +253,7 @@ and eventually an application, including a chapter on using zc.buildout. Later chapters detail best practices such as writing documentation, test-driven development, version control, optimization, and profiling. - `Expert Python Programming `_ + `Expert Python Programming `_ A Guide to Python's Magic Methods diff --git a/docs/scenarios/admin.rst b/docs/scenarios/admin.rst index 07d263945..f6433c213 100644 --- a/docs/scenarios/admin.rst +++ b/docs/scenarios/admin.rst @@ -155,44 +155,42 @@ tests (net, CPU) fail, it will send an email. # Package for email services: import smtplib import string - MAX_NET_USAGE = 400000 + MAX_NET_USAGE = 400000 # bytes per seconds MAX_ATTACKS = 4 attack = 0 - counter = 0 while attack <= MAX_ATTACKS: sleep(4) - counter = counter + 1 - # Check the cpu usage - if cpu_percent(interval = 1) > 70: - attack = attack + 1 - # Check the net usage - neti1 = net_io_counters()[1] - neto1 = net_io_counters()[0] + + # Check the net usage wit named tuples + neti1 = net_io_counters().bytes_recv + neto1 = net_io_counters().bytes_sent sleep(1) - neti2 = net_io_counters()[1] - neto2 = net_io_counters()[0] + neti2 = net_io_counters().bytes_recv + neto2 = net_io_counters().bytes_sent + # Calculate the bytes per second net = ((neti2+neto2) - (neti1+neto1))/2 - if net > MAX_NET_USAGE: - attack = attack + 1 - if counter > 25: - attack = 0 - counter = 0 + + # Check the net and cpu usage + if (net > MAX_NET_USAGE) or (cpu_percent(interval = 1) > 70): + attack+=1 + elif attack > 1: + attack-=1 + # Write a very important email if attack is higher than 4 TO = "you@your_email.com" FROM = "webmaster@your_domain.com" SUBJECT = "Your domain is out of system resources!" text = "Go and fix your server!" - BODY = string.join(("From: %s" %FROM,"To: %s" %TO,"Subject: %s" %SUBJECT, "",text), "\r\n") + string="\r\n" + BODY = string.join(("From: %s" %FROM,"To: %s" %TO, + "Subject: %s" %SUBJECT, "",text)) server = smtplib.SMTP('127.0.0.1') server.sendmail(FROM, [TO], BODY) server.quit() -A full terminal application like a widely extended top which is based on -psutil and with the ability of a client-server monitoring is -`glance `_. - +A full terminal application like a widely extended top is `Glance `_, which is based on psutil and has the ability for client-server monitoring. ******* Ansible @@ -397,17 +395,3 @@ up. Buildout is primarily used to download and set up dependencies in `Python eggs `_ format of the software being developed or deployed. Recipes for build tasks in any environment can be created, and many are already available. - - -******* -Shinken -******* - -`Shinken `_ is a modern, Nagios compatible -monitoring framework written in Python. Its main goal is to give users a flexible -architecture for their monitoring system that is designed to scale to large -environments. - -Shinken is backwards-compatible with the Nagios configuration standard and -plugins. It works on any operating system and architecture that supports Python, -which includes Windows, Linux, and FreeBSD. diff --git a/docs/scenarios/client.rst b/docs/scenarios/client.rst index 1457fa479..c2d5c289b 100644 --- a/docs/scenarios/client.rst +++ b/docs/scenarios/client.rst @@ -28,7 +28,7 @@ your URLs, or to form-encode your POST data. Keep-alive and HTTP connection pooling are 100% automatic, powered by urllib3, which is embedded within Requests. -- `Documentation `_ +- `Documentation `_ - `PyPi `_ - `GitHub `_ diff --git a/docs/scenarios/gui.rst b/docs/scenarios/gui.rst index 1b0ffb427..3ad0af364 100644 --- a/docs/scenarios/gui.rst +++ b/docs/scenarios/gui.rst @@ -79,12 +79,15 @@ PySide ****** PySide is a Python binding of the cross-platform GUI toolkit Qt. +The package name depends on the major Qt version (`PySide` for Qt4, +`PySide2` for Qt5, and `PySide6` for Qt6). +This set of bindings is developed by `The Qt Company `_. .. code-block:: console - $ pip install pyside + $ pip install pyside6 -https://wiki.qt.io/Category:LanguageBindings::PySide::Downloads +https://pyside.org **** diff --git a/docs/scenarios/imaging.rst b/docs/scenarios/imaging.rst index 7b0e71935..8fe7e08fe 100644 --- a/docs/scenarios/imaging.rst +++ b/docs/scenarios/imaging.rst @@ -62,7 +62,7 @@ Example exif_data There are more examples of the Pillow library in the -`Pillow tutorial `_. +`Pillow tutorial `_. *************************** @@ -109,4 +109,4 @@ Example There are more Python-implemented examples of OpenCV in this `collection of tutorials -`_. +`_. diff --git a/docs/scenarios/scrape.rst b/docs/scenarios/scrape.rst index 3c7493f42..527719200 100644 --- a/docs/scenarios/scrape.rst +++ b/docs/scenarios/scrape.rst @@ -28,7 +28,7 @@ lxml and Requests `lxml `_ is a pretty extensive library written for parsing XML and HTML documents very quickly, even handling messed up tags in the process. We will also be using the -`Requests `_ module instead of the +`Requests `_ module instead of the already built-in urllib2 module due to improvements in speed and readability. You can easily install both using ``pip install lxml`` and ``pip install requests``. @@ -87,8 +87,8 @@ Let's see what we got exactly: .. code-block:: python - print 'Buyers: ', buyers - print 'Prices: ', prices + print('Buyers: ', buyers) + print('Prices: ', prices) :: diff --git a/docs/scenarios/speed.rst b/docs/scenarios/speed.rst index e99b18f4e..5dc0cd845 100644 --- a/docs/scenarios/speed.rst +++ b/docs/scenarios/speed.rst @@ -168,25 +168,23 @@ What's the difference in speed? Let's try it! .. code-block:: python import time - #activate pyx compiler + # Activate pyx compiler import pyximport - pyximport.install() - #primes implemented with Cython - import primesCy - #primes implemented with Python - import primes - - print "Cython:" - t1= time.time() - print primesCy.primes(500) - t2= time.time() - print "Cython time: %s" %(t2-t1) - print "" - print "Python" - t1= time.time() - print primes.primes(500) - t2= time.time() - print "Python time: %s" %(t2-t1) + pyximport.install() + import primesCy # primes implemented with Cython + import primes # primes implemented with Python + + print("Cython:") + t1 = time.time() + print(primesCy.primes(500)) + t2 = time.time() + print("Cython time: %s" % (t2 - t1)) + print("") + print("Python") + t1 = time.time() + print(primes.primes(500)) + t2 = time.time() + print("Python time: %s" % (t2 - t1)) These lines both need a remark: diff --git a/docs/scenarios/xml.rst b/docs/scenarios/xml.rst index 3bdf15b6c..24dab5869 100644 --- a/docs/scenarios/xml.rst +++ b/docs/scenarios/xml.rst @@ -81,3 +81,30 @@ and then you can access elements, attributes, and values like this: xmltodict also lets you roundtrip back to XML with the unparse function, has a streaming mode suitable for handling files that don't fit in memory, and supports XML namespaces. + +********** +xmlschema +********** + +`xmlschema `_ provides support for using XSD-Schemas in Python. +Unlike other XML libraries, automatic type parsing is available, so f.e. if the schema defines an element to be of type ``int``, the parsed ``dict`` will contain also an ``int`` value for that element. +Moreover the library supports automatic and explicit validation of XML documents against a schema. + +.. code-block:: python + + from xmlschema import XMLSchema, etree_tostring + + # load a XSD schema file + schema = XMLSchema("your_schema.xsd") + + # validate against the schema + schema.validate("your_file.xml") + + # or + schema.is_valid("your_file.xml") + + # decode a file + data = schmema.decode("your_file.xml") + + # encode to string + s = etree_tostring(schema.encode(data)) diff --git a/docs/starting/install/osx.rst b/docs/starting/install/osx.rst index d0aa601aa..4a8a8e03b 100644 --- a/docs/starting/install/osx.rst +++ b/docs/starting/install/osx.rst @@ -10,9 +10,10 @@ Installing Python 2 on Mac OS X .. note:: Check out our :ref:`guide for installing Python 3 on OS X`. -**Mac OS X comes with Python 2.7 out of the box.** +**Mac OS X comes with Python 2.7 out of the box between versions 10.8 and 12.3.** -You do not need to install or configure anything else to use Python. Having said +If your Mac OS X version is between the above versions, +you do not need to install or configure anything else to use Python. Having said that, I would strongly recommend that you install the tools and libraries described in the next section before you start building Python applications for real-world use. In particular, you should always install Setuptools, as it makes diff --git a/docs/starting/install3/osx.rst b/docs/starting/install3/osx.rst index 37252d615..fa90fb93a 100644 --- a/docs/starting/install3/osx.rst +++ b/docs/starting/install3/osx.rst @@ -9,9 +9,10 @@ Installing Python 3 on Mac OS X .. image:: /_static/photos/34435689480_2e6f358510_k_d.jpg -**Mac OS X comes with Python 2.7 out of the box.** +**Mac OS X comes with Python 2.7 out of the box between versions 10.8 and 12.3.** -You do not need to install or configure anything else to use Python 2. These +If your Mac OS X version is between the above versions, +you do not need to install or configure anything else to use Python 2. These instructions document the installation of Python 3. The version of Python that ships with OS X is great for learning, but it's not diff --git a/docs/writing/reading.rst b/docs/writing/reading.rst index ad67ea3cb..1e03a4def 100644 --- a/docs/writing/reading.rst +++ b/docs/writing/reading.rst @@ -43,7 +43,7 @@ reading. Each one of these projects is a paragon of Python coding. Requests is an Apache2 Licensed HTTP library, written in Python, for human beings. -- `Tablib `_ +- `Tablib `_ Tablib is a format-agnostic tabular dataset library, written in Python. diff --git a/docs/writing/structure.rst b/docs/writing/structure.rst index b8da9decd..5d9645acd 100644 --- a/docs/writing/structure.rst +++ b/docs/writing/structure.rst @@ -59,7 +59,7 @@ becoming intimately familiar with every nook and cranny. The layout is important Sample Repository ::::::::::::::::: -**tl;dr**: This is what `Kenneth Reitz recommended in 2013 `__. +**tl;dr**: This is what `Kenneth Reitz recommended in 2013 `__. This repository is `available on GitHub `__. @@ -788,7 +788,7 @@ compute x + 1, you have to create another integer and give it a name. my_list = [1, 2, 3] my_list[0] = 4 - print my_list # [4, 2, 3] <- The same list has changed + print(my_list) # [4, 2, 3] <- The same list has changed x = 6 x = x + 1 # The new x is another object @@ -822,7 +822,7 @@ most idiomatic way to do this. nums = "" for n in range(20): nums += str(n) # slow and inefficient - print nums + print(nums) **Better** @@ -832,7 +832,7 @@ most idiomatic way to do this. nums = [] for n in range(20): nums.append(str(n)) - print "".join(nums) # much more efficient + print("".join(nums)) # much more efficient **Best** @@ -840,7 +840,7 @@ most idiomatic way to do this. # create a concatenated string from 0 to 19 (e.g. "012..1819") nums = [str(n) for n in range(20)] - print "".join(nums) + print("".join(nums)) One final thing to mention about strings is that using ``join()`` is not always best. In the instances where you are creating a new string from a pre-determined diff --git a/docs/writing/style.rst b/docs/writing/style.rst index 3bf029911..d8c096a05 100644 --- a/docs/writing/style.rst +++ b/docs/writing/style.rst @@ -65,9 +65,9 @@ it is bad practice to have two disjointed statements on the same line of code. .. code-block:: python - print 'one'; print 'two' + print('one'); print('two') - if x == 1: print 'one' + if x == 1: print('one') if and : # do something @@ -76,11 +76,11 @@ it is bad practice to have two disjointed statements on the same line of code. .. code-block:: python - print 'one' - print 'two' + print('one') + print('two') if x == 1: - print 'one' + print('one') cond1 = cond2 = @@ -357,9 +357,7 @@ Instead, use a list comprehension: .. code-block:: python - four_lists = [[] for __ in xrange(4)] - -Note: Use range() instead of xrange() in Python 3. + four_lists = [[] for __ in range(4)] Create a string from a list ~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -467,8 +465,7 @@ easy-to-read version of PEP 8 is also available at `pep8.org ` This is highly recommended reading. The entire Python community does their best to adhere to the guidelines laid out within this document. Some project -may sway from it from time to time, while others may -`amend its recommendations `_. +may sway from it from time to time, while others may amend its recommendations. That being said, conforming your Python code to PEP 8 is generally a good idea and helps make code more consistent when working on projects with other @@ -584,10 +581,10 @@ list of what is considered false. .. code-block:: python if attr == True: - print 'True!' + print('True!') if attr == None: - print 'attr is None!' + print('attr is None!') **Good**: @@ -595,15 +592,15 @@ list of what is considered false. # Just check the value if attr: - print 'attr is truthy!' + print('attr is truthy!') # or check for the opposite if not attr: - print 'attr is falsey!' + print('attr is falsey!') # or, since None is considered false, explicitly check for it if attr is None: - print 'attr is None!' + print('attr is None!') Access a Dictionary Element ~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -617,9 +614,9 @@ or pass a default argument to :py:meth:`dict.get`. d = {'hello': 'world'} if d.has_key('hello'): - print d['hello'] # prints 'world' + print(d['hello']) # prints 'world' else: - print 'default_value' + print('default_value') **Good**: @@ -627,12 +624,12 @@ or pass a default argument to :py:meth:`dict.get`. d = {'hello': 'world'} - print d.get('hello', 'default_value') # prints 'world' - print d.get('thingy', 'default_value') # prints 'default_value' + print(d.get('hello', 'default_value')) # prints 'world' + print(d.get('thingy', 'default_value')) # prints 'default_value' # Or: if 'hello' in d: - print d['hello'] + print(d['hello']) Short Ways to Manipulate Lists ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -783,7 +780,7 @@ Use :py:func:`enumerate` keep a count of your place in the list. a = [3, 4, 5] for i, item in enumerate(a): - print i, item + print(i, item) # prints # 0 3 # 1 4 @@ -804,7 +801,7 @@ files for you. f = open('file.txt') a = f.read() - print a + print(a) f.close() **Good**: @@ -813,7 +810,7 @@ files for you. with open('file.txt') as f: for line in f: - print line + print(line) The ``with`` statement is better because it will ensure you always close the file, even if an exception is raised inside the ``with`` block. diff --git a/requirements.txt b/requirements.txt index c2886a7fe..4a246ac76 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,7 +6,7 @@ docutils==0.14 idna==2.7 imagesize==1.0.0 Jinja2==2.10 -MarkupSafe==1.0 +MarkupSafe==1.1.1 packaging==17.1 Pygments==2.2.0 pyparsing==2.2.0 diff --git a/runtime.txt b/runtime.txt index d70c8f8d8..cc1923a40 100644 --- a/runtime.txt +++ b/runtime.txt @@ -1 +1 @@ -3.6 +3.8