1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235 |
- ;;; GNU Guix --- Functional package management for GNU
- ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
- ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
- ;;; Copyright © 2017 Christopher Baines <mail@cbaines.net>
- ;;; Copyright © 2016, 2017 Danny Milosavljevic <dannym+a@scratchpost.org>
- ;;; Copyright © 2013, 2014, 2015, 2016, 2020 Andreas Enge <andreas@enge.fr>
- ;;; Copyright © 2016, 2017, 2019, 2020, 2021 Marius Bakke <marius@gnu.org>
- ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ricardo Wurmus <rekado@elephly.net>
- ;;; Copyright © 2017, 2021 Roel Janssen <roel@gnu.org>
- ;;; Copyright © 2016, 2017, 2020 Julien Lepiller <julien@lepiller.eu>
- ;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
- ;;; Copyright © 2014, 2017, 2021 Eric Bavier <bavier@posteo.net>
- ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
- ;;; Copyright © 2015 Cyril Roelandt <tipecaml@gmail.com>
- ;;; Copyright © 2015, 2016, 2017, 2019 Leo Famulari <leo@famulari.name>
- ;;; Copyright © 2016, 2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
- ;;; Copyright © 2016–2021 Tobias Geerinckx-Rice <me@tobias.gr>
- ;;; Copyright © 2015, 2017 Ben Woodcroft <donttrustben@gmail.com>
- ;;; Copyright © 2015, 2016 Christine Lemmer-Webber <cwebber@dustycloud.org>
- ;;; Copyright © 2017 Adriano Peluso <catonano@gmail.com>
- ;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org>
- ;;; Copyright © 2016 David Craven <david@craven.ch>
- ;;; Copyright © 2017 Oleg Pykhalov <go.wigust@gmail.com>
- ;;; Copyright © 2015, 2016 David Thompson <davet@gnu.org>
- ;;; Copyright © 2017 Mark Meyer <mark@ofosos.org>
- ;;; Copyright © 2018 Tomáš Čech <sleep_walker@gnu.org>
- ;;; Copyright © 2018, 2019, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
- ;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
- ;;; Copyright © 2018, 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
- ;;; Copyright © 2019 Vagrant Cascadian <vagrant@debian.org>
- ;;; Copyright © 2019 Brendan Tildesley <mail@brendan.scot>
- ;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
- ;;; Copyright © 2019, 2020 Tanguy Le Carrour <tanguy@bioneland.org>
- ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
- ;;; Copyright © 2020 Evan Straw <evan.straw99@gmail.com>
- ;;; Copyright © 2020 Alexandros Theodotou <alex@zrythm.org>
- ;;; Copyright © 2020 Holger Peters <holger.peters@posteo.de>
- ;;; Copyright © 2020 Noisytoot <noisytoot@gmail.com>
- ;;; Copyright © 2020 Edouard Klein <edk@beaver-labs.com>
- ;;; Copyright © 2020, 2021 Vinicius Monego <monego@posteo.net>
- ;;; Copyright © 2020 Konrad Hinsen <konrad.hinsen@fastmail.net>
- ;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org>
- ;;; Copyright © 2021 Ekaitz Zarraga <ekaitz@elenq.tech>
- ;;; Copyright © 2021 Greg Hogan <code@greghogan.com>
- ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
- ;;; Copyright © 2021 Pradana Aumars <paumars@courrier.dev>
- ;;;
- ;;; This file is part of GNU Guix.
- ;;;
- ;;; GNU Guix is free software; you can redistribute it and/or modify it
- ;;; under the terms of the GNU General Public License as published by
- ;;; the Free Software Foundation; either version 3 of the License, or (at
- ;;; your option) any later version.
- ;;;
- ;;; GNU Guix is distributed in the hope that it will be useful, but
- ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
- ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- ;;; GNU General Public License for more details.
- ;;;
- ;;; You should have received a copy of the GNU General Public License
- ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
- (define-module (gnu packages python-web)
- #:use-module (guix packages)
- #:use-module (guix download)
- #:use-module (guix git-download)
- #:use-module (guix build-system python)
- #:use-module (guix gexp)
- #:use-module (guix utils)
- #:use-module (gnu packages)
- #:use-module (gnu packages base)
- #:use-module (gnu packages check)
- #:use-module (gnu packages compression)
- #:use-module (gnu packages curl)
- #:use-module (gnu packages databases)
- #:use-module (gnu packages django)
- #:use-module (gnu packages graphviz)
- #:use-module (gnu packages groff)
- #:use-module (gnu packages libevent)
- #:use-module (gnu packages libffi)
- #:use-module (gnu packages pkg-config)
- #:use-module (gnu packages python)
- #:use-module (gnu packages python-build)
- #:use-module (gnu packages python-check)
- #:use-module (gnu packages python-compression)
- #:use-module (gnu packages python-crypto)
- #:use-module (gnu packages python-science)
- #:use-module (gnu packages python-xyz)
- #:use-module (gnu packages serialization)
- #:use-module (gnu packages sphinx)
- #:use-module (gnu packages texinfo)
- #:use-module (gnu packages tls)
- #:use-module (gnu packages time)
- #:use-module (gnu packages web)
- #:use-module (gnu packages xml)
- #:use-module ((guix licenses) #:prefix license:)
- #:use-module (srfi srfi-1))
- (define-public python-prawcore
- (package
- (name "python-prawcore")
- (version "2.0.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "prawcore" version))
- (sha256
- (base32 "1l9nrn4s03xl8fvkyybdk86bm9cyyk43alkxf9g014a9ynvdk65l"))))
- (build-system python-build-system)
- (native-inputs
- `(("python-betamax" ,python-betamax)
- ("python-betamax-matchers" ,python-betamax-matchers)
- ("python-betamax-serializers" ,python-betamax-serializers)
- ("python-mock" ,python-mock)
- ("python-pytest" ,python-pytest)
- ("python-testfixtures" ,python-testfixtures)))
- (propagated-inputs
- `(("python-requests" ,python-requests)))
- (synopsis "Core component of PRAW")
- (description "PRAWcore is a low-level communication layer used by PRAW.")
- (home-page "https://praw.readthedocs.io/en/latest/")
- (license license:bsd-2)))
- (define-public python-praw
- (package
- (name "python-praw")
- (version "7.2.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "praw" version))
- (sha256
- (base32 "0ll1a0n8xs8gykizdsfrw63jp6bc39ab0pk3yzwcak96fyxh0ij3"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'disable-failing-tests
- (lambda _
- (with-directory-excursion "tests"
- ;; Require networking.
- (for-each delete-file-recursively
- '("integration/models" "unit/models"))
- ;; https://github.com/praw-dev/praw/issues/1699
- ;; #issuecomment-795336704
- (delete-file "unit/test_config.py"))
- #t))
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "pytest"))
- #t)))))
- (native-inputs
- `(("python-betamax" ,python-betamax)
- ("python-betamax-matchers" ,python-betamax-matchers)
- ("python-pytest" ,python-pytest)))
- (propagated-inputs
- `(("python-prawcore" ,python-prawcore)
- ("python-websocket-client" ,python-websocket-client)))
- (synopsis "Python Reddit API Wrapper")
- (description "PRAW is a Python package that allows for simple access to
- Reddit’s API. It aims to be easy to use and internally follows all of Reddit’s
- API rules.")
- (home-page "https://praw.readthedocs.io/en/latest/")
- (license license:bsd-2)))
- (define-public python-aiohttp
- (package
- (name "python-aiohttp")
- (version "3.7.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "aiohttp" version))
- (sha256
- (base32 "1pn79h8fng4xi5gl1f6saw31nxgmgyxl41yf3vba1l21673yr12x"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'fix-tests
- (lambda _
- ;; disable brotli tests, because we’re not providing that optional library
- (substitute* "tests/test_http_parser.py"
- ((" async def test_feed_eof_no_err_brotli")
- " @pytest.mark.xfail\n async def test_feed_eof_no_err_brotli"))
- ;; make sure the timestamp of this file is > 1990, because a few
- ;; tests like test_static_file_if_modified_since_past_date depend on it
- (let ((late-90s (* 60 60 24 365 30)))
- (utime "tests/data.unknown_mime_type" late-90s late-90s))
- ;; Disable test that attempts to access httpbin.org.
- (substitute* "tests/test_formdata.py"
- (("async def test_mark_formdata_as_processed.*" all)
- (string-append "@pytest.mark.xfail\n" all)))
- ;; Don't test the aiohttp pytest plugin to avoid a dependency loop.
- (delete-file "tests/test_pytest_plugin.py")))
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (if tests?
- (invoke "pytest" "-vv"
- ;; Disable loading the aiohttp coverage plugin
- ;; to avoid a circular dependency (code coverage
- ;; is not very interesting to us anyway).
- "-o" "addopts=''")
- (format #t "test suite not run~%")))))))
- (propagated-inputs
- `(("python-aiodns" ,python-aiodns)
- ("python-async-timeout" ,python-async-timeout)
- ("python-attrs" ,python-attrs) ;note: remove for > 3.7
- ("python-chardet" ,python-chardet)
- ("python-idna-ssl" ,python-idna-ssl)
- ("python-multidict" ,python-multidict)
- ("python-typing-extensions" ,python-typing-extensions)
- ("python-yarl" ,python-yarl)))
- (native-inputs
- `(("python-pytest" ,python-pytest)
- ("python-pytest-mock" ,python-pytest-mock)
- ("python-re-assert" ,python-re-assert)
- ("gunicorn" ,gunicorn-bootstrap)
- ("python-freezegun" ,python-freezegun)
- ("python-async-generator" ,python-async-generator)))
- (home-page "https://github.com/aio-libs/aiohttp/")
- (synopsis "Async HTTP client/server framework (asyncio)")
- (description "@code{aiohttp} is an asynchronous HTTP client/server
- framework.
- Its main features are:
- @itemize
- @item Supports both client and server side of HTTP protocol.
- @item Supports both client and server Web-Sockets out-of-the-box without the
- Callback Hell.
- @item Web-server has middlewares and pluggable routing.
- @end itemize")
- (license license:asl2.0)))
- (define-public python-aiohttp-socks
- (package
- (name "python-aiohttp-socks")
- (version "0.5.5")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "aiohttp_socks" version))
- (sha256
- (base32
- "0jmhb0l1w8k1nishij3awd9zv8zbyb5l35a2pdalrqxxasbhbcif"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-aiohttp" ,python-aiohttp)
- ("python-attrs" ,python-attrs)
- ("python-socks" ,python-socks)))
- (home-page "https://github.com/romis2012/aiohttp-socks")
- (synopsis "SOCKS proxy connector for aiohttp")
- (description "This package provides a SOCKS proxy connector for
- aiohttp. It supports SOCKS4(a) and SOCKS5.")
- (license license:asl2.0)))
- (define-public python-aiodns
- (package
- (name "python-aiodns")
- (version "1.1.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "aiodns" version))
- (sha256
- (base32
- "1snr5paql8dgvc676n8xq460wypjsb1xj53cf3px1s4wczf7lryq"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-pycares" ,python-pycares)))
- (arguments
- `(#:tests? #f)) ;tests require internet access
- (home-page "https://github.com/saghul/aiodns")
- (synopsis "Simple DNS resolver for asyncio")
- (description "@code{aiodns} provides a simple way for doing
- asynchronous DNS resolutions with a synchronous looking interface by
- using @url{https://github.com/saghul/pycares,pycares}.")
- (license license:expat)))
- (define-public python-aiorpcx
- (package
- (name "python-aiorpcx")
- (version "0.22.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "aiorpcX" version))
- (sha256
- (base32
- "0lx54bcinp44fmr8q4bbffsqbkg8kdcwykf9i5jj0bj3sfzgf9k0"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-attrs" ,python-attrs)))
- (home-page "https://github.com/kyuupichan/aiorpcX")
- (synopsis "Generic asyncio RPC implementation")
- (description
- "The aiorpcX library is a generic asyncio implementation of RPC suitable
- for an application that is a client, server or both.
- The package includes a module with full coverage of JSON RPC versions 1.0 and
- 2.0, JSON RPC protocol auto-detection, and arbitrary message framing. It also
- comes with a SOCKS proxy client.")
- (license (list license:expat license:bsd-2))))
- (define-public python-aiorpcx-0.18
- (package
- (inherit python-aiorpcx)
- (version "0.18.7")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "aiorpcX" version))
- (sha256
- (base32
- "1rswrspv27x33xa5bnhrkjqzhv0sknv5kd7pl1vidw9d2z4rx2l0"))))))
- (define-public python-asgiref
- (package
- (name "python-asgiref")
- (version "3.3.4")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "asgiref" version))
- (sha256
- (base32
- "0y0vdzldjkbs4pxf10pi6jpxq9b2sfp1rlwm153jcf5nvzxns8fi"))))
- (build-system python-build-system)
- (arguments
- '(#:phases (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "pytest" "-vv"))))))
- (native-inputs
- `(("python-pytest" ,python-pytest)
- ("python-pytest-asyncio" ,python-pytest-asyncio)))
- (home-page "https://github.com/django/asgiref/")
- (synopsis "ASGI specs, helper code, and adapters")
- (description
- "ASGI is a standard for Python asynchronous web apps and servers to
- communicate with each other, and positioned as an asynchronous successor to
- WSGI. This package includes libraries for implementing ASGI servers.")
- (license license:bsd-3)))
- (define-public python-css-html-js-minify
- (package
- (name "python-css-html-js-minify")
- (version "2.5.5")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "css-html-js-minify" version ".zip"))
- (sha256
- (base32
- "0v3l2dqdk2y4r6ax259gs4ij1zzm9yxg6491s6254vs9w3vi37sa"))))
- (build-system python-build-system)
- ;; XXX: The git repository has no tags, and the PyPI releases do not
- ;; contain tests.
- (arguments '(#:tests? #f))
- (native-inputs `(("unzip" ,unzip)))
- (home-page "https://github.com/juancarlospaco/css-html-js-minify")
- (synopsis "CSS/HTML/JS minifier")
- (description
- "This package provides a single-file minifier for CSS, HTML, and JavaScript.")
- ;; XXX: The README just says "GNU GPL and GNU LGPL and MIT". From
- ;; <https://github.com/juancarlospaco/css-html-js-minify/issues/9> it
- ;; looks like the user can choose a license.
- (license (list license:gpl3+ license:lgpl3+ license:expat))))
- (define-public python-aws-sam-translator
- (package
- (name "python-aws-sam-translator")
- (version "1.38.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "aws-sam-translator" version))
- (sha256
- (base32
- "1djwlsjpbh13m4biglimrm9lq7hmla0k29giay7k3cjsrylxvjhf"))))
- (build-system python-build-system)
- (arguments
- `(;; XXX: Tests are not distributed with the PyPI archive, and would
- ;; introduce a circular dependency on python-cfn-lint.
- #:tests? #f
- #:phases (modify-phases %standard-phases
- (add-after 'unpack 'loosen-requirements
- (lambda _
- ;; The package needlessly specifies exact versions
- ;; of dependencies, when it works fine with others.
- (substitute* "requirements/base.txt"
- (("(.*)(~=[0-9\\.]+)" all package version)
- package))
- #t)))))
- (propagated-inputs
- `(("python-boto3" ,python-boto3)
- ("python-jsonschema" ,python-jsonschema)
- ("python-six" ,python-six)))
- (home-page "https://github.com/awslabs/serverless-application-model")
- (synopsis "Transform AWS SAM templates into AWS CloudFormation templates")
- (description
- "AWS SAM Translator is a library that transform @dfn{Serverless Application
- Model} (SAM) templates into AWS CloudFormation templates.")
- (license license:asl2.0)))
- (define-public python-aws-xray-sdk
- (package
- (name "python-aws-xray-sdk")
- (version "2.6.0")
- (home-page "https://github.com/aws/aws-xray-sdk-python")
- (source (origin
- (method git-fetch)
- (uri (git-reference (url home-page) (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "12fzr0ylpa1lx3xr1x2f1jx8iiyzcr6g57fb9jign0j0lxdlbzpv"))))
- (build-system python-build-system)
- (arguments
- `(#:phases (modify-phases %standard-phases
- (add-after 'unpack 'disable-tests
- (lambda _
- (for-each delete-file
- '(;; These tests require packages not yet in Guix.
- "tests/ext/aiobotocore/test_aiobotocore.py"
- "tests/ext/aiohttp/test_middleware.py"
- "tests/ext/pg8000/test_pg8000.py"
- "tests/ext/psycopg2/test_psycopg2.py"
- "tests/ext/pymysql/test_pymysql.py"
- "tests/ext/pynamodb/test_pynamodb.py"
- "tests/test_async_recorder.py"
- ;; FIXME: Why is this failing?
- "tests/test_patcher.py"
- ;; TODO: How to configure Django for these tests.
- "tests/ext/django/test_db.py"
- "tests/ext/django/test_middleware.py"
- ;; These tests want to access httpbin.org.
- "tests/ext/requests/test_requests.py"
- "tests/ext/httplib/test_httplib.py"
- "tests/ext/aiohttp/test_client.py"))))
- (replace 'check
- (lambda _
- (invoke "pytest" "-vv" "tests"))))))
- (native-inputs
- `(;; These are required for the test suite.
- ("python-bottle" ,python-bottle)
- ("python-flask" ,python-flask)
- ("python-flask-sqlalchemy" ,python-flask-sqlalchemy)
- ("python-pymysql" ,python-pymysql)
- ("python-pytest" ,python-pytest)
- ("python-pytest-aiohttp" ,python-pytest-aiohttp)
- ("python-requests" ,python-requests)
- ("python-sqlalchemy" ,python-sqlalchemy)
- ("python-webtest" ,python-webtest)))
- (propagated-inputs
- `(("python-aiohttp" ,python-aiohttp)
- ("python-botocore" ,python-botocore)
- ("python-future" ,python-future)
- ("python-jsonpickle" ,python-jsonpickle)
- ("python-urllib3" ,python-urllib3)
- ("python-wrapt" ,python-wrapt)))
- (synopsis "Profile applications on AWS X-Ray")
- (description
- "The AWS X-Ray SDK for Python enables Python developers to record and
- emit information from within their applications to the AWS X-Ray service.")
- (license license:asl2.0)))
- (define-public python-cfn-lint
- (package
- (name "python-cfn-lint")
- (version "0.54.1")
- (home-page "https://github.com/aws-cloudformation/cfn-python-lint")
- (source (origin
- (method git-fetch)
- (uri (git-reference
- (url home-page)
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "161mzzlpbi85q43kwzrj39qb32l6wg6xhnbbd4z860yrfbymsn87"))))
- (build-system python-build-system)
- (arguments
- `(#:phases (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- ;; Remove test for the documentation update scripts
- ;; to avoid a dependency on 'git'.
- (delete-file
- "test/unit/module/maintenance/test_update_documentation.py")
- (delete-file
- "test/unit/module/maintenance/test_update_resource_specs.py")
- (invoke "python" "-m" "unittest" "discover" "-v"
- "-s" "test")))))))
- (native-inputs
- `(("python-pydot" ,python-pydot)
- ("python-mock" ,python-mock)))
- (propagated-inputs
- `(("python-aws-sam-translator" ,python-aws-sam-translator)
- ("python-jsonpatch" ,python-jsonpatch)
- ("python-jsonschema" ,python-jsonschema)
- ("python-junit-xml" ,python-junit-xml)
- ("python-networkx" ,python-networkx)
- ("python-pyyaml" ,python-pyyaml)
- ("python-six" ,python-six)))
- (synopsis "Validate CloudFormation templates")
- (description
- "This package lets you validate CloudFormation YAML/JSON templates against
- the CloudFormation spec and additional checks. Includes checking valid values
- for resource properties and best practices.")
- (license license:expat)))
- (define-public python-falcon
- (package
- (name "python-falcon")
- (version "2.0.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "falcon" version))
- (sha256
- (base32
- "1z6mqfv574x6jiawf67ib52g4kk20c2x7xk7wrn1573b8v7r79gf"))
- (modules '((guix build utils)))
- (snippet
- '(begin
- (delete-file-recursively "falcon/vendor")
- (substitute* "setup.py"
- ((".*falcon\\.vendor\\.mimeparse.*") ""))
- (substitute* '("falcon/media/handlers.py"
- "falcon/request.py")
- (("from falcon\\.vendor ") ""))
- (substitute* "falcon.egg-info/SOURCES.txt"
- (("falcon/vendor.*") ""))
- #t))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key inputs outputs #:allow-other-keys)
- ;; Skip orjson, which requires rust to build.
- (substitute* "tests/test_media_handlers.py"
- (("== 'CPython") "!= 'CPython"))
- (add-installed-pythonpath inputs outputs)
- (invoke "pytest" "--ignore" "falcon"))))))
- (propagated-inputs
- `(("python-mimeparse" ,python-mimeparse)))
- (native-inputs
- `(("python-cython" ,python-cython) ;for faster binaries
- ("python-mujson" ,python-mujson)
- ("python-msgpack" ,python-msgpack)
- ("python-pytest" ,python-pytest)
- ("python-pytest-runner" ,python-pytest-runner)
- ("python-pyyaml" ,python-pyyaml)
- ("python-rapidjson" ,python-rapidjson)
- ("python-requests" ,python-requests)
- ("python-testtools" ,python-testtools)
- ("python-ujson" ,python-ujson)))
- (home-page "https://falconframework.org")
- (synopsis
- "Web framework for building APIs and application backends")
- (description
- "Falcon is a web API framework for building microservices, application
- backends and higher-level frameworks. Among its features are:
- @itemize
- @item Optimized and extensible code base
- @item Routing via URI templates and REST-inspired resource
- classes
- @item Access to headers and bodies through request and response
- classes
- @item Request processing via middleware components and hooks
- @item Idiomatic HTTP error responses
- @item Straightforward exception handling
- @item Unit testing support through WSGI helpers and mocks
- @item Compatible with both CPython and PyPy
- @item Cython support for better performance when used with CPython
- @end itemize")
- (license license:asl2.0)))
- (define-public python-falcon-cors
- (package
- (name "python-falcon-cors")
- (version "1.1.7")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "falcon-cors" version))
- (sha256
- (base32
- "12pym7hwsbd8b0c1azn95nas8gm3f1qpr6lpyx0958xm65ffr20p"))))
- (build-system python-build-system)
- (native-inputs
- `(("python-falcon" ,python-falcon)))
- (home-page
- "https://github.com/lwcolton/falcon-cors")
- (synopsis "Falcon @dfn{cross-origin resource sharing} (CORS) library")
- (description "This middleware provides @dfn{cross-origin resource
- sharing} (CORS) support for Falcon. It allows applying a specially crafted
- CORS object to the incoming requests, enabling the ability to serve resources
- over a different origin than that of the web application.")
- (license license:asl2.0)))
- (define-public python-furl
- (package
- (name "python-furl")
- (version "2.0.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "furl" version))
- (sha256
- (base32
- "1v2lakx03d5w8954a39ki44xv5mllnq0a0avhxykv9hrzg0yvjpx"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-six" ,python-six)
- ("python-orderedmultidict" ,python-orderedmultidict)))
- (native-inputs
- `(("python-flake8" ,python-flake8)))
- (home-page "https://github.com/gruns/furl")
- (synopsis "URL manipulation in Python")
- (description "Furl provides an easy-to-use alternative to the
- @code{urllib} and @code{urlparse} modules for manipulating URLs.")
- (license license:unlicense)))
- (define-public python-httplib2
- (package
- (name "python-httplib2")
- (version "0.9.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "httplib2" version))
- (sha256
- (base32
- "126rsryvw9vhbf3qmsfw9lf4l4xm2srmgs439lgma4cpag4s3ay3"))))
- (build-system python-build-system)
- (home-page "https://github.com/jcgregorio/httplib2")
- (synopsis "Comprehensive HTTP client library")
- (description
- "A comprehensive HTTP client library supporting many features left out of
- other HTTP libraries.")
- (license license:expat)))
- (define-public python2-httplib2
- (package-with-python2 python-httplib2))
- (define-public httpie
- (package
- (name "httpie")
- (version "2.3.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "httpie" version))
- (sha256
- (base32
- "15ngl3yc186gkgqdx8iav9bpj8gxjpzz26y32z92jwyhj4cmfh6m"))))
- (build-system python-build-system)
- (arguments
- ;; The tests attempt to access external web servers, so we cannot run them.
- '(#:tests? #f))
- (propagated-inputs
- `(("python-colorama" ,python-colorama)
- ("python-pygments" ,python-pygments)
- ("python-requests" ,python-requests)
- ("python-requests-toolbelt" ,python-requests-toolbelt-0.9.1)))
- (home-page "https://httpie.io")
- (synopsis "cURL-like tool for humans")
- (description
- "A command line HTTP client with an intuitive UI, JSON support,
- syntax highlighting, wget-like downloads, plugins, and more. It consists of
- a single http command designed for painless debugging and interaction with
- HTTP servers, RESTful APIs, and web services.")
- ;; This was fixed in 1.0.3.
- (properties `((lint-hidden-cve . ("CVE-2019-10751"))))
- (license license:bsd-3)))
- (define-public python-html2text
- (package
- (name "python-html2text")
- (version "2020.1.16")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "html2text" version))
- (sha256
- (base32
- "1fvv4z6dblii2wk1x82981ag8yhxbim1v2ksgywxsndh2s7335p2"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "pytest" "test/"))))))
- (native-inputs
- `(("python-pytest" ,python-pytest)))
- (home-page "https://github.com/Alir3z4/html2text")
- (synopsis "Convert HTML into plain text")
- (description "html2text takes HTML and converts it into plain ASCII text
- which is also valid markdown. html2text was originally written by Aaron
- Swartz.")
- (license license:gpl3+)))
- (define-public python2-html2text
- (let ((base (package-with-python2 python-html2text)))
- (package
- (inherit base)
- ;; This is the last version with support for Python 2.
- (version "2019.8.11")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "html2text" version))
- (sha256
- (base32
- "0ppgjplg06kmv9sj0x8p7acczcq2mcfgk1jdjwm4w5w40b0vj5pm")))))))
- (define-public python-jose
- (package
- (name "python-jose")
- (version "3.2.0")
- (home-page "https://github.com/mpdavis/python-jose")
- (source (origin
- (method git-fetch)
- (uri (git-reference (url home-page) (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "1xmnf8whzv2gnkkdv0fqcn9qwmcc7y647p4kw9fi3lvcp9kch8vi"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (if tests?
- (invoke "pytest" "-vv")
- (format #t "test suite not run~%"))
- #t)))))
- (native-inputs
- `(;; All native inputs are for tests.
- ("python-pyasn1" ,python-pyasn1)
- ("python-pytest" ,python-pytest)
- ("python-pytest-cov" ,python-pytest-cov)
- ("python-pytest-runner" ,python-pytest-runner)))
- (propagated-inputs
- `(("python-cryptography" ,python-cryptography)
- ("python-rsa" ,python-rsa)
- ("python-six" ,python-six)))
- (synopsis "JOSE implementation in Python")
- (description
- "The @dfn{JavaScript Object Signing and Encryption} (JOSE) technologies
- - JSON Web Signature (JWS), JSON Web Encryption (JWE), JSON Web Key (JWK), and
- JSON Web Algorithms (JWA) - collectively can be used to encrypt and/or sign
- content using a variety of algorithms.")
- (license license:expat)))
- (define-public python-jsonpickle
- (package
- (name "python-jsonpickle")
- (version "1.4.1")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "jsonpickle" version))
- (sha256
- (base32
- "1fn86z468hamw8njh2grw2xdhsm7g48dyxs3lw0n10nn1g6vgm78"))))
- (build-system python-build-system)
- (arguments
- `(#:phases (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "pytest" "-vv"
- ;; Prevent running the flake8 and black
- ;; pytest plugins, which only tests style
- ;; and frequently causes harmless failures.
- "-o" "addopts=''"))))))
- (native-inputs
- `(("python-setuptools-scm" ,python-setuptools-scm)
- ("python-toml" ,python-toml) ;XXX: for setuptools_scm[toml]
- ;; For tests.
- ("python-numpy" ,python-numpy)
- ("python-pandas" ,python-pandas)
- ("python-pytest" ,python-pytest)))
- (home-page "https://jsonpickle.github.io/")
- (synopsis "Serialize object graphs into JSON")
- (description
- "This package provides a Python library for serializing any arbitrary
- object graph to and from JSON.")
- (license license:bsd-3)))
- (define-public python-mechanicalsoup
- (package
- (name "python-mechanicalsoup")
- (version "1.0.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "MechanicalSoup" version))
- (sha256
- (base32 "01sddjxy3rznh63hnl5lbv1hhk6xyiviwmkiw4x7v4ap35fb3lrp"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-beautifulsoup4" ,python-beautifulsoup4)
- ("python-lxml" ,python-lxml)
- ("python-requests" ,python-requests)
- ("python-six" ,python-six)))
- (native-inputs
- `(("python-pytest-cov" ,python-pytest-cov)
- ("python-pytest-flake8" ,python-pytest-flake8)
- ("python-pytest-httpbin" ,python-pytest-httpbin)
- ("python-pytest-mock" ,python-pytest-mock)
- ("python-pytest-runner" ,python-pytest-runner)
- ("python-requests-mock" ,python-requests-mock)))
- (home-page "https://mechanicalsoup.readthedocs.io/")
- (synopsis "Python library for automating website interaction")
- (description
- "MechanicalSoup is a Python library for automating interaction with
- websites. It automatically stores and sends cookies, follows redirects, and can
- follow links and submit forms. It doesn’t do JavaScript.")
- (license license:expat)))
- (define-public python-hyperframe
- (package
- (name "python-hyperframe")
- (version "5.2.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "hyperframe" version))
- (sha256
- (base32 "07xlf44l1cw0ghxx46sbmkgzil8vqv8kxwy42ywikiy35izw3xd9"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? inputs outputs #:allow-other-keys)
- (when tests?
- (add-installed-pythonpath inputs outputs)
- (invoke "pytest" "-vv" "test")))))))
- (native-inputs
- `(("python-pytest" ,python-pytest)))
- (home-page "https://github.com/python-hyper/hyperframe")
- (synopsis "HTTP/2 framing layer for Python")
- (description
- "This library contains the HTTP/2 framing code used in the hyper project.
- It provides a pure-Python codebase that is capable of decoding a binary stream
- into HTTP/2 frames.")
- (license license:expat)))
- (define-public python-hpack
- (package
- (name "python-hpack")
- (version "3.0.0")
- (source
- (origin
- ;; PyPI tarball is missing some files necessary for the tests.
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/python-hyper/hpack")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "0w8hkz50a6lzkmgi41ryicm0mh9ca9cx29pm3s0xlpn0vs29xrmd"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? inputs outputs #:allow-other-keys)
- (when tests?
- (add-installed-pythonpath inputs outputs)
- (invoke "pytest" "-vv" "test" "-k"
- ;; This test will be fixed in the next version. See:
- ;; https://github.com/python-hyper/hpack/issues/168.
- "not test_get_by_index_out_of_range")))))))
- (native-inputs
- `(("python-pytest" ,python-pytest)))
- (home-page "https://hyper.rtfd.org")
- (synopsis "Pure-Python HPACK header compression")
- (description
- "This module contains a pure-Python HTTP/2 header encoding (HPACK) logic
- for use in Python programs that implement HTTP/2.")
- (license license:expat)))
- (define-public python-h11
- (package
- (name "python-h11")
- (version "0.9.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "h11" version))
- (sha256
- (base32 "1qfad70h59hya21vrzz8dqyyaiqhac0anl2dx3s3k80gpskvrm1k"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "pytest" "-vv")))))))
- (native-inputs
- `(("python-pytest" ,python-pytest)))
- (home-page "https://github.com/python-hyper/h11")
- (synopsis "Pure-Python, bring-your-own-I/O implementation of HTTP/1.1")
- (description
- "This is a little HTTP/1.1 library written from scratch in Python, heavily
- inspired by hyper-h2. It's a bring-your-own-I/O library; h11 contains no IO
- code whatsoever. This means you can hook h11 up to your favorite network API,
- and that could be anything you want.")
- (license license:expat)))
- (define-public python-h2
- (package
- (name "python-h2")
- (version "3.2.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "h2" version))
- (sha256
- (base32 "051gg30aca26rdxsmr9svwqm06pdz9bv21ch4n0lgi7jsvml2pw7"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? inputs outputs #:allow-other-keys)
- (when tests?
- (add-installed-pythonpath inputs outputs)
- (invoke "pytest" "-vv" "test")))))))
- (native-inputs
- `(("python-pytest" ,python-pytest)))
- (propagated-inputs
- `(("python-hpack" ,python-hpack)
- ("python-hyperframe" ,python-hyperframe)))
- (home-page "https://github.com/python-hyper/hyper-h2")
- (synopsis "HTTP/2 State-Machine based protocol implementation")
- (description
- "This module contains a pure-Python implementation of a HTTP/2 protocol
- stack. It does not provide a parsing layer, a network layer, or any rules
- about concurrency. Instead, it's a purely in-memory solution, defined in
- terms of data actions and HTTP/2 frames. This is one building block of a full
- Python HTTP implementation.")
- (license license:expat)))
- (define-public python-sockjs-tornado
- (package
- (name "python-sockjs-tornado")
- (version "1.0.6")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "sockjs-tornado" version))
- (sha256
- (base32
- "15dgv6hw6c7h3m310alw1h6p5443lrm9pyqhcv2smc13fz1v04pc"))))
- (build-system python-build-system)
- (arguments
- `(;; There are no tests, and running the test phase requires missing
- ;; dependencies
- #:tests? #f))
- (propagated-inputs
- `(("python-tornado" ,python-tornado)))
- (home-page "https://github.com/mrjoes/sockjs-tornado/")
- (synopsis
- "SockJS Python server implementation on top of the Tornado framework")
- (description
- "SockJS-tornado provides the server-side counterpart to a SockJS client
- library, through the Tornado framework.
- SockJS provides a low-latency, full-duplex, cross-domain communication channel
- between a web browser and web server.")
- (license license:expat)))
- (define-public python2-sockjs-tornado
- (package-with-python2 python-sockjs-tornado))
- (define-public python-flask-babel
- (package
- (name "python-flask-babel")
- (version "1.0.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "Flask-Babel" version))
- (sha256
- (base32
- "0gmb165vkwv5v7dxsxa2i3zhafns0fh938m2zdcrv4d8z5l099yn"))))
- (build-system python-build-system)
- (arguments
- '(#:phases (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (with-directory-excursion "tests"
- (invoke "python" "tests.py")))))))
- (propagated-inputs
- `(("python-flask" ,python-flask)
- ("python-babel" ,python-babel)
- ("python-jinja2" ,python-jinja2)
- ("python-pytz" ,python-pytz)))
- (home-page "https://github.com/python-babel/flask-babel")
- (synopsis "Add i18n/l10n support to Flask applications")
- (description "This package implements internationalization and localization
- support for Flask. This is based on the Python babel module as well as pytz -
- both of which are installed automatically if you install this library.")
- (license license:bsd-3)))
- (define-public python-flask-cors
- (package
- (name "python-flask-cors")
- (version "3.0.9")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "Flask-Cors" version))
- (sha256
- (base32
- "1f36hkaxc92zn12f88fkzwifdvlvsnmlp1dv3p5inpcc500c3kvb"))))
- (build-system python-build-system)
- (native-inputs
- `(("python-flask" ,python-flask)
- ("python-nose" ,python-nose)
- ("python-packaging" ,python-packaging)))
- (propagated-inputs
- `(("python-six" ,python-six)))
- (home-page "https://flask-cors.readthedocs.io/en/latest/")
- (synopsis "Handle Cross-Origin Resource Sharing with Flask")
- (description
- "This package provides a Flask extension for handling @acronym{CORS,Cross
- Origin Resource Sharing}, making cross-origin AJAX possible.")
- (license license:expat)))
- (define-public python-flask-markdown
- (package
- (name "python-flask-markdown")
- (version "0.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "Flask-Markdown" version))
- (sha256
- (base32
- "0l32ikv4f7va926jlq4f7gx0xid247bhlxl6bd9av5dk8ljz1hyq"))))
- (build-system python-build-system)
- (arguments
- '(#:tests? #f)) ; Tests seem to be incompatible with latest python
- (propagated-inputs
- `(("python-markdown" ,python-markdown)
- ("python-flask" ,python-flask)))
- (native-inputs
- `(("python-nose" ,python-nose)))
- (home-page "https://github.com/dcolish/flask-markdown")
- (synopsis "Small extension to help with using Markdown in Flask")
- (description
- "Flask-Markdown supports several extensions for Markdown and integrates
- into Jinja2 by default.")
- (license license:bsd-3)))
- (define-public python-flask-misaka
- (package
- (name "python-flask-misaka")
- (version "1.0.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "Flask-Misaka" version))
- (sha256
- (base32
- "12gm6hq3lvlj0ddw8p6lk5pky8jk3pw758ihffjl49shnnzc68zl"))))
- (build-system python-build-system)
- (native-inputs
- `(("python-coverage" ,python-coverage)
- ("python-mock" ,python-mock)))
- (propagated-inputs
- `(("python-flask" ,python-flask)
- ("python-misaka" ,python-misaka)))
- (home-page "https://github.com/singingwolfboy/flask-misaka/")
- (synopsis "Flask interface to Misaka, a Markdown parsing library")
- (description
- "This package provides an interface between the Flask web framework and
- the Misaka Markdown parser.")
- (license license:expat)))
- (define-public python-flask-session
- (package
- (name "python-flask-session")
- (version "0.3.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "Flask-Session" version))
- (sha256
- (base32
- "08s4msg8jzb8vgb9bd491zvrzhrdldxdw6vimb0kx5kgy2xy4s07"))))
- (build-system python-build-system)
- (arguments
- '(#:tests? #f)) ; Tests require the various storage backends to be present
- (propagated-inputs
- `(("python-flask" ,python-flask)))
- (home-page "https://github.com/fengsp/flask-session")
- (synopsis "Adds server-side session support to your Flask application")
- (description
- "Flask-Session is an extension for Flask that adds support for
- Server-side sessions, with a variety of different backends for session
- storage.")
- (license license:bsd-3)))
- (define-public python-html5lib
- (package
- (name "python-html5lib")
- (version "1.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "html5lib" version))
- (sha256
- (base32
- "0vqlhk0hgbsfkh7ybmby93xhlx8dq6pr5blf356ka3z2c41b9rdj"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-six" ,python-six)
- ("python-webencodings" ,python-webencodings)
- ;; Required by Calibre 5.
- ("python-chardet" ,python-chardet)))
- (arguments
- `(#:test-target "check"))
- (home-page
- "https://github.com/html5lib/html5lib-python")
- (synopsis
- "Python HTML parser based on the WHATWG HTML specification")
- (description
- "Html5lib is an HTML parser based on the WHATWG HTML specification
- and written in Python.")
- (license license:expat)))
- (define-public python2-html5lib
- (package-with-python2 python-html5lib))
- ;; Needed for python-bleach, a dependency of python-notebook
- (define-public python-html5lib-0.9
- (package
- (inherit python-html5lib)
- (version "0.999")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "html5lib" version))
- (sha256
- (base32
- "17n4zfsj6ynmbwdwviywmj8r6nzr3xvfx2zs0xhndmvm51z7z263"))))))
- (define-public python2-html5lib-0.9
- (package-with-python2 python-html5lib-0.9))
- (define-public python-html5-parser
- (package
- (name "python-html5-parser")
- (version "0.4.9")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "html5-parser" version))
- (sha256
- (base32
- "13yl3vnf3sxl05m0nhpngnrz3g1jvyahd33lys3m3hfb91l8zzi5"))))
- (build-system python-build-system)
- (native-inputs
- `(("pkg-config" ,pkg-config)))
- (inputs
- `(("libxml2" ,libxml2)))
- (propagated-inputs
- `(("python-lxml" ,python-lxml)
- ("python-beautifulsoup4" ,python-beautifulsoup4)
- ("python-chardet" ,python-chardet)))
- (home-page "https://html5-parser.readthedocs.io")
- (synopsis "Fast C-based HTML5 parsing for Python")
- (description "This package provides a fast implementation of the HTML5
- parsing spec for Python. Parsing is done in C using a variant of the gumbo
- parser. The gumbo parse tree is then transformed into an lxml tree, also in
- C, yielding parse times that can be a thirtieth of the html5lib parse times.")
- ;; src/as-python-tree.[c|h] are licensed GPL3. The other files
- ;; indicate ASL2.0, including the LICENSE file for the whole project.
- (license (list license:asl2.0 license:gpl3))))
- (define-public python2-html5-parser
- (package-with-python2 python-html5-parser))
- (define-public python-minio
- (package
- (name "python-minio")
- (version "6.0.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "minio" version))
- (sha256
- (base32
- "1cxpa0m7mdvpdbc1g6wlihq6ja4g4paxkl6f3q84bbnx07zpbllp"))))
- (build-system python-build-system)
- (arguments
- '(#:phases (modify-phases %standard-phases
- (add-before 'check 'disable-failing-tests
- (lambda _
- ;; This test requires network access.
- (delete-file "tests/unit/credentials_test.py")
- #t)))))
- (native-inputs
- `(("python-faker" ,python-faker)
- ("python-mock" ,python-mock)
- ("python-nose" ,python-nose)))
- (propagated-inputs
- `(("python-certifi" ,python-certifi)
- ("python-configparser" ,python-configparser)
- ("python-dateutil" ,python-dateutil)
- ("python-pytz" ,python-pytz)
- ("python-urllib3" ,python-urllib3)))
- (home-page "https://github.com/minio/minio-py")
- (synopsis "Programmatically access Amazon S3 from Python")
- (description
- "This package provides a Python library for interacting with any
- Amazon S3 compatible object storage server.")
- (license license:asl2.0)))
- (define-public python-pycurl
- (package
- (name "python-pycurl")
- (version "7.43.0.5")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pycurl" version))
- (sha256
- (base32 "1cwlb76vddqp2mxqvjbhf367caddzy82rhangddjjhjqaj8x4zgc"))))
- (build-system python-build-system)
- (arguments
- ;; The tests attempt to access external web servers, so we cannot run
- ;; them. Furthermore, they are skipped altogether when using Python 2.
- '(#:tests? #f
- #:phases (modify-phases %standard-phases
- (add-before 'build 'configure-tls-backend
- (lambda _
- ;; XXX: PycURL fails to automatically determine which TLS
- ;; backend to use when cURL is built with --disable-static.
- ;; See setup.py and <https://github.com/pycurl/pycurl/pull/147>.
- (setenv "PYCURL_SSL_LIBRARY" "gnutls")
- #t)))))
- (native-inputs
- `(("python-nose" ,python-nose)
- ("python-bottle" ,python-bottle)))
- (inputs
- `(("curl" ,curl)
- ("gnutls" ,gnutls)))
- (home-page "http://pycurl.io/")
- (synopsis "Lightweight Python wrapper around libcurl")
- (description "Pycurl is a lightweight wrapper around libcurl. It provides
- high-speed transfers via libcurl and frequently outperforms alternatives.")
- ;; Per 'README.rst', this is dual-licensed: users can redistribute pycurl
- ;; under the terms of LGPLv2.1+ or Expat.
- (license (list license:lgpl2.1+ license:expat))))
- (define-public python2-pycurl
- (package-with-python2 python-pycurl))
- (define-public python-webencodings
- (package
- (name "python-webencodings")
- (version "0.5.1")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "webencodings" version))
- (sha256
- (base32
- "08qrgrc4hrximb2gqnl69g01s93rhf2842jfxdjljc1dbwj1qsmk"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "py.test" "-v" "webencodings/tests.py")
- #t)))))
- (native-inputs
- `(("python-pytest" ,python-pytest)))
- (home-page "https://github.com/SimonSapin/python-webencodings")
- (synopsis "Character encoding aliases for legacy web content")
- (description
- "In order to be compatible with legacy web content when interpreting
- something like @code{Content-Type: text/html; charset=latin1}, tools need
- to use a particular set of aliases for encoding labels as well as some
- overriding rules. For example, @code{US-ASCII} and @code{iso-8859-1} on
- the web are actually aliases for @code{windows-1252}, and a @code{UTF-8}
- or @code{UTF-16} BOM takes precedence over any other encoding declaration.
- The WHATWG @url{https://encoding.spec.whatwg.org/,Encoding} standard
- defines all such details so that implementations do not have to
- reverse-engineer each other.
- This module implements the Encoding standard and has encoding labels and
- BOM detection, but the actual implementation for encoders and decoders
- is Python’s.")
- (license license:bsd-3)))
- (define-public python2-webencodings
- (package-with-python2 python-webencodings))
- (define-public python-openid
- (package
- (name "python-openid")
- (version "3.2.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "python3-openid" version))
- (sha256
- (base32
- "1bxf9a3ny1js422j962zfzl4a9dhj192pvai05whn7j0iy9gdyrk"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "coverage" "run" "-m"
- "unittest" "openid.test.test_suite"))))))
- (properties `((python2-variant . ,(delay python2-openid))))
- (propagated-inputs
- `(("python-defusedxml" ,python-defusedxml)))
- (native-inputs
- `(("python-coverage" ,python-coverage)
- ("python-psycopg2" ,python-psycopg2)
- ("python-django" ,python-django)))
- (home-page "https://github.com/necaris/python3-openid")
- (synopsis "OpenID support for servers and consumers")
- (description "This library provides OpenID authentication for Python, both
- for clients and servers.")
- (license license:asl2.0)))
- (define-public python2-openid
- (package
- (name "python2-openid")
- (version "2.2.5")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "python-openid" version))
- (sha256
- (base32
- "1vvhxlghjan01snfdc4k7ykd80vkyjgizwgg9bncnin8rqz1ricj"))))
- (build-system python-build-system)
- (arguments
- ;; Python 3 support is in `python3-openid`, a separate package.
- `(#:python ,python-2
- ;; Tests aren't initialized correctly.
- #:tests? #f))
- (home-page "https://github.com/openid/python-openid")
- (synopsis "OpenID support for servers and consumers")
- (description "This library provides OpenID authentication for Python, both
- for clients and servers.")
- (license license:asl2.0)))
- (define-public python-cssutils
- (package
- (name "python-cssutils")
- (version "1.0.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "cssutils" version))
- (sha256
- (base32
- "1bxchrbqzapwijap0yhlxdil1w9bmwvgx77aizlkhc2mcxjg1z52"))))
- (build-system python-build-system)
- (native-inputs
- `(("unzip" ,unzip))) ; for unpacking the source
- (arguments
- `(#:tests? #f)) ; tests require python-pbr < 1.7.0
- (home-page "http://cthedot.de/cssutils/")
- (synopsis
- "CSS Cascading Style Sheets library for Python")
- (description
- "Cssutils is a Python package for parsing and building CSS
- Cascading Style Sheets. Currently it provides a DOM only and no rendering
- options.")
- (license license:lgpl3+)))
- (define-public python2-cssutils
- (package-with-python2 python-cssutils))
- (define-public python-css-parser
- (package
- (inherit python-cssutils)
- (name "python-css-parser")
- (version "1.0.6")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "css-parser" version ".tar.gz"))
- (sha256
- (base32 "0bmg4kiiir6pj9x3sd12x4dz2c1xpp2bn5nn60fxnbk2lnl4im2f"))))
- (home-page "https://github.com/ebook-utils/css-parser")
- (synopsis "Fork of cssutils modified for parsing ebooks")
- (description
- "Css-parser is a Python package for parsing and building CSS
- Cascading Style Sheets. Currently it provides a DOM only and no rendering
- options.
- It's a fork of cssutils 1.0.2, updated and modified for parsing ebooks, due to
- cssutils not receiving updates as of 1.0.2.")
- (license license:lgpl3+)))
- (define-public python2-css-parser
- (package-with-python2 python-css-parser))
- (define-public python-cssselect
- (package
- (name "python-cssselect")
- (version "1.1.0")
- (source (origin
- ;; The PyPI release does not contain tests.
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/scrapy/cssselect")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0xslrnhbrmgakp4xg6k26qffay3kqffp3a2z2sk27c65rwxa79kc"))))
- (build-system python-build-system)
- (arguments
- `(#:phases (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "pytest" "-vv"))))))
- (native-inputs
- `(("python-lxml" ,python-lxml)
- ("python-pytest" ,python-pytest)))
- (home-page "https://github.com/scrapy/cssselect")
- (synopsis "CSS3 selector parser and translator to XPath 1.0")
- (description
- "Cssselect ia a Python module that parses CSS3 Selectors and translates
- them to XPath 1.0 expressions. Such expressions can be used in lxml or
- another XPath engine to find the matching elements in an XML or HTML document.")
- (license license:bsd-3)))
- (define-public python2-cssselect
- (package-with-python2 python-cssselect))
- (define-public python-databricks-cli
- (package
- (name "python-databricks-cli")
- (version "0.14.1")
- (home-page "https://github.com/databricks/databricks-cli")
- (source (origin
- (method git-fetch)
- (uri (git-reference (url home-page) (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "03w19rzh72jll9phai23wp0c2mlv39qsrv50mhckziy39z60yxh8"))))
- (build-system python-build-system)
- (arguments
- `(#:phases (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "pytest" "tests" "-vv"
- ;; XXX: This fails with newer Pytest
- ;; (upstream uses Pytest 3..).
- "-k" "not test_get_request_with_list"))))))
- (native-inputs
- `(;; For tests.
- ("python-decorator" ,python-decorator)
- ("python-mock" ,python-mock)
- ("python-pytest" ,python-pytest)
- ("python-requests-mock" ,python-requests-mock)))
- (propagated-inputs
- `(("python-click" ,python-click)
- ("python-configparser" ,python-configparser)
- ("python-requests" ,python-requests)
- ("python-six" ,python-six)
- ("python-tabulate" ,python-tabulate)))
- (synopsis "Command line interface for Databricks")
- (description
- "The Databricks Command Line Interface is a tool which provides an easy
- to use interface to the Databricks platform. The CLI is built on top of the
- Databricks REST APIs.")
- (license license:asl2.0)))
- (define-public python-openid-cla
- (package
- (name "python-openid-cla")
- (version "1.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "python-openid-cla" version))
- (sha256
- (base32
- "102hy2qisvjxp5s0v9lvwqi4f2dk0dhns40vjgn008yxc7k0h3cr"))))
- (build-system python-build-system)
- (arguments '(#:tests? #f)) ; No tests.
- (home-page "https://github.com/puiterwijk/python-openid-cla/")
- (synopsis "Implementation of the OpenID CLA extension for python-openid")
- (description "@code{openid-cla} is an implementation of the OpenID
- contributor license agreement extension for python-openid.")
- (license license:bsd-3)))
- (define-public python2-openid-cla
- (package-with-python2 python-openid-cla))
- (define-public python-openid-teams
- (package
- (name "python-openid-teams")
- (version "1.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "python-openid-teams" version))
- (sha256
- (base32
- "05zrh78alav24rxkbqlpbad6d3x2nljk6z6j7kflxf3vdqa7w969"))))
- (build-system python-build-system)
- (arguments '(#:tests? #f)) ; No tests.
- (home-page "https://github.com/puiterwijk/python-openid-teams/")
- (synopsis "Implementation of the OpenID teams extension for python-openid")
- (description
- "@code{openid-teams} is an implementation of the OpenID
- teams extension for python-openid.")
- (license license:bsd-3)))
- (define-public python2-openid-teams
- (package-with-python2 python-openid-teams))
- (define-public python-priority
- (package
- (name "python-priority")
- (version "1.3.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "priority" version))
- (sha256
- (base32 "1gpzn9k9zgks0iw5wdmad9b4dry8haiz2sbp6gycpjkzdld9dhbb"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (add-installed-pythonpath inputs outputs)
- (invoke "pytest" "-vv" "test" "-k"
- ;; This test exceeded the Hypothesis deadline.
- "not test_period_of_repetition"))))))
- (native-inputs
- `(("python-hypothesis" ,python-hypothesis)
- ("python-pytest" ,python-pytest)
- ("python-pytest-cov" ,python-pytest-cov)
- ("python-pytest-xdist" ,python-pytest-xdist)))
- (home-page "https://python-hyper.org/projects/priority/en/latest/")
- (synopsis "Pure-Python implementation of the HTTP/2 priority tree")
- (description
- "Priority is a pure-Python implementation of the priority logic for HTTP/2,
- set out in RFC 7540 Section 5.3 (Stream Priority).")
- (license license:expat)))
- (define-public python-wsproto
- (package
- (name "python-wsproto")
- (version "0.15.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "wsproto" version))
- (sha256
- (base32 "17gsxlli4w8am1wwwl3k90hpdfa213ax40ycbbvb7hjx1v1rhiv1"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (add-installed-pythonpath inputs outputs)
- (invoke "pytest" "-vv" "test"))))))
- (native-inputs
- `(("python-pytest" ,python-pytest)))
- (propagated-inputs
- `(("python-h11" ,python-h11)))
- (home-page "https://github.com/python-hyper/wsproto/")
- (synopsis "WebSockets state-machine based protocol implementation")
- (description
- "@code{wsproto} is a pure-Python implementation of a WebSocket protocol
- stack. It's written from the ground up to be embeddable in whatever program you
- choose to use, ensuring that you can communicate via WebSockets, as defined in
- RFC6455, regardless of your programming paradigm.")
- (license license:expat)))
- (define-public python-hypercorn
- (package
- (name "python-hypercorn")
- (version "0.10.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "Hypercorn" version))
- (sha256
- (base32 "15dgy47a18w2ls3hwykra1cyf7yzxmfjqnsqml482p12cxr2xwqr"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (add-installed-pythonpath inputs outputs)
- (invoke "pytest" "-vv"))))))
- (propagated-inputs
- `(("python-h11" ,python-h11)
- ("python-h2" ,python-h2)
- ("python-priority" ,python-priority)
- ("python-toml" ,python-toml)
- ("python-typing-extensions" ,python-typing-extensions)
- ("python-wsproto" ,python-wsproto)))
- (native-inputs
- `(("python-hypothesis" ,python-hypothesis)
- ("python-mock" ,python-mock)
- ("python-pytest" ,python-pytest)
- ("python-pytest-asyncio" ,python-pytest-asyncio)
- ("python-pytest-cov" ,python-pytest-cov)
- ("python-pytest-trio" ,python-pytest-trio)
- ("python-trio" ,python-trio)))
- (home-page "https://gitlab.com/pgjones/hypercorn/")
- (synopsis "ASGI Server based on Hyper libraries")
- (description
- "Hypercorn is an ASGI web server based on the sans-io hyper, h11, h2, and
- wsproto libraries and inspired by Gunicorn. It supports HTTP/1, HTTP/2,
- WebSockets (over HTTP/1 and HTTP/2), ASGI/2, and ASGI/3 specifications. It can
- utilise asyncio, uvloop, or trio worker types.")
- (license license:expat)))
- (define-public python-querystring-parser
- (package
- (name "python-querystring-parser")
- (version "1.2.4")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "querystring_parser" version))
- (sha256
- (base32
- "0qlar8a0wa003hm2z6wcpb625r6vjj0a70rsni9h8lz0zwfcwkv4"))))
- (build-system python-build-system)
- (arguments
- `(#:phases (modify-phases %standard-phases
- (replace 'check
- (lambda _
- ;; XXX FIXME: This test is broken with Python 3.7:
- ;; https://github.com/bernii/querystring-parser/issues/35
- (substitute* "querystring_parser/tests.py"
- (("self\\.assertEqual\\(self\\.knownValuesNormalized, result\\)")
- "True"))
- (invoke "python" "querystring_parser/tests.py"))))))
- (propagated-inputs
- `(("python-six" ,python-six)))
- (home-page "https://github.com/bernii/querystring-parser")
- (synopsis "QueryString parser that correctly handles nested dictionaries")
- (description
- "This package provides a query string parser for Python and Django
- projects that correctly creates nested dictionaries from sent form/querystring
- data.")
- (license license:expat)))
- (define-public python-tornado
- (package
- (name "python-tornado")
- (version "5.1.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "tornado" version))
- (sha256
- (base32
- "02clqk2116jbnq8lnaqmdw3p52nqrd9ib59r4xz2ll43fpcmhlaf"))))
- (build-system python-build-system)
- (arguments
- '(;; FIXME: Two tests error out with:
- ;; AssertionError: b'Error in atexit._run_exitfuncs:\nFileNotF[44 chars]ry\n' != b''
- ;; #:phases
- ;; (modify-phases %standard-phases
- ;; (replace 'check
- ;; (lambda _
- ;; ;; 'setup.py test' hits an AssertionError on BSD-specific
- ;; ;; "tornado/platform/kqueue.py". This is the supported method:
- ;; (invoke "python" "-m" "tornado.test.runtests")
- ;; #t)))
- #:tests? #f))
- (native-inputs
- `(("python-certifi" ,python-certifi)))
- (home-page "https://www.tornadoweb.org/")
- (synopsis "Python web framework and asynchronous networking library")
- (description
- "Tornado is a Python web framework and asynchronous networking library,
- originally developed at FriendFeed. By using non-blocking network I/O,
- Tornado can scale to tens of thousands of open connections, making it ideal
- for long polling, WebSockets, and other applications that require a long-lived
- connection to each user.")
- (license license:asl2.0)
- (properties `((python2-variant . ,(delay python2-tornado))))))
- (define-public python-tornado-6
- (package
- (name "python-tornado")
- (version "6.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "tornado" version))
- (sha256
- (base32
- "14cpzdv6p6qvk6vn02krdh5rcfdi174ifdbr5s6lcnymgcfyiiik"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "python" "-m" "tornado.test.runtests")
- #t)))))
- (native-inputs
- `(("python-certifi" ,python-certifi)))
- (home-page "https://www.tornadoweb.org/")
- (synopsis "Python web framework and asynchronous networking library")
- (description
- "Tornado is a Python web framework and asynchronous networking library,
- originally developed at FriendFeed. By using non-blocking network I/O,
- Tornado can scale to tens of thousands of open connections, making it ideal
- for long polling, WebSockets, and other applications that require a long-lived
- connection to each user.")
- (license license:asl2.0)))
- (define-public python2-tornado
- (let ((tornado (package-with-python2 (strip-python2-variant python-tornado))))
- (package/inherit tornado
- (propagated-inputs
- `(("python2-backport-ssl-match-hostname"
- ,python2-backport-ssl-match-hostname)
- ("python2-backports-abc" ,python2-backports-abc)
- ("python2-singledispatch" ,python2-singledispatch)
- ,@(package-propagated-inputs tornado))))))
- (define-public python-tornado-http-auth
- (package
- (name "python-tornado-http-auth")
- (version "1.1.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "tornado-http-auth" version))
- (sha256
- (base32 "0hyc5f0a09i5yb99pk4bxpg6w9ichbrb5cv7hc9hff7rxd8w0v0x"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-tornado" ,python-tornado)))
- (home-page "https://github.com/gvalkov/tornado-http-auth")
- (synopsis "Digest and basic authentication module for Tornado")
- (description
- "Provides support for adding authentication to services using the Tornado
- web framework, either via the basic or digest authentication schemes.")
- (license license:asl2.0)))
- (define-public python-terminado
- (package
- (name "python-terminado")
- (version "0.10.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "terminado" version))
- (sha256
- (base32
- "1smvra3sc9sg64w49kfn5yhagshq3x55839748ck5dvxvk4hgza6"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-tornado" ,python-tornado-6)
- ("python-ptyprocess" ,python-ptyprocess)))
- (native-inputs
- `(("python-pytest" ,python-pytest)))
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _ (invoke "pytest" "-vv"))))))
- (home-page "https://github.com/jupyter/terminado")
- (synopsis "Terminals served to term.js using Tornado websockets")
- (description "This package provides a Tornado websocket backend for the
- term.js Javascript terminal emulator library.")
- (license license:bsd-2)))
- (define-public python-wsgi-intercept
- (package
- (name "python-wsgi-intercept")
- (version "1.2.2")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "wsgi_intercept" version))
- (sha256
- (base32
- "0kjj2v2dvmnpdd5h5gk9rzz0f54rhjb0yiz3zg65bmp65slfw65d"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-six" ,python-six)))
- (native-inputs
- `(("python-pytest" ,python-pytest)
- ("python-httplib2" ,python-httplib2)
- ("python-requests" ,python-requests)
- ("python-urllib3" ,python-urllib3)))
- (synopsis "Puts a WSGI application in place of a real URI for testing")
- (description "Wsgi_intercept installs a WSGI application in place of a real
- URI for testing. Testing a WSGI application normally involves starting a
- server at a local host and port, then pointing your test code to that address.
- Instead, this library lets you intercept calls to any specific host/port
- combination and redirect them into a WSGI application importable by your test
- program. Thus, you can avoid spawning multiple processes or threads to test
- your Web app.")
- (home-page "https://github.com/cdent/wsgi-intercept")
- (license license:expat)))
- (define-public python-webob
- (package
- (name "python-webob")
- (version "1.8.6")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "WebOb" version))
- (sha256
- (base32
- "026i3z99nr3px75isa9mbnky5i7rffiv4d124h5kxfjjsxz92fma"))))
- (build-system python-build-system)
- (native-inputs
- `(("python-nose" ,python-nose)))
- (home-page "https://webob.org/")
- (synopsis "WSGI request and response object")
- (description
- "WebOb provides wrappers around the WSGI request environment, and an
- object to help create WSGI responses.")
- (license license:expat)))
- (define-public python2-webob
- (package-with-python2 python-webob))
- (define-public python-zope-event
- (package
- (name "python-zope-event")
- (version "4.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "zope.event" version))
- (sha256
- (base32
- "1ksbc726av9xacml6jhcfyn828hlhb9xlddpx6fcvnlvmpmpvhk9"))))
- (build-system python-build-system)
- (home-page "https://pypi.org/project/zope.event/")
- (synopsis "Event publishing system for Python")
- (description "Zope.event provides an event publishing API, intended for
- use by applications which are unaware of any subscribers to their events. It
- is a simple event-dispatching system on which more sophisticated event
- dispatching systems can be built.")
- (license license:zpl2.1)))
- (define-public python2-zope-event
- (package-with-python2 python-zope-event))
- (define-public python-zope-interface
- (package
- (name "python-zope-interface")
- (version "5.1.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "zope.interface" version))
- (sha256
- (base32
- "03nrl6b8cb600dnnh46y149awvrm0gxyqgwq5hdw3lvys8mw9r20"))))
- (build-system python-build-system)
- (arguments '(#:tests? #f)) ; test suite can't find python-zope-testing
- (native-inputs
- `(("python-coverage" ,python-coverage)
- ("python-nose" ,python-nose)
- ("python-zope-event" ,python-zope-event)
- ("python-zope-testing" ,python-zope-testing)))
- (home-page "https://github.com/zopefoundation/zope.interface")
- (synopsis "Python implementation of the \"design by contract\"
- methodology")
- (description "Zope.interface provides an implementation of \"object
- interfaces\" for Python. Interfaces are a mechanism for labeling objects as
- conforming to a given API or contract.")
- (license license:zpl2.1)))
- (define-public python2-zope-interface
- (package-with-python2 python-zope-interface))
- (define-public python-zope-exceptions
- (package
- (name "python-zope-exceptions")
- (version "4.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "zope.exceptions" version))
- (sha256
- (base32
- "1nkgfwawswmyc6i0b8g3ymvja4mb507m8yhid8s4rbxq3dmqhwhd"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "zope-testrunner" "--test-path=src"))))))
- (native-inputs
- `(("python-zope-testrunner" ,python-zope-testrunner-bootstrap)))
- (propagated-inputs
- `(("python-zope-interface" ,python-zope-interface)))
- (home-page "https://pypi.org/project/zope.exceptions/")
- (synopsis "Zope exceptions")
- (description "Zope.exceptions provides general-purpose exception types
- that have uses outside of the Zope framework.")
- (license license:zpl2.1)))
- (define-public python-zope-exceptions-bootstrap
- (package
- (inherit python-zope-exceptions)
- (arguments `(#:tests? #f))
- (propagated-inputs `())
- (native-inputs `())
- (properties `((hidden? . #t)))))
- (define-public python2-zope-exceptions
- (package-with-python2 python-zope-exceptions))
- (define-public python-zope-testing
- (package
- (name "python-zope-testing")
- (version "4.7")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "zope.testing" version))
- (sha256
- (base32
- "1sh3c3i0m8n8fnhqiry0bk3rr356i56ry7calmn57s1pvv8yhsyn"))))
- (build-system python-build-system)
- (home-page "https://pypi.org/project/zope.testing/")
- (synopsis "Zope testing helpers")
- (description "Zope.testing provides a number of testing utilities for HTML
- forms, HTTP servers, regular expressions, and more.")
- (license license:zpl2.1)))
- (define-public python2-zope-testing
- (package-with-python2 python-zope-testing))
- (define-public python-zope-testrunner
- (package
- (name "python-zope-testrunner")
- (version "5.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "zope.testrunner" version))
- (sha256
- (base32
- "0jyyf1dcz156q95x2y7yw2v420q2xn3cff0c5aci7hmdmcbn0gc7"))))
- (build-system python-build-system)
- (arguments
- '(#:tests? #f)) ; FIXME: Tests can't find zope.interface.
- (native-inputs
- `(("python-zope-testing" ,python-zope-testing)))
- (propagated-inputs
- `(("python-six" ,python-six)
- ("python-zope-exceptions" ,python-zope-exceptions)
- ("python-zope-interface" ,python-zope-interface)))
- (home-page "https://pypi.org/project/zope.testrunner/")
- (synopsis "Zope testrunner script")
- (description "Zope.testrunner provides a script for running Python
- tests.")
- (license license:zpl2.1)))
- (define-public python-zope-testrunner-bootstrap
- (package
- (inherit python-zope-testrunner)
- (arguments `(#:tests? #f))
- (propagated-inputs
- `(("python-six" ,python-six)
- ("python-zope-exceptions" ,python-zope-exceptions-bootstrap)))
- (properties `((hidden? . #t)))))
- (define-public python2-zope-testrunner
- (package-with-python2 python-zope-testrunner))
- (define-public python-zope-i18nmessageid
- (package
- (name "python-zope-i18nmessageid")
- (version "5.0.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "zope.i18nmessageid" version))
- (sha256
- (base32
- "0ndhn4w1qgwkfbwf9vm2bgq418z5g0wmfsgl0d9nz62cd0mi8d4m"))))
- (build-system python-build-system)
- (native-inputs
- `(("python-coverage" ,python-coverage)
- ("python-zope-testrunner" ,python-zope-testrunner)))
- (propagated-inputs
- `(("python-six" ,python-six)))
- (home-page "https://pypi.org/project/zope.i18nmessageid/")
- (synopsis "Message identifiers for internationalization")
- (description "Zope.i18nmessageid provides facilities for declaring
- internationalized messages within program source text.")
- (license license:zpl2.1)))
- (define-public python2-zope-i18nmessageid
- (package-with-python2 python-zope-i18nmessageid))
- (define-public python-zope-schema
- (package
- (name "python-zope-schema")
- (version "6.0.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "zope.schema" version))
- (sha256
- (base32
- "09jg47bxhfg1ahr1jxb5y0cbiszyk1j6fn1r1r7s6svjl3lbryr0"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key inputs outputs tests? #:allow-other-keys)
- (add-installed-pythonpath inputs outputs)
- (if tests?
- (invoke "zope-testrunner" "--test-path=src")
- #t))))))
- (propagated-inputs
- `(("python-zope-event" ,python-zope-event)
- ("python-zope-interface" ,python-zope-interface)))
- (native-inputs
- `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
- ("python-zope-testing" ,python-zope-testing)
- ("python-zope-testrunner" ,python-zope-testrunner)))
- (home-page "https://pypi.org/project/zope.schema/")
- (synopsis "Zope data schemas")
- (description "Zope.scheme provides extensions to zope.interface for
- defining data schemas.")
- (license license:zpl2.1)))
- (define-public python2-zope-schema
- (package-with-python2 python-zope-schema))
- (define-public python-zope-configuration
- (package
- (name "python-zope-configuration")
- (version "4.4.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "zope.configuration" version))
- (sha256
- (base32
- "0g6vrl7y27z9cj5xyrww9xlzk4npj55mgmlrcd9d2nj08jn2pw79"))))
- (build-system python-build-system)
- (native-inputs
- `(("python-manuel" ,python-manuel)
- ("python-zope-testing" ,python-zope-testing)
- ("python-zope-testrunner" ,python-zope-testrunner)))
- (propagated-inputs
- `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
- ("python-zope-interface" ,python-zope-interface)
- ("python-zope-schema" ,python-zope-schema)))
- (home-page "https://pypi.org/project/zope.configuration/")
- (synopsis "Zope Configuration Markup Language")
- (description "Zope.configuration implements ZCML, the Zope Configuration
- Markup Language.")
- (license license:zpl2.1)))
- (define-public python-zope-configuration-bootstrap
- (package
- (inherit python-zope-configuration)
- (arguments `(#:tests? #f))
- (native-inputs `())
- (properties `((hidden? . #t)))))
- (define-public python2-zope-configuration
- (package-with-python2 python-zope-configuration))
- (define-public python-zope-copy
- (package
- (name "python-zope-copy")
- (version "4.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "zope.copy" version))
- (sha256
- (base32
- "06m75434krl57n6p73c2qj55k5i3fixg887j8ss01ih6zw4rvfs7"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "zope-testrunner" "--test-path=src" "\\[]"))))))
- (propagated-inputs
- `(("python-zope-interface" ,python-zope-interface)))
- (native-inputs
- `(("python-zope-component" ,python-zope-component-bootstrap)
- ("python-zope-location" ,python-zope-location-bootstrap)
- ("python-zope-testing" ,python-zope-testing)
- ("python-zope-testrunner" ,python-zope-testrunner)))
- (home-page "https://github.com/zopefoundation/zope.copy")
- (synopsis "Pluggable object copying mechanism")
- (description
- "This package provides a pluggable mechanism for copying persistent objects.")
- (license license:zpl2.1)))
- (define-public python-zope-proxy
- (package
- (name "python-zope-proxy")
- (version "4.3.5")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "zope.proxy" version))
- (sha256
- (base32
- "14h7nyfbl5vpfk0rbviy4ygdfx0yx5kncvg6jpbdb0dhwna0ssm6"))))
- (build-system python-build-system)
- (native-inputs
- `(("python-zope-security" ,python-zope-security-bootstrap)
- ("python-zope-testrunner" ,python-zope-testrunner)))
- (propagated-inputs
- `(("python-zope-interface" ,python-zope-interface)))
- (home-page "https://pypi.org/project/zope.proxy/")
- (synopsis "Generic, transparent proxies")
- (description "Zope.proxy provides generic, transparent proxies for Python.
- Proxies are special objects which serve as mostly-transparent wrappers around
- another object, intervening in the apparent behavior of the wrapped object
- only when necessary to apply the policy (e.g., access checking, location
- brokering, etc.) for which the proxy is responsible.")
- (license license:zpl2.1)))
- (define-public python-zope-proxy-bootstrap
- (package
- (inherit python-zope-proxy)
- (arguments `(#:tests? #f))
- (native-inputs `())
- (properties `((hidden? . #t)))))
- (define-public python2-zope-proxy
- (package-with-python2 python-zope-proxy))
- (define-public python-zope-hookable
- (package
- (name "python-zope-hookable")
- (version "5.0.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "zope.hookable" version))
- (sha256
- (base32
- "0hc82lfr7bk53nvbxvjkibkarngyrzgfk2i6bg8wshl0ly0pdl19"))))
- (build-system python-build-system)
- (native-inputs
- `(("python-coverage" ,python-coverage)
- ("python-zope-testing" ,python-zope-testing)))
- (home-page "https://github.com/zopefoundation/zope.hookable")
- (synopsis "Zope hookable")
- (description "This package supports the efficient creation of hookable
- objects, which are callable objects that are meant to be optionally replaced.
- The idea is that you create a function that does some default thing and make i
- hookable. Later, someone can modify what it does by calling its sethook method
- and changing its implementation. All users of the function, including those
- that imported it, will see the change.")
- (license license:zpl2.1)))
- (define-public python-zope-location
- (package
- (name "python-zope-location")
- (version "4.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "zope.location" version))
- (sha256
- (base32
- "1b40pzl8v00d583d3gsxv1qjdw2dhghlgkbgxl3m07d5r3izj857"))))
- (build-system python-build-system)
- (arguments
- '(#:tests? #f)) ; FIXME: Tests can't find zope.interface.
- (native-inputs
- `(("python-zope-testrunner" ,python-zope-testrunner)))
- (propagated-inputs
- `(("python-zope-interface" ,python-zope-interface)
- ("python-zope-proxy" ,python-zope-proxy)
- ("python-zope-schema" ,python-zope-schema)))
- (home-page "https://pypi.org/project/zope.location/")
- (synopsis "Zope location library")
- (description "Zope.location implements the concept of \"locations\" in
- Zope3, which are are special objects that have a structural location.")
- (license license:zpl2.1)))
- (define-public python-zope-location-bootstrap
- (package
- (inherit python-zope-location)
- (arguments `(#:tests? #f))
- (native-inputs `())
- (properties `((hidden? . #t)))))
- (define-public python2-zope-location
- (package-with-python2 python-zope-location))
- (define-public python-zope-security
- (package
- (name "python-zope-security")
- (version "5.1.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "zope.security" version))
- (sha256
- (base32
- "11lfw67cigscfax9c5j63xcvz2qcj724zx5fcdqyc94am2glim0h"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-zope-component" ,python-zope-component)
- ("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
- ("python-zope-interface" ,python-zope-interface)
- ("python-zope-location" ,python-zope-location)
- ("python-zope-proxy" ,python-zope-proxy)
- ("python-zope-schema" ,python-zope-schema)))
- (native-inputs
- `(("python-btrees" ,python-btrees)
- ("python-zope-component" ,python-zope-component-bootstrap)
- ("python-zope-configuration" ,python-zope-configuration-bootstrap)
- ("python-zope-location" ,python-zope-location-bootstrap)
- ("python-zope-testing" ,python-zope-testing)
- ("python-zope-testrunner" ,python-zope-testrunner)))
- (home-page "https://pypi.org/project/zope.security/")
- (synopsis "Zope security framework")
- (description "Zope.security provides a generic mechanism to implement
- security policies on Python objects.")
- (license license:zpl2.1)))
- (define-public python-zope-security-bootstrap
- (package
- (inherit python-zope-security)
- (arguments `(#:tests? #f))
- (propagated-inputs
- `(("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
- ("python-zope-interface" ,python-zope-interface)
- ("python-zope-proxy" ,python-zope-proxy-bootstrap)
- ("python-zope-schema" ,python-zope-schema)))
- (native-inputs `())
- (properties `((hidden? . #t)))))
- (define-public python2-zope-security
- (package-with-python2 python-zope-security))
- (define-public python-zope-component
- (package
- (name "python-zope-component")
- (version "4.6.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "zope.component" version))
- (sha256
- (base32
- "14iwp95hh6q5dj4k9h1iw75cbp89bs27nany4dinyglb44c8jqli"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (add-installed-pythonpath inputs outputs)
- (invoke "python" "setup.py" "test"))))))
- (native-inputs
- `(("python-persistent" ,python-persistent)
- ("python-zope-configuration" ,python-zope-configuration-bootstrap)
- ("python-zope-i18nmessageid" ,python-zope-i18nmessageid)
- ("python-zope-location" ,python-zope-location-bootstrap)
- ("python-zope-proxy" ,python-zope-proxy-bootstrap)
- ("python-zope-security" ,python-zope-security-bootstrap)
- ("python-zope-testing" ,python-zope-testing)
- ("python-zope-testrunner" ,python-zope-testrunner)))
- (propagated-inputs
- `(("python-zope-deferredimport" ,python-zope-deferredimport)
- ("python-zope-deprecation" ,python-zope-deprecation)
- ("python-zope-event" ,python-zope-event)
- ("python-zope-hookable" ,python-zope-hookable)
- ("python-zope-interface" ,python-zope-interface)))
- (home-page "https://github.com/zopefoundation/zope.component")
- (synopsis "Zope Component Architecture")
- (description "Zope.component represents the core of the Zope Component
- Architecture. Together with the zope.interface package, it provides
- facilities for defining, registering and looking up components.")
- (license license:zpl2.1)))
- (define-public python-zope-component-bootstrap
- (package
- (inherit python-zope-component)
- (arguments `(#:tests? #f))
- (native-inputs `())
- (properties `((hidden? . #t)))))
- (define-public python2-zope-component
- (package-with-python2 python-zope-component))
- (define-public python-zope-deferredimport
- (package
- (name "python-zope-deferredimport")
- (version "4.3.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "zope.deferredimport" version))
- (sha256
- (base32
- "1q89v54dwniiqypjbwywwdfjdr4kdkqlyqsgrpplgvsygdg39cjp"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-zope-proxy" ,python-zope-proxy)))
- (native-inputs
- `(("python-zope-testrunner" ,python-zope-testrunner)))
- (home-page "https://github.com/zopefoundation/zope.deferredimport")
- (synopsis "Defer imports until used by code")
- (description
- "Often, especially for package modules, you want to import names for
- convenience, but not actually perform the imports until necessary. The
- @code{zope.deferredimport} package provided facilities for defining names in
- modules that will be imported from somewhere else when used. You can also cause
- deprecation warnings to be issued when a variable is used.")
- (license license:zpl2.1)))
- (define-public python-ndg-httpsclient
- (package
- (name "python-ndg-httpsclient")
- (version "0.5.1")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "ndg_httpsclient" version))
- (sha256
- (base32
- "0412b7i1s4vj7lz9r72nmb28h9syd4q2x89bdirkkc3a6z8awbyp"))))
- (build-system python-build-system)
- (arguments
- '(;; The tests appear to require networking.
- #:tests? #f))
- (propagated-inputs
- `(("python-pyopenssl" ,python-pyopenssl)))
- (synopsis "HTTPS support for Python's httplib and urllib2")
- (description "This is a HTTPS client implementation for httplib and urllib2
- based on PyOpenSSL. PyOpenSSL provides a more fully-featured SSL implementation
- over the default provided with Python and, importantly, enables full
- verification of the SSL peer.")
- (home-page "https://github.com/cedadev/ndg_httpsclient/")
- (license license:bsd-3)))
- ;; python2-openssl requires special care, so package-with-python2 is
- ;; insufficient.
- (define-public python2-ndg-httpsclient
- (package/inherit python-ndg-httpsclient
- (name "python2-ndg-httpsclient")
- (arguments
- (substitute-keyword-arguments (package-arguments python-ndg-httpsclient)
- ((#:python _) python-2)))
- (propagated-inputs
- `(("python2-pyopenssl" ,python2-pyopenssl)))))
- (define-public python-websocket-client
- (package
- (name "python-websocket-client")
- (version "0.54.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "websocket_client" version))
- (sha256
- (base32
- "0j88zmikaypf38lvpkf4aaxrjp9j07dmy5ghj7kli0fv3p4n45g5"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-six" ,python-six)))
- (home-page "https://github.com/liris/websocket-client")
- (synopsis "WebSocket client for Python")
- (description "The Websocket-client module provides the low level APIs for
- WebSocket usage in Python programs.")
- (properties `((python2-variant . ,(delay python2-websocket-client))))
- (license license:lgpl2.1+)))
- (define-public python2-websocket-client
- (let ((base (package-with-python2
- (strip-python2-variant python-websocket-client))))
- (package/inherit base
- (native-inputs
- `(("python2-backport-ssl-match-hostname"
- ,python2-backport-ssl-match-hostname)
- ,@(package-native-inputs base))))))
- (define-public python-purl
- (package
- (name "python-purl")
- (version "1.5")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "purl" version))
- (sha256
- (base32
- "15ibnz1xrh5msmn04j0nr00sz4n7jwx6cwd6zlx99kkz3vpin53m"))))
- (build-system python-build-system)
- (propagated-inputs `(("python-six" ,python-six)))
- (home-page
- "https://github.com/codeinthehole/purl")
- (synopsis
- "Python package for URL manipulation")
- (description
- "Purl is a Python package for handling URLs.")
- (license license:expat)))
- (define-public python-apiron
- (package
- (name "python-apiron")
- (version "5.1.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "apiron" version))
- (sha256
- (base32 "1qwbqn47sf0aqznj1snbv37v8ijx476qqkjf5l9pac7xjkxsr8qk"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (add-installed-pythonpath inputs outputs)
- (invoke "pytest" "-vv" "--cov" "-k"
- ;; This test tries to connect to the internet.
- "not test_call"))))))
- (propagated-inputs
- `(("python-requests" ,python-requests)))
- (native-inputs
- `(("python-pytest" ,python-pytest)
- ("python-pytest-cov" ,python-pytest-cov)))
- (home-page "https://github.com/ithaka/apiron")
- (synopsis "Python wrapper for interacting with RESTful APIs")
- (description
- "@code{apiron} provides a declarative, structured configuration of
- services and endpoints with a unified interface for interacting with RESTful
- APIs.")
- (license license:expat)))
- (define-public python-beren
- (package
- (name "python-beren")
- (version "0.7.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "beren" version))
- (sha256
- (base32 "1v3mdwfqsyza892zvs124ym9w1bkng1j56b7l4dwfjir3723xcgf"))))
- (build-system python-build-system)
- (arguments
- ;; The test tries to open a connection to a remote server.
- `(#:tests? #f))
- (propagated-inputs
- `(("python-apiron" ,python-apiron)))
- (home-page "https://github.com/teffalump/beren")
- (synopsis "REST client for Orthanc DICOM servers")
- (description
- "@code{beren} provides a REST client for Orthanc, a DICOM server.")
- (license license:gpl3+)))
- (define-public python-requests
- (package
- (name "python-requests")
- (version "2.25.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "requests" version))
- (sha256
- (base32
- "1y6mb8c0ipd64d5axq2p368yxndp3f966hmabjka2q2a5y9hn6kz"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-certifi" ,python-certifi)
- ("python-chardet" ,python-chardet)
- ("python-idna" ,python-idna)
- ("python-urllib3" ,python-urllib3)))
- (arguments
- ;; FIXME: Some tests require network access.
- '(#:tests? #f))
- (home-page "http://python-requests.org/")
- (synopsis "Python HTTP library")
- (description
- "Requests is a Python HTTP client library. It aims to be easier to use
- than Python’s urllib2 library.")
- (license license:asl2.0)))
- ;; Some software requires an older version of Requests, notably Docker/Docker
- ;; Compose.
- (define-public python-requests-2.20
- (package (inherit python-requests)
- (version "2.20.1")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "requests" version))
- (sha256
- (base32
- "0qzj6cgv3k9wyj7wlxgz7xq0cfg4jbbkfm24pp8dnhczwl31527a"))))
- (propagated-inputs
- `(("python-urllib3" ,python-urllib3-1.24)
- ("python-idna" ,python-idna-2.7)
- ,@(package-propagated-inputs python-requests)))))
- (define-public python2-requests
- (package-with-python2 python-requests))
- (define-public python-requests-unixsocket
- (package
- (name "python-requests-unixsocket")
- (version "0.2.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "requests-unixsocket" version))
- (sha256
- (base32
- "1sn12y4fw1qki5gxy9wg45gmdrxhrndwfndfjxhpiky3mwh1lp4y"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'relax-requirements
- (lambda _
- (substitute* "test-requirements.txt"
- (("(.*)==(.*)" _ name) (string-append name "\n")))))
- (replace 'check
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (add-installed-pythonpath inputs outputs)
- (invoke "pytest" "-vv"))))))
- (propagated-inputs
- `(("python-pbr" ,python-pbr)
- ("python-requests" ,python-requests)
- ("python-urllib3" ,python-urllib3)))
- (native-inputs
- `(("python-apipkg" ,python-apipkg)
- ("python-appdirs" ,python-appdirs)
- ("python-execnet" ,python-execnet)
- ("python-packaging" ,python-packaging)
- ("python-pep8" ,python-pep8)
- ("python-py" ,python-py)
- ("python-pyparsing" ,python-pyparsing)
- ("python-pytest" ,python-pytest)
- ("python-pytest-cache" ,python-pytest-cache)
- ("python-pytest-pep8" ,python-pytest-pep8)
- ("python-six" ,python-six)
- ("python-waitress" ,python-waitress)))
- (home-page "https://github.com/msabramo/requests-unixsocket")
- (synopsis "Talk HTTP via a UNIX domain socket")
- (description
- "This Python package lets you use the @code{requests} library to talk
- HTTP via a UNIX domain socket.")
- (license license:asl2.0)))
- (define-public python-requests_ntlm
- (package
- (name "python-requests_ntlm")
- (version "1.1.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "requests_ntlm" version))
- (sha256
- (base32
- "0wgbqzaq9w7bas16b7brdb75f91bh3275fb459093bk1ihpck2ci"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-cryptography" ,python-cryptography)
- ("python-ntlm-auth" ,python-ntlm-auth)
- ("python-requests" ,python-requests)))
- (home-page "https://github.com/requests/requests-ntlm")
- (synopsis
- "NTLM authentication support for Requests")
- (description
- "This package allows for HTTP NTLM authentication using the requests
- library.")
- (license license:isc)))
- (define-public python-requests-mock
- (package
- (name "python-requests-mock")
- (version "1.8.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "requests-mock" version))
- (sha256
- (base32
- "09nj8fmyj7xz2mgwyvbw0fl9zybmx2d3qd2hf529vvjc9s24d3z6"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-requests" ,python-requests)
- ("python-six" ,python-six)))
- (native-inputs
- `(("python-pbr" ,python-pbr)
- ("python-discover" ,python-discover)
- ("python-docutils" ,python-docutils)
- ("python-fixtures" ,python-fixtures)
- ("python-mock" ,python-mock)
- ("python-purl" ,python-purl)
- ("python-pytest" ,python-pytest)
- ("python-sphinx" ,python-sphinx)
- ("python-testrepository" ,python-testrepository)))
- (home-page "https://requests-mock.readthedocs.org/")
- (synopsis "Mock out responses from the requests package")
- (description
- "This module provides a building block to stub out the HTTP requests
- portions of your testing code.")
- (license license:asl2.0)))
- (define-public python-requests-toolbelt
- (package
- (name "python-requests-toolbelt")
- (version "0.8.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "requests-toolbelt" version))
- (sha256
- (base32
- "1dc7l42i4080r8i4m9fj51jx367lqkai170vrv7wd93gdj9k39gn"))))
- (build-system python-build-system)
- (native-inputs
- `(("python-betamax" ,python-betamax)
- ("python-mock" ,python-mock)
- ("python-pytest" ,python-pytest)))
- (propagated-inputs
- `(("python-requests" ,python-requests)))
- (synopsis "Extensions to python-requests")
- (description "This is a toolbelt of useful classes and functions to be used
- with python-requests.")
- (home-page "https://github.com/sigmavirus24/requests-toolbelt")
- (license license:asl2.0)))
- (define-public python2-requests-toolbelt
- (package-with-python2 python-requests-toolbelt))
- (define-public python-requests-toolbelt-0.9.1
- (package
- (inherit python-requests-toolbelt)
- (version "0.9.1")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "requests-toolbelt" version))
- (sha256
- (base32
- "1h3gm88dcjbd7gm229a7x5qkkhnsqsjz0m0l2xyavm2ab3a8k04n"))))
- (arguments
- `(;; FIXME: Some tests require network access.
- #:tests? #f))))
- (define-public python-requests-ftp
- (package
- (name "python-requests-ftp")
- (version "0.3.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "requests-ftp" version))
- (sha256
- (base32
- "0yh5v21v36dsjsgv4y9dx4mmz35741l5jf6pbq9w19d8rfsww13m"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-requests" ,python-requests)))
- (home-page
- "https://github.com/Lukasa/requests-ftp")
- (synopsis "FTP Transport Adapter for Requests")
- (description
- "Requests-FTP is an implementation of a simple FTP transport
- adapter for use with the Requests library.")
- (license license:asl2.0)))
- (define-public python-oauthlib
- (package
- (name "python-oauthlib")
- (version "3.1.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "oauthlib" version))
- (sha256
- (base32
- "12gqnabwck30gdlpwm6af3s28qm9p2yc7b1w8s4fk9ncbz1irr5y"))))
- (build-system python-build-system)
- (arguments
- `(#:phases (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "pytest" "-vv"))))))
- (native-inputs
- `(("python-pytest" ,python-pytest)
- ("python-pytest-cov" ,python-pytest-cov)
- ("python-mock" ,python-mock)))
- (propagated-inputs
- `(("python-cryptography" ,python-cryptography)
- ("python-pyjwt" ,python-pyjwt)
- ("python-blinker" ,python-blinker)))
- (home-page "https://github.com/oauthlib/oauthlib")
- (synopsis "OAuth implementation for Python")
- (description
- "Oauthlib is a generic, spec-compliant, thorough implementation of the
- OAuth request-signing logic.")
- (license license:bsd-3)))
- (define-public python2-oauthlib
- (package-with-python2 python-oauthlib))
- (define-public python-rauth
- (package
- (name "python-rauth")
- (version "0.7.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "rauth" version))
- (sha256
- (base32
- "02kv8w8l98ky223avyq7vw7x1f2ya9chrm59r77ylq45qb0xnk2j"))))
- (build-system python-build-system)
- (arguments
- `(#:test-target "check"))
- (propagated-inputs
- `(("python-requests" ,python-requests)))
- (home-page "https://github.com/litl/rauth")
- (synopsis "Python library for OAuth 1.0/a, 2.0, and Ofly")
- (description
- "Rauth is a Python library for OAuth 1.0/a, 2.0, and Ofly. It also
- provides service wrappers for convenient connection initialization and
- authenticated session objects providing things like keep-alive.")
- (license license:expat)
- (properties `((python2-variant . ,(delay python2-rauth))))))
- (define-public python2-rauth
- (let ((base (package-with-python2 (strip-python2-variant python-rauth))))
- (package/inherit base
- (native-inputs `(("python2-unittest2" ,python2-unittest2)
- ,@(package-native-inputs base))))))
- (define-public python-urllib3
- (package
- (name "python-urllib3")
- (version "1.26.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "urllib3" version))
- (sha256
- (base32
- "0dw9w9bs3hmr5dp3r3h43jyzzb1g1046ag7lj8pqf58i4kvj3c77"))))
- (build-system python-build-system)
- (arguments `(#:tests? #f))
- (propagated-inputs
- `(;; These 5 inputs are used to build urrlib3[secure]
- ("python-certifi" ,python-certifi)
- ("python-cryptography" ,python-cryptography)
- ("python-idna" ,python-idna)
- ("python-pyopenssl" ,python-pyopenssl)
- ("python-pysocks" ,python-pysocks)))
- (home-page "https://urllib3.readthedocs.io/")
- (synopsis "HTTP library with thread-safe connection pooling")
- (description
- "Urllib3 supports features left out of urllib and urllib2 libraries. It
- can reuse the same socket connection for multiple requests, it can POST files,
- supports url redirection and retries, and also gzip and deflate decoding.")
- (properties `((python2-variant . ,(delay python2-urllib3))))
- (license license:expat)))
- ;; Some software requires an older version of urllib3, notably Docker.
- (define-public python-urllib3-1.24
- (package (inherit python-urllib3)
- (version "1.24.3")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "urllib3" version))
- (sha256
- (base32
- "1x0slqrv6kixkbcdnxbglvjliwhc1payavxjvk8fvbqjrnasd4r3"))))))
- (define-public python2-urllib3
- (let ((base (package-with-python2 (strip-python2-variant python-urllib3))))
- (package/inherit
- base
- (propagated-inputs
- `(("python-ipaddress" ,python2-ipaddress)
- ,@(package-propagated-inputs base))))))
- (define-public awscli
- (package
- ;; Note: updating awscli typically requires updating botocore as well.
- (name "awscli")
- (version "1.18.203")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri name version))
- (sha256
- (base32
- "128zg24961j8nmnq2dxqg6a7zwh3qgv87cmvclsdqwwih9nigxv9"))))
- (build-system python-build-system)
- (arguments
- ;; FIXME: The 'pypi' release does not contain tests.
- '(#:tests? #f
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'fix-reference-to-groff
- (lambda _
- (substitute* "awscli/help.py"
- (("if not self._exists_on_path\\('groff'\\):") "")
- (("raise ExecutableNotFoundError\\('groff'\\)") "")
- (("cmdline = \\['groff'")
- (string-append "cmdline = ['" (which "groff") "'")))
- #t)))))
- (propagated-inputs
- `(("python-colorama" ,python-colorama)
- ("python-botocore" ,python-botocore)
- ("python-s3transfer" ,python-s3transfer)
- ("python-docutils" ,python-docutils)
- ("python-pyyaml" ,python-pyyaml)
- ("python-rsa" ,python-rsa)))
- (native-inputs
- `(("groff" ,groff)))
- (home-page "https://aws.amazon.com/cli/")
- (synopsis "Command line client for AWS")
- (description "AWS CLI provides a unified command line interface to the
- Amazon Web Services (AWS) API.")
- (license license:asl2.0)))
- (define-public python-wsgiproxy2
- (package
- (name "python-wsgiproxy2")
- (version "0.4.6")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "WSGIProxy2" version ".tar.gz"))
- (sha256
- (base32 "16jch5nic0hia28lps3c678s9s9mjdq8n87igxncjg0rpi5adqnf"))))
- (build-system python-build-system)
- (native-inputs
- `(("python-webtest" ,python-webtest)))
- (propagated-inputs
- `(("python-requests" ,python-requests)
- ("python-six" ,python-six)
- ("python-urllib3" ,python-urllib3)
- ("python-webob" ,python-webob)))
- (home-page "https://github.com/gawel/WSGIProxy2/")
- (synopsis "WSGI Proxy with various http client backends")
- (description "WSGI turns HTTP requests into WSGI function calls.
- WSGIProxy turns WSGI function calls into HTTP requests.
- It also includes code to sign requests and pass private data,
- and to spawn subprocesses to handle requests.")
- (license license:expat)))
- (define-public python-pastedeploy
- (package
- (name "python-pastedeploy")
- (version "2.1.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "PasteDeploy" version))
- (sha256
- (base32 "05s88qdjdwd9d9qs13fap7nqgxs7qs5qfzzjbrc5va13k2mxdskd"))))
- (build-system python-build-system)
- (arguments
- '(#:test-target "pytest"))
- (native-inputs
- `(("python-pytest" ,python-pytest)
- ("python-pytest-runner" ,python-pytest-runner)))
- (home-page "https://pylonsproject.org/")
- (synopsis
- "Load, configure, and compose WSGI applications and servers")
- (description
- "This tool provides code to load WSGI applications and servers from URIs;
- these URIs can refer to Python Eggs for INI-style configuration files. Paste
- Script provides commands to serve applications based on this configuration
- file.")
- (license license:expat)))
- (define-public python2-pastedeploy
- (package-with-python2 python-pastedeploy))
- (define-public python-webtest
- (package
- (name "python-webtest")
- (version "2.0.35")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "WebTest" version))
- (sha256
- (base32 "11xhgdj251zkvz5w30fvspii08ki2vrpr1im9sph1wmlnasnihda"))))
- (build-system python-build-system)
- (arguments
- ;; Tests require python-pyquery, which creates a circular dependency.
- `(#:tests? #f))
- (propagated-inputs
- `(("python-waitress" ,python-waitress)
- ("python-webob" ,python-webob)
- ("python-six" ,python-six)
- ("python-beautifulsoup4" ,python-beautifulsoup4)))
- (home-page "https://docs.pylonsproject.org/projects/webtest/")
- (synopsis "Helper to test WSGI applications")
- (description "Webtest allows you to test your Python web applications
- without starting an HTTP server. It supports anything that supports the
- minimum of WSGI.")
- (license license:expat)))
- (define-public python2-webtest
- (package-with-python2 python-webtest))
- (define-public python-flask
- (package
- (name "python-flask")
- (version "2.0.1")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "Flask" version))
- (sha256
- (base32
- "0mcgwq7b4qd99mf5bsvs3wphchxarf8kgil4hwww3blj31xjak0w"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "pytest" "-vv" "tests")))))))
- (native-inputs
- `(("python-pytest" ,python-pytest)))
- (propagated-inputs
- `(("python-itsdangerous" ,python-itsdangerous)
- ("python-jinja2" ,python-jinja2)
- ("python-click" ,python-click)
- ("python-werkzeug" ,python-werkzeug)))
- (home-page "https://www.palletsprojects.com/p/flask/")
- (synopsis "Microframework based on Werkzeug, Jinja2 and good intentions")
- (description "Flask is a micro web framework based on the Werkzeug toolkit
- and Jinja2 template engine. It is called a micro framework because it does not
- presume or force a developer to use a particular tool or library.")
- (license license:bsd-3)))
- (define-public python-flask-wtf
- (package
- (name "python-flask-wtf")
- (version "0.14.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "Flask-WTF" version))
- (sha256
- (base32
- "086pvg2x69n0nczcq7frknfjd8am1zdy8qqpva1sanwb02hf65yl"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "pytest" "-vv"))))))
- (propagated-inputs
- `(("python-flask-babel" ,python-flask-babel)
- ("python-babel" ,python-babel)
- ("python-wtforms" ,python-wtforms)))
- (native-inputs
- `(("python-pytest" ,python-pytest)))
- (home-page "https://github.com/lepture/flask-wtf")
- (synopsis "Simple integration of Flask and WTForms")
- (description "Flask-WTF integrates Flask and WTForms, including CSRF, file
- upload, and reCAPTCHA.")
- (license license:bsd-3)))
- (define-public python-flask-multistatic
- (package
- (name "python-flask-multistatic")
- (version "1.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "flask-multistatic" version))
- (sha256
- (base32
- "0p4v50rwv64wcd0zlq7rzl4waprwr4hj19s3cgf1isywa7jcisgm"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-flask" ,python-flask)))
- (home-page "https://pagure.io/flask-multistatic")
- (synopsis "Flask plugin to allow overriding static files")
- (description "@code{flask-multistatic} is a flask plugin that adds support
- for overriding static files.")
- (license license:gpl3+)))
- (define-public python-cookies
- (package
- (name "python-cookies")
- (version "2.2.1")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "cookies" version))
- (sha256
- (base32
- "13pfndz8vbk4p2a44cfbjsypjarkrall71pgc97glk5fiiw9idnn"))))
- (build-system python-build-system)
- (arguments
- `(;; test are broken: https://gitlab.com/sashahart/cookies/issues/3
- #:tests? #f))
- (native-inputs
- `(("python-pytest" ,python-pytest)))
- (synopsis "HTTP cookie parser and renderer")
- (description "A RFC 6265-compliant HTTP cookie parser and renderer in
- Python.")
- (home-page "https://gitlab.com/sashahart/cookies")
- (license license:expat)))
- (define-public python2-cookies
- (package-with-python2 python-cookies))
- (define-public python-responses
- (package
- (name "python-responses")
- (version "0.10.6")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "responses" version))
- (sha256
- (base32
- "147pacwkkqy3qf3hr33fnl1xbzgw0zsm3qppvvy9qhq8h069qbah"))))
- (build-system python-build-system)
- (arguments
- `(;; Test suite is not distributed:
- ;; https://github.com/getsentry/responses/issues/38
- #:tests? #f))
- (native-inputs
- `(("python-mock" ,python-mock)))
- (propagated-inputs
- `(("python-requests" ,python-requests)
- ("python-cookies" ,python-cookies)
- ("python-six" ,python-six)))
- (home-page "https://github.com/getsentry/responses")
- (synopsis "Utility for mocking out the `requests` Python library")
- (description "A utility library for mocking out the `requests` Python
- library.")
- (license license:asl2.0)))
- (define-public python2-responses
- (package-with-python2 python-responses))
- (define-public python-grequests
- (package
- (name "python-grequests")
- (version "0.3.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "grequests" version))
- (sha256
- (base32
- "1j9icncllbkv7x5719b20mx670c6q1jrdx1sakskkarvx3pc8h8g"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-gevent" ,python-gevent)
- ("python-requests" ,python-requests)))
- (native-inputs
- `(("python-nose" ,python-nose)
- ("python-zope.interface" ,python-zope-interface)
- ("python-zope.event" ,python-zope-event)))
- (home-page "https://github.com/kennethreitz/grequests")
- (synopsis "Python library for asynchronous HTTP requests")
- (description "GRequests is a Python library that allows you to use
- @code{Requests} with @code{Gevent} to make asynchronous HTTP Requests easily")
- (license license:bsd-2)))
- (define-public python-dpkt
- (package
- (name "python-dpkt")
- (version "1.9.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "dpkt" version))
- (sha256
- (base32
- "1d28r8pmhzjjd6hrn1xcddinfhwv8lcl1s59ygmqa8kfmz5pkrgl"))))
- (build-system python-build-system)
- (home-page "https://github.com/kbandla/dpkt")
- (synopsis "Packet generator and parser for TCP/IP protocols")
- (description "The dpkt module is a fast, simple packet generator and parser
- for the basic TCP/IP protocols.")
- (license license:bsd-3)))
- (define-public python-geventhttpclient
- (package
- (name "python-geventhttpclient")
- (version "1.4.4")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "geventhttpclient" version))
- (sha256
- (base32
- "1hy4qm9d3r69n5199i7qjji1v7718n7cxbj8ggi0njify99m37pm"))
- (modules '((guix build utils)))
- (snippet
- '(begin
- ;; Delete pre-compiled files.
- (for-each delete-file (find-files "src/geventhttpclient"
- ".*\\.pyc"))))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'delete-network-tests
- (lambda _
- (delete-file "src/geventhttpclient/tests/test_client.py")))
- (add-after 'unpack 'fix-compatibility-issue
- ;; See: https://github.com/gwik/geventhttpclient/issues/137.
- (lambda _
- (substitute* "src/geventhttpclient/tests/test_ssl.py"
- ((".*sock.last_seen_sni = None.*")
- ""))))
- (replace 'check
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (add-installed-pythonpath inputs outputs)
- (invoke "py.test" "src/geventhttpclient/tests" "-v"
- ;; Append the test modules to sys.path to avoid
- ;; namespace conflict which breaks SSL tests.
- "--import-mode=append"
- ;; XXX: This test fails with Python 3.8:
- ;; https://github.com/gwik/geventhttpclient/issues/119
- "-k" "not test_cookielib_compatibility"))))))
- (native-inputs
- `(("python-dpkt" ,python-dpkt)
- ("python-pytest" ,python-pytest)))
- (propagated-inputs
- `(("python-certifi" ,python-certifi)
- ("python-gevent" ,python-gevent)
- ("python-six" ,python-six)))
- (home-page "https://github.com/gwik/geventhttpclient")
- (synopsis "HTTP client library for gevent")
- (description "@code{python-geventhttpclient} is a high performance,
- concurrent HTTP client library for python using @code{gevent}.")
- (license license:expat)))
- (define-public python-requests-oauthlib
- (package
- (name "python-requests-oauthlib")
- (version "1.2.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "requests-oauthlib" version))
- (sha256
- (base32
- "0mrglgcvq7k48pf27s4gifdk0za8xmgpf55jy15yjj471qrk6rdx"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- ;; removes tests that require network access
- (add-before 'check 'pre-check
- (lambda _
- (delete-file "tests/test_core.py")
- #t)))))
- (native-inputs
- `(("python-pyjwt" ,python-pyjwt)
- ("python-requests-mock" ,python-requests-mock)
- ("python-mock" ,python-mock)))
- (propagated-inputs
- `(("python-oauthlib" ,python-oauthlib)
- ("python-requests" ,python-requests)))
- (home-page
- "https://github.com/requests/requests-oauthlib")
- (synopsis
- "OAuthlib authentication support for Requests")
- (description
- "Requests-OAuthlib uses the Python Requests and OAuthlib libraries to
- provide an easy-to-use Python interface for building OAuth1 and OAuth2 clients.")
- (license license:isc)))
- (define-public python-url
- (package
- (name "python-url")
- (version "0.2.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "url" version))
- (sha256
- (base32
- "0v879yadcz9qxfl41ak6wkga1kimp9cflla9ddz03hjjvgkqy5ki"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-publicsuffix" ,python-publicsuffix)))
- (native-inputs
- `(("python-coverage" ,python-coverage)
- ("python-nose" ,python-nose)))
- (arguments
- `(#:tests? #f)) ; FIXME: tests fail with "ImportError: No module named 'tests'"
- (home-page "https://github.com/seomoz/url-py")
- (synopsis "URL Parsing")
- (description "Library for parsing urls.")
- (license license:expat)
- (properties `((python2-variant . ,(delay python2-url))))))
- (define-public python2-url
- (let ((base (package-with-python2 (strip-python2-variant python-url))))
- (package/inherit base
- (propagated-inputs
- `(("python2-publicsuffix" ,python2-publicsuffix))))))
- (define-public python-cachecontrol
- (package
- (name "python-cachecontrol")
- (version "0.12.5")
- (source
- (origin
- (method git-fetch)
- ;; Pypi does not have tests.
- (uri (git-reference
- (url "https://github.com/ionrock/cachecontrol")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "03lgc65sl04n0cgzmmgg99bk83f9i6k8yrmcd4hpl46q1pymn0kz"))))
- (build-system python-build-system)
- (arguments
- ;; Versions > 0.11.6 depend on CherryPy for testing.
- ;; It's too much work to package CherryPy for now.
- `(#:tests? #f))
- (propagated-inputs
- `(("python-requests" ,python-requests)
- ("python-msgpack" ,python-msgpack)
- ("python-lockfile" ,python-lockfile)))
- (home-page "https://github.com/ionrock/cachecontrol")
- (synopsis "The httplib2 caching algorithms for use with requests")
- (description "CacheControl is a port of the caching algorithms in
- @code{httplib2} for use with @code{requests} session objects.")
- (license license:asl2.0)))
- (define-public python-cachecontrol-0.11
- (package
- (inherit python-cachecontrol)
- (name "python-cachecontrol")
- (version "0.11.7")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "CacheControl" version))
- (sha256
- (base32
- "07jsfhlbcwgqg6ayz8nznzaqg5rmxqblbzxz1qvg5wc44pcjjy4g"))))))
- (define-public python-betamax
- (package
- (name "python-betamax")
- (version "0.8.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "betamax" version))
- (sha256
- (base32
- "1hki1c2vs7adq7zr56wi6i5bhrkia4s2ywpv2c98ibnczz709w2v"))))
- (build-system python-build-system)
- (arguments
- '(;; Many tests fail because they require networking.
- #:tests? #f))
- (propagated-inputs
- `(("python-requests" ,python-requests)))
- (home-page "https://github.com/sigmavirus24/betamax")
- (synopsis "Record HTTP interactions with python-requests")
- (description "Betamax will record your test suite's HTTP interactions and
- replay them during future tests. It is designed to work with python-requests.")
- (license license:expat)))
- (define-public python2-betamax
- (package-with-python2 python-betamax))
- (define-public python-betamax-matchers
- (package
- (name "python-betamax-matchers")
- (version "0.4.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "betamax-matchers" version))
- (sha256
- (base32
- "07qpwjyq2i2aqhz5iwghnj4pqr2ys5n45v1vmpcfx9r5mhwrsq43"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-betamax" ,python-betamax)
- ("python-requests-toolbelt" ,python-requests-toolbelt)))
- (home-page "https://github.com/sigmavirus24/betamax_matchers")
- (synopsis "VCR imitation for python-requests")
- (description "@code{betamax-matchers} provides a set of Matchers for
- Betamax.")
- (license license:asl2.0)))
- (define-public python2-betamax-matchers
- (package-with-python2 python-betamax-matchers))
- (define-public python-betamax-serializers
- (package
- (name "python-betamax-serializers")
- (version "0.2.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "betamax-serializers" version))
- (sha256
- (base32 "0ja9isbjmzzhxdj69s0kdsvw8nkp073w6an6a4liy5vk3fdl2p1l"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-betamax" ,python-betamax)
- ("python-pyyaml" ,python-pyyaml)))
- (synopsis "Set of third-party serializers for Betamax")
- (description "Betamax-Serializers are an experimental set of Serializers for
- Betamax that may possibly end up in the main package.")
- (home-page "https://gitlab.com/betamax/serializers")
- (license license:asl2.0)))
- (define-public python-s3transfer
- (package
- (name "python-s3transfer")
- (version "0.3.3")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "s3transfer" version))
- (sha256
- (base32
- "1nzp5kwmy9669334shcz9ipg89jgpdqhrmbkgdg18r7wmvi3f6lj"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'patch
- (lambda _
- ;; There's a small issue with one test with Python 3.8, this
- ;; change has been suggested upstream:
- ;; https://github.com/boto/s3transfer/pull/164
- (substitute* "tests/unit/test_s3transfer.py"
- (("super\\(FailedDownloadParts, self\\)\\.submit\\(function\\)")
- "futures.Future()"))
- #t))
- (replace 'check
- (lambda _
- ;; Some of the 'integration' tests require network access or
- ;; login credentials.
- (invoke "nosetests" "--exclude=integration")
- #t)))))
- (native-inputs
- `(("python-docutils" ,python-docutils)
- ("python-mock" ,python-mock)
- ("python-nose" ,python-nose)))
- (propagated-inputs
- `(("python-botocore" ,python-botocore)
- ("python-urllib3" ,python-urllib3)))
- (synopsis "Amazon S3 Transfer Manager")
- (description "S3transfer is a Python library for managing Amazon S3
- transfers.")
- (home-page "https://github.com/boto/s3transfer")
- (license license:asl2.0)
- (properties `((python2-variant . ,(delay python2-s3transfer))))))
- (define-public python2-s3transfer
- (let ((base (package-with-python2 (strip-python2-variant python-s3transfer))))
- (package/inherit base
- (native-inputs
- `(("python2-futures" ,python2-futures)
- ,@(package-native-inputs base))))))
- (define-public python-slimit
- (package
- (name "python-slimit")
- (version "0.8.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "slimit" version ".zip"))
- (sha256
- (base32
- "02vj2x728rs1127q2nc27frrqra4fczivnb7gch6n5lzi7pxqczl"))))
- (build-system python-build-system)
- (native-inputs
- `(("unzip" ,unzip)))
- (propagated-inputs
- `(("python-ply" ,python-ply)))
- (home-page "https://slimit.readthedocs.io/")
- (synopsis "JavaScript minifier, parser and lexer written in Python")
- (description
- "SlimIt is a JavaScript minifier written in Python. It compiles
- JavaScript into more compact code so that it downloads and runs faster.
- SlimIt also provides a library that includes a JavaScript parser, lexer,
- pretty printer and a tree visitor.")
- (license license:expat)))
- (define-public python-flask-restful
- (package
- (name "python-flask-restful")
- (version "0.3.8")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "Flask-RESTful" version))
- (patches (search-patches "python-flask-restful-werkzeug-compat.patch"))
- (sha256
- (base32
- "05b9lzx5yc3wgml2bcq50lq35h66m8zpj6dc9advcb5z3acsbaay"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-aniso8601" ,python-aniso8601)
- ("python-flask" ,python-flask)
- ("python-pycrypto" ,python-pycrypto)
- ("python-pytz" ,python-pytz)))
- (native-inputs
- `(;; Optional dependency of Flask. Tests need it.
- ("python-blinker" ,python-blinker)
- ("python-mock" ,python-mock) ; For tests
- ("python-nose" ,python-nose))) ;for tests
- (home-page
- "https://www.github.com/flask-restful/flask-restful/")
- (synopsis
- "Flask module for creating REST APIs")
- (description
- "This package contains a Flask module for creating REST APIs.")
- (license license:bsd-3)))
- (define-public python-flask-basicauth
- (package
- (name "python-flask-basicauth")
- (version "0.2.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "Flask-BasicAuth" version))
- (sha256
- (base32
- "1zq1spkjr4sjdnalpp8wl242kdqyk6fhbnhr8hi4r4f0km4bspnz"))))
- (build-system python-build-system)
- (arguments
- `(#:phases (modify-phases %standard-phases
- (add-after 'unpack 'fix-imports
- (lambda _
- (substitute* '("docs/index.rst"
- "docs/conf.py"
- "flask_basicauth.py"
- "test_basicauth.py")
- (("flask\\.ext\\.basicauth")
- "flask_basicauth"))
- #t)))))
- (propagated-inputs
- `(("python-flask" ,python-flask)))
- (home-page "https://github.com/jpvanhal/flask-basicauth")
- (synopsis "HTTP basic access authentication for Flask")
- (description
- "This package provides HTTP basic access authentication for Flask.")
- (license license:bsd-3)))
- (define-public python-flask-htpasswd
- (package
- (name "python-flask-htpasswd")
- (version "0.3.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "flask-htpasswd" version))
- (sha256
- (base32
- "14q1y1y9i9bhabdnwd25jqzc4ljli23smxfyyh8abxz1vq93pxra"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-flask" ,python-flask)
- ("python-itsdangerous" ,python-itsdangerous)
- ("python-passlib" ,python-passlib)
- ("python-tox" ,python-tox)))
- (home-page "https://github.com/carsongee/flask-htpasswd")
- (synopsis "Basic authentication via htpasswd files in Flask applications")
- (description "This package provides Basic authentication via
- @file{htpasswd} files and access_token authentication in Flask
- applications.")
- (license license:bsd-3)))
- (define-public python-flask-sqlalchemy
- (package
- (name "python-flask-sqlalchemy")
- (version "2.5.1")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "Flask-SQLAlchemy" version))
- (sha256
- (base32
- "04jrx4sjrz1b20j38qk4qin975xwz30krzq59rfv3b3w7ss49nib"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-flask" ,python-flask)
- ("python-sqlalchemy" ,python-sqlalchemy)))
- (home-page "https://github.com/mitsuhiko/flask-sqlalchemy")
- (synopsis "Module adding SQLAlchemy support to your Flask application")
- (description
- "This package adds SQLAlchemy support to your Flask application.")
- (license license:bsd-3)))
- (define-public python-flask-restplus
- (package
- (name "python-flask-restplus")
- (version "0.9.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "flask-restplus" version))
- (sha256
- (base32
- "11his6ii5brpkhld0d5bwzjjw4q3vmplpd6fmgzjrvvklsbk0cf4"))))
- (build-system python-build-system)
- (arguments
- '(#:tests? #f)) ; FIXME: 35/882 tests failing.
- ;; #:phases
- ;; (modify-phases %standard-phases
- ;; (replace 'check
- ;; (lambda _
- ;; (invoke "nosetests")
- ;; #t)))))
- (propagated-inputs
- `(("python-aniso8601" ,python-aniso8601)
- ("python-flask" ,python-flask)
- ("python-jsonschema" ,python-jsonschema)
- ("python-pytz" ,python-pytz)
- ("python-six" ,python-six)))
- (native-inputs
- `(("python-tzlocal" ,python-tzlocal)
- ("python-blinker" ,python-blinker)
- ("python-nose" ,python-nose)
- ("python-rednose" ,python-rednose)))
- (home-page "https://github.com/noirbizarre/flask-restplus")
- (synopsis "Framework for documented API development with Flask")
- (description "This package provides a framework for API development with
- the Flask web framework in Python. It is similar to package
- @code{python-flask-restful} but supports the @code{python-swagger}
- documentation builder.")
- (license license:expat)))
- (define-public python-flask-restful-swagger
- (package
- (name "python-flask-restful-swagger")
- (version "0.20.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "flask-restful-swagger" version))
- (sha256
- (base32
- "1p66f98b5zpypnnz56pxpbirchqj6aniw6qyrp8h572l0dn9xlvq"))))
- (build-system python-build-system)
- (arguments '(#:tests? #f)) ;no tests
- (propagated-inputs
- `(("python-flask-restful" ,python-flask-restful)))
- (home-page "https://github.com/rantav/flask-restful-swagger")
- (synopsis "Extract Swagger specs from Flask-Restful projects")
- (description "This package lets you extract Swagger API documentation
- specs from your Flask-Restful projects.")
- (license license:expat)))
- (define-public python-htmlmin
- (package
- (name "python-htmlmin")
- (version "0.1.12")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "htmlmin" version))
- (sha256
- (base32
- "0y51xhabw6x8jk8k93xl8vznshpz3jb6l28075r5sjip613fzhah"))))
- (arguments
- `(#:tests? #f)) ; no tests
- (build-system python-build-system)
- (home-page "https://htmlmin.readthedocs.org/en/latest/")
- (synopsis "HTML minifier")
- (description "@code{htmlmin} is an HTML minifier that just works.
- It comes with safe defaults and easily configurable options.")
- (license license:bsd-3)))
- (define-public python2-htmlmin
- (package-with-python2 python-htmlmin))
- (define-public python-flask-htmlmin
- (package
- (name "python-flask-htmlmin")
- (version "1.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "Flask-HTMLmin" version))
- (sha256
- (base32
- "1n6zlq72kakkw0z2jpq6nh74lfsmxybm4g053pwhc14fbr809348"))))
- (propagated-inputs
- `(("python-flask" ,python-flask)
- ("python-htmlmin" ,python-htmlmin)))
- (build-system python-build-system)
- (home-page "https://github.com/hamidfzm/Flask-HTMLmin")
- (synopsis "HTML response minifier for Flask")
- (description
- "Minify @code{text/html} MIME type responses when using @code{Flask}.")
- (license license:bsd-3)))
- (define-public python-jsmin
- (package
- (name "python-jsmin")
- (version "2.2.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "jsmin" version))
- (sha256
- (base32
- "0fsmqbjvpxvff0984x7c0y8xmf49ax9mncz48b9xjx8wrnr9kpxn"))))
- (build-system python-build-system)
- (home-page "https://github.com/tikitu/jsmin/")
- (synopsis "Python JavaScript minifier")
- (description
- "@code{jsmin} is a JavaScript minifier, usable from both Python code and
- on the command line.")
- (license license:expat)))
- (define-public python-flask-login
- (package
- (name "python-flask-login")
- (version "0.5.0")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/maxcountryman/flask-login")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32 "11ac924w0y4m0kf3mxnxdlidy88jfa7njw5yyrq16dvnx4iwd8gg"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-flask" ,python-flask)))
- (native-inputs
- ;; For tests.
- `(("python-blinker" ,python-blinker)
- ("python-coverage" ,python-coverage)
- ("python-mock" ,python-mock)
- ("python-pycodestyle" ,python-pycodestyle)
- ("python-pyflakes" ,python-pyflakes)
- ("python-pytest" ,python-pytest)
- ("python-semantic-version" ,python-semantic-version)
- ("python-werkzeug" ,python-werkzeug)))
- (home-page "https://github.com/maxcountryman/flask-login")
- (synopsis "User session management for Flask")
- (description
- "@code{Flask-Login} provides user session management for Flask. It
- handles the common tasks of logging in, logging out, and remembering your
- users' sessions over extended periods of time.")
- (license license:expat)))
- (define-public python-oauth2client
- (package
- (name "python-oauth2client")
- (version "4.0.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "oauth2client" version))
- (sha256
- (base32
- "1irqqap2zibysf8dba8sklfqikia579srd0phm5n754ni0h59gl0"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f))
- (propagated-inputs
- `(("python-httplib2" ,python-httplib2)
- ("python-pyasn1" ,python-pyasn1)
- ("python-pyasn1-modules" ,python-pyasn1-modules)
- ("python-rsa" ,python-rsa)
- ("python-six" ,python-six)))
- (home-page "https://github.com/google/oauth2client/")
- (synopsis "OAuth 2.0 client library")
- (description "@code{python-oauth2client} provides an OAuth 2.0 client
- library for Python")
- (license license:asl2.0)))
- (define-public python2-oauth2client
- (package-with-python2 python-oauth2client))
- (define-public python-flask-oidc
- (package
- (name "python-flask-oidc")
- (version "1.1.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "flask-oidc" version))
- (sha256
- (base32
- "1ay5j0mf174bix7i67hclr95gv16z81fpx0dijvi0gydvdj3ddy2"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-flask" ,python-flask)
- ("python-itsdangerous" ,python-itsdangerous)
- ("python-oauth2client" ,python-oauth2client)
- ("python-six" ,python-six)))
- (native-inputs
- `(("python-nose" ,python-nose)
- ("python-mock" ,python-mock)))
- (home-page "https://github.com/puiterwijk/flask-oidc")
- (synopsis "OpenID Connect extension for Flask")
- (description "@code{python-flask-oidc} provides an OpenID Connect extension
- for Flask.")
- (license license:bsd-2)))
- (define-public python-webassets
- (package
- (name "python-webassets")
- (version "2.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "webassets" version))
- (sha256
- (base32
- "1kc1042jydgk54xpgcp0r1ib4gys91nhy285jzfcxj3pfqrk4w8n"))))
- (build-system python-build-system)
- (arguments
- '(#:phases (modify-phases %standard-phases
- (add-before 'check 'disable-some-tests
- (lambda _
- ;; This test requires 'postcss' and 'babel' which are
- ;; not yet available in Guix.
- (delete-file "tests/test_filters.py")))
- (replace 'check
- (lambda _
- (invoke "pytest" "-vv"))))))
- (native-inputs
- `(("python-jinja2" ,python-jinja2)
- ("python-mock" ,python-mock)
- ("python-nose" ,python-nose)
- ("python-pytest" ,python-pytest)))
- (home-page "https://github.com/miracle2k/webassets")
- (synopsis "Media asset management")
- (description "Merges, minifies and compresses Javascript and CSS files,
- supporting a variety of different filters, including YUI, jsmin, jspacker or
- CSS tidy. Also supports URL rewriting in CSS files.")
- (license license:bsd-2)))
- (define-public python-cssmin
- (package
- (name "python-cssmin")
- (version "0.2.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "cssmin" version))
- (sha256
- (base32
- "1dk723nfm2yf8cp4pj785giqlwv42l0kj8rk40kczvq1hk6g04p0"))))
- (build-system python-build-system)
- (home-page "https://github.com/zacharyvoase/cssmin")
- (synopsis "Python port of the YUI CSS Compressor")
- (description "Python port of the YUI CSS Compressor.")
- (license (list license:expat license:bsd-3))))
- (define-public python2-cssmin
- (package-with-python2 python-cssmin))
- (define-public python-elasticsearch
- (package
- (name "python-elasticsearch")
- (version "7.13.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "elasticsearch" version))
- (sha256
- (base32
- "1q38w9nh2j2yi82d8rhzb57597l4lq5zx7xzfg45xf7ffrgsipaj"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-certifi" ,python-certifi)
- ("python-urllib3" ,python-urllib3)))
- (arguments
- ;; tests require the test_elasticsearch module but it is not distributed.
- `(#:tests? #f))
- (home-page "https://github.com/elastic/elasticsearch-py")
- (synopsis "Low-level client for Elasticsearch")
- (description "Official low-level client for Elasticsearch. Its goal is to
- provide common ground for all Elasticsearch-related code in Python; because of
- this it tries to be opinion-free and very extendable.")
- (license license:expat)))
- (define-public python2-elasticsearch
- (package-with-python2 python-elasticsearch))
- (define-public python-engineio
- (package
- (name "python-engineio")
- (version "4.0.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "python-engineio" version))
- (sha256
- (base32
- "0xqkjjxbxakz9fd7v94rkr2r5r9nrkap2c3gf3abbd0j6ld5qmxv"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-aiohttp" ,python-aiohttp)
- ("python-requests" ,python-requests)
- ("python-websocket-client" ,python-websocket-client)))
- (arguments '(#:tests? #f)) ; Tests not included in release tarball.
- (home-page "https://github.com/miguelgrinberg/python-engineio/")
- (synopsis "Engine.IO server")
- (description "Python implementation of the Engine.IO realtime client and
- server.")
- (license license:expat)))
- (define-public python-flask-script
- (package
- (name "python-flask-script")
- (version "2.0.6")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "Flask-Script" version))
- (sha256
- (base32
- "0r8w2v89nj6b9p91p495cga5m72a673l2wc0hp0zqk05j4yrc9b4"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'patch-tests
- (lambda _
- (substitute* "tests.py"
- (("flask\\.ext\\.script") "flask_script"))
- #t)))))
- (propagated-inputs
- `(("python-flask" ,python-flask)
- ("python-argcomplete" ,python-argcomplete)
- ("python-werkzeug" ,python-werkzeug)))
- (native-inputs
- `(("python-pytest" ,python-pytest)))
- (home-page
- "https://github.com/smurfix/flask-script")
- (synopsis "Scripting support for Flask")
- (description "The Flask-Script extension provides support for writing
- external scripts in Flask. This includes running a development server,
- a customised Python shell, scripts to set up your database, cronjobs,
- and other command-line tasks that belong outside the web application
- itself.")
- (license license:bsd-3)))
- (define-public python-flask-migrate
- (package
- (name "python-flask-migrate")
- (version "2.5.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "Flask-Migrate" version))
- (sha256
- (base32
- "1vip9ww6l18dxffjsggm83k71zkvihxpnhaswpv8klh95s6517d6"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-flask" ,python-flask)
- ("python-alembic" ,python-alembic)
- ("python-sqlalchemy" ,python-sqlalchemy)
- ("python-flask-script" ,python-flask-script)
- ("python-flask-sqlalchemy" ,python-flask-sqlalchemy)))
- (home-page "https://github.com/miguelgrinberg/flask-migrate/")
- (synopsis "SQLAlchemy database migrations for Flask programs using
- Alembic")
- (description "This package contains SQLAlchemy database migration tools
- for Flask programs that are using @code{python-alembic}.")
- (license license:expat)))
- (define-public python-genshi
- (package
- (name "python-genshi")
- (version "0.7.5")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/edgewall/genshi")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32 "04i0caywiwrgw09grz988n15qr9lr31d9n6a529p8v80cy1fv23c"))))
- (propagated-inputs
- `(("python-six" ,python-six)))
- (build-system python-build-system)
- (home-page "https://genshi.edgewall.org/")
- (synopsis "Toolkit for generation of output for the web")
- (description "Genshi is a Python library that provides an integrated set
- of components for parsing, generating, and processing HTML, XML or other
- textual content for output generation on the web.")
- (license license:bsd-3)))
- (define-public python2-genshi
- (package-with-python2 python-genshi))
- (define-public python-flask-principal
- (package
- (name "python-flask-principal")
- (version "0.4.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "Flask-Principal" version))
- (sha256
- (base32
- "0lwlr5smz8vfm5h9a9i7da3q1c24xqc6vm9jdywdpgxfbi5i7mpm"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-blinker" ,python-blinker)))
- (native-inputs
- `(("python-flask" ,python-flask)
- ("python-nose" ,python-nose)))
- (home-page "https://pythonhosted.org/Flask-Principal/")
- (synopsis "Identity management for Flask")
- (description "@code{flask_principal} is a identity management library for
- Flask. It supports managing both authentication and authorization data in a
- thread-local variable.")
- (license license:expat)))
- (define-public python-flask-httpauth
- (package
- (name "python-flask-httpauth")
- (version "3.2.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "Flask-HTTPAuth" version))
- (sha256
- (base32
- "13gff5w1mqpzm5nccyg02v3ifb9ifqh5k866cssjhghhg6msfjsz"))))
- (build-system python-build-system)
- (native-inputs
- `(("python-flask" ,python-flask)))
- (home-page "https://github.com/miguelgrinberg/flask-httpauth/")
- (synopsis "Basic and Digest HTTP authentication for Flask routes")
- (description "@code{flask_httpauth} provides Basic and Digest HTTP
- authentication for Flask routes.")
- (license license:expat)))
- (define-public python-uritemplate
- (package
- (name "python-uritemplate")
- (version "3.0.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "uritemplate" version))
- (sha256
- (base32
- "1bkwmgr0ia9gcn4bszs2xlvml79f0bi2s4a87xg22ky9rq8avy2s"))))
- (build-system python-build-system)
- (home-page "https://uritemplate.readthedocs.org")
- (synopsis "Library to deal with URI Templates")
- (description "@code{uritemplate} provides Python library to deal with URI
- Templates.")
- (license license:bsd-2)))
- (define-public python2-uritemplate
- (package-with-python2 python-uritemplate))
- (define-public python-publicsuffix
- (package
- (name "python-publicsuffix")
- (version "1.1.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "publicsuffix" version))
- (sha256
- (base32
- "1adx520249z2cy7ykwjr1k190mn2888wqn9jf8qm27ly4qymjxxf"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f)) ; tests use the internet
- (home-page "https://www.tablix.org/~avian/git/publicsuffix.git")
- (synopsis "Get suffix for a domain name")
- (description "Get a public suffix for a domain name using the Public Suffix
- List.")
- (license license:expat)))
- (define-public python2-publicsuffix
- (package-with-python2 python-publicsuffix))
- (define-public python-publicsuffix2
- (package
- (name "python-publicsuffix2")
- (version "2.20191221")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "publicsuffix2" version))
- (sha256
- (base32 "0yzysvfj1najr1mb4pcqrbmjir3xpb69rlffln95a3cdm8qwry00"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'ignore-maintainer-inputs
- (lambda _
- ;; Comment out a demand for python-requests, which is used only by
- ;; the unused ‘update_psl’ helper command.
- (substitute* "setup.py"
- (("'requests " match)
- (format #f "# ~a" match)))
- #t)))
- #:tests? #f)) ; the test suite requires network access
- (home-page "https://github.com/pombredanne/python-publicsuffix2")
- (synopsis "Get a public suffix for a domain name using the Public Suffix List")
- (description "Get a public suffix for a domain name using the Public Suffix
- List. Forked from and using the same API as the publicsuffix package.")
- (license (list license:expat license:mpl2.0))))
- (define-public python2-publicsuffix2
- (package-with-python2 python-publicsuffix2))
- (define-public python-werkzeug
- (package
- (name "python-werkzeug")
- (version "2.0.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "Werkzeug" version))
- (sha256
- (base32
- "0hlwawnn8c41f254qify5jnjj8xb97n294h09bqimzqhs0qdpq8x"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? inputs outputs #:allow-other-keys)
- (when tests?
- (add-installed-pythonpath inputs outputs)
- (invoke "python" "-m" "pytest"
- ;; Test tries to use the network.
- "-k not test_reloader_sys_path")))))))
- (propagated-inputs
- `(("python-requests" ,python-requests)))
- (native-inputs
- `(("python-pytest" ,python-pytest)
- ("python-pytest-timeout" ,python-pytest-timeout)
- ("python-pytest-xprocess" ,python-pytest-xprocess)))
- (home-page "https://palletsprojects.com/p/werkzeug/")
- (synopsis "Utilities for WSGI applications")
- (description "One of the most advanced WSGI utility modules. It includes a
- powerful debugger, full-featured request and response objects, HTTP utilities to
- handle entity tags, cache control headers, HTTP dates, cookie handling, file
- uploads, a powerful URL routing system and a bunch of community-contributed
- addon modules.")
- (license license:x11)))
- (define-public python-bottle
- (package
- (name "python-bottle")
- (version "0.12.19")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "bottle" version))
- (sha256
- (base32 "0b6s50vc4iad97b6bb3xnyrgajb3nj6n6jbr5p54a4vapky3zmx9"))))
- (build-system python-build-system)
- (home-page "https://bottlepy.org/")
- (synopsis "WSGI framework for small web-applications.")
- (description "@code{python-bottle} is a WSGI framework for small web-applications.")
- (license license:expat)))
- (define-public python2-bottle
- (package-with-python2 python-bottle))
- (define-public python-wtforms
- (package
- (name "python-wtforms")
- (version "2.3.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "WTForms" version))
- (sha256
- (base32
- "17427m7p9nn9byzva697dkykykwcp2br3bxvi8vciywlmkh5s6c1"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'delete-bundled-test
- (lambda _
- ;; Delete test copied from a third party package that fails
- ;; with newer SQLAlchemy. This can be removed for 3.0.
- ;; See <https://github.com/wtforms/wtforms/issues/696>.
- (delete-file "tests/ext_sqlalchemy.py")))
- (replace 'check
- (lambda* (#:key inputs outputs tests? #:allow-other-keys)
- (when tests?
- (add-installed-pythonpath inputs outputs)
- (invoke "python" "setup.py" "compile_catalog")
- (invoke "python" "tests/runtests.py")))))))
- (native-inputs
- `(("python-dateutil" ,python-dateutil)
- ("python-sqlalchemy" ,python-sqlalchemy)))
- (propagated-inputs
- `(("python-babel" ,python-babel)
- ("python-email-validator" ,python-email-validator)
- ("python-markupsafe" ,python-markupsafe)))
- (home-page "http://wtforms.simplecodes.com/")
- (synopsis
- "Form validation and rendering library for Python web development")
- (description
- "WTForms is a flexible forms validation and rendering library
- for Python web development. It is very similar to the web form API
- available in Django, but is a standalone package.")
- (license license:bsd-3)))
- (define-public python-paste
- (package
- (name "python-paste")
- (version "3.0.6")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "Paste" version))
- (sha256
- (base32
- "14lbi9asn5agsdf7r97prkjpz7amgmp529lbvfhf0nv881xczah6"))
- (patches (search-patches "python-paste-remove-timing-test.patch"))
- (modules '((guix build utils)))
- (snippet
- '(begin
- ;; This test calls out to the internet.
- (delete-file "tests/test_proxy.py") #t))))
- (build-system python-build-system)
- (native-inputs
- `(("python-pytest" ,python-pytest)
- ("python-pytest-runner" ,python-pytest-runner)
- ("python-nose" ,python-nose)))
- (propagated-inputs
- `(("python-six" ,python-six)))
- (home-page "https://pythonpaste.readthedocs.io/")
- (synopsis
- "Python web development tools, focusing on WSGI")
- (description
- "Paste provides a variety of web development tools and middleware which
- can be nested together to build web applications. Paste's design closely
- follows ideas flowing from WSGI (Web Standard Gateway Interface).")
- (license license:expat)))
- (define-public python2-paste
- (package-with-python2 python-paste))
- (define-public python-pastescript
- (package
- (name "python-pastescript")
- (version "2.0.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "PasteScript" version))
- (sha256
- (base32
- "1h3nnhn45kf4pbcv669ik4faw04j58k8vbj1hwrc532k0nc28gy0"))))
- (build-system python-build-system)
- (native-inputs
- `(("python-nose" ,python-nose)))
- (propagated-inputs
- `(("python-paste" ,python-paste)
- ("python-pastedeploy" ,python-pastedeploy)))
- (home-page (string-append "https://web.archive.org/web/20161025192515/"
- "http://pythonpaste.org/script/"))
- (arguments
- '(;; Unfortunately, this requires the latest unittest2,
- ;; but that requires traceback2 which requires linecache2 which requires
- ;; unittest2. So we're skipping tests for now.
- ;; (Note: Apparently linetest2 only needs unittest2 for its tests,
- ;; so in theory we could get around this situation somehow.)
- #:tests? #f))
- (synopsis
- "Pluggable command line tool for serving web applications and more")
- (description
- "PasteScript is a plugin-friendly command line tool which provides a
- variety of features, from launching web applications to bootstrapping project
- layouts.")
- (license license:expat)))
- (define-public python2-pastescript
- (package-with-python2 python-pastescript))
- (define-public python2-urlgrabber
- (package
- (name "python2-urlgrabber")
- (version "3.10.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "urlgrabber" version))
- (sha256
- (base32 "0w1h7hlsq406bxfy2pn4i9bd003bwl0q9b7p03z3g6yl0d21ddq5"))))
- (build-system python-build-system)
- (arguments `(#:python ,python-2)) ; urlgrabber supports python2 only
- (home-page "http://urlgrabber.baseurl.org")
- (synopsis "High-level cross protocol url-grabber")
- (description "@code{urlgrabber} is Python2 library that unifies access to
- files available on web, FTP or locally. It supports HTTP, FTP and file://
- protocols, it supports features like HTTP keep-alive, reget, throttling and
- more.")
- (license license:lgpl2.1+)))
- (define-public python-pycares
- (package
- (name "python-pycares")
- (version "2.3.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pycares" version))
- (sha256
- (base32
- "0h4fxw5drrhfyslzmfpljk0qnnpbhhb20hnnndzahhbwylyw1x1n"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f)) ;tests require internet access
- (home-page "https://github.com/saghul/pycares")
- (synopsis "Python interface for @code{c-ares}")
- (description "@code{pycares} is a Python module which provides an
- interface to @code{c-ares}, a C library that performs DNS requests and
- name resolutions asynchronously.")
- (license license:expat)))
- (define-public python-yarl
- (package
- (name "python-yarl")
- (version "1.6.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "yarl" version))
- (sha256
- (base32
- "045z4ssg8g5h0qhz8hnx74hswgkndaldqq1xi5l1n5s0j996d44a"))
- (modules '((guix build utils)))
- (snippet
- #~(begin
- (delete-file "yarl/_quoting_c.c")))))
- (build-system python-build-system)
- (arguments
- (list #:tests? #f ; test suite can't find yarl._quoting_c
- #:phases
- #~(modify-phases %standard-phases
- (add-after 'unpack 'cythonize-code
- (lambda _
- (invoke "cython" "yarl/_quoting_c.pyx")))
- (replace 'check
- (lambda* (#:key tests? inputs outputs #:allow-other-keys)
- (when tests?
- (substitute* "setup.cfg"
- (("--cov=yarl") ""))
- (add-installed-pythonpath inputs outputs)
- (invoke "python" "-m" "pytest")))))))
- (native-inputs
- `(("python-cython" ,python-cython)
- ("python-pytest" ,python-pytest)
- ("python-pytest-runner" ,python-pytest-runner)))
- (propagated-inputs
- `(("python-idna" ,python-idna)
- ("python-multidict" ,python-multidict)))
- (home-page "https://github.com/aio-libs/yarl/")
- (synopsis "Yet another URL library")
- (description "@code{yarl} module provides handy @code{URL} class
- for URL parsing and changing.")
- (license license:asl2.0)))
- (define-public python-google
- (package
- (name "python-google")
- (version "3.0.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "google" version))
- (sha256
- (base32
- "1gncv3l11za0mpxvmpaf5n5j3jzp282rz62yml4ha4z55q930d8l"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f)) ; There are no tests.
- (home-page "https://breakingcode.wordpress.com/")
- (synopsis "Python bindings to the Google search engine")
- (description "This package provides Python bindings for using the
- Google search engine. Its module is called @code{googlesearch}.")
- (license license:bsd-3)))
- (define-public python-google-api-client
- (package
- (name "python-google-api-client")
- (version "1.6.7")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "google-api-python-client" version))
- (sha256
- (base32
- "1wpbbbxfpy9mwxdy3kn352cb590ladv574j1aa2l4grjdqw3ln05"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f ; tests require internet access
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'fix-setup-py
- (lambda _
- (substitute* "setup.py"
- (("googleapiclient/discovery_cache")
- "googleapiclient.discovery_cache"))
- #t)))))
- (native-inputs
- `(("python-httplib2" ,python-httplib2)
- ("python-six" ,python-six)
- ("python-oauth2client" ,python-oauth2client)
- ("python-uritemplate" ,python-uritemplate)))
- (home-page "https://github.com/google/google-api-python-client")
- (synopsis "Core Python library for accessing Google APIs")
- (description "Python client library for Google's discovery based APIs")
- (license license:asl2.0)))
- (define-public python2-google-api-client
- (package-with-python2 python-google-api-client))
- (define-public python-hawkauthlib
- (package
- (name "python-hawkauthlib")
- (version "2.0.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "hawkauthlib" version))
- (sha256
- (base32
- "03ai47s4h8nfnrf25shbfvkm1b9n1ccd4nmmj280sg1fayi69zgg"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-requests" ,python-requests)
- ("python-webob" ,python-webob)))
- (home-page "https://github.com/mozilla-services/hawkauthlib")
- (synopsis "Hawk Access Authentication protocol")
- (description
- "This is a low-level Python library for implementing Hawk Access Authentication,
- a simple HTTP request-signing scheme.")
- (license license:mpl2.0)))
- (define-public python-pybrowserid
- (package
- (name "python-pybrowserid")
- (version "0.14.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "PyBrowserID" version))
- (sha256
- (base32
- "1qvi79kfb8x9kxkm5lw2mp42hm82cpps1xknmsb5ghkwx1lpc8kc"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-requests" ,python-requests)))
- (native-inputs
- `(("python-mock" ,python-mock)))
- (home-page "https://github.com/mozilla/PyBrowserID")
- (synopsis "Python library for the BrowserID protocol")
- (description
- "This is a Python client library for the BrowserID protocol that
- underlies Mozilla Persona.")
- (license license:mpl2.0)))
- (define-public python-pyfxa
- (package
- (name "python-pyfxa")
- (version "0.6.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "PyFxA" version))
- (sha256
- (base32
- "0axl16fyrz2r88gnw4b12mk7dpkqscv8c4wsc1y5hicl7bsbc4fm"))))
- (build-system python-build-system)
- (arguments '(#:tests? #f)) ; 17 tests require network access
- (propagated-inputs
- `(("python-cryptography" ,python-cryptography)
- ("python-hawkauthlib" ,python-hawkauthlib)
- ("python-pybrowserid" ,python-pybrowserid)
- ("python-requests" ,python-requests)
- ("python-six" ,python-six)))
- (native-inputs
- `(("python-grequests" ,python-grequests)
- ("python-mock" ,python-mock)
- ("python-responses" ,python-responses)
- ("python-unittest2" ,python-unittest2)))
- (home-page "https://github.com/mozilla/PyFxA")
- (synopsis "Firefox Accounts client library for Python")
- (description
- "This is a Python library for interacting with the Firefox Accounts
- ecosystem.")
- (license license:mpl2.0)))
- (define-public python-hyperlink
- (package
- (name "python-hyperlink")
- (version "19.0.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "hyperlink" version))
- (sha256
- (base32
- "0m2nhi0j8wmgfscf974wd5v1xfq8mah286hil6npy1ys0m3y7222"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-idna" ,python-idna)))
- (home-page "https://github.com/python-hyper/hyperlink")
- (synopsis "Python module to create immutable URLs according to spec")
- (description "This package provides a Python module to create immutable, and
- correct URLs for Python according to RFCs 3986 and 3987.")
- (license license:expat)))
- (define-public python-treq
- (package
- (name "python-treq")
- (version "18.6.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "treq" version))
- (sha256
- (base32
- "0j4zwq9p1c9piv1vc66nxcv9s6hdinf90jwkbsm91k14npv9zq4i"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-attrs" ,python-attrs)
- ("python-idna" ,python-idna)
- ("python-incremental" ,python-incremental)
- ("python-requests" ,python-requests)
- ("python-service-identity" ,python-service-identity)
- ("python-twisted" ,python-twisted)))
- (home-page "https://github.com/twisted/treq")
- (synopsis "Requests-like API built on top of twisted.web's Agent")
- (description "This package provides an HTTP library inspired by
- @code{requests}} but written on top of Twisted's @code{Agents}. It offers a
- high level API for making HTTP requests when using Twisted.")
- (license license:expat)))
- (define-public python-autobahn
- (package
- (name "python-autobahn")
- (version "19.2.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "autobahn" version))
- (sha256
- (base32
- "1mm7j24ls01c7jb1ad5p5cpyxvzgydiyf8b04ihykh2v8g98j0x7"))))
- (build-system python-build-system)
- (arguments
- ;; The tests fail to run:
- ;; https://github.com/crossbario/autobahn-python/issues/1117
- `(#:tests? #f))
- (propagated-inputs
- `(("python-cffi" ,python-cffi)
- ("python-twisted" ,python-twisted)
- ("python-txaio" ,python-txaio)))
- (home-page "https://crossbar.io/autobahn/")
- (synopsis "Web Application Messaging Protocol implementation")
- (description "This package provides an implementation of the @dfn{Web Application
- Messaging Protocol} (WAMP). WAMP connects components in distributed
- applications using Publish and Subscribe (PubSub) and routed Remote Procedure
- Calls (rRPC). It is ideal for distributed, multi-client and server applications
- such as IoT applications or multi-user database-driven business applications.")
- (license license:expat)))
- (define-public python-ws4py
- (package
- (name "python-ws4py")
- (version "0.5.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "ws4py" version))
- (sha256
- (base32
- "10slbbf2jm4hpr92jx7kh7mhf48sjl01v2w4d8z3f1p0ybbp7l19"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'python3.7-compatibility
- (lambda _
- (substitute* '("ws4py/server/tulipserver.py"
- "ws4py/async_websocket.py")
- (("asyncio.async")
- "asyncio.ensure_future"))
- #t))
- ;; We don't have a package for cherrypy.
- (add-after 'unpack 'remove-cherrypy-support
- (lambda _
- (delete-file "ws4py/server/cherrypyserver.py")
- #t)))))
- (propagated-inputs
- `(("python-gevent" ,python-gevent)
- ("python-tornado" ,python-tornado)))
- (home-page "https://github.com/Lawouach/WebSocket-for-Python")
- (synopsis "WebSocket client and server library")
- (description
- "This package provides a WebSocket client and server library for
- Python.")
- (license license:bsd-3)))
- (define-public python-slugify
- (package
- (name "python-slugify")
- (version "4.0.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "python-slugify" version))
- (sha256
- (base32 "0w22fapghmzk3xdasc4dn7h8sl58l08d1h5zbf72dh80drv1g9b9"))))
- (propagated-inputs
- `(("python-unidecode" ,python-unidecode)
- ("python-text-unidecode" ,python-text-unidecode)))
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "python" "test.py"))))))
- (build-system python-build-system)
- (home-page "https://github.com/un33k/python-slugify")
- (synopsis "Python Slugify application that handles Unicode")
- (description "This package provides a @command{slufigy} command and
- library to create slugs from unicode strings while keeping it DRY.")
- (license license:expat)))
- (define-public python-branca
- (package
- (name "python-branca")
- (version "0.3.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "branca" version))
- (sha256
- (base32
- "0pmigd521j2228xf8x34vbx0niwvms7xl7za0lymywj0vydjqxiy"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-jinja2" ,python-jinja2)
- ("python-six" ,python-six)))
- (native-inputs
- `(("python-pytest" ,python-pytest)))
- (home-page "https://github.com/python-visualization/branca")
- (synopsis "Generate complex HTML+JS pages with Python")
- (description "Generate complex HTML+JS pages with Python")
- (license license:expat)))
- (define-public python-tinycss
- (package
- (name "python-tinycss")
- (version "0.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "tinycss" version))
- (sha256
- (base32 "0vkifr595h28ymkjhrswwf0bm23lhznh5f44xyp7x7jy1ssnyc0j"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'disable-flake8-isort
- ;; Flake8 and isort tests fail.
- (lambda _
- (substitute* "setup.cfg" ((" --flake8 --isort") ""))
- #t))
- (replace 'check
- (lambda _
- ;; Disable failing test.
- (invoke "python" "-m" "pytest" "-k"
- "not test_speedups"))))))
- (native-inputs
- `(("python-pytest-cov" ,python-pytest-cov)
- ("python-pytest-flake8" ,python-pytest-flake8)
- ("python-pytest-isort" ,python-pytest-isort)
- ("python-pytest-runner" ,python-pytest-runner)))
- (home-page "https://tinycss.readthedocs.io/")
- (synopsis "Complete yet simple CSS parser for Python")
- (description
- "@code{tinycss} is a complete yet simple CSS parser for Python. It
- supports the full syntax and error handling for CSS 2.1 as well as some CSS 3
- modules:
- @itemize
- @item CSS Color 3
- @item CSS Fonts 3
- @item CSS Paged Media 3
- @end itemize")
- (license license:bsd-3)))
- (define-public python-tinycss2
- (package
- (name "python-tinycss2")
- (version "1.1.0")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/Kozea/tinycss2")
- (commit (string-append "v" version))
- (recursive? #true)))
- (file-name (git-file-name name version))
- (sha256
- (base32 "0zyc48vbmczpqj7f3f0d7zb3bz29fyj50dg0m6bbwbr5i88kq3sq"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'build
- (lambda _
- ;; A ZIP archive should be generated, but it fails with "ZIP does
- ;; not support timestamps before 1980". Luckily,
- ;; SOURCE_DATE_EPOCH is respected, which we set to some time in
- ;; 1980.
- (setenv "SOURCE_DATE_EPOCH" "315532800")
- (invoke "flit" "build")))
- (replace 'install
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (add-installed-pythonpath inputs outputs)
- (let ((out (assoc-ref outputs "out")))
- (for-each (lambda (wheel)
- (format #true wheel)
- (invoke "python" "-m" "pip" "install"
- wheel (string-append "--prefix=" out)))
- (find-files "dist" "\\.whl$")))))
- (replace 'check
- (lambda* (#:key inputs outputs tests? #:allow-other-keys)
- (add-installed-pythonpath inputs outputs)
- (invoke "pytest" "-vv"))))))
- (propagated-inputs
- `(("python-webencodings" ,python-webencodings)))
- (native-inputs
- `(("python-flit" ,python-flit)
- ("python-pytest" ,python-pytest)
- ("python-pytest-cov" ,python-pytest-cov)
- ("python-pytest-flake8" ,python-pytest-flake8)
- ("python-pytest-isort" ,python-pytest-isort)))
- (home-page "https://tinycss2.readthedocs.io/")
- (synopsis "Low-level CSS parser for Python")
- (description "@code{tinycss2} can parse strings, return Python objects
- representing tokens and blocks, and generate CSS strings corresponding to
- these objects.
- Based on the CSS Syntax Level 3 specification, @code{tinycss2} knows the
- grammar of CSS but doesn’t know specific rules, properties or values supported
- in various CSS modules.")
- (license license:bsd-3)))
- (define-public python-cssselect2
- (package
- (name "python-cssselect2")
- (version "0.4.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "cssselect2" version))
- (sha256
- (base32 "1j2fcr217rsvkipsg6zjq03rl64rxnvb5hqqpx0dv58fhspvkywk"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _ (invoke "pytest"))))))
- (propagated-inputs
- `(("python-tinycss2" ,python-tinycss2)))
- (native-inputs
- `(("python-pytest-cov" ,python-pytest-cov)
- ("python-pytest-flake8" ,python-pytest-flake8)
- ("python-pytest-isort" ,python-pytest-isort)
- ("python-pytest-runner" ,python-pytest-runner)))
- (home-page "https://cssselect2.readthedocs.io/")
- (synopsis "CSS selectors for Python ElementTree")
- (description "@code{cssselect2} is a straightforward implementation of
- CSS3 Selectors for markup documents (HTML, XML, etc.) that can be read by
- ElementTree-like parsers (including cElementTree, lxml, html5lib, etc.).
- Unlike the Python package @code{cssselect}, it does not translate selectors to
- XPath and therefore does not have all the correctness corner cases that are
- hard or impossible to fix in cssselect.")
- (license license:bsd-3)))
- (define-public python-uvloop
- (package
- (name "python-uvloop")
- (version "0.14.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "uvloop" version))
- (sha256
- (base32 "07j678z9gf41j98w72ysrnb5sa41pl5yxd7ib17lcwfxqz0cjfhj"))))
- (build-system python-build-system)
- (arguments
- '(#:tests? #f ;FIXME: tests hang and with some errors in the way
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'preparations
- (lambda _
- ;; Use packaged libuv.
- (substitute* "setup.py" (("self.use_system_libuv = False")
- "self.use_system_libuv = True"))
- #t)))))
- (native-inputs
- `(("python-aiohttp" ,python-aiohttp)
- ("python-cython" ,python-cython)
- ("python-flake8" ,python-flake8)
- ("python-psutil" ,python-psutil)
- ("python-pyopenssl" ,python-pyopenssl)
- ("python-twine" ,python-twine)))
- (inputs
- `(("libuv" ,libuv)))
- (home-page "https://github.com/MagicStack/uvloop")
- (synopsis "Fast implementation of asyncio event loop on top of libuv")
- (description
- "@code{uvloop} is a fast, drop-in replacement of the built-in asyncio
- event loop. It is implemented in Cython and uses libuv under the hood.")
- (license license:expat)))
- (define-public gunicorn
- (package
- (name "gunicorn")
- (version "20.1.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "gunicorn" version))
- (sha256
- (base32
- "1s7670qw36x90bgmazmgib170i5gnpyb2ypxzlla7y0mpasniag0"))))
- (outputs '("out" "doc"))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'build 'build-doc
- (lambda _
- (invoke "make" "-C" "docs" "PAPER=a4" "html" "info")
- (delete-file "docs/build/texinfo/Makefile")
- (delete-file "docs/build/texinfo/Gunicorn.texi")))
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (if tests?
- (begin
- (invoke "pytest" "-vv"
- ;; Disable the geventlet tests because eventlet uses
- ;; dnspython, which does not work in the build
- ;; container due to lack of /etc/resolv.conf, etc.
- "--ignore=tests/workers/test_geventlet.py"))
- (format #t "test suite not run~%"))))
- (add-after 'install 'install-doc
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((doc (string-append (assoc-ref outputs "doc")
- "/share/doc/" ,name "-" ,version))
- (html (string-append doc "/html"))
- (info (string-append doc "/info"))
- (examples (string-append doc "/examples")))
- (mkdir-p html)
- (mkdir-p info)
- (mkdir-p examples)
- (copy-recursively "docs/build/html" html)
- (copy-recursively "docs/build/texinfo" info)
- (copy-recursively "examples" examples)
- (for-each (lambda (file)
- (copy-file file (string-append doc "/" file)))
- '("README.rst" "NOTICE" "LICENSE" "THANKS")))))
- ;; XXX: The wrap phase includes native inputs on PYTHONPATH, (see
- ;; <https://bugs.gnu.org/25235>), leading to an inflated closure
- ;; size. Override it to only add the essential entries.
- (replace 'wrap
- (lambda* (#:key native-inputs inputs outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (python (assoc-ref (or native-inputs inputs) "python"))
- (sitedir (string-append "/lib/python"
- (python-version python)
- "/site-packages")))
- (wrap-program (string-append out "/bin/gunicorn")
- `("PYTHONPATH" ":" prefix
- ,(map (lambda (output)
- (string-append output sitedir))
- (list python out))))))))))
- (native-inputs
- `(("binutils" ,binutils) ;; for ctypes.util.find_library()
- ("python-aiohttp" ,python-aiohttp)
- ("python-gevent" ,python-gevent)
- ("python-pytest" ,python-pytest)
- ("python-pytest-cov" ,python-pytest-cov)
- ("python-sphinx" ,python-sphinx)
- ("texinfo" ,texinfo)))
- (home-page "https://gunicorn.org/")
- (synopsis "Python WSGI HTTP Server for UNIX")
- (description "Gunicorn ‘Green Unicorn’ is a Python WSGI HTTP
- Server for UNIX. It’s a pre-fork worker model ported from Ruby’s
- Unicorn project. The Gunicorn server is broadly compatible with
- various web frameworks, simply implemented, light on server resources,
- and fairly speedy.")
- (license license:expat)))
- ;; break cyclic dependency for python-aiohttp, which depends on gunicorn for
- ;; its tests
- (define-public gunicorn-bootstrap
- (package
- (inherit gunicorn)
- (name "gunicorn")
- (arguments `(#:tests? #f))
- (properties '((hidden? . #t)))
- (native-inputs `())))
- (define-public python-httptools
- (package
- (name "python-httptools")
- (version "0.1.1")
- (source
- (origin
- ;; PyPI tarball comes with a vendored http-parser and no tests.
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/MagicStack/httptools")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "0g08128x2ixsiwrzskxc6c8ymgzs39wbzr5mhy0mjk30q9pqqv77"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'preparations
- (lambda _
- ;; Skip a failing test (AssertionError). Bug report:
- ;; https://github.com/MagicStack/httptools/issues/10.
- (substitute* "tests/test_parser.py"
- ((" def test_parser_response_1")
- (string-append
- " @unittest.skip(\"Disabled.\")\n"
- " def test_parser_response_1")))
- ;; Use packaged http-parser.
- (substitute* "setup.py" (("self.use_system_http_parser = False")
- "self.use_system_http_parser = True"))
- ;; This path is hardcoded. Hardcode our own.
- (substitute* "httptools/parser/cparser.pxd"
- (("../../vendor/http-parser")
- (string-append (assoc-ref %build-inputs "http-parser")
- "/include")))
- ;; Don't force Cython version.
- (substitute* "setup.py" (("Cython==") "Cython>="))
- #t)))))
- (native-inputs
- `(("python-cython" ,python-cython)
- ("python-pytest" ,python-pytest)))
- (inputs
- `(("http-parser" ,http-parser)))
- (home-page "https://github.com/MagicStack/httptools")
- (synopsis "Collection of framework independent HTTP protocol utils")
- (description
- "@code{httptools} is a Python binding for the nodejs HTTP parser.")
- (license license:expat)))
- (define-public python-uvicorn
- (package
- (name "python-uvicorn")
- (version "0.11.8")
- (source
- (origin
- ;; PyPI tarball has no tests.
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/encode/uvicorn")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32 "00iidg5ysp7k00bw3kmkvr8mghnh4jdi0p2ryiarhryf8wz2r3fy"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key inputs outputs tests? #:allow-other-keys)
- (add-installed-pythonpath inputs outputs)
- (invoke "pytest" "-vv"))))))
- (native-inputs
- `(("python-black" ,python-black)
- ("python-codecov" ,python-codecov)
- ("python-flake8" ,python-flake8)
- ("python-isort" ,python-isort)
- ("python-mypy" ,python-mypy)
- ("python-pytest" ,python-pytest)
- ("python-pytest-cov" ,python-pytest-cov)
- ("python-pytest-mock" ,python-pytest-mock)
- ("python-requests" ,python-requests)))
- (propagated-inputs
- `(("python-click" ,python-click)
- ("python-h11" ,python-h11)
- ("python-httptools" ,python-httptools)
- ("python-pyyaml" ,python-pyyaml)
- ("python-uvloop" ,python-uvloop)
- ("python-watchgod" ,python-watchgod)
- ("python-websockets" ,python-websockets)
- ("python-wsproto" ,python-wsproto)))
- (home-page "https://github.com/encode/uvicorn")
- (synopsis "Fast ASGI server implementation")
- (description
- "@code{uvicorn} is a fast ASGI server implementation, using @code{uvloop}
- and @code{httptools}. It currently supports HTTP/1.1 and WebSockets. Support
- for HTTP/2 is planned.")
- (license license:bsd-3)))
- (define-public python-translation-finder
- (package
- (name "python-translation-finder")
- (version "1.7")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "translation-finder" version))
- (sha256
- (base32
- "1pcy9z8gmb8x41gjhw9x0lkr0d2mv5mdxcs2hwg6q8mxs857j589"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-before 'build 'remove-failing-test
- (lambda _
- (delete-file "translation_finder/test_api.py")
- #t)))))
- (propagated-inputs
- `(("python-chardet" ,python-chardet)
- ("python-pathlib2" ,python-pathlib2)
- ("python-ruamel.yaml" ,python-ruamel.yaml)
- ("python-six" ,python-six)))
- (native-inputs
- `(("python-codecov" ,python-codecov)
- ("python-codacy-coverage" ,python-codacy-coverage)
- ("python-pytest-cov" ,python-pytest-cov)
- ("python-pytest-runner" ,python-pytest-runner)
- ("python-twine" ,python-twine)))
- (home-page "https://weblate.org/")
- (synopsis "Translation file finder for Weblate")
- (description "This package provides a function to find translation file in
- the source code of a project. It supports many translation file formats and
- is part of the Weblate translation platform.")
- (license license:gpl3+)))
- (define-public python-gitlab
- (package
- (name "python-gitlab")
- (version "1.15.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "python-gitlab" version))
- (sha256
- (base32
- "0zl6kz8v8cg1bcy2r78b2snb0lpw0b573gdx2x1ps0nhsh75l4j5"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-requests" ,python-requests)
- ("python-six" ,python-six)))
- (native-inputs
- `(("python-httmock" ,python-httmock)
- ("python-mock" ,python-mock)))
- (home-page
- "https://github.com/python-gitlab/python-gitlab")
- (synopsis "Interact with GitLab API")
- (description "This package provides an extended library for interacting
- with GitLab instances through their API.")
- (license license:lgpl3+)))
- (define-public python-path-and-address
- (package
- (name "python-path-and-address")
- (version "2.0.1")
- (source
- (origin
- ;; The source distributed on PyPI doesn't include tests.
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/joeyespo/path-and-address")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0b0afpsaim06mv3lhbpm8fmawcraggc11jhzr6h72kdj1cqjk5h6"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (add-installed-pythonpath inputs outputs)
- (invoke "py.test"))))))
- (native-inputs
- `(("python-pytest" ,python-pytest)))
- (home-page "https://github.com/joeyespo/path-and-address")
- (synopsis "Functions for command-line server tools used by humans")
- (description "Path-and-address resolves ambiguities of command-line
- interfaces, inferring which argument is the path, and which is the address.")
- (license license:expat)))
- (define-public grip
- ;; No release by upstream for quite some time, some bugs fixed since. See:
- ;; https://github.com/joeyespo/grip/issues/304
- (let ((commit "27a4d6d87ea1d0ea7f7f120de55baabee3de73e3"))
- (package
- (name "grip")
- (version (git-version "4.5.2" "1" commit))
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/joeyespo/grip")
- (commit commit)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0kx5hgb3q19i4l18a4vqdq9af390xgpk88lp2ay75qi96k0dc68w"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-docopt" ,python-docopt)
- ("python-flask" ,python-flask)
- ("python-markdown" ,python-markdown)
- ("python-path-and-address" ,python-path-and-address)
- ("python-pygments" ,python-pygments)
- ("python-requests" ,python-requests)))
- (native-inputs
- `(("python-pytest" ,python-pytest)
- ("python-responses" ,python-responses)))
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (add-installed-pythonpath inputs outputs)
- (setenv "PATH" (string-append
- (getenv "PATH") ":"
- (assoc-ref %outputs "out") "/bin"))
- (invoke "py.test" "-m" "not assumption"))))))
- (home-page "https://github.com/joeyespo/grip")
- (synopsis "Preview Markdown files using the GitHub API")
- (description "Grip is a command-line server application written in Python
- that uses the GitHub Markdown API to render a local Markdown file. The styles
- and rendering come directly from GitHub, so you'll know exactly how it will
- appear. Changes you make to the file will be instantly reflected in the browser
- without requiring a page refresh.")
- (license license:expat))))
- (define-public python-port-for
- (package
- (name "python-port-for")
- (version "0.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "port-for" version))
- (sha256
- (base32
- "1pncxlj25ggw99r0ijfbkq70gd7cbhqdx5ivsxy4jdp0z14cpda7"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'use-urllib3
- (lambda _
- (substitute* "port_for/_download_ranges.py"
- (("urllib2") "urllib3"))
- #t)))))
- (propagated-inputs
- `(("python-urllib3" ,python-urllib3)))
- (native-inputs
- `(("python-mock" ,python-mock)))
- (home-page "https://github.com/kmike/port-for/")
- (synopsis "TCP localhost port finder and association manager")
- (description
- "This package provides a utility that helps with local TCP ports
- management. It can find an unused TCP localhost port and remember the
- association.")
- (license license:expat)))
- (define-public python-livereload
- (package
- (name "python-livereload")
- (version "2.6.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "livereload" version))
- (sha256
- (base32
- "0rhggz185bxc3zjnfpmhcvibyzi86i624za1lfh7x7ajsxw4y9c9"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-six" ,python-six)
- ("python-tornado" ,python-tornado)))
- (home-page "https://github.com/lepture/python-livereload")
- (synopsis "Python LiveReload")
- (description
- "Python LiveReload provides a command line utility, @command{livereload},
- for starting a web server in a directory. It can trigger arbitrary commands
- and serve updated contents upon changes to the directory.")
- (license license:bsd-3)))
- (define-public python-vf-1
- (package
- (name "python-vf-1")
- (version "0.0.11")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "VF-1" version))
- (sha256
- (base32
- "0xlqsaxsiayk1sd07kpz8abbcnab582y29a1y4882fq6j4gma5xi"))))
- (build-system python-build-system)
- (home-page "https://github.com/solderpunk/VF-1")
- (synopsis "Command line gopher client")
- (description "@code{VF-1} is a command line gopher client with
- @acronym{TLS, Transport Layer Security} support.")
- (license license:bsd-2)))
- (define-public python-httpcore
- (package
- (name "python-httpcore")
- (version "0.12.2")
- (source
- (origin
- ;; PyPI tarball does not contain tests.
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/encode/httpcore")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32 "1nrwwfdqjfc2a1k3j41cdwkprwvplf95fwmypdl2aq2qgp3209q0"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f ; Tests hang at 98%
- #:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key inputs outputs tests? #:allow-other-keys)
- (when tests?
- (add-installed-pythonpath inputs outputs)
- (invoke "pytest" "-vv" "--cov=httpcore"
- "--cov=tests" "tests"))
- #t)))))
- (native-inputs
- `(("python-autoflake" ,python-autoflake)
- ("python-flake8" ,python-flake8)
- ("python-flake8-bugbear" ,python-flake8-bugbear)
- ("python-flake8-pie" ,python-flake8-pie)
- ("python-isort" ,python-isort)
- ("python-mypy" ,python-mypy)
- ("python-pytest" ,python-pytest)
- ("python-pytest-asyncio" ,python-pytest-asyncio)
- ("python-pytest-cov" ,python-pytest-cov)
- ("python-pytest-trio" ,python-pytest-trio)
- ("python-uvicorn" ,python-uvicorn)
- ("python-trustme" ,python-trustme)))
- (propagated-inputs
- `(("python-h11" ,python-h11)
- ("python-h2" ,python-h2)
- ("python-sniffio" ,python-sniffio)
- ("python-trio" ,python-trio)
- ("python-trio-typing" ,python-trio-typing)))
- (home-page "https://github.com/encode/httpcore")
- (synopsis "Minimal, low-level HTTP client")
- (description
- "HTTP Core provides a minimal and low-level HTTP client, which does one
- thing only: send HTTP requests.
- Some things HTTP Core does do:
- @itemize
- @item Sending HTTP requests.
- @item Provides both sync and async interfaces.
- @item Supports HTTP/1.1 and HTTP/2.
- @item Async backend support for asyncio and trio.
- @item Automatic connection pooling.
- @item HTTP(S) proxy support.
- @end itemize")
- (license license:bsd-3)))
- (define-public python-httpx
- (package
- (name "python-httpx")
- (version "0.16.1")
- (source
- (origin
- ;; PyPI tarball does not contain tests.
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/encode/httpx")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32 "00gmq45fckcqkj910bvd7pyqz1mvgsdvz4s0k7dzbnc5czzq1f4a"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "pytest" "-vv" "-k"
- ;; These tests try to open an outgoing connection.
- (string-append
- "not test_connect_timeout"
- " and not test_that_send_cause_async_client_to_be_not_"
- "closed"
- " and not test_that_async_client_caused_warning_when_"
- "being_deleted"
- " and not test_that_send_cause_client_to_be_not_closed"
- " and not test_async_proxy_close"
- " and not test_sync_proxy_close")))))))
- (native-inputs
- `(("python-autoflake" ,python-autoflake)
- ("python-black" ,python-black)
- ("python-cryptography" ,python-cryptography)
- ("python-flake8" ,python-flake8)
- ("python-flake8-bugbear" ,python-flake8-bugbear)
- ("python-flake8-pie" ,python-flake8-pie)
- ("python-isort" ,python-isort)
- ("python-mypy" ,python-mypy)
- ("python-pytest" ,python-pytest)
- ("python-pytest-asyncio" ,python-pytest-asyncio)
- ("python-pytest-trio" ,python-pytest-trio)
- ("python-pytest-cov" ,python-pytest-cov)
- ("python-trio" ,python-trio)
- ("python-trio-typing" ,python-trio-typing)
- ("python-trustme" ,python-trustme)
- ("python-uvicorn" ,python-uvicorn)))
- (propagated-inputs
- `(("python-brotli" ,python-brotli)
- ("python-certifi" ,python-certifi)
- ("python-chardet" ,python-chardet)
- ("python-httpcore" ,python-httpcore)
- ("python-idna" ,python-idna)
- ("python-rfc3986" ,python-rfc3986)
- ("python-sniffio" ,python-sniffio)))
- (home-page "https://www.python-httpx.org/")
- (synopsis "HTTP client for Python")
- (description
- "HTTPX is a fully featured HTTP client for Python 3, which provides sync
- and async APIs, and support for both HTTP/1.1 and HTTP/2.
- HTTPX builds on the well-established usability of requests, and gives you:
- @itemize
- @item A broadly requests-compatible API.
- @item Standard synchronous interface, but with async support if you need it.
- @item HTTP/1.1 and HTTP/2 support.
- @item Ability to make requests directly to WSGI applications or ASGI applications.
- @item Strict timeouts everywhere.
- @item Fully type annotated.
- @item 99% test coverage.
- @end itemize
- Plus all the standard features of requests:
- @itemize
- @item International Domains and URLs
- @item Keep-Alive & Connection Pooling
- @item Sessions with Cookie Persistence
- @item Browser-style SSL Verification
- @item Basic/Digest Authentication
- @item Elegant Key/Value Cookies
- @item Automatic Decompression
- @item Automatic Content Decoding
- @item Unicode Response Bodies
- @item Multipart File Uploads
- @item HTTP(S) Proxy Support
- @item Connection Timeouts
- @item Streaming Downloads
- @item .netrc Support
- @item Chunked Requests
- @end itemize")
- (license license:bsd-3)))
- (define-public python-wsgiprox
- (package
- (name "python-wsgiprox")
- (version "1.5.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "wsgiprox" version))
- (sha256
- (base32
- "11fsm199pvwbmqx2lccznvws65aam1rqqv0w79gal8hispwgd5rs"))))
- (build-system python-build-system)
- (arguments
- ;; The test suite hangs (see:
- ;; https://github.com/webrecorder/wsgiprox/issues/6).
- `(#:tests? #f
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'fix-pytest-argument
- (lambda _
- ;; See: https://github.com/webrecorder/wsgiprox/issues/7.
- (substitute* "setup.py"
- (("--doctest-module")
- "--doctest-modules")))))))
- (propagated-inputs
- `(("python-certauth" ,python-certauth)
- ("python-gevent" ,python-gevent)
- ("python-websocket-client" ,python-websocket-client)))
- (native-inputs
- `(("python-mock" ,python-mock)
- ("python-pytest-cov" ,python-pytest-cov)
- ("python-waitress" ,python-waitress)))
- (home-page "https://github.com/webrecorder/wsgiprox")
- (synopsis "HTTP/S proxy with WebSockets over WSGI")
- (description "@code{wsgiprox} is a Python WSGI (Web Server Gateway
- Interface) middle-ware for adding HTTP and HTTPS proxy support to a WSGI
- application. The library accepts HTTP and HTTPS proxy connections, and routes
- them to a designated prefix.")
- (license license:asl2.0)))
- (define-public python-warcio
- ;; The PyPI release is missing some test support files (see:
- ;; https://github.com/webrecorder/warcio/issues/132).
- (let ((revision "0")
- (commit "aa702cb321621b233c6e5d2a4780151282a778be"))
- (package
- (name "python-warcio")
- (version (git-version "1.7.4" revision commit))
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/webrecorder/warcio")
- (commit commit)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "11afr6zy3r6rda81010iq496dazg4xid0izg3smg6ighpmvsnzf2"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'skip-problematic-tests
- (lambda _
- ;; These tests fail due to networking requirements.
- (substitute* "setup.py"
- (("pytest.main\\(\\[" all)
- (string-append all "'-k', '"
- (string-append "not test_post_chunked and "
- "not test_remote") "'"))))))))
- (native-inputs
- ;; These inputs are required for the test suite.
- `(("python-httpbin" ,python-httpbin)
- ("python-pytest-cov" ,python-pytest-cov)
- ("python-requests" ,python-requests)
- ("python-wsgiprox" ,python-wsgiprox)))
- (home-page "https://github.com/webrecorder/warcio")
- (synopsis "Streaming web archival archive (WARC) library")
- (description "warcio is a Python library to read and write the WARC format
- commonly used in Web archives. It is designed for fast, low-level access to
- web archival content, oriented around a stream of WARC records rather than
- files.")
- (license license:asl2.0))))
- (define-public python-websockets
- (package
- (name "python-websockets")
- (version "8.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "websockets" version))
- (sha256
- (base32
- "03s3ml6sbki24aajllf8aily0xzrn929zxi84p50zkkbikdd4raw"))))
- (build-system python-build-system)
- (arguments
- '(#:tests? #f ; Tests not included in release tarball.
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'fix-websockets-package-name-requirement
- (lambda* (#:key inputs #:allow-other-keys)
- ;; Python package names use dot as separator.
- (substitute* "setup.py"
- (("websockets/extensions") "websockets.extensions")))))))
- (home-page "https://github.com/aaugustin/websockets")
- (synopsis
- "Python implementation of the WebSocket Protocol (RFC 6455 & 7692)")
- (description
- "@code{websockets} is a library for building WebSocket servers and clients
- in Python with a focus on correctness and simplicity.
- Built on top of @code{asyncio}, Python's standard asynchronous I/O framework,
- it provides an elegant coroutine-based API.")
- (license license:bsd-3)))
- (define-public python-selenium
- (package
- (name "python-selenium")
- (version "3.141.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "selenium" version))
- (sha256
- (base32
- "039hf9knvl4s3hp21bzwsp1g5ri9gxsh504dp48lc6nr1av35byy"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-urllib3" ,python-urllib3)))
- (home-page
- "https://github.com/SeleniumHQ/selenium/")
- (synopsis "Python bindings for Selenium")
- (description "Selenium enables web browser automation.
- Selenium specifically provides infrastructure for the W3C WebDriver specification
- — a platform and language-neutral coding interface compatible with all
- major web browsers.")
- (license license:asl2.0)))
- (define-public python-rapidjson
- (package
- (name "python-rapidjson")
- (version "0.9.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "python-rapidjson" version))
- (sha256
- (base32
- "18cl2dhx3gds5vg52jxmh9wjlbiy8dx06c3n482rfpdi9dzbv05d"))
- (modules '((guix build utils)))
- (snippet
- '(begin (delete-file-recursively "rapidjson") #t))))
- (build-system python-build-system)
- (arguments
- `(#:configure-flags
- (list (string-append "--rj-include-dir="
- (assoc-ref %build-inputs "rapidjson")
- "/include/rapidjson"))
- #:phases
- (modify-phases %standard-phases
- (replace 'build
- (lambda* (#:key inputs #:allow-other-keys)
- (invoke "python" "setup.py" "build"
- (string-append "--rj-include-dir="
- (assoc-ref %build-inputs "rapidjson")
- "/include/rapidjson"))))
- (replace 'check
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (add-installed-pythonpath inputs outputs)
- ;; Some tests are broken.
- (delete-file "tests/test_base_types.py")
- (delete-file "tests/test_validator.py")
- (invoke "python" "-m" "pytest" "tests"))))))
- (native-inputs
- `(("rapidjson" ,rapidjson)
- ("python-pytest" ,python-pytest)
- ("python-pytz" ,python-pytz)))
- (home-page "https://github.com/python-rapidjson/python-rapidjson")
- (synopsis "Python wrapper around rapidjson")
- (description "This package provides a python wrapper around rapidjson.")
- (license license:expat)))
- (define-public python-venusian
- (package
- (name "python-venusian")
- (version "3.0.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "venusian" version))
- (sha256
- (base32 "0f7f67dkgxxcjfhpdd5frb9pszkf04lyzzpn5069q0xi89r2p17n"))))
- (build-system python-build-system)
- (native-inputs
- `(("python-pytest" ,python-pytest)
- ("python-runner" ,python-pytest-runner)
- ("python-pytest-cov" ,python-pytest-cov)))
- (arguments '(#:test-target "pytest"))
- (home-page "https://docs.pylonsproject.org/projects/venusian")
- (synopsis "Library for deferring decorator actions")
- (description
- "Venusian is a library which allows framework authors to defer decorator
- actions. Instead of taking actions when a function (or class) decorator is
- executed at import time, you can defer the action usually taken by the
- decorator until a separate scan phase.")
- (license license:repoze)))
- (define-public python-zope-deprecation
- (package
- (name "python-zope-deprecation")
- (version "4.4.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "zope.deprecation" version))
- (sha256
- (base32
- "1pz2cv7gv9y1r3m0bdv7ks1alagmrn5msm5spwdzkb2by0w36i8d"))))
- (build-system python-build-system)
- (native-inputs `())
- (propagated-inputs `())
- (home-page "https://zopedeprecation.readthedocs.io/")
- (synopsis "Function for marking deprecations")
- (description "The @code{zope.deprecation} module provides a function for
- marking modules, classes, functions, methods and properties as deprecated,
- displaying warnings when usaged in application code.")
- (license license:zpl2.1)))
- (define-public python-translationstring
- (package
- (name "python-translationstring")
- (version "1.3")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "translationstring" version))
- (sha256
- (base32
- "0bdpcnd9pv0131dl08h4zbcwmgc45lyvq3pa224xwan5b3x4rr2f"))))
- (build-system python-build-system)
- (home-page "http://docs.pylonsproject.org/projects/translationstring")
- (synopsis "Internationalization tooling for the Pylons project")
- (description "This package provides a library used by various Pylons
- project packages for internationalization (i18n) duties related to
- translation.")
- (license license:repoze)))
- (define-public python-plaster
- (package
- (name "python-plaster")
- (version "1.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "plaster" version))
- (sha256
- (base32
- "1hy8k0nv2mxq94y5aysk6hjk9ryb4bsd13g83m60hcyzxz3wflc3"))))
- (build-system python-build-system)
- (native-inputs
- `(("python-pytest" ,python-pytest)))
- (home-page "https://docs.pylonsproject.org/projects/plaster/en/latest/")
- (synopsis "Configuration loader for multiple config file formats")
- (description
- "Plaster is a loader interface around multiple config file formats. It
- exists to define a common API for applications to use when they wish to load
- configuration. The library itself does not aim to handle anything except a
- basic API that applications may use to find and load configuration settings.
- Any specific constraints should be implemented in a pluggable loader which can
- be registered via an entrypoint.")
- (license license:repoze)))
- (define-public python-plaster-pastedeploy
- (package
- (name "python-plaster-pastedeploy")
- (version "0.7")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "plaster_pastedeploy" version))
- (sha256
- (base32
- "1zg7gcsvc1kzay1ry5p699rg2qavfsxqwl17mqxzr0gzw6j9679r"))))
- (build-system python-build-system)
- (native-inputs
- `(("python-pytest" ,python-pytest)))
- (propagated-inputs
- `(("python-plaster" ,python-plaster)
- ("python-pastedeploy" ,python-pastedeploy)))
- (home-page "https://github.com/Pylons/plaster_pastedeploy")
- (synopsis "Plugin for python-plaster adding PasteDeploy syntax")
- (description
- "This plugin for @code{python-plaster} adds support for PasteDeploy
- syntax, it provides a plaster @code{Loader} object that can parse ini files
- according to the standard set by PasteDeploy ")
- (license license:expat)))
- (define-public python-hupper
- (package
- (name "python-hupper")
- (version "1.10.3")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "hupper" version))
- (sha256
- (base32
- "1nbc648d110jx6ziji980cdmzsd14p8fqrcarsdvr1vm5jvm2vyd"))))
- (build-system python-build-system)
- (arguments '(#:test-target "pytest"))
- (native-inputs
- `(("python-pytest" ,python-pytest)
- ("python-pytest-runner" ,python-pytest-runner)
- ("python-watchdog" ,python-watchdog)
- ("python-mock" ,python-mock)
- ("python-pytest-cov" ,python-pytest-cov)))
- (propagated-inputs
- `(("python-pytz" ,python-pytz)))
- (home-page "https://readthedocs.org/projects/hupper")
- (synopsis "Integrated process monitor tracking changes to imported Python files")
- (description
- "Hupper is an integrated process monitor that will track changes to any
- imported Python files in sys.modules as well as custom paths. When files are
- changed the process is restarted.")
- (license license:expat)))
- (define-public python-pyramid
- (package
- (name "python-pyramid")
- (version "1.10.4")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "pyramid" version))
- (sha256
- (base32
- "0rkxs1ajycg2zh1c94xlmls56mx5m161sn8112skj0amza6cn36q"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-hupper" ,python-hupper)
- ("python-plaster-pastedeploy" ,python-plaster-pastedeploy)
- ("python-translationstring" ,python-translationstring)
- ("python-venusian" ,python-venusian)
- ("python-webob" ,python-webob)
- ("python-zope-deprecation" ,python-zope-deprecation)
- ("python-zope-interface" ,python-zope-interface)
- ("python-webtest" ,python-webtest)
- ("python-zope-component" ,python-zope-component)
- ("python-plaster" ,python-plaster)))
- (home-page "https://trypyramid.com/")
- (synopsis "Python web-framework suitable for small and large sites")
- (description
- "Pyramid makes it easy to write web applications. From minimal
- request/response web apps to larger, grown applications.")
- (license license:repoze)))
- (define-public python-random-user-agent
- (package
- (name "python-random-user-agent")
- (version "1.0.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "random_user_agent" version))
- (sha256
- (base32
- "04nhzdh2ki7ybhjrmghxci6hcm6i03vvin2q2ynj87fbr1pa534g"))))
- (build-system python-build-system)
- (home-page "https://github.com/Luqman-Ud-Din/random_user_agent")
- (synopsis "List of user agents")
- (description
- "This package provides a list of user agents, from a collection of more
- than 326,000 known user-agents. Users can pick a random one, or select one
- based on filters.")
- (license license:expat)))
- (define-public python-flask-restx
- (package
- (name "python-flask-restx")
- (version "0.2.0")
- (source
- ;; We fetch from the Git repo because there are no tests in the PyPI
- ;; archive.
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/python-restx/flask-restx")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32 "0xf2vkmdngp9cv9klznizai4byxjcf0iqh1pr4b83nann0jxqwy7"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-aniso8601" ,python-aniso8601)
- ("python-flask" ,python-flask)
- ("python-jsonschema" ,python-jsonschema)
- ("python-pytz" ,python-pytz)))
- (native-inputs
- `(("python-blinker" ,python-blinker)
- ("python-faker" ,python-faker)
- ("python-pytest" ,python-pytest)
- ("python-pytest-benchmark"
- ,python-pytest-benchmark)
- ("python-pytest-flask" ,python-pytest-flask)
- ("python-pytest-mock" ,python-pytest-mock)))
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "pytest" "--benchmark-skip" "-k"
- ;; Those tests need internet access
- "not test_check and not test_valid_value_check"))))))
- (home-page "https://github.com/python-restx/flask-restx")
- (synopsis
- "Framework for fast, easy and documented API development with Flask")
- (description
- "Flask-RESTX is an extension for Flask that adds support for quickly building
- REST APIs. Flask-RESTX encourages best practices with minimal setup. If you are familiar
- with Flask, Flask-RESTX should be easy to pick up. It provides a coherent collection of
- decorators and tools to describe your API and expose its documentation properly using
- Swagger.")
- (license license:bsd-3)))
- (define-public python-flask-socketio
- (package
- (name "python-flask-socketio")
- (version "5.0.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "Flask-SocketIO" version))
- (sha256
- (base32
- "09r2gpj2nbn72v2zaf6xsvlazln77pgqzp2pg2021nja47sijhsw"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-flask" ,python-flask)
- ("python-socketio" ,python-socketio)))
- (arguments '(#:tests? #f)) ; Tests not included in release tarball.
- (home-page "https://github.com/miguelgrinberg/Flask-SocketIO/")
- (synopsis "Socket.IO integration for Flask applications")
- (description "Socket.IO integration for Flask applications")
- (license license:expat)))
- (define-public python-manuel
- (package
- (name "python-manuel")
- (version "1.10.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "manuel" version))
- (sha256
- (base32
- "1bdzay7j70fly5fy6wbdi8fbrxjrrlxnxnw226rwry1c8a351rpy"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-six" ,python-six)))
- (native-inputs
- `(("python-zope-testing" ,python-zope-testing)))
- (home-page "https://pypi.org/project/manuel/")
- (synopsis "Build tested documentation")
- (description
- "Manuel lets you mix and match traditional doctests with custom test syntax.")
- (license license:asl2.0)))
- (define-public python-persistent
- (package
- (name "python-persistent")
- (version "4.6.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "persistent" version))
- (sha256
- (base32
- "0imm9ji03lhkpcfmhid7x5209ix8g2rlgki9ik1qxks4b8sm8gzq"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-cffi" ,python-cffi)
- ("python-zope-interface" ,python-zope-interface)))
- (native-inputs
- `(("python-manuel" ,python-manuel)
- ("python-zope-testrunner" ,python-zope-testrunner)))
- (home-page "https://github.com/zopefoundation/persistent/")
- (synopsis "Translucent persistent objects")
- (description "This package contains a generic persistence implementation for
- Python. It forms the core protocol for making objects interact
- \"transparently\" with a database such as the ZODB.")
- (license license:zpl2.1)))
- (define-public python-btrees
- (package
- (name "python-btrees")
- (version "4.7.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "BTrees" version))
- (sha256
- (base32
- "0iiq0g9k1g6qgqq84q9h6639vlvzznk1rgdm0rfcnnqkbkmsbr3w"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-persistent" ,python-persistent)
- ("python-zope-interface" ,python-zope-interface)))
- (native-inputs
- `(("python-persistent" ,python-persistent)
- ("python-transaction" ,python-transaction)
- ("python-zope-testrunner" ,python-zope-testrunner)))
- (home-page "https://github.com/zopefoundation/BTrees")
- (synopsis "Scalable persistent object containers")
- (description
- "This package contains a set of persistent object containers built around a
- modified BTree data structure. The trees are optimized for use inside ZODB's
- \"optimistic concurrency\" paradigm, and include explicit resolution of
- conflicts detected by that mechanism.")
- (license license:zpl2.1)))
- (define-public python-transaction
- (package
- (name "python-transaction")
- (version "3.0.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "transaction" version))
- (sha256
- (base32
- "0bdaks31bgfh78wnj3sij24bfysmqk25crsis6amz8kzrc0d82iv"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-zope-interface" ,python-zope-interface)))
- (native-inputs
- `(("python-coverage" ,python-coverage)
- ("python-mock" ,python-mock)
- ("python-nose" ,python-nose)))
- (home-page "https://github.com/zopefoundation/transaction")
- (synopsis "Transaction management for Python")
- (description "This package contains a generic transaction implementation
- for Python. It is mainly used by the ZODB.")
- (license license:zpl2.1)))
- (define-public python-robot-detection
- (package
- (name "python-robot-detection")
- (version "0.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "robot-detection" version))
- (sha256
- (base32
- "1xd2jm3yn31bnk1kqzggils2rxj26ylxsfz3ap7bhr3ilhnbg3rx"))))
- (build-system python-build-system)
- (arguments '(#:tests? #f)) ; Tests not shipped in pypi release.
- (propagated-inputs `(("python-six" ,python-six)))
- (home-page "https://github.com/rory/robot-detection")
- (synopsis "Detect web crawlers")
- (description
- "@code{robot_detection} is a python module to detect if a given HTTP User
- Agent is a web crawler. It uses the list of registered robots from
- @url{http://www.robotstxt.org}.")
- (license license:gpl3+)))
- (define-public python-pysolr
- (package
- (name "python-pysolr")
- (version "3.9.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pysolr" version))
- (sha256
- (base32
- "1rj5jmscvxjwcmlfi6hmkj44l4x6n3ln5p7d8d18j566hzmmzw3f"))))
- (build-system python-build-system)
- (arguments
- '(#:tests? #f)) ; Tests require network access.
- (propagated-inputs
- `(("python-requests" ,python-requests)))
- (native-inputs
- `(("python-setuptools-scm" ,python-setuptools-scm)))
- (home-page "https://github.com/django-haystack/pysolr/")
- (synopsis "Lightweight python wrapper for Apache Solr")
- (description
- "This module provides an interface that queries the Apache Solr server
- using a pure Python implementation.")
- (license license:bsd-3)))
- (define-public python-http-ece
- (package
- (name "python-http-ece")
- (version "1.1.0")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/web-push-libs/encrypted-content-encoding")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0bp4cc0xc123i72h80ax3qz3ixfwx3j7pw343kc7i6kdvfi8klx7"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'change-directory
- (lambda _ (chdir "python") #t)))))
- (propagated-inputs
- `(("python-cryptography" ,python-cryptography)))
- (native-inputs
- `(("python-coverage" ,python-coverage)
- ("python-flake8" ,python-flake8)
- ("python-mock" ,python-mock)
- ("python-nose" ,python-nose)))
- (home-page "https://github.com/web-push-libs/encrypted-content-encoding")
- (synopsis "Encrypted Content Encoding for HTTP")
- (description
- "This package provices a simple implementation of Encrypted Content
- Encoding for HTTP.")
- (license license:expat)))
- (define-public python-cloudscraper
- (package
- (name "python-cloudscraper")
- (version "1.2.48")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "cloudscraper" version))
- (sha256
- (base32 "0qjxzb0z5bprvmdhx42ayqhlhi2h49d9dwc0vvycj817s71f2sxv"))
- (modules '((guix build utils)))
- (snippet
- '(with-directory-excursion "cloudscraper"
- (for-each delete-file
- '("captcha/2captcha.py"
- "captcha/9kw.py"
- "captcha/anticaptcha.py"
- "captcha/deathbycaptcha.py"))
- (substitute* "__init__.py"
- ;; Perhaps it's a joke, but don't promote proprietary software.
- (("([Th]is feature is not available) in the .*'" _ prefix)
- (string-append prefix ".'")))
- #t))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- ;; XXX: Dependencies, that have not yet been packaged
- ;; and cause an import error when included.
- (add-after 'unpack 'drop-unsupported-sources
- (lambda _
- (with-directory-excursion "cloudscraper"
- (for-each delete-file
- '("interpreters/js2py.py"
- "interpreters/v8.py")))
- #t)))))
- (propagated-inputs
- `(("python-requests" ,python-requests)
- ("python-requests-toolbelt" ,python-requests-toolbelt-0.9.1)
- ("python-pyparsing" ,python-pyparsing-2.4.7)))
- (native-inputs
- `(("python-pytest" ,python-pytest)))
- (home-page "https://github.com/venomous/cloudscraper")
- (synopsis "Cloudflare anti-bot bypass")
- (description
- "This module acts as a webbrowser solving Cloudflare's Javascript
- challenges.")
- (license license:expat)))
- (define-public python-imap-tools
- (package
- (name "python-imap-tools")
- (version "0.29.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "imap_tools" version))
- (sha256
- (base32
- "0x122jwpc74wwyw2rsv2fvh6p12y31019ndfr9717jzjkj2d3lhb"))))
- (build-system python-build-system)
- (arguments '(#:tests? #f)) ; tests require internet access
- (home-page "https://github.com/ikvk/imap_tools")
- (synopsis "Work with email and mailbox by IMAP")
- (description
- "This Python library provides tools to deal with email and mailboxes
- over IMAP:
- @itemize
- @item Parsed email message attributes
- @item Query builder for searching emails
- @item Work with emails in folders (copy, delete, flag, move, seen)
- @item Work with mailbox folders (list, set, get, create, exists, rename, delete, status)
- @end itemize")
- (license license:asl2.0)))
- (define-public python-hstspreload
- (package
- (name "python-hstspreload")
- (version "2020.10.20")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "hstspreload" version))
- (sha256
- (base32
- "1qah80p2xlib1rhivvdj9v5y3girxrj7dwp1mnh8mwaj5wy32y8a"))))
- (build-system python-build-system)
- (home-page
- "https://github.com/sethmlarson/hstspreload")
- (synopsis
- "Chromium HSTS Preload list as a Python package")
- (description
- "@code{python-hstspreload} contains Chromium HSTS Preload list
- as a Python package.")
- (license license:bsd-3)))
- (define-public python-sanic
- (package
- (name "python-sanic")
- (version "20.12.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "sanic" version))
- (sha256
- (base32
- "1c02gdp1j18xny9jd33fp0w57qqi7g66zwmaykv2dhcks96f5mxr"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'use-recent-pytest
- ;; Allow using recent dependencies.
- (lambda* (#:key inputs #:allow-other-keys)
- (substitute* "setup.py"
- (("pytest==5.2.1") "pytest")
- (("multidict>=5.0,<6.0") "multidict")
- (("httpx==0\\.15\\.4") "httpx"))
- #t))
- (replace 'check
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (add-installed-pythonpath inputs outputs)
- (invoke "pytest" "-vv" "./tests" "-k"
- "not test_zero_downtime and not test_gunicorn_worker"))))))
- (propagated-inputs
- `(("python-aiofiles" ,python-aiofiles)
- ("python-httptools" ,python-httptools)
- ("python-httpx" ,python-httpx)
- ("python-multidict" ,python-multidict)
- ("python-ujson" ,python-ujson)
- ("python-uvloop" ,python-uvloop)
- ("python-websockets" ,python-websockets)))
- (native-inputs
- `(("gunicorn" ,gunicorn)
- ("python-beautifulsoup4" ,python-beautifulsoup4)
- ("python-hstspreload" ,python-hstspreload)
- ("python-httpcore" ,python-httpcore)
- ("python-pytest" ,python-pytest)
- ("python-pytest-cov" ,python-pytest-cov)
- ("python-pytest-benchmark" ,python-pytest-benchmark)
- ("python-pytest-sanic" ,python-pytest-sanic)
- ("python-pytest-sugar" ,python-pytest-sugar)
- ("python-pytest-asyncio" ,python-pytest-asyncio)
- ("python-urllib3" ,python-urllib3)
- ("python-uvicorn" ,python-uvicorn)))
- (home-page
- "https://github.com/sanic-org/sanic/")
- (synopsis
- "Async Python web server/framework")
- (description
- "Sanic is a Python web server and web framework
- that's written to go fast. It allows the usage of the
- @code{async/await} syntax added in Python 3.5, which makes
- your code non-blocking and speedy.")
- (license license:expat)))
- (define-public python-socketio
- (package
- (name "python-socketio")
- (version "5.1.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "python-socketio" version))
- (sha256
- (base32
- "14vhpxdn54lz54mhcqlgcks0ssbws9gd1y7ii16a2g3gpfdc531k"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-aiohttp" ,python-aiohttp)
- ("python-bidict" ,python-bidict)
- ("python-engineio" ,python-engineio)
- ("python-requests" ,python-requests)
- ("python-websocket-client" ,python-websocket-client)
- ("python-websockets" ,python-websockets)))
- (arguments '(#:tests? #f)) ; Tests not included in release tarball.
- (home-page "https://github.com/miguelgrinberg/python-socketio/")
- (synopsis "Python Socket.IO server")
- (description
- "Python implementation of the Socket.IO realtime client and server.")
- (license license:expat)))
- (define-public python-socks
- (package
- (name "python-socks")
- (version "1.1.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "python-socks" version))
- (sha256
- (base32
- "06mgv3icsyglv50w3sb71x6cpbskza20pqd93l5xk59x574i6xgs"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f ; tests not included
- #:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "pytest" "tests/" "-s"))
- #t)))))
- (propagated-inputs
- `(("python-async-timeout" ,python-async-timeout)
- ("python-curio" ,python-curio)
- ("python-trio" ,python-trio)))
- (native-inputs
- `(("python-pytest" ,python-pytest)))
- (home-page "https://github.com/romis2012/python-socks")
- (synopsis
- "Core proxy (SOCKS4, SOCKS5, HTTP tunneling) functionality for Python")
- (description
- "Socks is a library providing core proxy (SOCKS4, SOCKS5, HTTP tunneling)
- functionality.")
- (license license:asl2.0)))
- (define-public python-azure-nspkg
- (package
- (name "python-azure-nspkg")
- (version "3.0.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "azure-nspkg" version ".zip"))
- (sha256
- (base32
- "1l4xwdh0fcnvrv0mzig4g2kgqkfbsy64zjm1ggc6grk3mykcxlz7"))))
- (build-system python-build-system)
- (native-inputs `(("unzip" ,unzip)))
- (home-page "https://github.com/Azure/azure-sdk-for-python")
- (synopsis "Azure namespace internals")
- (description
- "This package is an internal Azure namespace package.")
- (license license:expat)))
- (define-public python-azure-storage-nspkg
- (package
- (name "python-azure-storage-nspkg")
- (version "3.1.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "azure-storage-nspkg" version))
- (sha256
- (base32
- "049qcmgshz7dj9yaqma0fwcgbxwddgwyfcw4gmv45xfmaa3bwfvg"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-azure-nspkg" ,python-azure-nspkg)))
- (home-page "https://github.com/Azure/azure-storage-python")
- (synopsis "Microsoft Azure Storage Namespace package")
- (description
- "This project provides a client library in Python that makes it easy to
- communicate with Microsoft Azure Storage services.")
- (license license:expat)))
- (define-public python-w3lib
- (package
- (name "python-w3lib")
- (version "1.22.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "w3lib" version))
- (sha256
- (base32
- "1pv02lvvmgz2qb61vz1jkjc04fgm4hpfvaj5zm4i3mjp64hd1mha"))))
- (build-system python-build-system)
- (native-inputs
- `(("python-six" ,python-six)))
- (home-page "https://github.com/scrapy/w3lib")
- (synopsis "Python library of web-related functions")
- (description
- "This is a Python library of web-related functions, such as: remove comments,
- or tags from HTML snippets, extract base url from HTML snippets, translate entites
- on HTML strings, among other things.")
- (license license:bsd-3)))
|