1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770127711277212773127741277512776127771277812779127801278112782127831278412785127861278712788127891279012791127921279312794127951279612797127981279912800128011280212803128041280512806128071280812809128101281112812128131281412815128161281712818128191282012821128221282312824128251282612827128281282912830128311283212833128341283512836128371283812839128401284112842128431284412845128461284712848128491285012851128521285312854128551285612857128581285912860128611286212863128641286512866128671286812869128701287112872128731287412875128761287712878128791288012881128821288312884128851288612887128881288912890128911289212893128941289512896128971289812899129001290112902129031290412905129061290712908129091291012911129121291312914129151291612917129181291912920129211292212923129241292512926129271292812929129301293112932129331293412935129361293712938129391294012941129421294312944129451294612947129481294912950129511295212953129541295512956129571295812959129601296112962129631296412965129661296712968129691297012971129721297312974129751297612977129781297912980129811298212983129841298512986129871298812989129901299112992129931299412995129961299712998129991300013001130021300313004130051300613007130081300913010130111301213013130141301513016130171301813019130201302113022130231302413025130261302713028130291303013031130321303313034130351303613037130381303913040130411304213043130441304513046130471304813049130501305113052130531305413055130561305713058130591306013061130621306313064130651306613067130681306913070130711307213073130741307513076130771307813079130801308113082130831308413085130861308713088130891309013091130921309313094130951309613097130981309913100131011310213103131041310513106131071310813109131101311113112131131311413115131161311713118131191312013121131221312313124131251312613127131281312913130131311313213133131341313513136131371313813139131401314113142131431314413145131461314713148131491315013151131521315313154131551315613157131581315913160131611316213163131641316513166131671316813169131701317113172131731317413175131761317713178131791318013181131821318313184131851318613187131881318913190131911319213193131941319513196131971319813199132001320113202132031320413205132061320713208132091321013211132121321313214132151321613217132181321913220132211322213223132241322513226132271322813229132301323113232132331323413235132361323713238132391324013241132421324313244132451324613247132481324913250132511325213253132541325513256132571325813259132601326113262132631326413265132661326713268132691327013271132721327313274132751327613277132781327913280132811328213283132841328513286132871328813289132901329113292132931329413295132961329713298132991330013301133021330313304133051330613307133081330913310133111331213313133141331513316133171331813319133201332113322133231332413325133261332713328133291333013331133321333313334133351333613337133381333913340133411334213343133441334513346133471334813349133501335113352133531335413355133561335713358133591336013361133621336313364133651336613367133681336913370133711337213373133741337513376133771337813379133801338113382133831338413385133861338713388133891339013391133921339313394133951339613397133981339913400134011340213403134041340513406134071340813409134101341113412134131341413415134161341713418134191342013421134221342313424134251342613427134281342913430134311343213433134341343513436134371343813439134401344113442134431344413445134461344713448134491345013451134521345313454134551345613457134581345913460134611346213463134641346513466134671346813469134701347113472134731347413475134761347713478134791348013481134821348313484134851348613487134881348913490134911349213493134941349513496134971349813499135001350113502135031350413505135061350713508135091351013511135121351313514135151351613517135181351913520135211352213523135241352513526135271352813529135301353113532135331353413535135361353713538135391354013541135421354313544135451354613547135481354913550135511355213553135541355513556135571355813559135601356113562135631356413565135661356713568135691357013571135721357313574135751357613577135781357913580135811358213583135841358513586135871358813589135901359113592135931359413595135961359713598135991360013601136021360313604136051360613607136081360913610136111361213613136141361513616136171361813619136201362113622136231362413625136261362713628136291363013631136321363313634136351363613637136381363913640136411364213643136441364513646136471364813649136501365113652136531365413655136561365713658136591366013661136621366313664136651366613667136681366913670136711367213673136741367513676136771367813679136801368113682136831368413685136861368713688136891369013691136921369313694136951369613697136981369913700137011370213703137041370513706137071370813709137101371113712137131371413715137161371713718137191372013721137221372313724137251372613727137281372913730137311373213733137341373513736137371373813739137401374113742137431374413745137461374713748137491375013751137521375313754137551375613757137581375913760137611376213763137641376513766137671376813769137701377113772137731377413775137761377713778137791378013781137821378313784137851378613787137881378913790137911379213793137941379513796137971379813799138001380113802138031380413805138061380713808138091381013811138121381313814138151381613817138181381913820138211382213823138241382513826138271382813829138301383113832138331383413835138361383713838138391384013841138421384313844138451384613847138481384913850138511385213853138541385513856138571385813859138601386113862138631386413865138661386713868138691387013871138721387313874138751387613877138781387913880138811388213883138841388513886138871388813889138901389113892138931389413895138961389713898138991390013901139021390313904139051390613907139081390913910139111391213913139141391513916139171391813919139201392113922139231392413925139261392713928139291393013931139321393313934139351393613937139381393913940139411394213943139441394513946139471394813949139501395113952139531395413955139561395713958139591396013961139621396313964139651396613967139681396913970139711397213973139741397513976139771397813979139801398113982139831398413985139861398713988139891399013991139921399313994139951399613997139981399914000140011400214003140041400514006140071400814009140101401114012140131401414015140161401714018140191402014021140221402314024140251402614027140281402914030140311403214033140341403514036140371403814039140401404114042140431404414045140461404714048140491405014051140521405314054140551405614057140581405914060140611406214063140641406514066140671406814069140701407114072140731407414075140761407714078140791408014081140821408314084140851408614087140881408914090140911409214093140941409514096140971409814099141001410114102141031410414105141061410714108141091411014111141121411314114141151411614117141181411914120141211412214123141241412514126141271412814129141301413114132141331413414135141361413714138141391414014141141421414314144141451414614147141481414914150141511415214153141541415514156141571415814159141601416114162141631416414165141661416714168141691417014171141721417314174141751417614177141781417914180141811418214183141841418514186141871418814189141901419114192141931419414195141961419714198141991420014201142021420314204142051420614207142081420914210142111421214213142141421514216142171421814219142201422114222142231422414225142261422714228142291423014231142321423314234142351423614237142381423914240142411424214243142441424514246142471424814249142501425114252142531425414255142561425714258142591426014261142621426314264142651426614267142681426914270142711427214273142741427514276142771427814279142801428114282142831428414285142861428714288142891429014291142921429314294142951429614297142981429914300143011430214303143041430514306143071430814309143101431114312143131431414315143161431714318143191432014321143221432314324143251432614327143281432914330143311433214333143341433514336143371433814339143401434114342143431434414345143461434714348143491435014351143521435314354143551435614357143581435914360143611436214363143641436514366143671436814369143701437114372143731437414375143761437714378143791438014381143821438314384143851438614387143881438914390143911439214393143941439514396143971439814399144001440114402144031440414405144061440714408144091441014411144121441314414144151441614417144181441914420144211442214423144241442514426144271442814429144301443114432144331443414435144361443714438144391444014441144421444314444144451444614447144481444914450144511445214453144541445514456144571445814459144601446114462144631446414465144661446714468144691447014471144721447314474144751447614477144781447914480144811448214483144841448514486144871448814489144901449114492144931449414495144961449714498144991450014501145021450314504145051450614507145081450914510145111451214513145141451514516145171451814519145201452114522145231452414525145261452714528145291453014531145321453314534145351453614537145381453914540145411454214543145441454514546145471454814549145501455114552145531455414555145561455714558145591456014561145621456314564145651456614567145681456914570145711457214573145741457514576145771457814579145801458114582145831458414585145861458714588145891459014591145921459314594145951459614597145981459914600146011460214603146041460514606146071460814609146101461114612146131461414615146161461714618146191462014621146221462314624146251462614627146281462914630146311463214633146341463514636146371463814639146401464114642146431464414645146461464714648146491465014651146521465314654146551465614657146581465914660146611466214663146641466514666146671466814669146701467114672146731467414675146761467714678146791468014681146821468314684146851468614687146881468914690146911469214693146941469514696146971469814699147001470114702147031470414705147061470714708147091471014711147121471314714147151471614717147181471914720147211472214723147241472514726147271472814729147301473114732147331473414735147361473714738147391474014741147421474314744147451474614747147481474914750147511475214753147541475514756147571475814759147601476114762147631476414765147661476714768147691477014771147721477314774147751477614777147781477914780147811478214783147841478514786147871478814789147901479114792147931479414795147961479714798147991480014801148021480314804148051480614807148081480914810148111481214813148141481514816148171481814819148201482114822148231482414825148261482714828148291483014831148321483314834148351483614837148381483914840148411484214843148441484514846148471484814849148501485114852148531485414855148561485714858148591486014861148621486314864148651486614867148681486914870148711487214873148741487514876148771487814879148801488114882148831488414885148861488714888148891489014891148921489314894148951489614897148981489914900149011490214903149041490514906149071490814909149101491114912149131491414915149161491714918149191492014921149221492314924149251492614927149281492914930149311493214933149341493514936149371493814939149401494114942149431494414945149461494714948149491495014951149521495314954149551495614957149581495914960149611496214963149641496514966149671496814969149701497114972149731497414975149761497714978149791498014981149821498314984149851498614987149881498914990149911499214993149941499514996149971499814999150001500115002150031500415005150061500715008150091501015011150121501315014150151501615017150181501915020150211502215023150241502515026150271502815029150301503115032150331503415035150361503715038150391504015041150421504315044150451504615047150481504915050150511505215053150541505515056150571505815059150601506115062150631506415065150661506715068150691507015071150721507315074150751507615077150781507915080150811508215083150841508515086150871508815089150901509115092150931509415095150961509715098150991510015101151021510315104151051510615107151081510915110151111511215113151141511515116151171511815119151201512115122151231512415125151261512715128151291513015131151321513315134151351513615137151381513915140151411514215143151441514515146151471514815149151501515115152151531515415155151561515715158151591516015161151621516315164151651516615167151681516915170151711517215173151741517515176151771517815179151801518115182151831518415185151861518715188151891519015191151921519315194151951519615197151981519915200152011520215203152041520515206152071520815209152101521115212152131521415215152161521715218152191522015221152221522315224152251522615227152281522915230152311523215233152341523515236152371523815239152401524115242152431524415245152461524715248152491525015251152521525315254152551525615257152581525915260152611526215263152641526515266152671526815269152701527115272152731527415275152761527715278152791528015281152821528315284152851528615287152881528915290152911529215293152941529515296152971529815299153001530115302153031530415305153061530715308153091531015311153121531315314153151531615317153181531915320153211532215323153241532515326153271532815329153301533115332153331533415335153361533715338153391534015341153421534315344153451534615347153481534915350153511535215353153541535515356153571535815359153601536115362153631536415365153661536715368153691537015371153721537315374153751537615377153781537915380153811538215383153841538515386153871538815389153901539115392153931539415395153961539715398153991540015401154021540315404154051540615407154081540915410154111541215413154141541515416154171541815419154201542115422154231542415425154261542715428154291543015431154321543315434154351543615437154381543915440154411544215443154441544515446154471544815449154501545115452154531545415455154561545715458154591546015461154621546315464154651546615467154681546915470154711547215473154741547515476154771547815479154801548115482154831548415485154861548715488154891549015491154921549315494154951549615497154981549915500155011550215503155041550515506155071550815509155101551115512155131551415515155161551715518155191552015521155221552315524155251552615527155281552915530155311553215533155341553515536155371553815539155401554115542155431554415545155461554715548155491555015551155521555315554155551555615557155581555915560155611556215563155641556515566155671556815569155701557115572155731557415575155761557715578155791558015581155821558315584155851558615587155881558915590155911559215593155941559515596155971559815599156001560115602156031560415605156061560715608156091561015611156121561315614156151561615617156181561915620156211562215623156241562515626156271562815629156301563115632156331563415635156361563715638156391564015641156421564315644156451564615647156481564915650156511565215653156541565515656156571565815659156601566115662156631566415665156661566715668156691567015671156721567315674156751567615677156781567915680156811568215683156841568515686156871568815689156901569115692156931569415695156961569715698156991570015701157021570315704157051570615707157081570915710157111571215713157141571515716157171571815719157201572115722157231572415725157261572715728157291573015731157321573315734157351573615737157381573915740157411574215743157441574515746157471574815749157501575115752157531575415755157561575715758157591576015761157621576315764157651576615767157681576915770157711577215773157741577515776157771577815779157801578115782157831578415785157861578715788157891579015791157921579315794157951579615797157981579915800158011580215803158041580515806158071580815809158101581115812158131581415815158161581715818158191582015821158221582315824158251582615827158281582915830158311583215833158341583515836158371583815839158401584115842158431584415845158461584715848158491585015851158521585315854158551585615857158581585915860158611586215863158641586515866158671586815869158701587115872158731587415875158761587715878158791588015881158821588315884158851588615887158881588915890158911589215893158941589515896158971589815899159001590115902159031590415905159061590715908159091591015911159121591315914159151591615917159181591915920159211592215923159241592515926159271592815929159301593115932159331593415935159361593715938159391594015941159421594315944159451594615947159481594915950159511595215953159541595515956159571595815959159601596115962159631596415965159661596715968159691597015971159721597315974159751597615977159781597915980159811598215983159841598515986159871598815989159901599115992159931599415995159961599715998159991600016001160021600316004160051600616007160081600916010160111601216013160141601516016160171601816019160201602116022160231602416025160261602716028160291603016031160321603316034160351603616037160381603916040160411604216043160441604516046160471604816049160501605116052160531605416055160561605716058160591606016061160621606316064160651606616067160681606916070160711607216073160741607516076160771607816079160801608116082160831608416085160861608716088160891609016091160921609316094160951609616097160981609916100161011610216103161041610516106161071610816109161101611116112161131611416115161161611716118161191612016121161221612316124161251612616127161281612916130161311613216133161341613516136161371613816139161401614116142161431614416145161461614716148161491615016151161521615316154161551615616157161581615916160161611616216163161641616516166161671616816169161701617116172161731617416175161761617716178161791618016181161821618316184161851618616187161881618916190161911619216193161941619516196161971619816199162001620116202162031620416205162061620716208162091621016211162121621316214162151621616217162181621916220162211622216223162241622516226162271622816229162301623116232162331623416235162361623716238162391624016241162421624316244162451624616247162481624916250162511625216253162541625516256162571625816259162601626116262162631626416265162661626716268162691627016271162721627316274162751627616277162781627916280162811628216283162841628516286162871628816289162901629116292162931629416295162961629716298162991630016301163021630316304163051630616307163081630916310163111631216313163141631516316163171631816319163201632116322163231632416325163261632716328163291633016331163321633316334163351633616337163381633916340163411634216343163441634516346163471634816349163501635116352163531635416355163561635716358163591636016361163621636316364163651636616367163681636916370163711637216373163741637516376163771637816379163801638116382163831638416385163861638716388163891639016391163921639316394163951639616397163981639916400164011640216403164041640516406164071640816409164101641116412164131641416415164161641716418164191642016421164221642316424164251642616427164281642916430164311643216433164341643516436164371643816439164401644116442164431644416445164461644716448164491645016451164521645316454164551645616457164581645916460164611646216463164641646516466164671646816469164701647116472164731647416475164761647716478164791648016481164821648316484164851648616487164881648916490164911649216493164941649516496164971649816499165001650116502165031650416505165061650716508165091651016511165121651316514165151651616517165181651916520165211652216523165241652516526165271652816529165301653116532165331653416535165361653716538165391654016541165421654316544165451654616547165481654916550165511655216553165541655516556165571655816559165601656116562165631656416565165661656716568165691657016571165721657316574165751657616577165781657916580165811658216583165841658516586165871658816589165901659116592165931659416595165961659716598165991660016601166021660316604166051660616607166081660916610166111661216613166141661516616166171661816619166201662116622166231662416625166261662716628166291663016631166321663316634166351663616637166381663916640166411664216643166441664516646166471664816649166501665116652166531665416655166561665716658166591666016661166621666316664166651666616667166681666916670166711667216673166741667516676166771667816679166801668116682166831668416685166861668716688166891669016691166921669316694166951669616697166981669916700167011670216703167041670516706167071670816709167101671116712167131671416715167161671716718167191672016721167221672316724167251672616727167281672916730167311673216733167341673516736167371673816739167401674116742167431674416745167461674716748167491675016751167521675316754167551675616757167581675916760167611676216763167641676516766167671676816769167701677116772167731677416775167761677716778167791678016781167821678316784167851678616787167881678916790167911679216793167941679516796167971679816799168001680116802168031680416805168061680716808168091681016811168121681316814168151681616817168181681916820168211682216823168241682516826168271682816829168301683116832168331683416835168361683716838168391684016841168421684316844168451684616847168481684916850168511685216853168541685516856168571685816859168601686116862168631686416865168661686716868168691687016871168721687316874168751687616877168781687916880168811688216883168841688516886168871688816889168901689116892168931689416895168961689716898168991690016901169021690316904169051690616907169081690916910169111691216913169141691516916169171691816919169201692116922169231692416925169261692716928169291693016931169321693316934169351693616937169381693916940169411694216943169441694516946169471694816949169501695116952169531695416955169561695716958169591696016961169621696316964169651696616967169681696916970169711697216973169741697516976169771697816979169801698116982169831698416985169861698716988169891699016991169921699316994169951699616997169981699917000170011700217003170041700517006170071700817009170101701117012170131701417015170161701717018170191702017021170221702317024170251702617027170281702917030170311703217033170341703517036170371703817039170401704117042170431704417045170461704717048170491705017051170521705317054170551705617057170581705917060170611706217063170641706517066170671706817069170701707117072170731707417075170761707717078170791708017081170821708317084170851708617087170881708917090170911709217093170941709517096170971709817099171001710117102171031710417105171061710717108171091711017111171121711317114171151711617117171181711917120171211712217123171241712517126171271712817129171301713117132171331713417135171361713717138171391714017141171421714317144171451714617147171481714917150171511715217153171541715517156171571715817159171601716117162171631716417165171661716717168171691717017171171721717317174171751717617177171781717917180171811718217183171841718517186171871718817189171901719117192171931719417195171961719717198171991720017201172021720317204172051720617207172081720917210172111721217213172141721517216172171721817219172201722117222172231722417225172261722717228172291723017231172321723317234172351723617237172381723917240172411724217243172441724517246172471724817249172501725117252172531725417255172561725717258172591726017261172621726317264172651726617267172681726917270172711727217273172741727517276172771727817279172801728117282172831728417285172861728717288172891729017291172921729317294172951729617297172981729917300173011730217303173041730517306173071730817309173101731117312173131731417315173161731717318173191732017321173221732317324173251732617327173281732917330173311733217333173341733517336173371733817339173401734117342173431734417345173461734717348173491735017351173521735317354173551735617357173581735917360173611736217363173641736517366173671736817369173701737117372173731737417375173761737717378173791738017381173821738317384173851738617387173881738917390173911739217393173941739517396173971739817399174001740117402174031740417405174061740717408174091741017411174121741317414174151741617417174181741917420174211742217423174241742517426174271742817429174301743117432174331743417435174361743717438174391744017441174421744317444174451744617447174481744917450174511745217453174541745517456174571745817459174601746117462174631746417465174661746717468174691747017471174721747317474174751747617477174781747917480174811748217483174841748517486174871748817489174901749117492174931749417495174961749717498174991750017501175021750317504175051750617507175081750917510175111751217513175141751517516175171751817519175201752117522175231752417525175261752717528175291753017531175321753317534175351753617537175381753917540175411754217543175441754517546175471754817549175501755117552175531755417555175561755717558175591756017561175621756317564175651756617567175681756917570175711757217573175741757517576175771757817579175801758117582175831758417585175861758717588175891759017591175921759317594175951759617597175981759917600176011760217603176041760517606176071760817609176101761117612176131761417615176161761717618176191762017621176221762317624176251762617627176281762917630176311763217633176341763517636176371763817639176401764117642176431764417645176461764717648176491765017651176521765317654176551765617657176581765917660176611766217663176641766517666176671766817669176701767117672176731767417675176761767717678176791768017681176821768317684176851768617687176881768917690176911769217693176941769517696176971769817699177001770117702177031770417705177061770717708177091771017711177121771317714177151771617717177181771917720177211772217723177241772517726177271772817729177301773117732177331773417735177361773717738177391774017741177421774317744177451774617747177481774917750177511775217753177541775517756177571775817759177601776117762177631776417765177661776717768177691777017771177721777317774177751777617777177781777917780177811778217783177841778517786177871778817789177901779117792177931779417795177961779717798177991780017801178021780317804178051780617807178081780917810178111781217813178141781517816178171781817819178201782117822178231782417825178261782717828178291783017831178321783317834178351783617837178381783917840178411784217843178441784517846178471784817849178501785117852178531785417855178561785717858178591786017861178621786317864178651786617867178681786917870178711787217873178741787517876178771787817879178801788117882178831788417885178861788717888178891789017891178921789317894178951789617897178981789917900179011790217903179041790517906179071790817909179101791117912179131791417915179161791717918179191792017921179221792317924179251792617927179281792917930179311793217933179341793517936179371793817939179401794117942179431794417945179461794717948179491795017951179521795317954179551795617957179581795917960179611796217963179641796517966179671796817969179701797117972179731797417975179761797717978179791798017981179821798317984179851798617987179881798917990179911799217993179941799517996179971799817999180001800118002180031800418005180061800718008180091801018011180121801318014180151801618017180181801918020180211802218023180241802518026180271802818029180301803118032180331803418035180361803718038180391804018041180421804318044180451804618047180481804918050180511805218053180541805518056180571805818059180601806118062180631806418065180661806718068180691807018071180721807318074180751807618077180781807918080180811808218083180841808518086180871808818089180901809118092180931809418095180961809718098180991810018101181021810318104181051810618107181081810918110181111811218113181141811518116181171811818119181201812118122181231812418125181261812718128181291813018131181321813318134181351813618137181381813918140181411814218143181441814518146181471814818149181501815118152181531815418155181561815718158181591816018161181621816318164181651816618167181681816918170181711817218173181741817518176181771817818179181801818118182181831818418185181861818718188181891819018191181921819318194181951819618197181981819918200182011820218203182041820518206182071820818209182101821118212182131821418215182161821718218182191822018221182221822318224182251822618227182281822918230182311823218233182341823518236182371823818239182401824118242182431824418245182461824718248182491825018251182521825318254182551825618257182581825918260182611826218263182641826518266182671826818269182701827118272182731827418275182761827718278182791828018281182821828318284182851828618287182881828918290182911829218293182941829518296182971829818299183001830118302183031830418305183061830718308183091831018311183121831318314183151831618317183181831918320183211832218323183241832518326183271832818329183301833118332183331833418335183361833718338183391834018341183421834318344183451834618347183481834918350183511835218353183541835518356183571835818359183601836118362183631836418365183661836718368183691837018371183721837318374183751837618377183781837918380183811838218383183841838518386183871838818389183901839118392183931839418395183961839718398183991840018401184021840318404184051840618407184081840918410184111841218413184141841518416184171841818419184201842118422184231842418425184261842718428184291843018431184321843318434184351843618437184381843918440184411844218443184441844518446184471844818449184501845118452184531845418455184561845718458184591846018461184621846318464184651846618467184681846918470184711847218473184741847518476184771847818479184801848118482184831848418485184861848718488184891849018491184921849318494184951849618497184981849918500185011850218503185041850518506185071850818509185101851118512185131851418515185161851718518185191852018521185221852318524185251852618527185281852918530185311853218533185341853518536185371853818539185401854118542185431854418545185461854718548185491855018551185521855318554185551855618557185581855918560185611856218563185641856518566185671856818569185701857118572185731857418575185761857718578185791858018581185821858318584185851858618587185881858918590185911859218593185941859518596185971859818599186001860118602186031860418605186061860718608186091861018611186121861318614186151861618617186181861918620186211862218623186241862518626186271862818629186301863118632186331863418635186361863718638186391864018641186421864318644186451864618647186481864918650186511865218653186541865518656186571865818659186601866118662186631866418665186661866718668186691867018671186721867318674186751867618677186781867918680186811868218683186841868518686186871868818689186901869118692186931869418695186961869718698186991870018701187021870318704187051870618707187081870918710187111871218713187141871518716187171871818719187201872118722187231872418725187261872718728187291873018731187321873318734187351873618737187381873918740187411874218743187441874518746187471874818749187501875118752187531875418755187561875718758187591876018761187621876318764187651876618767187681876918770187711877218773187741877518776187771877818779187801878118782187831878418785187861878718788187891879018791187921879318794187951879618797187981879918800188011880218803188041880518806188071880818809188101881118812188131881418815188161881718818188191882018821188221882318824188251882618827188281882918830188311883218833188341883518836188371883818839188401884118842188431884418845188461884718848188491885018851188521885318854188551885618857188581885918860188611886218863188641886518866188671886818869188701887118872188731887418875188761887718878188791888018881188821888318884188851888618887188881888918890188911889218893188941889518896188971889818899189001890118902189031890418905189061890718908189091891018911189121891318914189151891618917189181891918920189211892218923189241892518926189271892818929189301893118932189331893418935189361893718938189391894018941189421894318944189451894618947189481894918950189511895218953189541895518956189571895818959189601896118962189631896418965189661896718968189691897018971189721897318974189751897618977189781897918980189811898218983189841898518986189871898818989189901899118992189931899418995189961899718998189991900019001190021900319004190051900619007190081900919010190111901219013190141901519016190171901819019190201902119022190231902419025190261902719028190291903019031190321903319034190351903619037190381903919040190411904219043190441904519046190471904819049190501905119052190531905419055190561905719058190591906019061190621906319064190651906619067190681906919070190711907219073190741907519076190771907819079190801908119082190831908419085190861908719088190891909019091190921909319094190951909619097190981909919100191011910219103191041910519106191071910819109191101911119112191131911419115191161911719118191191912019121191221912319124191251912619127191281912919130191311913219133191341913519136191371913819139191401914119142191431914419145191461914719148191491915019151191521915319154191551915619157191581915919160191611916219163191641916519166191671916819169191701917119172191731917419175191761917719178191791918019181191821918319184191851918619187191881918919190191911919219193191941919519196191971919819199192001920119202192031920419205192061920719208192091921019211192121921319214192151921619217192181921919220192211922219223192241922519226192271922819229192301923119232192331923419235192361923719238192391924019241192421924319244192451924619247192481924919250192511925219253192541925519256192571925819259192601926119262192631926419265192661926719268192691927019271192721927319274192751927619277192781927919280192811928219283192841928519286192871928819289192901929119292192931929419295192961929719298192991930019301193021930319304193051930619307193081930919310193111931219313193141931519316193171931819319193201932119322193231932419325193261932719328193291933019331193321933319334193351933619337193381933919340193411934219343193441934519346193471934819349193501935119352193531935419355193561935719358193591936019361193621936319364193651936619367193681936919370193711937219373193741937519376193771937819379193801938119382193831938419385193861938719388193891939019391193921939319394193951939619397193981939919400194011940219403194041940519406194071940819409194101941119412194131941419415194161941719418194191942019421194221942319424194251942619427194281942919430194311943219433194341943519436194371943819439194401944119442194431944419445194461944719448194491945019451194521945319454194551945619457194581945919460194611946219463194641946519466194671946819469194701947119472194731947419475194761947719478194791948019481194821948319484194851948619487194881948919490194911949219493194941949519496194971949819499195001950119502195031950419505195061950719508195091951019511195121951319514195151951619517195181951919520195211952219523195241952519526195271952819529195301953119532195331953419535195361953719538195391954019541195421954319544195451954619547195481954919550195511955219553195541955519556195571955819559195601956119562195631956419565195661956719568195691957019571195721957319574195751957619577195781957919580195811958219583195841958519586195871958819589195901959119592195931959419595195961959719598195991960019601196021960319604196051960619607196081960919610196111961219613196141961519616196171961819619196201962119622196231962419625196261962719628196291963019631196321963319634196351963619637196381963919640196411964219643196441964519646196471964819649196501965119652196531965419655196561965719658196591966019661196621966319664196651966619667196681966919670196711967219673196741967519676196771967819679196801968119682196831968419685196861968719688196891969019691196921969319694196951969619697196981969919700197011970219703197041970519706197071970819709197101971119712197131971419715197161971719718197191972019721197221972319724197251972619727197281972919730197311973219733197341973519736197371973819739197401974119742197431974419745197461974719748197491975019751197521975319754197551975619757197581975919760197611976219763197641976519766197671976819769197701977119772197731977419775197761977719778197791978019781197821978319784197851978619787197881978919790197911979219793197941979519796197971979819799198001980119802198031980419805198061980719808198091981019811198121981319814198151981619817198181981919820198211982219823198241982519826198271982819829198301983119832198331983419835198361983719838198391984019841198421984319844198451984619847198481984919850198511985219853198541985519856198571985819859198601986119862198631986419865198661986719868198691987019871198721987319874198751987619877198781987919880198811988219883198841988519886198871988819889198901989119892198931989419895198961989719898198991990019901199021990319904199051990619907199081990919910199111991219913199141991519916199171991819919199201992119922199231992419925199261992719928199291993019931199321993319934199351993619937199381993919940199411994219943199441994519946199471994819949199501995119952199531995419955199561995719958199591996019961199621996319964199651996619967199681996919970199711997219973199741997519976199771997819979199801998119982199831998419985199861998719988199891999019991199921999319994199951999619997199981999920000200012000220003200042000520006200072000820009200102001120012200132001420015200162001720018200192002020021200222002320024200252002620027200282002920030200312003220033200342003520036200372003820039200402004120042200432004420045200462004720048200492005020051200522005320054200552005620057200582005920060200612006220063200642006520066200672006820069200702007120072200732007420075200762007720078200792008020081200822008320084200852008620087200882008920090200912009220093200942009520096200972009820099201002010120102201032010420105201062010720108201092011020111201122011320114201152011620117201182011920120201212012220123201242012520126201272012820129201302013120132201332013420135201362013720138201392014020141201422014320144201452014620147201482014920150201512015220153201542015520156201572015820159201602016120162201632016420165201662016720168201692017020171201722017320174201752017620177201782017920180201812018220183201842018520186201872018820189201902019120192201932019420195201962019720198201992020020201202022020320204202052020620207202082020920210202112021220213202142021520216202172021820219202202022120222202232022420225202262022720228202292023020231202322023320234202352023620237202382023920240202412024220243202442024520246202472024820249202502025120252202532025420255202562025720258202592026020261202622026320264202652026620267202682026920270202712027220273202742027520276202772027820279202802028120282202832028420285202862028720288202892029020291202922029320294202952029620297202982029920300203012030220303203042030520306203072030820309203102031120312203132031420315203162031720318203192032020321203222032320324203252032620327203282032920330203312033220333203342033520336203372033820339203402034120342203432034420345203462034720348203492035020351203522035320354203552035620357203582035920360203612036220363203642036520366203672036820369203702037120372203732037420375203762037720378203792038020381203822038320384203852038620387203882038920390203912039220393203942039520396203972039820399204002040120402204032040420405204062040720408204092041020411204122041320414204152041620417204182041920420204212042220423204242042520426204272042820429204302043120432204332043420435204362043720438204392044020441204422044320444204452044620447204482044920450204512045220453204542045520456204572045820459204602046120462204632046420465204662046720468204692047020471204722047320474204752047620477204782047920480204812048220483204842048520486204872048820489204902049120492204932049420495204962049720498204992050020501205022050320504205052050620507205082050920510205112051220513205142051520516205172051820519205202052120522205232052420525205262052720528205292053020531205322053320534205352053620537205382053920540205412054220543205442054520546205472054820549205502055120552205532055420555205562055720558205592056020561205622056320564205652056620567205682056920570205712057220573205742057520576205772057820579205802058120582205832058420585205862058720588205892059020591205922059320594205952059620597205982059920600206012060220603206042060520606206072060820609206102061120612206132061420615206162061720618206192062020621206222062320624206252062620627206282062920630206312063220633206342063520636206372063820639206402064120642206432064420645206462064720648206492065020651206522065320654206552065620657206582065920660206612066220663206642066520666206672066820669206702067120672206732067420675206762067720678206792068020681206822068320684206852068620687206882068920690206912069220693206942069520696206972069820699207002070120702207032070420705207062070720708207092071020711207122071320714207152071620717207182071920720207212072220723207242072520726207272072820729207302073120732207332073420735207362073720738207392074020741207422074320744207452074620747207482074920750207512075220753207542075520756207572075820759207602076120762207632076420765207662076720768207692077020771207722077320774207752077620777207782077920780207812078220783207842078520786207872078820789207902079120792207932079420795207962079720798207992080020801208022080320804208052080620807208082080920810208112081220813208142081520816208172081820819208202082120822208232082420825208262082720828208292083020831208322083320834208352083620837208382083920840208412084220843208442084520846208472084820849208502085120852208532085420855208562085720858208592086020861208622086320864208652086620867208682086920870208712087220873208742087520876208772087820879208802088120882208832088420885208862088720888208892089020891208922089320894208952089620897208982089920900209012090220903209042090520906209072090820909209102091120912209132091420915209162091720918209192092020921209222092320924209252092620927209282092920930209312093220933209342093520936209372093820939209402094120942209432094420945209462094720948209492095020951209522095320954209552095620957209582095920960209612096220963209642096520966209672096820969209702097120972209732097420975209762097720978209792098020981209822098320984209852098620987209882098920990209912099220993209942099520996209972099820999210002100121002210032100421005210062100721008210092101021011210122101321014210152101621017210182101921020210212102221023210242102521026210272102821029210302103121032210332103421035210362103721038210392104021041210422104321044210452104621047210482104921050210512105221053210542105521056210572105821059210602106121062210632106421065210662106721068210692107021071210722107321074210752107621077210782107921080210812108221083210842108521086210872108821089210902109121092210932109421095210962109721098210992110021101211022110321104211052110621107211082110921110211112111221113211142111521116211172111821119211202112121122211232112421125211262112721128211292113021131211322113321134211352113621137211382113921140211412114221143211442114521146211472114821149211502115121152211532115421155211562115721158211592116021161211622116321164211652116621167211682116921170211712117221173211742117521176211772117821179211802118121182211832118421185211862118721188211892119021191211922119321194211952119621197211982119921200212012120221203212042120521206212072120821209212102121121212212132121421215212162121721218212192122021221212222122321224212252122621227212282122921230212312123221233212342123521236212372123821239212402124121242212432124421245212462124721248212492125021251212522125321254212552125621257212582125921260212612126221263212642126521266212672126821269212702127121272212732127421275212762127721278212792128021281212822128321284212852128621287212882128921290212912129221293212942129521296212972129821299213002130121302213032130421305213062130721308213092131021311213122131321314213152131621317213182131921320213212132221323213242132521326213272132821329213302133121332213332133421335213362133721338213392134021341213422134321344213452134621347213482134921350213512135221353213542135521356213572135821359213602136121362213632136421365213662136721368213692137021371213722137321374213752137621377213782137921380213812138221383213842138521386213872138821389213902139121392213932139421395213962139721398213992140021401214022140321404214052140621407214082140921410214112141221413214142141521416214172141821419214202142121422214232142421425214262142721428214292143021431214322143321434214352143621437214382143921440214412144221443214442144521446214472144821449214502145121452214532145421455214562145721458214592146021461214622146321464214652146621467214682146921470214712147221473214742147521476214772147821479214802148121482214832148421485214862148721488214892149021491214922149321494214952149621497214982149921500215012150221503215042150521506215072150821509215102151121512215132151421515215162151721518215192152021521215222152321524215252152621527215282152921530215312153221533215342153521536215372153821539215402154121542215432154421545215462154721548215492155021551215522155321554215552155621557215582155921560215612156221563215642156521566215672156821569215702157121572215732157421575215762157721578215792158021581215822158321584215852158621587215882158921590215912159221593215942159521596215972159821599216002160121602216032160421605216062160721608216092161021611216122161321614216152161621617216182161921620216212162221623216242162521626216272162821629216302163121632216332163421635216362163721638216392164021641216422164321644216452164621647216482164921650216512165221653216542165521656216572165821659216602166121662216632166421665216662166721668216692167021671216722167321674216752167621677216782167921680216812168221683216842168521686216872168821689216902169121692216932169421695216962169721698216992170021701217022170321704217052170621707217082170921710217112171221713217142171521716217172171821719217202172121722217232172421725217262172721728217292173021731217322173321734217352173621737217382173921740217412174221743217442174521746217472174821749217502175121752217532175421755217562175721758217592176021761217622176321764217652176621767217682176921770217712177221773217742177521776217772177821779217802178121782217832178421785217862178721788217892179021791217922179321794217952179621797217982179921800218012180221803218042180521806218072180821809218102181121812218132181421815218162181721818218192182021821218222182321824218252182621827218282182921830218312183221833218342183521836218372183821839218402184121842218432184421845218462184721848218492185021851218522185321854218552185621857218582185921860218612186221863218642186521866218672186821869218702187121872218732187421875218762187721878218792188021881218822188321884218852188621887218882188921890218912189221893218942189521896218972189821899219002190121902219032190421905219062190721908219092191021911219122191321914219152191621917219182191921920219212192221923219242192521926219272192821929219302193121932219332193421935219362193721938219392194021941219422194321944219452194621947219482194921950219512195221953219542195521956219572195821959219602196121962219632196421965219662196721968219692197021971219722197321974219752197621977219782197921980219812198221983219842198521986219872198821989219902199121992219932199421995219962199721998219992200022001220022200322004220052200622007220082200922010220112201222013220142201522016220172201822019220202202122022220232202422025220262202722028220292203022031220322203322034220352203622037220382203922040220412204222043220442204522046220472204822049220502205122052220532205422055220562205722058220592206022061220622206322064220652206622067220682206922070220712207222073220742207522076220772207822079220802208122082220832208422085220862208722088220892209022091220922209322094220952209622097220982209922100221012210222103221042210522106221072210822109221102211122112221132211422115221162211722118221192212022121221222212322124221252212622127221282212922130221312213222133221342213522136221372213822139221402214122142221432214422145221462214722148221492215022151221522215322154221552215622157221582215922160221612216222163221642216522166221672216822169221702217122172221732217422175221762217722178221792218022181221822218322184221852218622187221882218922190221912219222193221942219522196221972219822199222002220122202222032220422205222062220722208222092221022211222122221322214222152221622217222182221922220222212222222223222242222522226222272222822229222302223122232222332223422235222362223722238222392224022241222422224322244222452224622247222482224922250222512225222253222542225522256222572225822259222602226122262222632226422265222662226722268222692227022271222722227322274222752227622277222782227922280222812228222283222842228522286222872228822289222902229122292222932229422295222962229722298222992230022301223022230322304223052230622307223082230922310223112231222313223142231522316223172231822319223202232122322223232232422325223262232722328223292233022331223322233322334223352233622337223382233922340223412234222343223442234522346223472234822349223502235122352223532235422355223562235722358223592236022361223622236322364223652236622367223682236922370223712237222373223742237522376223772237822379223802238122382223832238422385223862238722388223892239022391223922239322394223952239622397223982239922400224012240222403224042240522406224072240822409224102241122412224132241422415224162241722418224192242022421224222242322424224252242622427224282242922430224312243222433224342243522436224372243822439224402244122442224432244422445224462244722448224492245022451224522245322454224552245622457224582245922460224612246222463224642246522466224672246822469224702247122472224732247422475224762247722478224792248022481224822248322484224852248622487224882248922490224912249222493224942249522496224972249822499225002250122502225032250422505225062250722508225092251022511225122251322514225152251622517225182251922520225212252222523225242252522526225272252822529225302253122532225332253422535225362253722538225392254022541225422254322544225452254622547225482254922550225512255222553225542255522556225572255822559225602256122562225632256422565225662256722568225692257022571225722257322574225752257622577225782257922580225812258222583225842258522586225872258822589225902259122592225932259422595225962259722598225992260022601226022260322604226052260622607226082260922610226112261222613226142261522616226172261822619226202262122622226232262422625226262262722628226292263022631226322263322634226352263622637226382263922640226412264222643226442264522646226472264822649226502265122652226532265422655226562265722658226592266022661226622266322664226652266622667226682266922670226712267222673226742267522676226772267822679226802268122682226832268422685226862268722688226892269022691226922269322694226952269622697226982269922700227012270222703227042270522706227072270822709227102271122712227132271422715227162271722718227192272022721227222272322724227252272622727227282272922730227312273222733227342273522736227372273822739227402274122742227432274422745227462274722748227492275022751227522275322754227552275622757227582275922760227612276222763227642276522766227672276822769227702277122772227732277422775227762277722778227792278022781227822278322784227852278622787227882278922790227912279222793227942279522796227972279822799228002280122802228032280422805228062280722808228092281022811228122281322814228152281622817228182281922820228212282222823228242282522826228272282822829228302283122832228332283422835228362283722838228392284022841228422284322844228452284622847228482284922850228512285222853228542285522856228572285822859228602286122862228632286422865228662286722868228692287022871228722287322874228752287622877228782287922880228812288222883228842288522886228872288822889228902289122892228932289422895228962289722898228992290022901229022290322904229052290622907229082290922910229112291222913229142291522916229172291822919229202292122922229232292422925229262292722928229292293022931229322293322934229352293622937229382293922940229412294222943229442294522946229472294822949229502295122952229532295422955229562295722958229592296022961229622296322964229652296622967229682296922970229712297222973229742297522976229772297822979229802298122982229832298422985229862298722988229892299022991229922299322994229952299622997229982299923000230012300223003230042300523006230072300823009230102301123012230132301423015230162301723018230192302023021230222302323024230252302623027230282302923030230312303223033230342303523036230372303823039230402304123042230432304423045230462304723048230492305023051230522305323054230552305623057230582305923060230612306223063230642306523066230672306823069230702307123072230732307423075230762307723078230792308023081230822308323084230852308623087230882308923090230912309223093230942309523096230972309823099231002310123102231032310423105231062310723108231092311023111231122311323114231152311623117231182311923120231212312223123231242312523126231272312823129231302313123132231332313423135231362313723138231392314023141231422314323144231452314623147231482314923150231512315223153231542315523156231572315823159231602316123162231632316423165231662316723168231692317023171231722317323174231752317623177231782317923180231812318223183231842318523186231872318823189231902319123192231932319423195231962319723198231992320023201232022320323204232052320623207232082320923210232112321223213232142321523216232172321823219232202322123222232232322423225232262322723228232292323023231232322323323234232352323623237232382323923240232412324223243232442324523246232472324823249232502325123252232532325423255232562325723258232592326023261232622326323264232652326623267232682326923270232712327223273232742327523276232772327823279232802328123282232832328423285232862328723288232892329023291232922329323294232952329623297232982329923300233012330223303233042330523306233072330823309233102331123312233132331423315233162331723318233192332023321233222332323324233252332623327233282332923330233312333223333233342333523336233372333823339233402334123342233432334423345233462334723348233492335023351233522335323354233552335623357233582335923360233612336223363233642336523366233672336823369233702337123372233732337423375233762337723378233792338023381233822338323384233852338623387233882338923390233912339223393233942339523396233972339823399234002340123402234032340423405234062340723408234092341023411234122341323414234152341623417234182341923420234212342223423234242342523426234272342823429234302343123432234332343423435234362343723438234392344023441234422344323444234452344623447234482344923450234512345223453234542345523456234572345823459234602346123462234632346423465234662346723468234692347023471234722347323474234752347623477234782347923480234812348223483234842348523486234872348823489234902349123492234932349423495234962349723498234992350023501235022350323504235052350623507235082350923510235112351223513235142351523516235172351823519235202352123522235232352423525235262352723528235292353023531235322353323534235352353623537235382353923540235412354223543235442354523546235472354823549235502355123552235532355423555235562355723558235592356023561235622356323564235652356623567235682356923570235712357223573235742357523576235772357823579235802358123582235832358423585235862358723588235892359023591235922359323594235952359623597235982359923600236012360223603236042360523606236072360823609236102361123612236132361423615236162361723618236192362023621236222362323624236252362623627236282362923630236312363223633236342363523636236372363823639236402364123642236432364423645236462364723648236492365023651236522365323654236552365623657236582365923660236612366223663236642366523666236672366823669236702367123672236732367423675236762367723678236792368023681236822368323684236852368623687236882368923690236912369223693236942369523696236972369823699237002370123702237032370423705237062370723708237092371023711237122371323714237152371623717237182371923720237212372223723237242372523726237272372823729237302373123732237332373423735237362373723738237392374023741237422374323744237452374623747237482374923750237512375223753237542375523756237572375823759237602376123762237632376423765237662376723768237692377023771237722377323774237752377623777237782377923780237812378223783237842378523786237872378823789237902379123792237932379423795237962379723798237992380023801238022380323804238052380623807238082380923810238112381223813238142381523816238172381823819238202382123822238232382423825238262382723828238292383023831238322383323834238352383623837238382383923840238412384223843238442384523846238472384823849238502385123852238532385423855238562385723858238592386023861238622386323864238652386623867238682386923870238712387223873238742387523876238772387823879238802388123882238832388423885238862388723888238892389023891238922389323894238952389623897238982389923900239012390223903239042390523906239072390823909239102391123912239132391423915239162391723918239192392023921239222392323924239252392623927239282392923930239312393223933239342393523936239372393823939239402394123942239432394423945239462394723948239492395023951239522395323954239552395623957239582395923960239612396223963239642396523966239672396823969239702397123972239732397423975239762397723978239792398023981239822398323984239852398623987239882398923990239912399223993239942399523996239972399823999240002400124002240032400424005240062400724008240092401024011240122401324014240152401624017240182401924020240212402224023240242402524026240272402824029240302403124032240332403424035240362403724038240392404024041240422404324044240452404624047240482404924050240512405224053240542405524056240572405824059240602406124062240632406424065240662406724068240692407024071240722407324074240752407624077240782407924080240812408224083240842408524086240872408824089240902409124092240932409424095240962409724098240992410024101241022410324104241052410624107241082410924110241112411224113241142411524116241172411824119241202412124122241232412424125241262412724128241292413024131241322413324134241352413624137241382413924140241412414224143241442414524146241472414824149241502415124152241532415424155241562415724158241592416024161241622416324164241652416624167241682416924170241712417224173241742417524176241772417824179241802418124182241832418424185241862418724188241892419024191241922419324194241952419624197241982419924200242012420224203242042420524206242072420824209242102421124212242132421424215242162421724218242192422024221242222422324224242252422624227242282422924230242312423224233242342423524236242372423824239242402424124242242432424424245242462424724248242492425024251242522425324254242552425624257242582425924260242612426224263242642426524266242672426824269242702427124272242732427424275242762427724278242792428024281242822428324284242852428624287242882428924290242912429224293242942429524296242972429824299243002430124302243032430424305243062430724308243092431024311243122431324314243152431624317243182431924320243212432224323243242432524326243272432824329243302433124332243332433424335243362433724338243392434024341243422434324344243452434624347243482434924350243512435224353243542435524356243572435824359243602436124362243632436424365243662436724368243692437024371243722437324374243752437624377243782437924380243812438224383243842438524386243872438824389243902439124392243932439424395243962439724398243992440024401244022440324404244052440624407244082440924410244112441224413244142441524416244172441824419244202442124422244232442424425244262442724428244292443024431244322443324434244352443624437244382443924440244412444224443244442444524446244472444824449244502445124452244532445424455244562445724458244592446024461244622446324464244652446624467244682446924470244712447224473244742447524476244772447824479244802448124482244832448424485244862448724488244892449024491244922449324494244952449624497244982449924500245012450224503245042450524506245072450824509245102451124512245132451424515245162451724518245192452024521245222452324524245252452624527245282452924530245312453224533245342453524536245372453824539245402454124542245432454424545245462454724548245492455024551245522455324554245552455624557245582455924560245612456224563245642456524566245672456824569245702457124572245732457424575245762457724578245792458024581245822458324584245852458624587245882458924590245912459224593245942459524596245972459824599246002460124602246032460424605246062460724608246092461024611246122461324614246152461624617246182461924620246212462224623246242462524626246272462824629246302463124632246332463424635246362463724638246392464024641246422464324644246452464624647246482464924650246512465224653246542465524656246572465824659246602466124662246632466424665246662466724668246692467024671246722467324674246752467624677246782467924680246812468224683246842468524686246872468824689246902469124692246932469424695246962469724698246992470024701247022470324704247052470624707247082470924710247112471224713247142471524716247172471824719247202472124722247232472424725247262472724728247292473024731247322473324734247352473624737247382473924740247412474224743247442474524746247472474824749247502475124752247532475424755247562475724758247592476024761247622476324764247652476624767247682476924770247712477224773247742477524776247772477824779247802478124782247832478424785247862478724788247892479024791247922479324794247952479624797247982479924800248012480224803248042480524806248072480824809248102481124812248132481424815248162481724818248192482024821248222482324824248252482624827248282482924830248312483224833248342483524836248372483824839248402484124842248432484424845248462484724848248492485024851248522485324854248552485624857248582485924860248612486224863248642486524866248672486824869248702487124872248732487424875248762487724878248792488024881248822488324884248852488624887248882488924890248912489224893248942489524896248972489824899249002490124902249032490424905249062490724908249092491024911249122491324914249152491624917249182491924920249212492224923249242492524926249272492824929249302493124932249332493424935249362493724938249392494024941249422494324944249452494624947249482494924950249512495224953249542495524956249572495824959249602496124962249632496424965249662496724968249692497024971249722497324974249752497624977249782497924980249812498224983249842498524986249872498824989249902499124992249932499424995249962499724998249992500025001250022500325004250052500625007250082500925010250112501225013250142501525016250172501825019250202502125022250232502425025250262502725028250292503025031250322503325034250352503625037250382503925040250412504225043250442504525046250472504825049250502505125052250532505425055250562505725058250592506025061250622506325064250652506625067250682506925070250712507225073250742507525076250772507825079250802508125082250832508425085250862508725088250892509025091250922509325094250952509625097250982509925100251012510225103251042510525106251072510825109251102511125112251132511425115251162511725118251192512025121251222512325124251252512625127251282512925130251312513225133251342513525136251372513825139251402514125142251432514425145251462514725148251492515025151251522515325154251552515625157251582515925160251612516225163251642516525166251672516825169251702517125172251732517425175251762517725178251792518025181251822518325184251852518625187251882518925190251912519225193251942519525196251972519825199252002520125202252032520425205252062520725208252092521025211252122521325214252152521625217252182521925220252212522225223252242522525226252272522825229252302523125232252332523425235252362523725238252392524025241252422524325244252452524625247252482524925250252512525225253252542525525256252572525825259252602526125262252632526425265252662526725268252692527025271252722527325274252752527625277252782527925280252812528225283252842528525286252872528825289252902529125292252932529425295252962529725298252992530025301253022530325304253052530625307253082530925310253112531225313253142531525316253172531825319253202532125322253232532425325253262532725328253292533025331253322533325334253352533625337253382533925340253412534225343253442534525346253472534825349253502535125352253532535425355253562535725358253592536025361253622536325364253652536625367253682536925370253712537225373253742537525376253772537825379253802538125382253832538425385253862538725388253892539025391253922539325394253952539625397253982539925400254012540225403254042540525406254072540825409254102541125412254132541425415254162541725418254192542025421254222542325424254252542625427254282542925430254312543225433254342543525436254372543825439254402544125442254432544425445254462544725448254492545025451254522545325454254552545625457254582545925460254612546225463254642546525466254672546825469254702547125472254732547425475254762547725478254792548025481254822548325484254852548625487254882548925490254912549225493254942549525496254972549825499255002550125502255032550425505255062550725508255092551025511255122551325514255152551625517255182551925520255212552225523255242552525526255272552825529255302553125532255332553425535255362553725538255392554025541255422554325544255452554625547255482554925550255512555225553255542555525556255572555825559255602556125562255632556425565255662556725568255692557025571255722557325574255752557625577255782557925580255812558225583255842558525586255872558825589255902559125592255932559425595255962559725598255992560025601256022560325604256052560625607256082560925610256112561225613256142561525616256172561825619256202562125622256232562425625256262562725628256292563025631256322563325634256352563625637256382563925640256412564225643256442564525646256472564825649256502565125652256532565425655256562565725658256592566025661256622566325664256652566625667256682566925670256712567225673256742567525676256772567825679256802568125682256832568425685256862568725688256892569025691256922569325694256952569625697256982569925700257012570225703257042570525706257072570825709257102571125712257132571425715257162571725718257192572025721257222572325724257252572625727257282572925730257312573225733257342573525736257372573825739257402574125742257432574425745257462574725748257492575025751257522575325754257552575625757257582575925760257612576225763257642576525766257672576825769257702577125772257732577425775257762577725778257792578025781257822578325784257852578625787257882578925790257912579225793257942579525796257972579825799258002580125802258032580425805258062580725808258092581025811258122581325814258152581625817258182581925820258212582225823258242582525826258272582825829258302583125832258332583425835258362583725838258392584025841258422584325844258452584625847258482584925850258512585225853258542585525856258572585825859258602586125862258632586425865258662586725868258692587025871258722587325874258752587625877258782587925880258812588225883258842588525886258872588825889258902589125892258932589425895258962589725898258992590025901259022590325904259052590625907259082590925910259112591225913259142591525916259172591825919259202592125922259232592425925259262592725928259292593025931259322593325934259352593625937259382593925940259412594225943259442594525946259472594825949259502595125952259532595425955259562595725958259592596025961259622596325964259652596625967259682596925970259712597225973259742597525976259772597825979259802598125982259832598425985259862598725988259892599025991259922599325994259952599625997259982599926000260012600226003260042600526006260072600826009260102601126012260132601426015260162601726018260192602026021260222602326024260252602626027260282602926030260312603226033260342603526036260372603826039260402604126042260432604426045260462604726048260492605026051260522605326054260552605626057260582605926060260612606226063260642606526066260672606826069260702607126072260732607426075260762607726078260792608026081260822608326084260852608626087260882608926090260912609226093260942609526096260972609826099261002610126102261032610426105261062610726108261092611026111261122611326114261152611626117261182611926120261212612226123261242612526126261272612826129261302613126132261332613426135261362613726138261392614026141261422614326144261452614626147261482614926150261512615226153261542615526156261572615826159261602616126162261632616426165261662616726168261692617026171261722617326174261752617626177261782617926180261812618226183261842618526186261872618826189261902619126192261932619426195261962619726198261992620026201262022620326204262052620626207262082620926210262112621226213262142621526216262172621826219262202622126222262232622426225262262622726228262292623026231262322623326234262352623626237262382623926240262412624226243262442624526246262472624826249262502625126252262532625426255262562625726258262592626026261262622626326264262652626626267262682626926270262712627226273262742627526276262772627826279262802628126282262832628426285262862628726288262892629026291262922629326294262952629626297262982629926300263012630226303263042630526306263072630826309263102631126312263132631426315263162631726318263192632026321263222632326324263252632626327263282632926330263312633226333263342633526336263372633826339263402634126342263432634426345263462634726348263492635026351263522635326354263552635626357263582635926360263612636226363263642636526366263672636826369263702637126372263732637426375263762637726378263792638026381263822638326384263852638626387263882638926390263912639226393263942639526396263972639826399264002640126402264032640426405264062640726408264092641026411264122641326414264152641626417264182641926420264212642226423264242642526426264272642826429264302643126432264332643426435264362643726438264392644026441264422644326444264452644626447264482644926450264512645226453264542645526456264572645826459264602646126462264632646426465264662646726468264692647026471264722647326474264752647626477264782647926480264812648226483264842648526486264872648826489264902649126492264932649426495264962649726498264992650026501265022650326504265052650626507265082650926510265112651226513265142651526516265172651826519265202652126522265232652426525265262652726528265292653026531265322653326534265352653626537265382653926540265412654226543265442654526546265472654826549265502655126552265532655426555265562655726558265592656026561265622656326564265652656626567265682656926570265712657226573265742657526576265772657826579265802658126582265832658426585265862658726588265892659026591265922659326594265952659626597265982659926600266012660226603266042660526606266072660826609266102661126612266132661426615266162661726618266192662026621266222662326624266252662626627266282662926630266312663226633266342663526636266372663826639266402664126642266432664426645266462664726648266492665026651266522665326654266552665626657266582665926660266612666226663266642666526666266672666826669266702667126672266732667426675266762667726678266792668026681266822668326684266852668626687266882668926690266912669226693266942669526696266972669826699267002670126702267032670426705267062670726708267092671026711267122671326714267152671626717267182671926720267212672226723267242672526726267272672826729267302673126732267332673426735267362673726738267392674026741267422674326744267452674626747267482674926750267512675226753267542675526756267572675826759267602676126762267632676426765267662676726768267692677026771267722677326774267752677626777267782677926780267812678226783267842678526786267872678826789267902679126792267932679426795267962679726798267992680026801268022680326804268052680626807268082680926810268112681226813268142681526816268172681826819268202682126822268232682426825268262682726828268292683026831268322683326834268352683626837268382683926840268412684226843268442684526846268472684826849268502685126852268532685426855268562685726858268592686026861268622686326864268652686626867268682686926870268712687226873268742687526876268772687826879268802688126882268832688426885268862688726888268892689026891268922689326894268952689626897268982689926900269012690226903269042690526906269072690826909269102691126912269132691426915269162691726918269192692026921269222692326924269252692626927269282692926930269312693226933269342693526936269372693826939269402694126942269432694426945269462694726948269492695026951269522695326954269552695626957269582695926960269612696226963269642696526966269672696826969269702697126972269732697426975269762697726978269792698026981269822698326984269852698626987269882698926990269912699226993269942699526996269972699826999270002700127002270032700427005270062700727008270092701027011270122701327014270152701627017270182701927020270212702227023270242702527026270272702827029270302703127032270332703427035270362703727038270392704027041270422704327044270452704627047270482704927050270512705227053270542705527056270572705827059270602706127062270632706427065270662706727068270692707027071270722707327074270752707627077270782707927080270812708227083270842708527086270872708827089270902709127092270932709427095270962709727098270992710027101271022710327104271052710627107271082710927110271112711227113271142711527116271172711827119271202712127122271232712427125271262712727128271292713027131271322713327134271352713627137271382713927140271412714227143271442714527146271472714827149271502715127152271532715427155271562715727158271592716027161271622716327164271652716627167271682716927170271712717227173271742717527176271772717827179271802718127182271832718427185271862718727188271892719027191271922719327194271952719627197271982719927200272012720227203272042720527206272072720827209272102721127212272132721427215272162721727218272192722027221272222722327224272252722627227272282722927230272312723227233272342723527236272372723827239272402724127242272432724427245272462724727248272492725027251272522725327254272552725627257272582725927260272612726227263272642726527266272672726827269272702727127272272732727427275272762727727278272792728027281272822728327284272852728627287272882728927290272912729227293272942729527296272972729827299273002730127302273032730427305273062730727308273092731027311273122731327314273152731627317273182731927320273212732227323273242732527326273272732827329273302733127332273332733427335273362733727338273392734027341273422734327344273452734627347273482734927350273512735227353273542735527356273572735827359273602736127362273632736427365273662736727368273692737027371273722737327374273752737627377273782737927380273812738227383273842738527386273872738827389273902739127392273932739427395273962739727398273992740027401274022740327404274052740627407274082740927410274112741227413274142741527416274172741827419274202742127422274232742427425274262742727428274292743027431274322743327434274352743627437274382743927440274412744227443274442744527446274472744827449274502745127452274532745427455274562745727458274592746027461274622746327464274652746627467274682746927470274712747227473274742747527476274772747827479274802748127482274832748427485274862748727488274892749027491274922749327494274952749627497274982749927500275012750227503275042750527506275072750827509275102751127512275132751427515275162751727518275192752027521275222752327524275252752627527275282752927530275312753227533275342753527536275372753827539275402754127542275432754427545275462754727548275492755027551275522755327554275552755627557275582755927560275612756227563275642756527566275672756827569275702757127572275732757427575275762757727578275792758027581275822758327584275852758627587275882758927590275912759227593275942759527596275972759827599276002760127602276032760427605276062760727608276092761027611276122761327614276152761627617276182761927620276212762227623276242762527626276272762827629276302763127632276332763427635276362763727638276392764027641276422764327644276452764627647276482764927650276512765227653276542765527656276572765827659276602766127662276632766427665276662766727668276692767027671276722767327674276752767627677276782767927680276812768227683276842768527686276872768827689276902769127692276932769427695276962769727698276992770027701277022770327704277052770627707277082770927710277112771227713277142771527716277172771827719277202772127722277232772427725277262772727728277292773027731277322773327734277352773627737277382773927740277412774227743277442774527746277472774827749277502775127752277532775427755277562775727758277592776027761277622776327764277652776627767277682776927770277712777227773277742777527776277772777827779277802778127782277832778427785277862778727788277892779027791277922779327794277952779627797277982779927800278012780227803278042780527806278072780827809278102781127812278132781427815278162781727818278192782027821278222782327824278252782627827278282782927830278312783227833278342783527836278372783827839278402784127842278432784427845278462784727848278492785027851278522785327854278552785627857278582785927860278612786227863278642786527866278672786827869278702787127872278732787427875278762787727878278792788027881278822788327884278852788627887278882788927890278912789227893278942789527896278972789827899279002790127902279032790427905279062790727908279092791027911279122791327914279152791627917279182791927920279212792227923279242792527926279272792827929279302793127932279332793427935279362793727938279392794027941279422794327944279452794627947279482794927950279512795227953279542795527956279572795827959279602796127962279632796427965279662796727968279692797027971279722797327974279752797627977279782797927980279812798227983279842798527986279872798827989279902799127992279932799427995279962799727998279992800028001280022800328004280052800628007280082800928010280112801228013280142801528016280172801828019280202802128022280232802428025280262802728028280292803028031280322803328034280352803628037280382803928040280412804228043280442804528046280472804828049280502805128052280532805428055280562805728058280592806028061280622806328064280652806628067280682806928070280712807228073280742807528076280772807828079280802808128082280832808428085280862808728088280892809028091280922809328094280952809628097280982809928100281012810228103281042810528106281072810828109281102811128112281132811428115281162811728118281192812028121281222812328124281252812628127281282812928130281312813228133281342813528136281372813828139281402814128142281432814428145281462814728148281492815028151281522815328154281552815628157281582815928160281612816228163281642816528166281672816828169281702817128172281732817428175281762817728178281792818028181281822818328184281852818628187281882818928190281912819228193281942819528196281972819828199282002820128202282032820428205282062820728208282092821028211282122821328214282152821628217282182821928220282212822228223282242822528226282272822828229282302823128232282332823428235282362823728238282392824028241282422824328244282452824628247282482824928250282512825228253282542825528256282572825828259282602826128262282632826428265282662826728268282692827028271282722827328274282752827628277282782827928280282812828228283282842828528286282872828828289282902829128292282932829428295282962829728298282992830028301283022830328304283052830628307283082830928310283112831228313283142831528316283172831828319283202832128322283232832428325283262832728328283292833028331283322833328334283352833628337283382833928340283412834228343283442834528346283472834828349283502835128352283532835428355283562835728358283592836028361283622836328364283652836628367283682836928370283712837228373283742837528376283772837828379283802838128382283832838428385283862838728388283892839028391283922839328394283952839628397283982839928400284012840228403284042840528406284072840828409284102841128412284132841428415284162841728418284192842028421284222842328424284252842628427284282842928430284312843228433284342843528436284372843828439284402844128442284432844428445284462844728448284492845028451284522845328454284552845628457284582845928460284612846228463284642846528466284672846828469284702847128472284732847428475284762847728478284792848028481284822848328484284852848628487284882848928490284912849228493284942849528496284972849828499285002850128502285032850428505285062850728508285092851028511285122851328514285152851628517285182851928520285212852228523285242852528526285272852828529285302853128532285332853428535285362853728538285392854028541285422854328544285452854628547285482854928550285512855228553285542855528556285572855828559285602856128562285632856428565285662856728568285692857028571285722857328574285752857628577285782857928580285812858228583285842858528586285872858828589285902859128592285932859428595285962859728598285992860028601286022860328604286052860628607286082860928610286112861228613286142861528616286172861828619286202862128622286232862428625286262862728628286292863028631286322863328634286352863628637286382863928640286412864228643286442864528646286472864828649286502865128652286532865428655286562865728658286592866028661286622866328664286652866628667286682866928670286712867228673286742867528676286772867828679286802868128682286832868428685286862868728688286892869028691286922869328694286952869628697286982869928700287012870228703287042870528706287072870828709287102871128712287132871428715287162871728718287192872028721287222872328724287252872628727287282872928730287312873228733287342873528736287372873828739287402874128742287432874428745287462874728748287492875028751287522875328754287552875628757287582875928760287612876228763287642876528766287672876828769287702877128772287732877428775287762877728778287792878028781287822878328784287852878628787287882878928790287912879228793287942879528796287972879828799288002880128802288032880428805288062880728808288092881028811288122881328814288152881628817288182881928820288212882228823288242882528826288272882828829288302883128832288332883428835288362883728838288392884028841288422884328844288452884628847288482884928850288512885228853288542885528856288572885828859288602886128862288632886428865288662886728868288692887028871288722887328874288752887628877288782887928880288812888228883288842888528886288872888828889288902889128892288932889428895288962889728898288992890028901289022890328904289052890628907289082890928910289112891228913289142891528916289172891828919289202892128922289232892428925289262892728928289292893028931289322893328934289352893628937289382893928940289412894228943289442894528946289472894828949289502895128952289532895428955289562895728958289592896028961289622896328964289652896628967289682896928970289712897228973289742897528976289772897828979289802898128982289832898428985289862898728988289892899028991289922899328994289952899628997289982899929000290012900229003290042900529006290072900829009290102901129012290132901429015290162901729018290192902029021290222902329024290252902629027290282902929030290312903229033290342903529036290372903829039290402904129042290432904429045290462904729048290492905029051290522905329054290552905629057290582905929060290612906229063290642906529066290672906829069290702907129072290732907429075290762907729078290792908029081290822908329084290852908629087290882908929090290912909229093290942909529096290972909829099291002910129102291032910429105291062910729108291092911029111291122911329114291152911629117291182911929120291212912229123291242912529126291272912829129291302913129132291332913429135291362913729138291392914029141291422914329144291452914629147291482914929150291512915229153291542915529156291572915829159291602916129162291632916429165291662916729168291692917029171291722917329174291752917629177291782917929180291812918229183291842918529186291872918829189291902919129192291932919429195291962919729198291992920029201292022920329204292052920629207292082920929210292112921229213292142921529216292172921829219292202922129222292232922429225292262922729228292292923029231292322923329234292352923629237292382923929240292412924229243292442924529246292472924829249292502925129252292532925429255292562925729258292592926029261292622926329264292652926629267292682926929270292712927229273292742927529276292772927829279292802928129282292832928429285292862928729288292892929029291292922929329294292952929629297292982929929300293012930229303293042930529306293072930829309293102931129312293132931429315293162931729318293192932029321293222932329324293252932629327293282932929330293312933229333 |
- ;;; GNU Guix --- Functional package management for GNU
- ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
- ;;; Copyright © 2013-2022 Ludovic Courtès <ludo@gnu.org>
- ;;; Copyright © 2013, 2014, 2015, 2016, 2019 Andreas Enge <andreas@enge.fr>
- ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
- ;;; Copyright © 2014, 2017, 2021 Eric Bavier <bavier@posteo.net>
- ;;; Copyright © 2014, 2015 Federico Beffa <beffa@fbengineering.ch>
- ;;; Copyright © 2015 Omar Radwan <toxemicsquire4@gmail.com>
- ;;; Copyright © 2015 Pierre-Antoine Rault <par@rigelk.eu>
- ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 Ricardo Wurmus <rekado@elephly.net>
- ;;; Copyright © 2015, 2016, 2020 Christine Lemmer-Webber <cwebber@dustycloud.org>
- ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
- ;;; Copyright © 2015, 2016 David Thompson <davet@gnu.org>
- ;;; Copyright © 2015, 2016, 2017, 2019, 2022 Leo Famulari <leo@famulari.name>
- ;;; Copyright © 2015, 2017 Ben Woodcroft <donttrustben@gmail.com>
- ;;; Copyright © 2015, 2016 Erik Edrosa <erik.edrosa@gmail.com>
- ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 Efraim Flashner <efraim@flashner.co.il>
- ;;; Copyright © 2015, 2017, 2020 Kyle Meyer <kyle@kyleam.com>
- ;;; Copyright © 2015, 2016 Chris Marusich <cmmarusich@gmail.com>
- ;;; Copyright © 2016 Danny Milosavljevic <dannym+a@scratchpost.org>
- ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
- ;;; Copyright © 2016, 2018, 2019, 2021 Hartmut Goebel <h.goebel@crazy-compilers.com>
- ;;; Copyright © 2016 Daniel Pimentel <d4n1@d4n1.org>
- ;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
- ;;; Copyright © 2016, 2017 Troy Sankey <sankeytms@gmail.com>
- ;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
- ;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org>
- ;;; Copyright © 2016 David Craven <david@craven.ch>
- ;;; Copyright © 2016-2022 Marius Bakke <marius@gnu.org>
- ;;; Copyright © 2016, 2017, 2021, 2022 Stefan Reichör <stefan@xsteve.at>
- ;;; Copyright © 2016, 2017, 2019 Alex Vong <alexvong1995@gmail.com>
- ;;; Copyright © 2016, 2017, 2018, 2021 Arun Isaac <arunisaac@systemreboot.net>
- ;;; Copyright © 2016, 2017, 2018, 2020, 2021 Julien Lepiller <julien@lepiller.eu>
- ;;; Copyright © 2016–2021 Tobias Geerinckx-Rice <me@tobias.gr>
- ;;; Copyright © 2016, 2017 Thomas Danckaert <post@thomasdanckaert.be>
- ;;; Copyright © 2017 Carlo Zancanaro <carlo@zancanaro.id.au>
- ;;; Copyright © 2017 Frederick M. Muriithi <fredmanglis@gmail.com>
- ;;; Copyright © 2017, 2018 Adriano Peluso <catonano@gmail.com>
- ;;; Copyright © 2017 Ben Sturmfels <ben@sturm.com.au>
- ;;; Copyright © 2017, 2018, 2019, 2021, 2022 Mathieu Othacehe <m.othacehe@gmail.com>
- ;;; Copyright © 2017 José Miguel Sánchez García <jmi2k@openmailbox.org>
- ;;; Copyright © 2017, 2020, 2021 Roel Janssen <roel@gnu.org>
- ;;; Copyright © 2017, 2018, 2019 Kei Kebreau <kkebreau@posteo.net>
- ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
- ;;; Copyright © 2017, 2019, 2021 Brendan Tildesley <mail@brendan.scot>
- ;;; Copyright © 2018 Ethan R. Jones <ethanrjones97@gmail.com
- ;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com>
- ;;; Copyright © 2018 Vijayalakshmi Vedantham <vijimay12@gmail.com>
- ;;; Copyright © 2018 Mathieu Lirzin <mthl@gnu.org>
- ;;; Copyright © 2018 Adam Massmann <massmannak@gmail.com>
- ;;; Copyright © 2016, 2018 Tomáš Čech <sleep_walker@gnu.org>
- ;;; Copyright © 2018-2022 Nicolas Goaziou <mail@nicolasgoaziou.fr>
- ;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
- ;;; Copyright © 2018, 2019, 2021 Clément Lassieur <clement@lassieur.org>
- ;;; Copyright © 2018, 2019, 2020, 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
- ;;; Copyright © 2018 Luther Thompson <lutheroto@gmail.com>
- ;;; Copyright © 2018 Vagrant Cascadian <vagrant@debian.org>
- ;;; Copyright © 2015, 2018 Pjotr Prins <pjotr.guix@thebird.nl>
- ;;; Copyright © 2019, 2020 Brett Gilio <brettg@gnu.org>
- ;;; Copyright © 2019 Sam <smbaines8@gmail.com>
- ;;; Copyright © 2019 Jack Hill <jackhill@jackhill.us>
- ;;; Copyright © 2019, 2020, 2021 Guillaume Le Vaillant <glv@posteo.net>
- ;;; Copyright © 2019, 2020 Alex Griffin <a@ajgrf.com>
- ;;; Copyright © 2019, 2020, 2021 Pierre Langlois <pierre.langlois@gmx.com>
- ;;; Copyright © 2019 Jacob MacDonald <jaccarmac@gmail.com>
- ;;; Copyright © 2019, 2020, 2021 Giacomo Leidi <goodoldpaul@autistici.org>
- ;;; Copyright © 2019 Wiktor Żelazny <wzelazny@vurv.cz>
- ;;; Copyright © 2019, 2020, 2021, 2022 Tanguy Le Carrour <tanguy@bioneland.org>
- ;;; Copyright © 2019, 2021 Mădălin Ionel Patrașcu <madalinionel.patrascu@mdc-berlin.de>
- ;;; Copyright © 2020 Riku Viitanen <riku.viitanen@protonmail.com>
- ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
- ;;; Copyright © 2020 sirgazil <sirgazil@zoho.com>
- ;;; Copyright © 2020 Sebastian Schott <sschott@mailbox.org>
- ;;; Copyright © 2020, 2021 Alexandros Theodotou <alex@zrythm.org>
- ;;; Copyright © 2020 Josh Marshall <joshua.r.marshall.1991@gmail.com>
- ;;; Copyright © 2020 Lars-Dominik Braun <ldb@leibniz-psychology.org>
- ;;; Copyright © 2020 Alex ter Weele <alex.ter.weele@gmail.com>
- ;;; Copyright © 2020 Matthew James Kraai <kraai@ftbfs.org>
- ;;; Copyright © 2020 Ryan Prior <rprior@protonmail.com>
- ;;; Copyright © 2020 Josh Holland <josh@inv.alid.pw>
- ;;; Copyright © 2020 Yuval Kogman <nothingmuch@woobling.org>
- ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
- ;;; Copyright © 2020, 2021, 2022 Vinicius Monego <monego@posteo.net>
- ;;; Copyright © 2020 Guy Fleury Iteriteka <gfleury@disroot.org>
- ;;; Copyright © 2020 Hendursaga <hendursaga@yahoo.com>
- ;;; Copyright © 2020 Malte Frank Gerdes <malte.f.gerdes@gmail.com>
- ;;; Copyright © 2020 Joseph LaFreniere <joseph@lafreniere.xyz>
- ;;; Copyright © 2020 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
- ;;; Copyright © 2020, 2021 Bonface Munyoki Kilyungi <me@bonfacemunyoki.com>
- ;;; Copyright © 2020 Ekaitz Zarraga <ekaitz@elenq.tech>
- ;;; Copyright © 2020 Diego N. Barbato <dnbarbato@posteo.de>
- ;;; Copyright © 2020 Liliana Marie Prikler <liliana.prikler@gmail.com>
- ;;; Copyright © 2019 Kristian Trandem <kristian@devup.no>
- ;;; Copyright © 2020, 2021 Zheng Junjie <873216071@qq.com>
- ;;; Copyright © 2020 EuAndreh <eu@euandre.org>
- ;;; Copyright © 2021, 2022 Morgan Smith <Morgan.J.Smith@outlook.com>
- ;;; Copyright © 2021 Sharlatan Hellseher <sharlatanus@gmail.com>
- ;;; Copyright © 2021 Ellis Kenyő <me@elken.dev>
- ;;; Copyright © 2021 LibreMiami <packaging-guix@libremiami.org>
- ;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
- ;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name>
- ;;; Copyright © 2021 jgart <jgart@dismail.de>
- ;;; Copyright © 2021 Danial Behzadi <dani.behzi@ubuntu.com>
- ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
- ;;; Copyright © 2021 Hugo Lecomte <hugo.lecomte@inria.fr>
- ;;; Copyright © 2021 Franck Pérignon <franck.perignon@univ-grenoble-alpes.fr>
- ;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com>
- ;;; Copyright © 2021 Simon Streit <simon@netpanic.org>
- ;;; Copyright © 2021 Daniel Meißner <daniel.meissner-i4k@ruhr-uni-bochum.de>
- ;;; Copyright © 2021 Pradana Aumars <paumars@courrier.dev>
- ;;; Copyright © 2021 Felix Gruber <felgru@posteo.net>
- ;;; Copyright © 2021 Sébastien Lerique <sl@eauchat.org>
- ;;; Copyright © 2021 Raphaël Mélotte <raphael.melotte@mind.be>
- ;;; Copyright © 2021 ZmnSCPxj <ZmnSCPxj@protonmail.com>
- ;;; Copyright © 2021 Filip Lajszczak <filip@lajszczak.dev>
- ;;; Copyright © 2021 Greg Hogan <code@greghogan.com>
- ;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com>
- ;;; Copyright © 2022 Aleksandr Vityazev <avityazev@posteo.org>
- ;;; Copyright © 2022 Evgeny Pisemsky <evgeny@pisemsky.com>
- ;;; Copyright © 2022 drozdov <drozdov@portalenergy.tech>
- ;;;
- ;;; 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-xyz)
- #:use-module ((guix licenses) #:prefix license:)
- #:use-module (gnu packages)
- #:use-module (gnu packages algebra)
- #:use-module (gnu packages adns)
- #:use-module (gnu packages aidc)
- #:use-module (gnu packages attr)
- #:use-module (gnu packages backup)
- #:use-module (gnu packages bash)
- #:use-module (gnu packages check)
- #:use-module (gnu packages cmake)
- #:use-module (gnu packages compression)
- #:use-module (gnu packages crypto)
- #:use-module (gnu packages databases)
- #:use-module (gnu packages dbm)
- #:use-module (gnu packages django)
- #:use-module (gnu packages djvu)
- #:use-module (gnu packages docker)
- #:use-module (gnu packages enchant)
- #:use-module (gnu packages file)
- #:use-module (gnu packages fontutils)
- #:use-module (gnu packages freedesktop)
- #:use-module (gnu packages gcc)
- #:use-module (gnu packages geo)
- #:use-module (gnu packages ghostscript)
- #:use-module (gnu packages gl)
- #:use-module (gnu packages glib)
- #:use-module (gnu packages gnome)
- #:use-module (gnu packages gnupg)
- #:use-module (gnu packages graphviz)
- #:use-module (gnu packages graphics)
- #:use-module (gnu packages gsasl)
- #:use-module (gnu packages gstreamer)
- #:use-module (gnu packages gtk)
- #:use-module (gnu packages haskell-xyz)
- #:use-module (gnu packages icu4c)
- #:use-module (gnu packages image)
- #:use-module (gnu packages imagemagick)
- #:use-module (gnu packages jupyter)
- #:use-module (gnu packages kerberos)
- #:use-module (gnu packages libevent)
- #:use-module (gnu packages libffi)
- #:use-module (gnu packages libidn)
- #:use-module (gnu packages linux)
- #:use-module (gnu packages llvm)
- #:use-module (gnu packages man)
- #:use-module (gnu packages markup)
- #:use-module (gnu packages maths)
- #:use-module (gnu packages monitoring)
- #:use-module (gnu packages multiprecision)
- #:use-module (gnu packages networking)
- #:use-module (gnu packages ncurses)
- #:use-module (gnu packages openstack)
- #:use-module (gnu packages pcre)
- #:use-module (gnu packages pdf)
- #:use-module (gnu packages perl)
- #:use-module (gnu packages photo)
- #:use-module (gnu packages pkg-config)
- #:use-module (gnu packages protobuf)
- #: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-web)
- #:use-module (gnu packages qt)
- #:use-module (gnu packages rdf)
- #:use-module (gnu packages readline)
- #:use-module (gnu packages regex)
- #:use-module (gnu packages sdl)
- #:use-module (gnu packages scanner)
- #:use-module (gnu packages search)
- #:use-module (gnu packages serialization)
- #:use-module (gnu packages shells)
- #:use-module (gnu packages sphinx)
- #:use-module (gnu packages ssh)
- #:use-module (gnu packages swig)
- #:use-module (gnu packages terminals)
- #:use-module (gnu packages tex)
- #:use-module (gnu packages texinfo)
- #:use-module (gnu packages textutils)
- #:use-module (gnu packages time)
- #:use-module (gnu packages tls)
- #:use-module (gnu packages version-control)
- #:use-module (gnu packages video)
- #:use-module (gnu packages web)
- #:use-module (gnu packages wxwidgets)
- #:use-module (gnu packages base)
- #:use-module (gnu packages xml)
- #:use-module (gnu packages xorg)
- #:use-module (gnu packages xdisorg)
- #:use-module (gnu packages tcl)
- #:use-module (gnu packages bdw-gc)
- #:use-module (gnu packages serialization)
- #:use-module (guix packages)
- #:use-module (guix download)
- #:use-module (guix gexp)
- #:use-module (guix git-download)
- #:use-module (guix hg-download)
- #:use-module (guix gexp)
- #:use-module (guix utils)
- #:use-module (guix build-system gnu)
- #:use-module (guix build-system cmake)
- #:use-module (guix build-system python)
- #:use-module (guix build-system trivial)
- #:use-module (srfi srfi-1)
- #:use-module (srfi srfi-26))
- (define-public python-xmldiff
- (package
- (name "python-xmldiff")
- (version "2.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "xmldiff" version))
- (sha256
- (base32 "0qygxi3z1jwb0471k7bh5gcqf7wqm4xhrkmwhf36gjgjw46a5gh5"))))
- (build-system python-build-system)
- (propagated-inputs (list python-lxml python-six))
- (home-page "https://github.com/Shoobx/xmldiff")
- (synopsis "Creates diffs of XML files")
- (description "This Python tool figures out the differences between two
- similar XML files, in the same way the @command{diff} utility does it.")
- (license license:expat)))
- (define-public python-janus
- (package
- (name "python-janus")
- (version "0.6.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "janus" version))
- (sha256
- (base32 "030xvl2vghi5ispfalhvch1rl6i2jsy5bf1dgjafa7vifppy04j7"))))
- (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" "--cov=janus" "--cov=tests")))))))
- (native-inputs
- (list python-pytest python-pytest-cov python-pytest-asyncio))
- (home-page "https://github.com/aio-libs/janus/")
- (synopsis
- "Sync-async queue to interoperate between asyncio tasks and classic threads")
- (description
- "Mixed sync-async queue, supposed to be used for communicating between
- classic synchronous (threaded) code and asynchronous (in terms of
- @url{https://docs.python.org/3/library/asyncio.html,asyncio}) one. Like
- @url{https://en.wikipedia.org/wiki/Janus,Janus god} the queue object from the
- library has two faces: synchronous and asynchronous interface. Synchronous is
- fully compatible with
- @url{https://docs.python.org/3/library/queue.html,standard queue},
- asynchronous one follows
- @url{https://docs.python.org/3/library/asyncio-queue.html,asyncio queue
- design}.")
- (license license:asl2.0)))
- (define-public python-logzero
- (package
- (name "python-logzero")
- (version "1.7.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "logzero" version))
- (sha256
- (base32 "10nh186vk6hpnpfycym44gja4fja0jyzw7q8dwimfd1rmv9xswvz"))))
- (build-system python-build-system)
- (native-inputs
- (list python-pytest python-pytest-runner))
- (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")))))))
- (home-page "https://github.com/metachris/logzero")
- (synopsis "Robust and effective logging for Python")
- (description
- "@code{logzero} provides a fully configured Python logger object for
- easy logging and rotating to a console or a file.")
- (license license:expat)))
- (define-public python-logbook
- (package
- (name "python-logbook")
- (version "1.5.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "Logbook" version))
- (sha256
- (base32 "1s1gyfw621vid7qqvhddq6c3z2895ci4lq3g0r1swvpml2nm9x36"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-before 'build 'cythonize-sources
- (lambda _
- (with-directory-excursion "logbook"
- (invoke "cython" "_speedups.pyx"))))
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- ;; Check cython build also
- (setenv "CYBUILD" "True")
- (invoke "pytest" "--cov=logbook" "-r" "s" "tests")))))))
- (native-inputs
- (list python-cython python-mock python-pytest python-pytest-cov
- python-google-brotli))
- (home-page "https://github.com/getlogbook/logbook")
- (synopsis "Logbook is a logging replacement for Python")
- (description
- "Logbook is a logging system for Python that replaces the standard
- library’s logging module. It was designed with both complex and simple
- applications in mind and the idea to make logging fun.")
- (license license:bsd-3)))
- (define-public python-ueberzug
- (package
- (name "python-ueberzug")
- (version "18.1.9")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "ueberzug" version))
- (sha256
- (base32
- "1hxd45dnwa9yv908acarr98n2drmar66wzq9z2qd3irj24srzr3w"))))
- (build-system python-build-system)
- (inputs
- (list libx11 libxext))
- (propagated-inputs
- (list python-attrs python-docopt python-pillow python-xlib))
- (home-page "https://github.com/seebye/ueberzug")
- (synopsis "Command line util to display images in combination with X11")
- (description "Überzug is a command line util which draws images on
- terminals by using child windows. The advantages of using Überzug are:
- @itemize
- @item No race conditions as a new window is created to display images.
- @item Expose events will be processed, so images will be redrawn on switch
- workspaces.
- @item Tmux support (excluding multi pane windows).
- @item Terminals without the WINDOWID environment variable are supported.
- @item Chars are used as position - and size unit.
- @item No memory leak (/ unlimited cache).
- @end itemize")
- (license license:gpl3+)))
- (define-public python-fire
- (package
- (name "python-fire")
- (version "0.4.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "fire" version))
- (sha256
- (base32
- "0qka44n88y3qcj7xz0k0f3qb4phcg4z0wvd4jcii9lcr6rvbiqn5"))))
- (build-system python-build-system)
- (native-inputs
- (list python-pytest))
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "pytest")))))))
- (inputs
- (list python-six python-termcolor))
- (synopsis "Library for automatically generating command line interfaces")
- (description
- "Fire is a library for automatically generating command line interfaces
- from absolutely any Python object. The following are the advantages:
- @itemize
- @item A simple way to create a CLI in Python.
- @item A helpful tool for developing and debugging Python code.
- @item Helps with exploring existing code or turning other people's code into a
- command line interface.
- @item Makes transitioning between Bash and Python easier.
- @item Makes using a Python REPL easier by setting up the REPL with the modules
- and variables you'll need already imported and created.
- @end itemize")
- (home-page "https://github.com/google/python-fire")
- (license license:asl2.0)))
- (define-public python-twodict
- (package
- (name "python-twodict")
- (version "1.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "twodict" version))
- (sha256
- (base32 "0ifv7dv18jn2lg0a3l6zdlvmmlda2ivixfjbsda58a2ay6kxznr0"))))
- (build-system python-build-system)
- (home-page "https://github.com/MrS0m30n3/twodict")
- (synopsis "Two way ordered dictionary for Python")
- (description "TwoDict is a custom dictionary in which you can get the
- key:value relationship but you can also get the value:key relationship. It also
- remembers the order in which the items were inserted and supports almost all the
- features of the Python's built-in dict.")
- (license license:unlicense)))
- (define-public python2-twodict
- (package
- (inherit python-twodict)
- (name "python2-twodict")
- (version "1.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "twodict" version))
- (sha256
- (base32 "0ifv7dv18jn2lg0a3l6zdlvmmlda2ivixfjbsda58a2ay6kxznr0"))))
- (build-system python-build-system)
- (arguments
- `(#:python ,python-2))))
- (define-public python-argopt
- (package
- (name "python-argopt")
- (version "0.7.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "argopt" version))
- (sha256
- (base32
- "0ybs7kkp0cpl8zn1lvf7481xhssg1bbhh5la2cjzdm5yibashyxa"))))
- (build-system python-build-system)
- (native-inputs
- (list python-coverage python-nose python-setuptools ; Won't build without this.
- python-setuptools-scm))
- (propagated-inputs
- (list python-toml python-flake8))
- (home-page "https://github.com/casperdcl/argopt")
- (synopsis "Generate a command-line interface from a docstring")
- (description "This package provides tools to define a command line interface
- from a docstring rather than the other way around.")
- (license license:mpl2.0)))
- (define-public python-cachetools
- (package
- (name "python-cachetools")
- (version "4.2.2")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "cachetools" version))
- (sha256
- (base32
- "1zqc098gk6y614lxwqd9z2gm8lldgvrpid133pnlm4m048gfvdb1"))))
- (build-system python-build-system)
- (home-page "https://github.com/tkem/cachetools/")
- (synopsis "Extensible memoizing collections and decorators")
- (description "This module provides various memoizing collections and
- decorators, including variants of the Python standard library's
- @code{lru_cache} function decorator.")
- (license license:expat)))
- (define-public python-colorful
- (package
- (name "python-colorful")
- (version "0.5.4")
- (source
- (origin
- (method url-fetch)
- (uri
- (pypi-uri "colorful" version))
- (sha256
- (base32 "1sh7g2cn1fyz2hzmzs933razdxi2bna9i1lxa790r9pdwba8m146"))))
- (build-system python-build-system)
- ;; FIXME: tests cannot be computed:
- ;; "Can't perform this operation for unregistered loader type"
- (arguments
- `(#:tests? #f))
- (native-inputs
- (list python-coverage python-flake8 python-pytest))
- (propagated-inputs
- (list python-colorama))
- (home-page "http://github.com/timofurrer/colorful")
- (synopsis "Terminal string styling")
- (description "Colorful provides an array of text styles, that can be used
- as functions or string constants to form colored terminal output.")
- (license license:expat)))
- (define-public python-yaspin
- (package
- (name "python-yaspin")
- (version "1.5.0")
- (source
- (origin
- (method url-fetch)
- (uri
- (pypi-uri "yaspin" version))
- (sha256
- (base32 "1iirah0kydrdp505qnjj6gi54avcr7z0hbkfx9vmh8myr30rpz6q"))))
- (build-system python-build-system)
- (native-inputs
- (list python-pytest))
- (home-page "https://github.com/pavdmyt/yaspin")
- (synopsis "Yet Another Terminal Spinner")
- (description "Yaspin provides a terminal spinner to indicate the progress
- during long operations.")
- (license license:expat)))
- (define-public python-lunr
- (package
- (name "python-lunr")
- (version "0.6.0")
- (source
- (origin
- (method url-fetch)
- (uri
- (pypi-uri "lunr" version))
- (sha256
- (base32 "106akalywfmnypzkdrhgz4n4740a8xayspybsw59kq06vz8i2qrc"))))
- (build-system python-build-system)
- (native-inputs
- (list python-mock python-pytest))
- (propagated-inputs
- (list python-nltk-3.4))
- (home-page
- "https://github.com/yeraydiazdiaz/lunr.py")
- (synopsis "Full-text search library")
- (description "This package provides python library for full-text search.
- It indexes documents and provides a search interface for retrieving documents
- that best match text queries.")
- (license license:expat)))
- (define-public python-mrkd
- (package
- (name "python-mrkd")
- (version "0.2.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "mrkd" version))
- (sha256
- (base32 "1bvaqbna1ihb4y2mv9pmvqcq3r9j6lwbbii99dani8lxx4dqqvs5"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-jinja2 python-mistune python-pygments))
- (home-page "https://pypi.org/project/mrkd/")
- (synopsis "Python Markdown implementation")
- (description
- "@code{mrkd} writes man pages using Markdown, and convert them to Roff or
- HTML")
- (license license:bsd-3)))
- (define-public python-mkdocs
- (package
- (name "python-mkdocs")
- (version "1.1.2")
- (source
- (origin
- (method url-fetch)
- (uri
- (pypi-uri "mkdocs" version))
- (sha256
- (base32 "0fgv5zawpyyv0vd4j5y8m4h058lh9jkwfcm0xy4pg7dr09a1xdph"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- ;; Requirements refer to a specific version of dependencies,
- ;; which are too old. So we patch to refer to any later version.
- (add-after 'unpack 'patch-requirements
- (lambda _
- (substitute* "setup.py"
- (("==") ">=")))))))
- (propagated-inputs
- (list python-click
- python-jinja2
- python-livereload
- python-lunr
- python-markdown
- python-pyyaml
- python-tornado))
- (home-page "https://www.mkdocs.org")
- (synopsis "Project documentation with Markdown")
- (description "MkDocs is a static site generator geared towards building
- project documentation. Documentation source files are written in Markdown, and
- configured with a single YAML configuration file.")
- (license license:bsd-3)))
- (define-public python-pymdown-extensions
- (package
- (name "python-pymdown-extensions")
- (version "8.1.1")
- (source
- (origin
- (method url-fetch)
- (uri
- (pypi-uri "pymdown-extensions" version))
- (sha256
- (base32 "0d8pdndrl1kj105lq7r6kw2dnhcvll6h2qs07w71mcpi7gx728v3"))))
- (build-system python-build-system)
- ;; FIXME: "AssertionError: False is not true"
- (arguments
- `(#:tests? #f))
- (propagated-inputs
- (list python-markdown))
- (home-page "https://github.com/facelessuser/pymdown-extensions")
- (synopsis "Extension pack for Python Markdown")
- (description "PyMdown Extensions is a collection of extensions for Python
- Markdown. All extensions are found under the module namespace of pymdownx.")
- (license license:expat)))
- (define-public python-mkdocs-material
- (package
- (name "python-mkdocs-material")
- (version "7.1.3")
- (source
- (origin
- (method url-fetch)
- (uri
- (pypi-uri "mkdocs-material" version))
- (sha256
- (base32 "0ci9xiasq9nfn09v11m7p49vzazdbgslw7rpzjd6y3hsmn9vljz3"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- ;; Requirement mkdocs-material-extensions
- ;; in-turn requires mkdocs-material. This causes
- ;; circular dependency, so we remove this requirement.
- (add-after 'unpack 'patch-requirements
- (lambda _
- (substitute* "requirements.txt"
- (("mkdocs-material-extensions.*$") "")))))))
- (propagated-inputs
- (list python-markdown python-mkdocs python-pygments
- python-pymdown-extensions))
- (home-page "https://squidfunk.github.io/mkdocs-material/")
- (synopsis "Material Design theme for MkDocs")
- (description "This package provides a theme plugin for the static site
- generator MkDocs.")
- (license license:expat)))
- (define-public python-slixmpp
- (package
- (name "python-slixmpp")
- (version "1.5.2")
- (source
- (origin
- (method git-fetch)
- (uri
- (git-reference
- (url "https://lab.louiz.org/poezio/slixmpp.git")
- (commit
- (string-append "slix-" version))))
- (file-name
- (git-file-name name version))
- (sha256
- (base32 "15mqxcws14bjvh5jcfwl86zsvrymkdw3ya07vb44md7vfnsnclwx"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'patch
- (lambda _
- (substitute* "setup.py"
- (("'CC', 'cc'")
- "'CC', 'gcc'"))
- #t)))))
- (native-inputs
- `(("cython" ,python-cython)
- ("gnupg" ,gnupg)
- ("pkg-config" ,pkg-config)))
- (propagated-inputs
- (list python-aiodns python-aiohttp python-pyasn1
- python-pyasn1-modules))
- (inputs
- (list libidn python)) ; We are building a Python extension.
- (synopsis "XMPP library without threads")
- (description "Slixmpp is a XMPP library for Python 3.7+. It is a fork of
- SleekXMPP. Its goal is to only rewrite the core of the library (the low level
- socket handling, the timers, the events dispatching) in order to remove all
- threads.")
- (home-page "https://lab.louiz.org/poezio/slixmpp")
- (license license:expat)))
- (define-public python-tenacity
- (package
- (name "python-tenacity")
- (version "8.0.1")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "tenacity" version))
- (sha256
- (base32
- "0bwkvjpjfyi9dgszzad9aww2vc00w3bczjnbifi92cp7wch2l923"))))
- (build-system python-build-system)
- (native-inputs
- (list python-setuptools-scm python-tornado python-typeguard
- python-pytest))
- (arguments
- (list #:phases
- #~(modify-phases %standard-phases
- (replace 'check
- (lambda _ (invoke "pytest" "-vv"))))))
- (home-page "https://github.com/jd/tenacity")
- (synopsis "Retrying library for python")
- (description "Tenacity is a general-purpose python library to simplify the
- task of adding retry behavior to just about anything.")
- (license license:asl2.0)))
- (define-public python-pytelegrambotapi
- (package
- (name "python-pytelegrambotapi")
- (version "3.7.4")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/eternnoir/pyTelegramBotAPI")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32 "0r7g5zs0fk3g2dxvbpl0pi730x7r2kalrhn30fs0pvc15a59fmxz"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (with-directory-excursion "tests"
- (invoke "py.test")))
- #t)))))
- (propagated-inputs
- (list python-requests))
- (native-inputs
- (list python-pytest))
- (home-page "https://github.com/eternnoir/pyTelegramBotAPI")
- (synopsis "Python Telegram bot api")
- (description "This package provides a simple, but extensible Python
- implementation for the Telegram Bot API.")
- (license license:gpl2)))
- (define-public python-colorlog
- (package
- (name "python-colorlog")
- (version "6.6.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "colorlog" version))
- (sha256
- (base32 "1s7x0v872h8aks8xp01wmv6hzisxqjrh1svbbcycir0980h76krl"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key inputs outputs tests? #:allow-other-keys)
- (when tests?
- (add-installed-pythonpath inputs outputs)
- (invoke "python" "-m" "pytest")))))))
- (native-inputs
- (list python-pytest))
- (home-page "https://github.com/borntyping/python-colorlog")
- (synopsis "Log formatting with colors for python")
- (description "The @code{colorlog.ColoredFormatter} is a formatter for use
- with Python's logging module that outputs records using terminal colors.")
- (license license:expat)))
- (define-public python-pyprind
- (package
- (name "python-pyprind")
- (version "2.11.3")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "PyPrind" version))
- (sha256
- (base32
- "1gscnlvj37m421ch3akm3kddxqkrgbg5zrpwy2ky1j59w6vclzg3"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-psutil))
- (home-page "https://github.com/rasbt/pyprind")
- (synopsis "Python Progress Bar and Percent Indicator Utility")
- (description "The PyPrind (Python Progress Indicator) module provides a
- progress bar and a percentage indicator object that let you track the progress
- of a loop structure or other iterative computation.")
- (license license:bsd-3)))
- (define-public python-gphoto2
- (package
- (name "python-gphoto2")
- (version "2.2.1")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "gphoto2" version))
- (sha256
- (base32
- "118zm25c8mlajfl0pzssnwz4b8lamj9dgymla9rn4nla7l244a0r"))))
- (build-system python-build-system)
- (native-inputs
- (list pkg-config))
- (inputs
- (list libgphoto2))
- (home-page "https://github.com/jim-easterbrook/python-gphoto2")
- (synopsis "Python interface to libgphoto2")
- (description "@code{python-gphoto2} is a comprehensive Python interface
- (or binding) to @code{libgphoto2}. It is built using @code{SWIG} to
- automatically generate the interface code.")
- (license license:gpl3+)))
- (define-public python-colour
- (package
- (name "python-colour")
- (version "0.1.5")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "colour" version))
- (sha256
- (base32
- "1visbisfini5j14bdzgs95yssw6sm4pfzyq1n3lfvbyjxw7i485g"))))
- (build-system python-build-system)
- (native-inputs
- (list python-d2to1))
- (home-page "https://github.com/vaab/colour")
- (synopsis "Convert and manipulate various color representations")
- (description "Pythonic way to manipulate color representations (HSL, RVB,
- web, X11, ...).")
- (license license:expat)))
- (define-public python-d2to1
- (package
- (name "python-d2to1")
- (version "0.2.12.post1")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "d2to1" version))
- (sha256
- (base32
- "09fq7pq1z8d006xh5z75rm2lk61v6yn2xhy53z4gsgibhqb2vvs9"))))
- (build-system python-build-system)
- (native-inputs
- (list python-nose))
- (home-page "https://github.com/embray/d2to1")
- (synopsis "Allows for distutils2-like setup.cfg files as package metadata
- in python")
- (description "The python package d2to1 (the d is for distutils) allows
- using distutils2-like setup.cfg files for a package's metadata with a
- distribute/setuptools setup.py script.")
- (license license:bsd-2)))
- (define-public python-rawkit
- (package
- (name "python-rawkit")
- (version "0.6.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "rawkit" version))
- (sha256
- (base32
- "0vrhrpr70i61y5q5ysk341x1539ff1q1k82g59zq69lv16s0f76s"))))
- (build-system python-build-system)
- (native-inputs
- (list python-pytest python-mock))
- (inputs
- (list libraw))
- (home-page "https://rawkit.readthedocs.io")
- (synopsis "Ctypes-based LibRaw binding for Python")
- (description "The rawkit package provides two modules: rawkit and libraw.
- The rawkit module provides a high-level Pythonic interface for developing raw
- photos, while the libraw module provides a CTypes based interface for
- interacting with the low-level LibRaw C APIs.")
- (license license:expat)))
- (define-public python-easygui
- (package
- (name "python-easygui")
- (version "0.98.1")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "easygui" version))
- (sha256
- (base32
- "1zmvmwgxyzvm83818skhn8b4wrci4kmnixaax8q3ia5cn7xrmj6v"))))
- (build-system python-build-system)
- (propagated-inputs
- (list `(,python "tk")))
- (home-page "https://github.com/robertlugg/easygui")
- (synopsis "GUI programming module for Python")
- (description "EasyGUI is a module for very simple, very easy GUI
- programming in Python. EasyGUI is different from other GUI generators in that
- EasyGUI is NOT event-driven. Instead, all GUI interactions are invoked by
- simple function calls.")
- (license license:bsd-3)))
- (define-public python-pymd4c
- (package
- (name "python-pymd4c")
- (version "0.4.6.0b1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pymd4c" version))
- (sha256
- (base32 "07s3arn85ri92im6x3ipljdmrxmpik7irs06i6lm17j1x6j9841d"))))
- (build-system python-build-system)
- (inputs
- (list md4c))
- (native-inputs
- (list python-flake8 python-pkgconfig pkg-config))
- (home-page "https://github.com/dominickpastore/pymd4c")
- (synopsis "Python bindings for MD4C")
- (description
- "PyMD4C provides Python bindings for MD4c, a C Markdown parser, compliant
- to CommonMark.")
- (license license:expat)))
- (define-public python-pymediainfo
- (package
- (name "python-pymediainfo")
- (version "4.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pymediainfo" version))
- (sha256
- (base32
- "0mhpxs7vlqx8w75z93dy7nnvx89kwfdjkla03l19an15rlyqyspd"))))
- (build-system python-build-system)
- (native-inputs
- (list python-setuptools-scm python-pytest))
- (inputs
- (list libmediainfo))
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'patch-libmediainfo
- (lambda _
- (substitute* "pymediainfo/__init__.py"
- (("libmediainfo.so.0")
- (search-input-file %build-inputs
- "/lib/libmediainfo.so.0")))))
- (replace 'check
- (lambda* (#:key tests? inputs outputs #:allow-other-keys)
- (when tests?
- (add-installed-pythonpath inputs outputs)
- ;; Skip the only failing test "test_parse_url" because it tries
- ;; to access the internet.
- (invoke "pytest" "-vv" "-k" "not test_parse_url")))))))
- (home-page
- "https://github.com/sbraz/pymediainfo")
- (synopsis
- "Python wrapper for the mediainfo library")
- (description
- "This package provides a Python wrapper for the mediainfo library to
- access the technical and tag data for video and audio files.")
- (license license:expat)))
- (define-public python-psutil
- (package
- (name "python-psutil")
- (version "5.9.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "psutil" version))
- (sha256
- (base32 "09fa4vfhansixvxd3lv664xcrbnfdyfn53hm2wr0rf3bsvdl5646"))))
- (build-system python-build-system)
- (arguments
- ;; FIXME: some tests do not return and time out. Some tests fail because
- ;; some processes survive kill().
- '(#:tests? #f))
- (home-page "https://github.com/giampaolo/psutil")
- (synopsis "Library for retrieving information on running processes")
- (description
- "@code{psutil} (Python system and process utilities) is a library for
- retrieving information on running processes and system utilization (CPU,
- memory, disks, network) in Python. It is useful mainly for system monitoring,
- profiling and limiting process resources and management of running processes.
- It implements many functionalities offered by command line tools such as: ps,
- top, lsof, netstat, ifconfig, who, df, kill, free, nice, ionice, iostat,
- iotop, uptime, pidof, tty, taskset, pmap.")
- (properties `((python2-variant . ,(delay python2-psutil))))
- (license license:bsd-3)))
- (define-public python2-psutil
- (let ((base (package-with-python2 (strip-python2-variant python-psutil))))
- (package/inherit base
- (propagated-inputs
- `(("python2-enum34" ,python2-enum34) ;optional
- ,@(package-propagated-inputs base))))))
- (define-public python-shapely
- (package
- (name "python-shapely")
- (version "1.7.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "Shapely" version))
- (sha256
- (base32
- "0adiz4jwmwxk7k1awqifb1a9bj5x4nx4gglb5dz9liam21674h8n"))
- (modules '((guix build utils)))
- (snippet
- '(begin
- (delete-file "shapely/speedups/_speedups.c")
- (delete-file "shapely/vectorized/_vectorized.c")
- #t))))
- (build-system python-build-system)
- (native-inputs
- (list python-cython python-matplotlib python-pytest
- python-pytest-cov))
- (inputs
- (list geos))
- (propagated-inputs
- (list python-numpy))
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'patch-geos-path
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((geos (assoc-ref inputs "geos"))
- (glibc (assoc-ref inputs ,(if (%current-target-system)
- "cross-libc" "libc"))))
- (substitute* '("shapely/geos.py" "shapely/_buildcfg.py")
- (("_lgeos = load_dll\\('geos_c', fallbacks=.*\\)")
- (string-append "_lgeos = load_dll('geos_c', fallbacks=['"
- geos "/lib/libgeos_c.so'])"))
- (("free = load_dll\\('c'\\)\\.free")
- (string-append "free = load_dll('c', fallbacks=['"
- glibc "/lib/libc.so.6']).free"))
- (("free = load_dll\\('c', fallbacks=.*\\)\\.free")
- (string-append "free = load_dll('c', fallbacks=['"
- glibc "/lib/libc.so.6']).free"))))
- #t)))))
- (home-page "https://github.com/Toblerity/Shapely")
- (synopsis "Library for the manipulation and analysis of geometric objects")
- (description "Shapely is a Python package for manipulation and analysis of
- planar geometric objects. It is based on the @code{GEOS} library.")
- (license license:bsd-3)))
- (define-public python-shortuuid
- (package
- (name "python-shortuuid")
- (version "0.5.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "shortuuid" version))
- (sha256
- (base32
- "1f8i4zwj5vmpzbz6b17bljy4399gx5aq7vsyw63sz2qgyjcd73yh"))))
- (build-system python-build-system)
- (native-inputs
- (list python-pep8))
- (home-page "https://github.com/skorokithakis/shortuuid")
- (synopsis "Generator library for concise, unambiguous and URL-safe UUIDs")
- (description
- "@code{shortuuid} is a Python library for generating concise, unambiguous
- and URL-safe UUIDs. UUIDs are generated using the built-in Python @code{uuid}
- module and then similar looking characters are removed.")
- (license license:bsd-3)))
- (define-public python-logwrap
- (package
- (name "python-logwrap")
- (version "8.2.0.post0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "logwrap" version))
- (sha256
- (base32
- "1dv7gny3rfci5cal2ipr6d0pcz3yhka7af96dfsd3ir1mxy8p1j9"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f ; Tests not included in pypi release.
- #:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "pytest"))
- #t)))))
- (native-inputs
- (list python-cython python-pytest python-setuptools-scm python-toml
- python-wheel))
- (home-page "https://github.com/python-useful-helpers/logwrap")
- (synopsis "Decorator for logging function arguments")
- (description "This package provides a decorator to log function arguments
- and function call return values in a human-readable way.")
- (license license:asl2.0)))
- (define-public python-clyent
- (package
- (name "python-clyent")
- (version "1.2.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "clyent" version))
- (sha256
- (base32
- "1r9987qmy1pz3hq54160bapqsywpq14waw4w9x3ly8hmq7kpgfbj"))))
- (build-system python-build-system)
- (native-inputs
- (list python-mock))
- (home-page "https://github.com/Anaconda-Platform/clyent")
- (synopsis "Command line client library")
- (description "Clyent is a Python command line utility library. It is used
- by @code{binstar}, @code{binstar-build}, and @code{chalmers}.")
- (license license:bsd-3)))
- (define-public python2-clyent
- (package-with-python2 python-clyent))
- (define-public python-babel
- (package
- (name "python-babel")
- (version "2.9.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "Babel" version))
- (sha256
- (base32
- "018yg7g2pa6vjixx1nx41cfispgfi0azzp0a1chlycbj8jsil0ys"))))
- (build-system python-build-system)
- (native-inputs
- (list python-freezegun python-pytest tzdata-for-tests))
- (propagated-inputs
- (list python-pytz))
- (arguments
- `(#:phases (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "pytest" "-vv"))))))
- (home-page "https://babel.pocoo.org/")
- (synopsis
- "Tools for internationalizing Python applications")
- (description
- "Babel is composed of two major parts:
- - tools to build and work with gettext message catalogs
- - a Python interface to the CLDR (Common Locale Data Repository), providing
- access to various locale display names, localized number and date formatting,
- etc.")
- (license license:bsd-3)))
- (define-public python2-babel
- (package-with-python2 python-babel))
- (define-public python2-backport-ssl-match-hostname
- (package
- (name "python2-backport-ssl-match-hostname")
- (version "3.5.0.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "backports.ssl_match_hostname" version))
- (sha256
- (base32
- "1wndipik52cyqy0677zdgp90i435pmvwd89cz98lm7ri0y3xjajh"))))
- (build-system python-build-system)
- (arguments
- `(#:python ,python-2
- #:tests? #f)) ; no test target
- (home-page "https://bitbucket.org/brandon/backports.ssl_match_hostname")
- (synopsis "Backport of ssl.match_hostname() function from Python 3.5")
- (description
- "This backport brings the ssl.match_hostname() function to users of
- earlier versions of Python. The function checks the hostname in the
- certificate returned by the server to which a connection has been established,
- and verifies that it matches the intended target hostname.")
- (license license:psfl)))
- (define-public python-bidict
- (package
- (name "python-bidict")
- (version "0.21.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "bidict" version))
- (sha256
- (base32
- "02dy0b1k7qlhn7ajyzkrvxhyhjj0hzcq6ws3zjml9hkdz5znz92g"))))
- (build-system python-build-system)
- (native-inputs
- (list python-coverage
- python-hypothesis
- python-pre-commit
- python-py
- python-pytest
- python-pytest-benchmark
- python-pytest-cov
- python-setuptools-scm
- python-sortedcollections
- python-sortedcontainers
- python-sphinx
- python-sphinx-autodoc-typehints
- python-tox))
- (arguments
- `(#:phases (modify-phases %standard-phases
- (add-after 'unpack 'relax-reqs
- (lambda _
- (substitute* "setup.py"
- (("sortedcollections < 2") "sortedcollections"))
- #t))
- (replace 'check
- (lambda _ (invoke "./run_tests.py"))))))
- (home-page "https://bidict.readthedocs.io")
- (synopsis "Bidirectional mapping library")
- (description "The @code{bidict} library provides several data structures
- for working with bidirectional mappings in Python.")
- (license license:mpl2.0)))
- (define-public python-bitarray
- (package
- (name "python-bitarray")
- (version "1.4.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "bitarray" version))
- (sha256
- (base32
- "177fj6wbw5jln54wpp6plcqy2329wjkwqwvgz7022rrg3xfrq49g"))))
- (build-system python-build-system)
- (home-page "https://github.com/ilanschnell/bitarray")
- (synopsis "Efficient arrays of booleans")
- (description "This package provides an object type which efficiently
- represents an array of booleans. Bitarrays are sequence types and behave very
- much like usual lists. Eight bits are represented by one byte in a contiguous
- block of memory. The user can select between two representations:
- little-endian and big-endian. All of the functionality is implemented in C.
- Methods for accessing the machine representation are provided. This can be
- useful when bit level access to binary files is required, such as portable
- bitmap image files. Also, when dealing with compressed data which uses
- variable bit length encoding, you may find this module useful.")
- (license license:psfl)))
- (define-public python-boolean.py
- (package
- (name "python-boolean.py")
- (version "3.6")
- (source
- (origin
- ;; There's no source tarball on PyPI.
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/bastikr/boolean.py")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "1wc89y73va58cj7dsx6c199zpxsy9q53dsffsdj6zmc90inqz6qs"))))
- (build-system python-build-system)
- (home-page "https://github.com/bastikr/boolean.py")
- (synopsis "Boolean algebra in one Python module")
- (description
- "This is a small Python library that implements boolean algebra.
- It defines two base elements, @code{TRUE} and @code{FALSE}, and a
- @code{Symbol} class that can take on one of these two values. Calculations
- are done only in terms of @code{AND}, @code{OR}, and @code{NOT}---other
- compositions like @code{XOR} and @code{NAND} are emulated on top of them.
- Expressions are constructed from parsed strings or directly in Python.")
- (license license:bsd-2)))
- (define-public python-hdf4
- (package
- (name "python-hdf4")
- (version "0.9")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri name version))
- (sha256
- (base32
- "1hjiyrxvxk9817qyqky3nar4y3fs4z8wxz0n884zzb5wi6skrjks"))))
- (build-system python-build-system)
- (native-inputs `(("nose" ,python-nose)))
- (propagated-inputs `(("numpy" ,python-numpy)))
- (inputs
- `(("hdf4" ,hdf4)
- ("libjpeg" ,libjpeg-turbo)
- ("zlib" ,zlib)))
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "./runexamples.sh")
- (invoke "nosetests" "-v"))))))
- (home-page "https://github.com/fhs/python-hdf4")
- (synopsis "Python interface to the NCSA HDF4 library")
- (description
- "Python-HDF4 is a python wrapper around the NCSA HDF version 4 library,
- which implements the SD (Scientific Dataset), VS (Vdata) and V (Vgroup) API’s.
- NetCDF files can also be read and modified. Python-HDF4 is a fork of
- @url{http://hdfeos.org/software/pyhdf.php,pyhdf}.")
- (license license:expat)))
- (define-public python-h5py
- (package
- (name "python-h5py")
- (version "3.6.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "h5py" version))
- (sha256
- (base32
- "0afv805vqrm5071g7alwv41920nhh8kjv4m5nbia9awj9a0x4ll7"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f ; no test target
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'fix-hdf5-paths
- (lambda* (#:key inputs #:allow-other-keys)
- (setenv "HDF5_DIR" (assoc-ref inputs "hdf5")))))))
- (propagated-inputs
- (list python-six python-numpy))
- (inputs
- (list hdf5-1.10))
- (native-inputs
- (list python-cython python-pkgconfig pkg-config))
- (home-page "https://www.h5py.org/")
- (synopsis "Read and write HDF5 files from Python")
- (description
- "The h5py package provides both a high- and low-level interface to the
- HDF5 library from Python. The low-level interface is intended to be a
- complete wrapping of the HDF5 API, while the high-level component supports
- access to HDF5 files, datasets and groups using established Python and NumPy
- concepts.")
- (license license:bsd-3)
- (properties `((python2-variant . ,(delay python2-h5py))))))
- (define-public python2-h5py
- (let ((base (package-with-python2 (strip-python2-variant python-h5py))))
- (package
- (inherit base)
- (version "2.10.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "h5py" version))
- (sha256
- (base32
- "0baipzv8n93m0dq0riyi8rfhzrjrfrfh8zqhszzp1j2xjac2fhc4")))))))
- (define-public python-hnswlib
- (package
- (name "python-hnswlib")
- (version "0.5.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "hnswlib" version))
- (sha256
- (base32 "0wf1cwmxmdzfqmfhrkqdxb5spf21ylgl2bidswhzjrqhwf35c9qf"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'disable-native-optimization
- (lambda _
- (substitute* "setup.py"
- ((", '-march=native'") "")))))))
- (propagated-inputs
- (list python-numpy))
- (native-inputs
- (list pybind11))
- (home-page "https://github.com/nmslib/hnswlib")
- (synopsis "Fast approximate nearest neighbor search")
- (description "Hnswlib is a header-only C++ implementation of fast
- approximate nearest neighbor search with Python bindings.")
- (license license:asl2.0)))
- (define-public python-pyls-black
- (package
- (name "python-pyls-black")
- (version "0.4.7")
- (source
- (origin
- ;; There are no tests in the PyPI tarball.
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/rupert/pyls-black/")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "0bkhfnlik89j3yamr20br4wm8975f20v33wabi2nyxvj10whr5dj"))
- ;; Patch to work with python-lsp-server. Taken from
- ;; <https://github.com/rupert/pyls-black/pull/37>.
- (modules '((guix build utils)))
- (snippet
- '(begin
- (substitute* "setup.cfg"
- (("python-language-server")
- "python-lsp-server"))
- (substitute* '("pyls_black/plugin.py" "tests/test_plugin.py")
- (("pyls_format_document")
- "pylsp_format_document")
- (("pyls_format_range")
- "pylsp_format_range")
- (("from pyls([ \\.])" _ char)
- (string-append "from pylsp" char)))))))
- (build-system python-build-system)
- (arguments
- `(#:test-target "pytest"))
- (propagated-inputs
- (list python-black python-lsp-server python-tomli))
- (native-inputs
- (list python-flake8 python-isort python-mypy python-pytest
- python-pytest-runner))
- (home-page "https://github.com/rupert/pyls-black")
- (synopsis "Black plugin for the Python Language Server")
- (description "Black plugin for the Python Language Server.")
- (license license:expat)))
- (define-public python-sh
- (package
- (name "python-sh")
- (version "1.12.14")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "sh" version))
- (sha256
- (base32
- "1z2hx357xp3v4cv44xmqp7lli3frndqpyfmpbxf7n76h7s1zaaxm"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- ;; XXX: A Python 2 test fails when HOME=/homeless-shelter.
- (setenv "HOME" "/tmp")
- (invoke "python" "sh.py" "test"))))))
- (native-inputs
- (list python-coverage))
- (home-page "https://github.com/amoffat/sh")
- (synopsis "Python subprocess replacement")
- (description "This package provides a replacement for Python's
- @code{subprocess} feature.")
- (license license:expat)))
- (define-public python-cftime
- (package
- (name "python-cftime")
- (version "1.5.1.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "cftime" version))
- (sha256
- (base32 "0l1a22zlhdpgaisibvvm7dhij4vzfm661rnv00y2snpyqxpdgi3d"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-numpy))
- (native-inputs
- (list python-check-manifest
- python-coverage
- python-coveralls
- python-cython
- python-pytest-cov
- python-sphinx
- python-twine
- python-wheel))
- (home-page "https://unidata.github.io/cftime/")
- (synopsis "Library for time handling")
- (description
- "This package provides time-handling functionality that used to be part
- of the netcdf4 package before.")
- (license license:expat)))
- (define-public python-netcdf4
- (package
- (name "python-netcdf4")
- (version "1.5.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "netCDF4" version))
- (sha256
- (base32
- "1gn35mb2yc263pci720aik8ymz41lrvxlrn3z83vyjwghiashg1a"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'configure-locations
- (lambda* (#:key inputs #:allow-other-keys)
- (setenv "HDF5_DIR" (assoc-ref inputs "hdf5"))
- #t)))))
- (native-inputs
- (list python-cython))
- (propagated-inputs
- (list python-numpy python-cftime))
- (inputs
- (list netcdf hdf4 hdf5))
- (home-page "https://github.com/Unidata/netcdf4-python")
- (synopsis "Python/numpy interface to the netCDF library")
- (description "Netcdf4-python is a Python interface to the netCDF C
- library. netCDF version 4 has many features not found in earlier
- versions of the library and is implemented on top of HDF5. This module
- can read and write files in both the new netCDF 4 and the old netCDF 3
- format, and can create files that are readable by HDF5 clients. The
- API is modelled after @code{Scientific.IO.NetCDF}, and should be familiar
- to users of that module.")
- ;; The software is mainly ISC, but includes some files covered
- ;; by the Expat license.
- (license (list license:isc license:expat))))
- (define-public python-ncclient
- (package
- (name "python-ncclient")
- (version "0.6.12")
- (source
- (origin
- (method git-fetch) ;no tests in PyPI release
- (uri (git-reference
- (url "https://github.com/ncclient/ncclient")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0cb568z5syg6hh0dv813bw7s1mjy7ga5xzxbm9naf4zz2qfdg4js"))))
- (build-system python-build-system)
- (arguments
- `(#:phases (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "pytest")))))))
- (native-inputs
- (list python-pytest))
- (propagated-inputs
- (list python-lxml python-paramiko))
- (home-page "https://github.com/ncclient/ncclient")
- (synopsis "Python library for NETCONF clients")
- (description "@code{ncclient} is a Python library that facilitates
- client-side scripting and application development around the NETCONF
- protocol.")
- (license license:asl2.0)))
- (define-public python-license-expression
- (package
- (name "python-license-expression")
- (version "1.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "license-expression" version))
- (sha256
- (base32 "1g0sgphss8hbi1rpl4avy1nmbixmy9v194xdbvkjgl90vzgy2q3r"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-boolean.py))
- (home-page "https://github.com/nexB/license-expression")
- (synopsis "Apply boolean logic to license expressions")
- (description
- "This Python module defines a tiny language to evaluate and compare
- license expressions using boolean logic. Logical combinations of licenses can
- be tested for equality, containment, and equivalence. They can be normalised
- and simplified. It supports SPDX license expressions as well as other naming
- conventions and aliases in the same expression.")
- (license license:gpl2+)))
- (define-public python-wand
- (package
- (name "python-wand")
- (version "0.6.7")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "Wand" version))
- (sha256
- (base32 "1nxn7zvbnfgk4kkxajbzglcjpbgr84ilhnxm990nifjxqb61ph7b"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'find-magickwand
- (lambda* (#:key inputs #:allow-other-keys)
- (setenv "MAGICK_HOME" (assoc-ref inputs "imagemagick"))
- (setenv "WAND_MAGICK_LIBRARY_SUFFIX" ".Q16"))))))
- (native-inputs
- (list python-pytest))
- (inputs
- (list imagemagick))
- (home-page "https://docs.wand-py.org/")
- (synopsis "MagickWand API binding for Python")
- (description
- "Wand is a ctypes-based binding for the C API of ImageMagick's MagickWand
- library.")
- (license license:expat)))
- (define-public python-lockfile
- (package
- (name "python-lockfile")
- (version "0.12.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "lockfile" version))
- (sha256
- (base32
- "16gpx5hm73ah5n1079ng0vy381hl802v606npkx4x8nb0gg05vba"))))
- (build-system python-build-system)
- (arguments '(#:test-target "check"))
- (native-inputs
- (list python-pbr))
- (home-page "https://launchpad.net/pylockfile")
- (synopsis "Platform-independent file locking module")
- (description
- "The lockfile package exports a LockFile class which provides a simple
- API for locking files.")
- (license license:expat)))
- (define-public python-fb-re2
- (package
- (name "python-fb-re2")
- (version "1.0.7")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/facebook/pyre2")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0snprxdnh3m45r3b0az4v0l28h90ycmfbybzla6xg1qviwv9w1ak"))))
- (build-system python-build-system)
- (inputs
- (list re2))
- (home-page "https://github.com/facebook/pyre2")
- (synopsis "Python wrapper for RE2")
- (description "This package provides a Python extension that wraps Google's
- RE2 regular expression library. It implements many of the features of
- Python's built-in @code{re} module with compatible interfaces.")
- (license license:bsd-3)))
- (define-public python-filelock
- (package
- (name "python-filelock")
- (version "3.0.12")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "filelock" version))
- (sha256
- (base32
- "0ngzlvb5j8gqs2nxlp2b0jhzii792h66wsn694qm8kqixr225n0q"))))
- (build-system python-build-system)
- (home-page
- "https://github.com/benediktschmitt/py-filelock")
- (synopsis "Platform independent file lock")
- (description "@code{filelock} contains a single module implementing
- a platform independent file lock in Python, which provides a simple way of
- inter-process communication.")
- (license license:unlicense)))
- (define-public python-semantic-version
- (package
- (name "python-semantic-version")
- (version "2.8.5")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "semantic_version" version))
- (sha256
- (base32
- "0m4avx8zdkzc7qglv5zlr54g8yna5vl098drg5396ql7aph2vjyj"))))
- (build-system python-build-system)
- (home-page "https://github.com/rbarrois/python-semanticversion")
- (synopsis "Semantic versioning module for Python")
- (description
- "The @code{semantic_version} class is a small library for handling
- @uref{https://semver.org/, semantic versioning} (@dfn{SemVer}) in Python.
- It can compare versions, generate a new version that represents a bump in one of
- the version levels, and check whether any given string is a proper semantic
- version identifier.")
- (license license:bsd-3)))
- (define-public python2-semantic-version
- (package-with-python2 python-semantic-version))
- (define-public python-serpent
- (package
- (name "python-serpent")
- (version "1.28")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "serpent" version))
- (sha256
- (base32 "1arnckykpkvv2qrp49l1k7q5mr5pisswl0rvdx98x8wsl1n361pk"))))
- (build-system python-build-system)
- (native-inputs
- (list python-attrs python-pytz))
- (home-page "https://github.com/irmen/Serpent")
- (synopsis "Serializer for literal Python expressions")
- (description
- "Serpent provides @code{ast.literal_eval()}-compatible object tree
- serialization. It serializes an object tree into bytes (an utf-8 encoded
- string) that can be decoded and then passed as-is to @code{ast.literal_eval()}
- to rebuild the original object tree.
- Because only safe literals are encoded, it is safe to send serpent data to
- other machines, such as over the network.")
- (properties `((python2-variant . ,(delay python2-serpent))))
- (license license:expat)))
- (define-public python2-serpent
- (let ((base (package-with-python2 (strip-python2-variant python-serpent))))
- (package/inherit base
- (propagated-inputs
- `(("python-enum34" ,python2-enum34)
- ,@(package-propagated-inputs base))))))
- (define-public python-setuptools
- (package
- (name "python-setuptools")
- (version "52.0.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "setuptools" version))
- (sha256
- (base32
- "15ibjdjhkwgj6qbmpsxikkqdfsb1550z46fly7dm15ah4bk1wfpv"))
- (modules '((guix build utils)))
- (snippet
- '(begin
- ;; Remove included binaries which are used to build self-extracting
- ;; installers for Windows.
- ;; TODO: Find some way to build them ourself so we can include them.
- (for-each delete-file (find-files "setuptools" "^(cli|gui).*\\.exe$"))
- #t))))
- (build-system python-build-system)
- ;; FIXME: Tests require pytest, which itself relies on setuptools.
- ;; One could bootstrap with an internal untested setuptools.
- (arguments
- `(#:tests? #f))
- (home-page "https://pypi.org/project/setuptools/")
- (synopsis
- "Library designed to facilitate packaging Python projects")
- (description
- "Setuptools is a fully-featured, stable library designed to facilitate
- packaging Python projects, where packaging includes:
- Python package and module definitions,
- distribution package metadata,
- test hooks,
- project installation,
- platform-specific details,
- Python 3 support.")
- ;; TODO: setuptools now bundles the following libraries:
- ;; packaging, pyparsing, six and appdirs. How to unbundle?
- (license (list license:psfl ; setuptools itself
- license:expat ; six, appdirs, pyparsing
- license:asl2.0 ; packaging is dual ASL2/BSD-2
- license:bsd-2))
- (properties `((python2-variant . ,(delay python2-setuptools))))))
- ;; Newer versions of setuptools no longer support Python 2.
- (define-public python2-setuptools
- (package
- (name "python2-setuptools")
- (version "41.0.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "setuptools" version ".zip"))
- (sha256
- (base32
- "04sns22y2hhsrwfy1mha2lgslvpjsjsz8xws7h2rh5a7ylkd28m2"))
- (modules '((guix build utils)))
- (snippet
- '(begin
- ;; Remove included binaries which are used to build self-extracting
- ;; installers for Windows.
- ;; TODO: Find some way to build them ourself so we can include them.
- (for-each delete-file (find-files "setuptools" "^(cli|gui).*\\.exe$"))
- #t))))
- (build-system python-build-system)
- ;; FIXME: Tests require pytest, which itself relies on setuptools.
- ;; One could bootstrap with an internal untested setuptools.
- (arguments
- `(#:tests? #f))
- (native-inputs
- (list unzip))
- (home-page "https://pypi.org/project/setuptools/")
- (synopsis
- "Library designed to facilitate packaging Python projects")
- (description
- "Setuptools is a fully-featured, stable library designed to facilitate
- packaging Python projects, where packaging includes:
- Python package and module definitions,
- distribution package metadata,
- test hooks,
- project installation,
- platform-specific details,
- Python 3 support.")
- ;; TODO: setuptools now bundles the following libraries:
- ;; packaging, pyparsing, six and appdirs. How to unbundle?
- (license (list license:psfl ; setuptools itself
- license:expat ; six, appdirs, pyparsing
- license:asl2.0 ; packaging is dual ASL2/BSD-2
- license:bsd-2))))
- (define-public python-setuptools-declarative-requirements
- (package
- (name "python-setuptools-declarative-requirements")
- (version "1.2.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri
- "setuptools-declarative-requirements"
- version))
- (sha256
- (base32
- "1l8zmcnp9h8sp8hsw7b81djaa1a9yig0y7i4phh5pihqz1gdn7yi"))))
- (build-system python-build-system)
- (native-inputs
- (list python-pytest python-setuptools-scm))
- (propagated-inputs
- (list python-toml python-wheel))
- (home-page
- "https://github.com/s0undt3ch/setuptools-declarative-requirements")
- (synopsis "File support for setuptools declarative setup.cfg")
- (description
- "This package provides file support for setuptools declarative
- @code{setup.cfg}.")
- (license license:asl2.0)))
- ;; The setuptools provided by Python 3.9 is too new for Tensorflow.
- (define-public python-setuptools-for-tensorflow
- (hidden-package
- (package
- (inherit python-setuptools)
- (version "39.1.0")
- (source (origin
- (inherit (package-source python-setuptools))
- (uri (pypi-uri "setuptools" version ".zip"))
- (sha256
- (base32
- "1mzdhvfhnv4lggxa8rjl0dzqxvfx377gg5sqs57v89wrp09lwj65"))))
- (arguments
- `(#:tests? #f ; tests require vendored resources
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'compatibility-fixes
- (lambda _
- ;; Python 3.9 no longer has HTMLParser
- (substitute* "setuptools/py33compat.py"
- (("html_parser.HTMLParser\\(\\).unescape")
- "html.unescape"))
- ;; This needs distutils.msvc9compiler
- (delete-file "setuptools/tests/test_msvc.py"))))))
- (native-inputs
- (list python-pytest python-mock python-six)))))
- (define-public python-uniseg
- (package
- (name "python-uniseg")
- (version "0.7.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "uniseg" version ".zip"))
- (sha256
- (base32
- "05jsazvz6nbmh6l3v1rph5ydkqn1hzx1pyggdyvgp2qgmgrnmiz2"))))
- (build-system python-build-system)
- (arguments
- '(#:tests? #f)) ; The test suite requires network access.
- (native-inputs
- (list unzip))
- (home-page
- "https://bitbucket.org/emptypage/uniseg-python")
- (synopsis
- "Python library to determine Unicode text segmentations")
- (description
- "Uniseg is a Python package used to determine Unicode text segmentations.
- Supported segmentations include:
- @enumerate
- @item @dfn{Code point} (any value in the Unicode codespace)
- @item @dfn{Grapheme cluster} (user-perceived character made of a single or
- multiple Unicode code points, e.g. \"G\" + acute-accent)
- @item Word break
- @item Sentence break
- @item Line break
- @end enumerate")
- (license license:expat)))
- (define-public python2-uniseg
- (package-with-python2 python-uniseg))
- (define-public python-humanfriendly
- (package
- (name "python-humanfriendly")
- (version "8.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "humanfriendly" version))
- (sha256
- (base32
- "04ixg8b7p6xc8x8lffhi7wfl77xhszakhd0s6j0cf6a84j8yqlmz"))))
- (build-system python-build-system)
- (arguments
- `(;; XXX: Tests depend on coloredlogs, which in turn depends on humanfriendly.
- #:tests? #f))
- (home-page "https://humanfriendly.readthedocs.io")
- (synopsis "Human-friendly input and output in Python")
- (description
- "The functions and classes in @code{humanfriendly} can be used to make
- text interfaces more user-friendly. It includes tools to parse and format
- numbers, file sizes, and timespans, timers for long-running operations, menus
- to allow the user to choose from a list of options, and terminal interaction
- helpers.")
- (properties `((python2-variant . ,(delay python2-humanfriendly))))
- (license license:expat)))
- (define-public python2-humanfriendly
- (let ((base (package-with-python2
- (strip-python2-variant python-humanfriendly))))
- (package/inherit base
- (propagated-inputs
- `(("python2-monotonic" ,python2-monotonic)
- ,@(package-propagated-inputs base))))))
- (define-public python-textparser
- (package
- (name "python-textparser")
- (version "0.23.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "textparser" version))
- (sha256
- (base32
- "0w5lyhrsvzs5a9q1l3sjgxgljrvd3ybf796w93kc39wayzvd02gh"))))
- (build-system python-build-system)
- (home-page "https://github.com/eerimoq/textparser")
- (synopsis "Fast text parser for Python")
- (description "This library provides a text parser written in the Python
- language. It aims to be fast.")
- (license license:expat)))
- (define-public python-aenum
- (package
- (name "python-aenum")
- (version "2.2.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "aenum" version))
- (sha256
- (base32 "0r1812bjm72x73pl7y4yhffr4zbdjgxa08avsy4b3di0pqgqv0l1"))))
- (build-system python-build-system)
- (arguments
- `(#:phases (modify-phases %standard-phases
- (replace 'check
- (lambda _
- ;; We must run the test suite module directly, as it
- ;; fails to define the 'tempdir' variable in scope for
- ;; the tests otherwise
- ;; (see:https://bitbucket.org/stoneleaf/aenum/\
- ;; issues/32/running-tests-with-python-setuppy-test).
- (invoke "python3" "aenum/test.py")
- ;; This one fails with "NameError: name
- ;; 'test_pickle_dump_load' is not defined" (see:
- ;; https://bitbucket.org/stoneleaf/aenum/issues/33
- ;; /error-running-the-test_v3py-test-suite).
- ;; (invoke "python3" "aenum/test_v3.py")
- #t)))))
- (home-page "https://bitbucket.org/stoneleaf/aenum")
- (synopsis "Advanced enumerations, namedtuples and constants for Python")
- (description "The aenum library includes an @code{Enum} base class, a
- metaclass-based @code{NamedTuple} implementation and a @code{NamedConstant}
- class.")
- (license license:bsd-3)))
- (define-public python-can
- (package
- (name "python-can")
- (version "3.3.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "python-can" version))
- (sha256
- (base32
- "0jclrvyxasaaxr0albq0kqrnrfqdgqxs7m2qw9nd8kfwg8xj4g1d"))))
- (build-system python-build-system)
- (arguments
- `(#:phases (modify-phases %standard-phases
- (add-after 'unpack 'relax-version-requirements
- (lambda _
- (substitute* "setup.py"
- (("mock~=2\\.0") "mock")
- (("coverage<5") "coverage")
- (("pytest~=4\\.6") "pytest")
- (("pytest-timeout~=1\\.3") "pytest-timeout")
- (("hypothesis~=4\\.56") "hypothesis"))
- #t))
- (add-after 'unpack 'fix-broken-tests
- ;; The tests try to run two scripts it expects should be
- ;; in PATH, but they aren't at this time (see:
- ;; https://github.com/hardbyte/python-can/issues/805).
- (lambda _
- (substitute* "test/test_scripts.py"
- (("\"can_logger\\.py --help\"") "")
- (("\"can_player\\.py --help\"") ""))
- #t)))))
- (propagated-inputs
- (list python-aenum python-wrapt))
- (native-inputs
- (list python-codecov
- python-coverage
- python-future
- python-hypothesis
- python-mock
- python-pyserial
- python-pytest
- python-pytest-cov
- python-pytest-runner
- python-pytest-timeout))
- (home-page "https://github.com/hardbyte/python-can")
- (synopsis "Controller Area Network (CAN) interface module for Python")
- (description "This package defines the @code{can} module, which provides
- controller area network (CAN) support for Python developers; providing common
- abstractions to different hardware devices, and a suite of utilities for
- sending and receiving messages on a CAN bus.")
- (license license:lgpl3+)))
- (define-public python-caniusepython3
- (package
- (name "python-caniusepython3")
- (version "7.2.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "caniusepython3" version))
- (sha256
- (base32
- "0a755444ln38j8d7xb3yw0wzpd0mjrzfn6zqvsh06nw1vdaq4l28"))))
- (build-system python-build-system)
- (arguments
- `(#:phases (modify-phases %standard-phases
- (add-after 'unpack 'relax-requirements
- (lambda _
- (substitute* "setup.py"
- ;; These are for compatibility with Python 2.
- ((".*'argparse', 'backports.functools_lru_cache',.*")
- ""))
- (substitute* "dev_requirements.txt"
- ((".*pylint.*") "")) ;not actually required
- #t))
- (replace 'check
- (lambda _
- (invoke "py.test" "-k" "not NetworkTests"))))))
- (propagated-inputs
- (list python-distlib python-packaging python-requests))
- (native-inputs
- (list python-mock python-pytest))
- (home-page "https://github.com/brettcannon/caniusepython3")
- (synopsis "Check for Python 3-incompatible Python libraries")
- (description "The @command{caniusepython3} command scans your project and
- reports the Python 3-incompatible libraries it found. It can also be used as
- a library.")
- (license license:asl2.0)))
- (define-public python-diskcache
- (package
- (name "python-diskcache")
- (version "4.1.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "diskcache" version))
- (sha256
- (base32
- "1q2wz5sj16zgyy1zpq516qgbnfwsavk1pl2qks0f4r62z5cmmvmw"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f)) ;test suite not included in the release
- (home-page "http://www.grantjenks.com/docs/diskcache/")
- (synopsis "Disk and file backed cache library")
- (description "DiskCache is a disk and file backed persistent cache.")
- (license license:asl2.0)))
- (define-public python-bitstruct
- (package
- (name "python-bitstruct")
- (version "8.9.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "bitstruct" version))
- (sha256
- (base32
- "1fpc1qh1vss05ap29xvhjp200fm0q4pvgcjl0qpryh7ay6xgr5vx"))))
- (build-system python-build-system)
- (home-page "https://github.com/eerimoq/bitstruct")
- (synopsis "Python values to and C bit field structs converter")
- (description "This module performs conversions between Python values and C
- bit field structs represented as Python byte strings. It is intended to have
- a similar interface as the @code{struct} module from Python, but working on
- bits instead of primitive data types like @code{char}, @code{int}, etc.")
- (license license:expat)))
- (define-public python-cantools
- (package
- (name "python-cantools")
- (version "33.1.1")
- (source
- (origin
- ;; We take the sources from the Git repository as the documentation is
- ;; not included with the PyPI archive.
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/eerimoq/cantools")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "1aad137yd8b4jkfvlv812qsxmxcgra7g1p4wbxfsjy1cbf8fbq9q"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'build 'build-doc
- (lambda _
- ;; See: https://github.com/eerimoq/cantools/issues/190.
- (substitute* "README.rst"
- (("https://github.com/eerimoq/cantools/raw/master\
- /docs/monitor.png")
- "monitor.png"))
- (with-directory-excursion "docs"
- (invoke "make" "man" "info"))))
- (add-after 'install 'install-doc
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (info (string-append out "/share/info"))
- (man1 (string-append out "/share/man/man1")))
- (format #t "CWD: ~s~%" (getcwd))
- (install-file "docs/_build/texinfo/cantools.info" info)
- (install-file "docs/_build/man/cantools.1" man1)
- #t))))))
- (native-inputs
- `(("sphinx" ,python-sphinx)
- ("texinfo" ,texinfo)))
- (propagated-inputs
- (list python-bitstruct python-can python-diskcache python-textparser))
- (home-page "https://github.com/eerimoq/cantools")
- (synopsis "Tools for the Controller Area Network (CAN) bus protocol")
- (description "This package includes Controller Area Network (CAN) related
- tools that can be used to:
- @itemize
- @item parse DBC, KCD, SYM, ARXML 4 and CDD files
- @item encode and decode CAN messages
- @item multiplex simple and extended signals
- @item diagnose DID encoding and decoding
- @item dump the CAN decoder output
- @item test CAN nodes
- @item generate C source code
- @item monitor the CAN bus
- @end itemize")
- (license license:expat)))
- (define-public python-capturer
- (package
- (name "python-capturer")
- (version "2.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "capturer" version))
- (sha256
- (base32
- "05d6ji4j8ipiq0br7bwam38qc6hd9l1djmfxlzrxx19ziyjl4089"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f))
- (propagated-inputs
- (list python-humanfriendly))
- (home-page "https://capturer.readthedocs.io")
- (synopsis "Capture stdout and stderr streams of the current process")
- (description
- "The capturer package makes it easy to capture the stdout and stderr
- streams of the current process and subprocesses. Output can be relayed
- to the terminal in real time but is also available to the Python program
- for additional processing.")
- (license license:expat)))
- (define-public python2-capturer
- (package-with-python2 python-capturer))
- (define-public python-case
- (package
- (name "python-case")
- (version "1.5.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "case" version))
- (sha256
- (base32
- "1cagg06vfph864s6l5jb0zqliwxh647bki8j6lf4a4qrv40jnhs8"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-mock python-nose python-six python-unittest2))
- (native-inputs
- (list python-coverage))
- (home-page "https://github.com/celery/case")
- (synopsis "Unittest utilities and convenience methods")
- (description
- "The @code{case} package provides utilities on top of unittest, including
- some helpful Python 2 compatibility convenience methods.")
- (license license:bsd-3)))
- (define-public python-verboselogs
- (package
- (name "python-verboselogs")
- (version "1.7")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "verboselogs" version))
- (sha256
- (base32
- "09z4d1jiasn7k1hs5af2ckmnrd0i1d1m04bhfjhv7z6svzfdwgg3"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- ;; Do not run pylint plugin test, as astroid is an old
- ;; unsupported version.
- (invoke "pytest" "-v" "-k" "not test_pylint_plugin"
- "verboselogs/tests.py"))))))
- (native-inputs
- (list python-mock python-pytest))
- (home-page "https://verboselogs.readthedocs.io")
- (synopsis "Verbose logging level for Python's logging module")
- (description
- "The @code{verboselogs} package extends Python's @code{logging} module to
- add the log levels NOTICE, SPAM, SUCCESS and VERBOSE.")
- (license license:expat)))
- (define-public python2-verboselogs
- (package-with-python2 python-verboselogs))
- (define-public python-coloredlogs
- (package
- (name "python-coloredlogs")
- (version "10.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "coloredlogs" version))
- (sha256
- (base32
- "0dkw6xp0r1dwgz4s2f58npx5nxfq51wf4l6qkm5ib27slgfs4sdq"))))
- (build-system python-build-system)
- (arguments
- `(;Tests require some updated modules
- #:tests? #f))
- (propagated-inputs
- (list python-capturer))
- (home-page "https://coloredlogs.readthedocs.io")
- (synopsis "Colored stream handler for Python's logging module")
- (description
- "The @code{coloredlogs} package enables colored terminal output for
- Python's logging module. The @code{ColoredFormatter} class inherits from
- @code{logging.Formatter} and uses ANSI escape sequences to render your logging
- messages in color.")
- (license license:expat)))
- (define-public python2-coloredlogs
- (package-with-python2 python-coloredlogs))
- (define-public python-editorconfig
- (package
- (name "python-editorconfig")
- (version "0.12.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "EditorConfig" version))
- (sha256
- (base32
- "0v55z351p9qkyp3bbspwywwn28sbcknhirngjbj779n3z52z63hv"))))
- (build-system python-build-system)
- (home-page "https://editorconfig.org/")
- (synopsis "EditorConfig bindings for python")
- (description "The EditorConfig project consists of a file format for
- defining coding styles and a collection of text editor plugins that enable
- editors to read the file format and adhere to defined styles. EditorConfig
- files are easily readable and they work nicely with version control systems.")
- ;; "fnmatch.py" and "ini.py" are licensed under psfl, the rest is bsd-2.
- (license (list license:bsd-2 license:psfl))))
- (define-public dosage
- (package
- (name "dosage")
- (version "2.17")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "dosage" version))
- (sha256
- (base32
- "0vmxgn9wd3j80hp4gr5iq06jrl4gryz5zgfdd2ah30d12sfcfig0"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python2-backports-functools-lru-cache
- python2-backports-shutil-get-terminal-size
- python-cached-property
- python-colorama
- python-imagesize
- python-importlib-metadata
- python-lxml
- python-requests
- python-six))
- (native-inputs
- (list python-pytest-cov python-pytest-xdist python-responses
- python-setuptools-scm))
- (home-page "https://github.com/webcomics/dosage")
- (synopsis "Comic strip downloader and archiver")
- (description "Dosage is designed to keep a local copy of specific webcomics and other
- picture-based content such as Picture of the Day sites. With the @command{dosage}
- command-line script you can get the latest strip of a webcomic, catch-up to the last strip
- downloaded, or download a strip for a particular date or index, if possible.")
- (license license:expat)))
- (define-public python-et-xmlfile
- (package
- (name "python-et-xmlfile")
- (version "1.0.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "et_xmlfile" version))
- (sha256
- (base32
- "0nrkhcb6jdrlb6pwkvd4rycw34y3s931hjf409ij9xkjsli9fkb1"))))
- (build-system python-build-system)
- (arguments
- `(#:phases (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "pytest"))))))
- (native-inputs
- (list python-pytest python-lxml)) ;used for the tests
- (home-page "https://bitbucket.org/openpyxl/et_xmlfile")
- (synopsis "Low memory implementation of @code{lxml.xmlfile}")
- (description "This Python library is based upon the @code{xmlfile} module
- from @code{lxml}. It aims to provide a low memory, compatible implementation
- of @code{xmlfile}.")
- (license license:expat)))
- (define-public python2-et-xmlfile
- (package-with-python2 python-et-xmlfile))
- (define-public python-openpyxl
- (package
- (name "python-openpyxl")
- (version "3.0.9")
- (source
- (origin
- ;; We use the upstream repository, as the tests are not included in the
- ;; PyPI releases.
- (method hg-fetch)
- (uri (hg-reference
- (url "https://foss.heptapod.net/openpyxl/openpyxl")
- (changeset version)))
- (file-name (string-append name "-" version "-checkout"))
- (sha256
- (base32 "1p8xvc2gjw6zyzbd7qdvc3x178sm00ymrbyh9539l4fpzgxh0j9c"))))
- (build-system python-build-system)
- (arguments
- `(#:phases (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "pytest"))))))
- (native-inputs
- ;; For the test suite.
- (list python-lxml python-pillow python-pytest))
- (propagated-inputs
- (list python-et-xmlfile python-jdcal))
- (home-page "https://openpyxl.readthedocs.io")
- (synopsis "Python library to read/write Excel 2010 XLSX/XLSM files")
- (description "This Python library allows reading and writing to the Excel XLSX, XLSM,
- XLTX and XLTM file formats that are defined by the Office Open XML (OOXML)
- standard.")
- (properties `((python2-variant . ,(delay python2-openpyxl))))
- (license license:expat)))
- (define-public python2-openpyxl
- (let ((base (package-with-python2
- (strip-python2-variant python-openpyxl))))
- (package
- (inherit base)
- ;; This is the latest version that has python2 support
- (version "2.6.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "openpyxl" version))
- (sha256
- (base32
- "1qzjj8nwj4dn0mhq1j64f136afiqqb81lvqiikipz3g1g0b80lqx"))))
- (arguments
- `(#:python ,python-2
- #:tests? #f))))) ; No test suite.
- (define-public python-eventlet
- (package
- (name "python-eventlet")
- (version "0.33.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "eventlet" version))
- (sha256
- (base32
- "07qlyhcm0f28sxdizawvdf3d50m3hnbzz5kg3fjp7chvki44y540"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-dnspython python-greenlet python-monotonic python-six))
- (native-inputs
- (list python-nose))
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'avoid-OSError
- (lambda _
- ;; If eventlet tries to load greendns, an OSError is thrown when
- ;; getprotobyname is called. Thankfully there is an environment
- ;; variable to disable the greendns import, so use it:
- (setenv "EVENTLET_NO_GREENDNS" "yes")))
- (add-after 'unpack 'delete-broken-tests
- (lambda _
- (delete-file "tests/greendns_test.py")
- (delete-file "tests/socket_test.py")))
- ;; See https://github.com/eventlet/eventlet/issues/562#issuecomment-714183009
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "nosetests" "-v" "tests/")))))))
- (home-page "https://eventlet.net")
- (synopsis "Concurrent networking library for Python")
- (description
- "Eventlet is a concurrent networking library for Python that
- allows you to change how you run your code, not how you write it.
- It uses @code{epoll} or @code{libevent} for highly scalable non-blocking I/O.
- Coroutines ensure that the developer uses a blocking style of programming
- that is similar to threading, but provide the benefits of non-blocking I/O.
- The event dispatch is implicit, which means you can easily use @code{Eventlet}
- from the Python interpreter, or as a small part of a larger application.")
- (license license:expat)))
- (define-public python-sinfo
- (package
- (name "python-sinfo")
- (version "0.3.4")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "sinfo" version))
- (sha256
- (base32
- "0kdsp883mx0lfyykv0p12bvs203kdm3skb8bw5wf2pc7kb393sl1"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-stdlib-list))
- (home-page "https://gitlab.com/joelostblom/session_info")
- (synopsis "Output module version information loaded in a Python session")
- (description "This package outputs version information for modules loaded
- in the current session, Python, and the OS.")
- (license license:bsd-3)))
- (define-public python-six
- (package/inherit python-six-bootstrap
- (name "python-six")
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "pytest" "-v"))))))
- (native-inputs
- `(("python-pytest" ,python-pytest-bootstrap)))))
- (define-public python2-six
- (package-with-python2 python-six))
- (define-public python-schedule
- (package
- (name "python-schedule")
- (version "0.4.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "schedule" version))
- (sha256
- (base32
- "0vplyjcbfrq50sphlwya749z8p2pcyi2nycw3518i0qpd9a6189i"))))
- (build-system python-build-system)
- (native-inputs
- (list python-pytest python-mock))
- (home-page "https://github.com/dbader/schedule")
- (synopsis "Schedule periodic function calls in Python")
- (description
- "Schedule is an in-process scheduler for periodic jobs that uses the
- builder pattern for configuration. Schedule lets you run Python functions (or
- any other callable) periodically at pre-determined intervals using a simple,
- human-friendly syntax.")
- (license license:expat)))
- (define-public python2-schedule
- (package-with-python2 python-schedule))
- (define-public python-scour
- (package
- (name "python-scour")
- (version "0.38.2")
- (source
- (origin
- (method git-fetch)
- (uri
- (git-reference
- (url "https://github.com/scour-project/scour")
- (commit
- (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "0mmfvx4wqp8gkpv0kbih89zfs9njvmd3v4dxfqii62xddpxq0f1k"))))
- (propagated-inputs
- (list python-six))
- (build-system python-build-system)
- (home-page "https://github.com/scour-project/scour")
- (synopsis "Scour is an SVG optimizer/cleaner written in Python")
- (description "The goal of Scour is to output a file that renders
- identically at a fraction of the size by removing a lot of redundant
- information created by most SVG editors. Optimization options are typically
- lossless but can be tweaked for more aggressive cleaning.")
- (license license:asl2.0)))
- (define-public python-mechanize
- (package
- (name "python-mechanize")
- (version "0.4.5")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "mechanize" version))
- (sha256
- (base32
- "1z9kqcwb8gfq2l6i42z624kxpd8692a0c8gw2x5bbm7n848w2mb3"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-html5lib))
- (home-page "https://github.com/python-mechanize/mechanize")
- (synopsis
- "Stateful programmatic web browsing in Python")
- (description
- "Mechanize implements stateful programmatic web browsing in Python,
- after Andy Lester’s Perl module WWW::Mechanize.")
- (license license:bsd-3)))
- (define-public python2-mechanize
- (package-with-python2 python-mechanize))
- (define-public python-simpleaudio
- (package
- (name "python-simpleaudio")
- (version "1.0.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "simpleaudio" version))
- (sha256
- (base32
- "07glihg0fpca0gvbbvqs9q815w8xhflzdvg72yvlsm23j9j8h739"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f))
- (inputs
- (list alsa-lib))
- (home-page
- "https://github.com/hamiltron/py-simple-audio")
- (synopsis "Simple, asynchronous audio playback for Python 3")
- (description
- "The @code{simplaudio} package provides cross-platform, dependency-free
- audio playback capability for Python 3 on OSX, Windows, and Linux.")
- (license license:expat))) ; MIT license
- (define-public python-simplejson
- (package
- (name "python-simplejson")
- (version "3.17.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "simplejson" version))
- (sha256
- (base32
- "0hc8nqwdlll4a9cr1k9msn5kmb6kmbjirpgvhjh254nr4sgwgv3m"))))
- (build-system python-build-system)
- (native-inputs
- (list python-toml))
- (home-page "https://simplejson.readthedocs.io/en/latest")
- (synopsis
- "Json library for Python")
- (description
- "JSON (JavaScript Object Notation) is a subset of JavaScript
- syntax (ECMA-262 3rd edition) used as a lightweight data interchange
- format.
- Simplejson exposes an API familiar to users of the standard library marshal
- and pickle modules. It is the externally maintained version of the json
- library contained in Python 2.6, but maintains compatibility with Python 2.5
- and (currently) has significant performance advantages, even without using
- the optional C extension for speedups. Simplejson is also supported on
- Python 3.3+.")
- (license license:x11)))
- (define-public python2-simplejson
- (package-with-python2 python-simplejson))
- (define-public python-pyicu
- (package
- (name "python-pyicu")
- (version "2.7.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "PyICU" version))
- (sha256
- (base32
- "0mkz1673qxldxs4mrqg9882xgmz5fhpia17yrsd6z8dfw8156rf0"))))
- (build-system python-build-system)
- (inputs
- (list icu4c))
- (native-inputs
- (list python-pytest python-six))
- (home-page "https://github.com/ovalhub/pyicu")
- (synopsis "Python extension wrapping the ICU C++ API")
- (description
- "PyICU is a python extension wrapping the ICU C++ API.")
- (license license:x11)))
- (define-public python2-pyicu
- (package-with-python2 python-pyicu))
- (define-public python-dogtail
- (package
- (name "python-dogtail")
- (version "0.9.11")
- (source (origin
- (method url-fetch)
- (uri
- (string-append
- "https://gitlab.com/dogtail/dogtail/-/raw/released/"
- "dogtail-" version ".tar.gz"))
- (sha256
- (base32
- "0sr38z7b2n12bvfd4xw4b5dnnhkn5zl3h0ymmnnzavcihfqia6l0"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f ; TODO Launching dbus for the tests
- ; fails
- #:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (system "Xvfb :1 &")
- (setenv "DISPLAY" ":1")
- (invoke "dbus-run-session" "--" "nosetests" "-v" "tests/"))
- #t)))))
- (propagated-inputs
- (list python-pygobject python-pycairo python-pyatspi))
- (native-inputs
- `(("python-nose" ,python-nose)
- ("gtk+" ,gtk+)
- ("xvfb" ,xorg-server)
- ("dbus" ,dbus)
- ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
- ("gobject-introspection" ,gobject-introspection)))
- (home-page "https://gitlab.com/dogtail/dogtail/")
- (synopsis "GUI test tool and automation framework written in Python")
- (description
- "Dogtail is a GUI test tool and automation framework written in Python.
- It uses Accessibility (a11y) technologies to communicate with desktop
- applications. dogtail scripts are written in Python and executed like any
- other Python program.")
- (license license:gpl2+)))
- (define-public python2-dogtail
- (package-with-python2 python-dogtail))
- (define-public python-empy
- (package
- (name "python-empy")
- (version "3.3.3")
- (source (origin
- (method url-fetch)
- (uri (string-append "http://www.alcyone.com/software/empy/empy-"
- version ".tar.gz"))
- (sha256
- (base32
- "1mxfy5mgp473ga1pgz2nvm8ds6z4g3hdky8523z6jzvcs9ny6hcq"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f)) ; python2 only
- (home-page "http://www.alcyone.com/software/empy/")
- (synopsis "Templating system for Python")
- (description
- "EmPy is a system for embedding Python expressions and statements in
- template text; it takes an EmPy source file, processes it, and produces
- output. This is accomplished via expansions, which are special signals to the
- EmPy system and are set off by a special prefix (by default the at sign, @@).
- EmPy can expand arbitrary Python expressions and statements in this way, as
- well as a variety of special forms. Textual data not explicitly delimited in
- this way is sent unaffected to the output, allowing Python to be used in
- effect as a markup language. Also supported are callbacks via hooks,
- recording and playback via diversions, and dynamic, chainable filters. The
- system is highly configurable via command line options and embedded
- commands.")
- (license license:lgpl2.1+)))
- (define-public python2-element-tree
- (package
- (name "python2-element-tree")
- (version "1.2.6")
- (source (origin
- (method url-fetch)
- (uri (string-append
- "http://effbot.org/media/downloads/elementtree-"
- version "-20050316.tar.gz"))
- (sha256
- (base32
- "016bphqnlg0l4vslahhw4r0aanw95bpypy65r1i1acyb2wj5z7dj"))))
- (build-system python-build-system)
- (arguments
- `(#:python ,python-2 ; seems to be part of Python 3
- #:tests? #f)) ; no 'test' sub-command
- (synopsis "Toolkit for XML processing in Python")
- (description
- "ElementTree is a Python library supporting lightweight XML processing.")
- (home-page "https://effbot.org/zone/element-index.htm")
- (license (license:x11-style
- "http://docs.python.org/2/license.html"
- "Like \"CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2\"."))))
- (define-public python2-pybugz
- (package
- (name "python2-pybugz")
- (version "0.6.11")
- (source (origin
- (method url-fetch)
- (uri (string-append
- "http://bits.liquidx.net/projects/pybugz/pybugz-"
- version ".tar.gz"))
- (sha256
- (base32
- "17ni00p08gp5lkxlrrcnvi3x09fmajnlbz4da03qcgl9q21ym4jd"))
- (patches (search-patches "pybugz-stty.patch"
- "pybugz-encode-error.patch"))))
- (build-system python-build-system)
- (arguments
- `(#:python ,python-2 ; SyntaxError with Python 3
- #:tests? #f)) ; no 'test' sub-command
- (propagated-inputs
- `(("element-tree" ,python2-element-tree)))
- (synopsis "Python and command-line interface to Bugzilla")
- (description
- "PyBugz is a Python library and command-line tool to query the Bugzilla
- bug tracking system. It is meant as an aid to speed up interaction with the
- bug tracker.")
- (home-page "http://www.liquidx.net/pybugz/")
- (license license:gpl2)))
- (define-public python2-enum
- (package
- (name "python2-enum")
- (version "0.4.6")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "enum" version))
- (sha256
- (base32
- "13lk3yrwj42vl30kw3c194f739nrfrdg64s6i0v2p636n4k8brsl"))))
- (build-system python-build-system)
- (arguments
- `(#:python ,python-2))
- (home-page "https://pypi.org/project/enum/")
- (synopsis "Robust enumerated type support in Python")
- (description
- "This provides a module for robust enumerations in Python. It has
- been superseded by the Python standard library and is provided only for
- compatibility.")
- ;; Choice of either license.
- (license (list license:gpl3+ license:psfl))))
- (define-public python-enum34
- (package
- (name "python-enum34")
- (version "1.1.6")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "enum34" version))
- (sha256
- (base32
- "1cgm5ng2gcfrkrm3hc22brl6chdmv67b9zvva9sfs7gn7dwc9n4a"))))
- (build-system python-build-system)
- (home-page "https://pypi.org/project/enum34/")
- (synopsis "Backported Python 3.4 Enum")
- (description
- "Enum34 is the new Python stdlib enum module available in Python 3.4
- backported for previous versions of Python from 2.4 to 3.3.")
- (license license:bsd-3)))
- (define-public python2-enum34
- (package-with-python2 python-enum34))
- (define-public python-parse-type
- (package
- (name "python-parse-type")
- (version "0.5.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "parse_type" version))
- (sha256
- (base32
- "02wclgiqky06y36b3q07b7ngpks5j0gmgl6n71ac2j2hscc0nsbz"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-six python-parse))
- (native-inputs
- ;; Use setuptools < 58 to work around
- ;; https://github.com/jenisys/parse_type/issues/17
- (list python-pytest python-pytest-runner python-setuptools))
- (home-page "https://github.com/jenisys/parse_type")
- (synopsis "Extended parse module")
- (description
- "Parse_type extends the python parse module.")
- (properties
- `((python2-variant . ,(delay python2-parse-type))))
- (license license:bsd-3)))
- (define-public python2-parse-type
- (let ((base (package-with-python2
- (strip-python2-variant python-parse-type))))
- (package/inherit base
- (propagated-inputs
- `(("python2-enum34" ,python2-enum34)
- ,@(package-propagated-inputs base))))))
- (define-public python-parse
- (package
- (name "python-parse")
- (version "1.18.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "parse" version))
- (sha256
- (base32
- "19063x4xdjpaf7rfxai6jpgm2k4yvkq7wha8aa8cagbjsqr60rli"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _ (invoke "python" "test_parse.py"))))))
- (home-page "https://github.com/r1chardj0n3s/parse")
- (synopsis "Parse strings")
- (description
- "Parse strings using a specification based on the Python @code{format()}
- syntax.")
- (license license:x11)))
- (define-public python-polib
- (package
- (name "python-polib")
- (version "1.1.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "polib" version))
- (sha256
- (base32
- "0aikb8gcarhifn3sadrbbs5czagih9hjv250gsrgy9v1d49pvn7s"))))
- (build-system python-build-system)
- (home-page "https://bitbucket.org/izi/polib/wiki/Home")
- (synopsis "Manipulate, create and modify gettext files")
- (description "Polib can manipulate any gettext format (po, pot and mo)
- files. It can be used to create po files from scratch or to modify
- existing ones.")
- (license license:expat)))
- (define-public python2-polib
- (let ((base (package-with-python2 (strip-python2-variant python-polib))))
- (package/inherit base
- (arguments `(,@(package-arguments base)
- ;; Tests don't work with python2.
- #:tests? #f)))))
- (define-public python-polling2
- (package
- (name "python-polling2")
- (version "0.5.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "polling2" version))
- (sha256
- (base32 "0hp3238fv6k1qk43gv4jwnv1mwlkmx33akbj560b9nvsry1dmdwh"))))
- (build-system python-build-system)
- (arguments '(#:tests? #false)) ; no tests included
- (native-inputs
- (list python-mock python-pytest python-pytest-runner))
- (home-page "https://github.com/ddmee/polling2")
- (synopsis "Polling utility with many configurable options")
- (description "Polling2 is a utility used to wait for a function to return
- a certain expected condition.")
- (license license:expat)))
- (define-public python-poyo
- (package
- (name "python-poyo")
- (version "0.5.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "poyo" version))
- (sha256
- (base32
- "1pflivs6j22frz0v3dqxnvc8yb8fb52g11lqr88z0i8cg2m5csg2"))))
- (build-system python-build-system)
- (home-page "https://github.com/hackebrot/poyo")
- (synopsis "Lightweight YAML Parser for Python")
- (description
- "This package provides a lightweight YAML Parser for Python. It supports
- only a chosen subset of the YAML format that is required to parse cookiecutter
- user configuration files. It does not have support for serializing into YAML
- and is not compatible with JSON.")
- (license license:expat)))
- (define-public scons
- (package
- (name "scons")
- (version "3.0.4")
- (source (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/SCons/scons")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "1xy8jrwz87y589ihcld4hv7wn122sjbz914xn8h50ww77wbhk8hn"))))
- (build-system python-build-system)
- (arguments
- `(#:use-setuptools? #f ; still relies on distutils
- #:tests? #f ; no 'python setup.py test' command
- #:phases
- (modify-phases %standard-phases
- (add-before 'build 'bootstrap
- (lambda _
- (substitute* "src/engine/SCons/compat/__init__.py"
- (("sys.modules\\[new\\] = imp.load_module\\(old, \\*imp.find_module\\(old\\)\\)")
- "sys.modules[new] = __import__(old)"))
- (substitute* "src/engine/SCons/Platform/__init__.py"
- (("mod = imp.load_module\\(full_name, file, path, desc\\)")
- "mod = __import__(full_name)"))
- (invoke "python" "bootstrap.py" "build/scons" "DEVELOPER=guix")
- (chdir "build/scons")
- #t)))))
- (home-page "https://scons.org/")
- (synopsis "Software construction tool written in Python")
- (description
- "SCons is a software construction tool. Think of SCons as an improved,
- cross-platform substitute for the classic Make utility with integrated
- functionality similar to autoconf/automake and compiler caches such as ccache.
- In short, SCons is an easier, more reliable and faster way to build
- software.")
- (license license:x11)))
- (define-public scons-python2
- (package
- (inherit (package-with-python2 scons))
- (name "scons-python2")))
- (define-public python-extension-helpers
- (package
- (name "python-extension-helpers")
- (version "0.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "extension-helpers" version))
- (sha256
- (base32 "10iqjzmya2h4sk765dlm1pbqypwlqyh8rw59a5m9i63d3klnz2mc"))))
- (build-system python-build-system)
- (native-inputs
- (list python-coverage python-pytest-astropy python-pytest-cov
- python-setuptools-scm))
- (home-page "https://github.com/astropy/astropy-helpers")
- (synopsis
- "Utilities for building and installing packages in the Astropy ecosystem")
- (description
- "The extension-helpers package includes many build, installation, and
- documentation-related tools used by the Astropy project.")
- (license license:bsd-3)))
- (define-public python-extras
- (package
- (name "python-extras")
- (version "1.0.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "extras" version))
- (sha256
- (base32
- "0khvm08rcwm62wc47j8niyl6h13f8w51c8669ifivjdr23g3cbhk"))))
- (build-system python-build-system)
- (arguments
- ;; FIXME: Circular dependency on testtools.
- '(#:tests? #f))
- (home-page "https://github.com/testing-cabal/extras")
- (synopsis "Useful extensions to the Python standard library")
- (description
- "Extras is a set of extensions to the Python standard library.")
- (license license:expat)))
- (define-public python2-extras
- (package-with-python2 python-extras))
- (define-public python-mimeparse
- (package
- (name "python-mimeparse")
- (version "1.6.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "python-mimeparse" version))
- (sha256
- (base32
- "0y2g6cl660bpz11srgqyvvm8gmywpgyx8g0xfvbiyr0af0yv1r3n"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "./mimeparse_test.py"))))))
- (home-page
- "https://github.com/dbtsai/python-mimeparse")
- (synopsis "Python library for parsing MIME types")
- (description
- "Mimeparse provides basic functions for parsing MIME type names and
- matching them against a list of media-ranges.")
- (license license:expat)))
- (define-public python2-mimeparse
- (package-with-python2 python-mimeparse))
- (define-public python-miniboa
- (package
- (name "python-miniboa")
- (version "1.0.8")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "miniboa" version))
- (sha256
- (base32
- "002c1aki9hsrwj5plrwdrf3sk8rn95fqylqyjx2arrjfpsih4dgs"))))
- (build-system python-build-system)
- (home-page "https://github.com/shmup/miniboa")
- (synopsis "Simple, single-threaded Telnet server")
- (description
- "Miniboa is a simple, asynchronous, single-threaded, poll-based Telnet
- server.")
- (license license:asl2.0)))
- (define-public python2-miniboa
- (package-with-python2 python-miniboa))
- (define-public python-pafy
- (package
- (name "python-pafy")
- (version "0.5.3.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pafy" version))
- (sha256
- (base32
- "1a7dxi95m1043rxx1r5x3ngb66nwlq6aqcasyqqjzmmmjps4zrim"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f)) ; Currently pafy can not find itself in the tests
- (propagated-inputs
- ;; Youtube-dl is a python package which is imported in the file
- ;; "backend_youtube_dl.py", therefore it needs to be propagated.
- (list youtube-dl))
- (home-page "https://np1.github.io/pafy/")
- (synopsis "Retrieve YouTube content and metadata")
- (description
- "@code{pafy} is a python library to retrieve YouTube content and metadata.")
- (license license:lgpl3+)))
- (define-public python-miniupnpc
- (package
- (name "python-miniupnpc")
- (version "2.2.3")
- (source
- (origin
- (method git-fetch)
- (uri
- (git-reference
- (url "https://github.com/miniupnp/miniupnp")
- (commit
- (string-append
- "miniupnpc_" (string-replace-substring version "." "_")))))
- (file-name
- (git-file-name name version))
- (sha256
- (base32 "03q1rlzvfzm15g1bfw2zqzavlsyaypnaf2k3cz6ha7k5rirkdy0l"))))
- (build-system python-build-system)
- (arguments
- (list
- #:phases
- #~(modify-phases %standard-phases
- (add-after 'unpack 'subdir
- (lambda* (#:key inputs #:allow-other-keys)
- (chdir "miniupnpc")
- (setenv "CC" #$(cc-for-target))
- (substitute* "Makefile"
- (("/bin/sh") (search-input-file inputs "/bin/sh"))))))))
- (inputs (list python)) ;we are building a Python extension
- (synopsis "UPnP client for Python")
- (description "Miniupnpc is a client library for Python programs to set up
- port forwards using @acronym{UPnP, Universal Plug and Play}.")
- (home-page "http://miniupnp.free.fr")
- (license license:bsd-3)))
- (define-public python2-funcsigs
- (package
- (name "python2-funcsigs")
- (version "1.0.2")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "funcsigs" version))
- (sha256
- (base32
- "0l4g5818ffyfmfs1a924811azhjj8ax9xd1cffr1mzd3ycn0zfx7"))))
- (build-system python-build-system)
- (arguments
- `(#:python ,python-2))
- (native-inputs
- (list python2-unittest2))
- (home-page "http://funcsigs.readthedocs.org")
- (synopsis "Python function signatures from PEP362")
- (description
- "Backport of @code{funcsigs} which was introduced in Python 3.3.")
- (license license:asl2.0)))
- (define-public python2-funcsigs-bootstrap
- (package
- (inherit python2-funcsigs)
- (name "python2-funcsigs-bootstrap")
- (native-inputs `())
- (arguments
- `(#:tests? #f
- ,@(package-arguments python2-funcsigs)))))
- (define-public python-py
- (package
- (name "python-py")
- (version "1.10.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "py" version))
- (sha256
- (base32
- "1lqvkqk3b440g9z82gqbzlzas84wrm6ir8kplzhzavmn2pd1pf11"))))
- (build-system python-build-system)
- (arguments
- ;; FIXME: "ImportError: 'test' module incorrectly imported from
- ;; '/gnu/store/...-python-pytest-mimimal-3.0.5/lib/python3.5/site-packages'.
- ;; Expected '/tmp/guix-build-python-py-1.4.31.drv-0/py-1.4.31/py'.
- ;; Is this module globally installed?"
- '(#:tests? #f))
- (native-inputs
- (list python-setuptools-scm))
- (home-page "https://github.com/pytest-dev/py")
- (synopsis "Python library for parsing, I/O, instrospection, and logging")
- (description
- "Py is a Python library for file name parsing, .ini file parsing, I/O,
- code introspection, and logging.")
- (license license:expat)))
- (define-public python2-py
- (package-with-python2 python-py))
- ;; Recent versions of python-fixtures and python-testrepository need
- ;; python-pbr for packaging, which itself needs these two packages for
- ;; testing.
- ;; To fix this circular dependency, we use a build of python-pbr, based on the
- ;; same source, just without any test dependencies and with tests disabled.
- ;; python-pbr-minmal is then used to package python-fixtures and
- ;; python-testrepository.
- ;; Strictly speaking we currently could remove the test-requirements from the
- ;; normal python-pbr package (and save this package) since test are disabled
- ;; there anyway. But this may change in future.
- (define-public python-pbr-minimal
- (package
- (name "python-pbr-minimal")
- (version "5.5.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pbr" version))
- (sha256
- (base32
- "1j8k5d4rdhy5bw5ai1vkjzln2albah94in3vvyvxa0n42fv81baz"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f))
- (home-page "https://docs.openstack.org/pbr/latest/")
- (synopsis "Minimal build of python-pbr used for bootstrapping")
- (description
- "Used only for bootstrapping python2-pbr, you should not need this.")
- (license license:asl2.0)))
- (define-public python-pbr
- (package
- (inherit python-pbr-minimal)
- (name "python-pbr")
- (arguments
- `(#:tests? #f)) ;; Most tests seem to use the Internet.
- (propagated-inputs
- (list git)) ;; pbr actually uses the "git" binary.
- (native-inputs
- `(("python-fixtures" ,python-fixtures-bootstrap)
- ;; discover, coverage, hacking, subunit
- ("python-mock" ,python-mock)
- ("python-six" ,python-six)
- ("python-sphinx" ,python-sphinx)
- ("python-testrepository" ,python-testrepository-bootstrap)
- ("python-testresources" ,python-testresources-bootstrap)
- ("python-testscenarios" ,python-testscenarios-bootstrap)
- ("python-testtools" ,python-testtools-bootstrap)
- ("python-virtualenv" ,python-virtualenv)))
- (synopsis "Enhance the default behavior of Python’s setuptools")
- (description
- "Python Build Reasonableness (PBR) is a library that injects some useful
- and sensible default behaviors into your setuptools run. It will set
- versions, process requirements files and generate AUTHORS and ChangeLog file
- from git information.
- ")))
- (define-public python-pyrsistent
- (package
- (name "python-pyrsistent")
- (version "0.16.0")
- (home-page "https://github.com/tobgu/pyrsistent")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "pyrsistent" version))
- (sha256
- (base32
- "1lrsjgblnapfimd0alsi1as5nz2lfqv97131l7d6anbjzq2rjri8"))))
- (build-system python-build-system)
- (arguments
- '(#:phases (modify-phases %standard-phases
- ;; The package works fine with newer Pytest and Hypothesis, but
- ;; has pinned older versions to stay compatible with Python 2.
- (add-before 'check 'loosen-pytest-requirement
- (lambda _
- (substitute* "setup.py"
- (("pytest<5") "pytest")
- (("hypothesis<5") "hypothesis"))
- #t)))))
- (native-inputs
- (list python-hypothesis python-pytest python-pytest-runner))
- (propagated-inputs
- (list python-six))
- (synopsis "Persistent data structures for Python")
- (description
- "Pyrsistent is a number of persistent collections (by some referred to as
- functional data structures). Persistent in the sense that they are immutable.
- All methods on a data structure that would normally mutate it instead return a
- new copy of the structure containing the requested updates. The original
- structure is left untouched.")
- (license license:expat)))
- (define-public python2-pyrsistent
- (package-with-python2 python-pyrsistent))
- (define-public python-exif-read
- (package
- (name "python-exif-read")
- (version "2.1.2")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "ExifRead" version))
- (sha256
- (base32
- "1b90jf6m9vxh9nanhpyvqdq7hmfx5iggw1l8kq10jrs6xgr49qkr"))))
- (build-system python-build-system)
- (arguments `(#:tests? #f)) ; no tests
- (home-page "https://github.com/ianare/exif-py")
- (synopsis "Python library to extract EXIF data from image files")
- (description
- "ExifRead is a Python library to extract EXIF data from tiff and jpeg
- files.")
- (license license:bsd-3)))
- (define-public python2-exif-read
- (package-with-python2 python-exif-read))
- (define-public python-pyld
- (package
- (name "python-pyld")
- (version "1.0.5")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "PyLD" version))
- (sha256
- (base32
- "1ywbdbsrkg533qh8xn9ifjh2mvam6v5msrjyqq73jfpvcp89qvff"))))
- (build-system python-build-system)
- (home-page "https://github.com/digitalbazaar/pyld")
- (synopsis "Python implementation of the JSON-LD specification")
- (description
- "PyLD is an implementation of the JSON-LD specification.")
- (license license:bsd-3)))
- (define-public python2-pyld
- (package-with-python2 python-pyld))
- (define-public python-cli-helpers
- (package
- (name "python-cli-helpers")
- (version "2.0.1")
- (source
- (origin
- ;; There's no source tarball on PyPI.
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/dbcli/cli_helpers")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "1bg2iw9l5dip0kbs00hajdk2v18wvhssbnq8hdf71278qf0wks5l"))))
- (build-system python-build-system)
- (native-inputs
- (list python-pytest))
- (propagated-inputs
- (list python-wcwidth python-configobj python-tabulate
- python-terminaltables))
- (home-page "https://github.com/dbcli/cli_helpers")
- (synopsis "Helpers for building command-line apps")
- (description
- "CLI Helpers is a Python package that makes it easy to perform common
- tasks when building command-line apps. It's a helper library for command-line
- interfaces.")
- (license license:bsd-3)))
- (define-public python-click
- (package
- (name "python-click")
- (version "7.1.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "click" version))
- (sha256
- (base32
- "06kbzd6sjfkqan3miwj9wqyddfxc2b6hi7p5s4dvqjb3gif2bdfj"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'fix-paths
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((glibc (assoc-ref inputs ,(if (%current-target-system)
- "cross-libc" "libc"))))
- (substitute* "src/click/_unicodefun.py"
- (("'locale'")
- (string-append "'" glibc "/bin/locale'"))))))
- (replace 'check
- (lambda _
- (invoke "python" "-m" "pytest"))))))
- (native-inputs
- (list python-pytest))
- (home-page "https://palletsprojects.com/p/click/")
- (synopsis "Command line library for Python")
- (description
- "Click is a Python package for creating command line interfaces in a
- composable way with as little code as necessary. Its name stands for
- \"Command Line Interface Creation Kit\". It's highly configurable but comes
- with sensible defaults out of the box.")
- (license license:bsd-3)))
- (define-public python2-click
- (package-with-python2 python-click))
- (define-public python-click-5
- (package (inherit python-click)
- (name "python-click")
- (version "5.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "click" version))
- (sha256
- (base32 "0njsm0wn31l21bi118g5825ma5sa3rwn7v2x4wjd7yiiahkri337"))))
- (arguments `())))
- (define-public python-cligj
- (package
- (name "python-cligj")
- (version "0.7.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "cligj" version))
- (sha256
- (base32
- "09vbkik6kyn6yrqzl2r74vaybjk8kjykvi975hy3fsrm4gb17g54"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-click))
- (native-inputs
- (list python-pytest-cov))
- (home-page "https://github.com/mapbox/cligj")
- (synopsis "Click params for command line interfaces to GeoJSON")
- (description
- "cligj is for Python developers who create command line interfaces
- for geospatial data. cligj allows you to quickly build consistent,
- well-tested and interoperable CLIs for handling GeoJSON.")
- (license license:bsd-3)))
- (define-public python-vcversioner
- (package
- (name "python-vcversioner")
- (version "2.16.0.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "vcversioner" version))
- (sha256
- (base32
- "16z10sm78jd7ca3jbkgc3q5i8a8q7y1h21q1li21yy3rlhbhrrns"))))
- (build-system python-build-system)
- (synopsis "Python library for version number discovery")
- (description "Vcversioner is a Python library that inspects tagging
- information in a variety of version control systems in order to discover
- version numbers.")
- (home-page "https://github.com/habnabit/vcversioner")
- (license license:isc)))
- (define-public python2-vcversioner
- (package-with-python2 python-vcversioner))
- (define-public python-jdcal
- (package
- (name "python-jdcal")
- (version "1.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "jdcal" version))
- (sha256
- (base32
- "1ja6j2xq97bsl6rv09mhdx7n0xnrsfx0mj5xqza0mxghqmkm02pa"))))
- (build-system python-build-system)
- (arguments
- `(#:phases (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "pytest"))))))
- (native-inputs
- (list python-pytest))
- (home-page "https://github.com/phn/jdcal")
- (synopsis "Functions to convert between Julian dates Gregorian dates")
- (description "This Python library provides functions for converting
- between Julian dates and Gregorian dates.")
- (license license:bsd-2)))
- (define-public python2-jdcal
- (package-with-python2 python-jdcal))
- (define-public python-jsondiff
- (package
- (name "python-jsondiff")
- (version "1.2.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "jsondiff" version))
- (sha256
- (base32
- "00v3689175aqzdscrxpffm712ylp8jvcpqdg51ca22ni6721p51l"))))
- (build-system python-build-system)
- (native-inputs
- (list python-nose python-nose-random))
- (home-page
- "https://github.com/fzumstein/jsondiff")
- (synopsis "Compare JSON and JSON-like structures in Python")
- (description "@code{jsondiff} is a Python library which lets you
- compare, diff, and patch JSON and JSON-like structures in Python.")
- (license license:expat)))
- (define-public python-jsonschema
- (package
- (name "python-jsonschema")
- (version "3.2.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "jsonschema" version))
- (sha256
- (base32
- "0ykr61yiiizgvm3bzipa3l73rvj49wmrybbfwhvpgk3pscl5pa68"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key inputs outputs tests? #:allow-other-keys)
- (when tests?
- (setenv "JSON_SCHEMA_TEST_SUITE" "json")
- (invoke "trial" "jsonschema")))))))
- (native-inputs
- `(("python-setuptools_scm" ,python-setuptools-scm)
- ("python-twisted" ,python-twisted)))
- (propagated-inputs
- (list python-attrs python-pyrsistent python-six))
- (home-page "https://github.com/Julian/jsonschema")
- (synopsis "Implementation of JSON Schema for Python")
- (description
- "Jsonschema is an implementation of JSON Schema for Python.")
- (license license:expat)))
- (define-public python-schema
- (package
- (name "python-schema")
- (version "0.6.6")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "schema" version))
- (sha256
- (base32
- "1lw28j9w9vxyigg7vkfkvi6ic9lgjkdnfvnxdr7pklslqvzmk2vm"))))
- (build-system python-build-system)
- (native-inputs
- (list python-pytest))
- (home-page "https://github.com/keleshev/schema")
- (synopsis "Simple data validation library")
- (description
- "@code{python-schema} is a library for validating Python data
- structures, such as those obtained from config-files, forms, external
- services or command-line parsing, converted from JSON/YAML (or
- something else) to Python data-types.")
- (license license:psfl)))
- (define-public python2-schema
- (package-with-python2 python-schema))
- (define-public python-schema-0.5
- (package (inherit python-schema)
- (version "0.5.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "schema" version))
- (sha256
- (base32
- "10zqvpaky51kgb8nd42bk7jwl8cn2zvayxjpdc1wwmpybj92x67s"))))))
- (define-public python2-schema-0.5
- (package-with-python2 python-schema-0.5))
- (define-public python-kitchen
- (package
- (name "python-kitchen")
- (version "1.2.5")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "kitchen" version))
- (sha256
- (base32
- "1zakh6l0yjvwic9p0nkvmbidpnkygkxbigh2skmb5gccyrhbp7xg"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-chardet))
- (home-page "https://github.com/fedora-infra/kitchen")
- (synopsis "Python API for snippets")
- (description "@code{kitchen} module provides a python API for all sorts of
- little useful snippets of code that everybody ends up writing for their projects
- but never seem big enough to build an independent release. Use kitchen and stop
- cutting and pasting that code over and over.")
- (license (list license:lgpl2.1+
- ;; subprocess.py, test_subprocess.py,
- ;; kitchen/pycompat25/defaultdict.py:
- license:psfl))))
- (define-public python2-kitchen
- (package-with-python2 python-kitchen))
- (define-public python-roman
- (package
- (name "python-roman")
- (version "3.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "roman" version))
- (sha256
- (base32
- "0gyp2bmw47jgpm8j64gydzqq838bgxz5gh6cm57lxlr7p26sqiic"))))
- (build-system python-build-system)
- (home-page "https://github.com/zopefoundation/roman")
- (synopsis "Integer to Roman numerals converter")
- (description
- "This package provides a small helper library to convert Arabic Numbers
- to Roman Numerals.")
- (license license:psfl)))
- (define-public python-unidecode
- (package
- (name "python-unidecode")
- (version "1.1.1")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "Unidecode" version))
- (sha256
- (base32
- "1s6cp2lv4m0f00hjckjz8p6m7d3n3v16jvg353llf5ia1iqsnsib"))))
- (build-system python-build-system)
- (home-page "https://pypi.org/project/Unidecode/")
- (synopsis "ASCII transliterations of Unicode text")
- (description
- "Unidecode provides ASCII transliterations of Unicode text. Unidecode is
- useful when integrating with legacy code that doesn't support Unicode, or for
- ease of entry of non-Roman names on a US keyboard, or when constructing ASCII
- machine identifiers from human-readable Unicode strings that should still be
- somewhat intelligible.")
- (license license:gpl2+)))
- (define-public python2-unidecode
- (package-with-python2 python-unidecode))
- (define-public python-text-unidecode
- (package
- (name "python-text-unidecode")
- (version "1.3")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "text-unidecode" version))
- (sha256
- (base32
- "14xb99fdv52j21dsljgsbmbaqv10ps4b453p229r29sdn4xn1mms"))))
- (build-system python-build-system)
- (arguments
- '(#:phases (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "pytest" "-vv"))))))
- (native-inputs
- (list python-pytest))
- (home-page "https://github.com/kmike/text-unidecode/")
- (synopsis "Decode Unicode data")
- (description
- "@code{text-unidecode} is a basic Python port of the @code{Text::Unidecode}
- Perl library. It can create ASCII representations of Unicode data. In general
- users should prefer the @code{python-unidecode} package which offers better
- memory usage and transliteration quality.")
- ;; The user can choose either license.
- (license (list license:clarified-artistic license:gpl2+))))
- (define-public python2-text-unidecode
- (package-with-python2 python-text-unidecode))
- (define-public python-pyjwt
- (package
- (name "python-pyjwt")
- (version "1.7.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "PyJWT" version))
- (sha256
- (base32
- "15hflax5qkw1v6nssk1r0wkj83jgghskcmn875m3wgvpzdvajncd"))
- (modules '((guix build utils)))
- (snippet
- '(begin
- (for-each delete-file-recursively
- (find-files "." "\\.pyc$"))
- #t))))
- (build-system python-build-system)
- (arguments
- '(#:phases (modify-phases %standard-phases
- (replace 'check
- (lambda _
- ;; Mimic upstream commit 3a20892442b34c7 to get
- ;; rid of dependency on pytest-runner < 5.0.
- ;; Remove substitution for PyJWT > 1.7.1.
- (substitute* "setup.py"
- ((".*pytest-runner.*")
- ""))
- (invoke "pytest" "-vv"))))))
- (native-inputs
- (list python-pytest python-pytest-cov))
- (home-page "https://github.com/progrium/pyjwt")
- (synopsis "JSON Web Token implementation in Python")
- (description
- "PyJWT is a JSON Web Token implementation written in Python.")
- (license license:expat)))
- (define-public python2-pyjwt
- (package-with-python2 python-pyjwt))
- (define-public python-pymsgbox
- (package
- (name "python-pymsgbox")
- (version "1.0.6")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- ;; LICENSE.txt is not present on pypi
- (url "https://github.com/asweigart/PyMsgBox")
- (commit "55926b55f46caa969c5ddb87990ebea2737bd66f")))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0zy7rjfpwlrd8b64j7jk2lb8m2npc21rnpwakpfvwgl4nxdy80rg"))))
- (arguments
- ;; Circular dependency to run tests:
- ;; Tests need pyautogui, which depends on pymsgbox.
- '(#:tests? #f))
- (build-system python-build-system)
- (home-page "https://github.com/asweigart/PyMsgBox")
- (synopsis "Python module for JavaScript-like message boxes")
- (description
- "PyMsgBox is a simple, cross-platform, pure Python module for
- JavaScript-like message boxes. Types of dialog boxes include:
- @enumerate
- @item alert
- @item confirm
- @item prompt
- @item password
- @end enumerate
- ")
- (license license:bsd-3)))
- (define-public python-pympler
- (package
- (name "python-pympler")
- (home-page "https://pythonhosted.org/Pympler/")
- (version "0.9")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "Pympler" version))
- (sha256
- (base32
- "0ivfw2k86nbw9ck9swidl4422w7bhjldxwj90a4sy5r1cbgygjzj"))))
- (build-system python-build-system)
- (arguments
- `(#:phases (modify-phases %standard-phases
- (delete 'check)
- (add-after 'install 'check
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (add-installed-pythonpath inputs outputs)
- (invoke "python" "setup.py" "test"))))))
- (synopsis "Measure, monitor and analyze memory behavior")
- (description
- "Pympler is a development tool to measure, monitor and analyze
- the memory behavior of Python objects in a running Python application.
- By pympling a Python application, detailed insight in the size and the
- lifetime of Python objects can be obtained. Undesirable or unexpected
- runtime behavior like memory bloat and other @samp{pymples} can easily
- be identified.
- A web profiling frontend exposes process statistics, garbage
- visualisation and class tracker statistics.")
- (license license:asl2.0)))
- (define-public python2-pympler
- (package-with-python2 python-pympler))
- (define-public python-itsdangerous
- (package
- (name "python-itsdangerous")
- (version "2.0.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "itsdangerous" version))
- (sha256
- (base32
- "1w6gfb2zhbcmrfj6digwzw1z68w6zg1q87rm6la2m412zil4swly"))))
- (build-system python-build-system)
- (home-page "https://palletsprojects.com/p/itsdangerous/")
- (synopsis "Python library for passing data to/from untrusted environments")
- (description
- "Itsdangerous provides various helpers to pass trusted data to untrusted
- environments and back.")
- (license license:bsd-3)))
- (define-public python-pyyaml
- (package
- (name "python-pyyaml")
- (version "5.4.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "PyYAML" version))
- (sha256
- (base32
- "0pm440pmpvgv5rbbnm8hk4qga5a292kvlm1bh3x2nwr8pb5p8xv0"))))
- (build-system python-build-system)
- (inputs
- (list libyaml python-cython))
- (home-page "https://pyyaml.org")
- (synopsis "YAML parser and emitter for Python")
- (description
- "PyYAML is a YAML parser and emitter for Python. PyYAML features a
- complete YAML 1.1 parser, Unicode support, pickle support, capable extension
- API, and sensible error messages. PyYAML supports standard YAML tags and
- provides Python-specific tags that represent an arbitrary Python object.")
- (license license:expat)))
- (define-public python2-pyyaml
- (package-with-python2 python-pyyaml))
- (define-public python-vine
- (package
- (name "python-vine")
- (version "5.0.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "vine" version))
- (sha256
- (base32 "0zk3pm0g7s4qfn0gk28lfmsyplvisaxi6826cgpq5njkm4j1cfvx"))))
- (build-system python-build-system)
- (native-inputs
- (list python-pytest python-case))
- (home-page "https://github.com/celery/vine")
- (synopsis "Promises for Python")
- (description
- "@code{vine} provides a special implementation of promises in that it can
- be used both for \"promise of a value\" and lazy evaluation. The biggest
- upside for this is that everything in a promise can also be a promise,
- e.g. filters, callbacks and errbacks can all be promises.")
- (license license:bsd-3)))
- (define-public python-virtualenv
- (package
- (name "python-virtualenv")
- (version "20.3.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "virtualenv" version))
- (sha256
- (base32
- "1nbhnpzswcf3lmzn5xabmfdd7ki8r2w2i37y6wml54di6qi1l48c"))))
- (build-system python-build-system)
- (native-inputs
- (list python-mock python-pytest python-setuptools-scm))
- (propagated-inputs
- (list python-appdirs python-distlib python-filelock python-six))
- (home-page "https://virtualenv.pypa.io/")
- (synopsis "Virtual Python environment builder")
- (description
- "Virtualenv is a tool to create isolated Python environments.")
- (license license:expat)))
- (define-public python2-virtualenv
- (let ((base (package-with-python2 (strip-python2-variant python-virtualenv))))
- (package
- (inherit base)
- (propagated-inputs
- (modify-inputs (package-propagated-inputs base)
- (prepend python2-contextlib2))))))
- (define-public python-markupsafe
- (package
- (name "python-markupsafe")
- (version "2.0.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "MarkupSafe" version))
- (sha256
- (base32
- "02k2ynmqvvd0z0gakkf8s4idyb606r7zgga41jrkhqmigy06fk2r"))))
- (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
- (list python-pytest))
- (home-page "https://github.com/mitsuhiko/markupsafe")
- (synopsis "XML/HTML/XHTML markup safe string implementation for Python")
- (description
- "Markupsafe provides an XML/HTML/XHTML markup safe string implementation
- for Python.")
- (license license:bsd-3)
- (properties `((python2-variant . ,(delay python2-markupsafe))))))
- ;; Version 1.1.1 is the last to support Python 2.
- (define-public python2-markupsafe
- (package
- (inherit (package-with-python2
- (strip-python2-variant python-markupsafe)))
- (version "1.1.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "MarkupSafe" version))
- (sha256
- (base32
- "0sqipg4fk7xbixqd8kq6rlkxj664d157bdwbh93farcphf92x1r9"))))))
- (define-public python-jinja2
- (package
- (name "python-jinja2")
- (version "3.0.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "Jinja2" version))
- (sha256
- (base32
- "197ms1wimxql650245v63wkv04n8bicj549wfhp51bx68x5lhgvh"))))
- (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~%")))))))
- (native-inputs
- (list python-pytest))
- (propagated-inputs
- (list python-markupsafe))
- (home-page "http://jinja.pocoo.org/")
- (synopsis "Python template engine")
- (description
- "Jinja2 is a small but fast and easy to use stand-alone template engine
- written in pure Python.")
- (license license:bsd-3)
- (properties `((python2-variant . ,(delay python2-jinja2))))))
- ;; Version 2.11.3 is the last to support Python 2.
- (define-public python2-jinja2
- (package
- (inherit (package-with-python2
- (strip-python2-variant python-jinja2)))
- (version "2.11.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "Jinja2" version))
- (sha256
- (base32
- "1iiklf3wns67y5lfcacxma5vxfpb7h2a67xbghs01s0avqrq9md6"))))))
- (define-public python-jinja2-time
- (package
- (name "python-jinja2-time")
- (version "0.2.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "jinja2-time" version))
- (sha256
- (base32
- "0h0dr7cfpjnjj8bgl2vk9063a53649pn37wnlkd8hxjy656slkni"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-arrow python-jinja2))
- (home-page
- "https://github.com/hackebrot/jinja2-time")
- (synopsis "Jinja2 Extension for Dates and Times")
- (description
- "This package provides an extension for the template engine Jinja2. It
- adds a 'now' tag providing a convenient access to the arrow.now() API from
- templates. A format string can be provided to control the output.")
- (license license:expat)))
- (define-public python-pystache
- (package
- (name "python-pystache")
- (version "0.6.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "pystache" version))
- (sha256
- (base32
- "03a73ppf5vxnsk6az5ackvc0hp6xqv2f4hi1s5c4nk4s2jr95gwk"))))
- (build-system python-build-system)
- (arguments
- '(#:tests? #f)) ; FIXME: Python 3 tests are failing.
- (home-page "http://defunkt.io/pystache/")
- (synopsis "Python logic-less template engine")
- (description
- "Pystache is a Python implementation of the framework agnostic,
- logic-free templating system Mustache.")
- (license license:expat)
- (properties `((python2-variant . ,(delay python2-pystache))))))
- (define-public python2-pystache
- (let ((base (package-with-python2
- (strip-python2-variant python-pystache))))
- (package/inherit base
- (arguments
- `(#:python ,python-2
- #:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "python" "test_pystache.py")))))))))
- (define-public python-pystitcher
- (package
- (name "python-pystitcher")
- (version "1.0.4")
- (source
- (origin
- (method git-fetch)
- (uri
- (git-reference
- (url "https://github.com/captn3m0/pystitcher")
- (commit
- (string-append "v" version))))
- (file-name
- (git-file-name name version))
- (sha256
- (base32 "03yrzqhcsjdj5zprrk3bh5bbyqfy3vfhxra9974vmkir3m121394"))))
- (build-system python-build-system)
- (inputs
- (list python-html5lib python-importlib-metadata python-markdown
- python-pypdf3 python-validators))
- (home-page "https://github.com/captn3m0/pystitcher")
- (synopsis "Declaratively stitch together a PDF file from multiple sources")
- (description
- "This package stitches your PDF files together, generating customizable
- bookmarks using a declarative input in the form of a markdown file.")
- (license license:expat)))
- (define-public python-joblib
- (package
- (name "python-joblib")
- (version "1.1.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "joblib" version))
- (sha256
- (base32
- "0d8ypyhsw1bjr96zan9ms8wbvnzbjqxniq4vcszghcrps7ngqn21"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (setenv "JOBLIB_MULTIPROCESSING" "0")
- (invoke "pytest" "-v" "joblib"
- ;; We disable this test to avoid having to depend on ipython/jupyter
- "-k" "not test_parallel_call_cached_function_defined_in_jupyter")))))))
- (native-inputs
- (list python-pytest))
- (home-page "https://joblib.readthedocs.io/")
- (synopsis "Using Python functions as pipeline jobs")
- (description
- "Joblib is a set of tools to provide lightweight pipelining in Python.
- In particular, joblib offers: transparent disk-caching of the output values
- and lazy re-evaluation (memoize pattern), easy simple parallel computing
- logging and tracing of the execution.")
- (license license:bsd-3)))
- ;; Newer versions of joblib don't support Python 2.
- (define-public python2-joblib
- (package
- (inherit (package-with-python2 python-joblib))
- (version "0.14.1")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "joblib" version))
- (sha256
- (base32
- "1j464w137w6s367gl697j1l63g52akydrxgv4czlck36ynjfwc06"))))))
- (define-public python-daemon
- (package
- (name "python-daemon")
- (version "2.3.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "python-daemon" version))
- (sha256
- (base32
- "1bxfn2bq56sd4w0nm9mqy8y0905m7fc8vmhnjxlrf49vcbqr7adx"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-before 'check 'adjust-tests
- (lambda _
- ;; Drop use of testtools.helpers.safe_hasattr which has
- ;; been removed in favor of hasattr.
- (substitute* "test/test_metadata.py"
- (("testtools\\.helpers\\.safe_hasattr")
- "hasattr"))
- ;; FIXME: Determine why test fails
- (substitute* "test/test_daemon.py"
- (("test_detaches_process_context")
- "skip_test_detaches_process_context")))))))
- (propagated-inputs
- (list python-lockfile))
- (native-inputs
- (list python-coverage
- python-unittest2
- python-testtools
- python-testscenarios
- python-twine
- python-mock
- python-docutils))
- (home-page "https://pagure.io/python-daemon/")
- (synopsis "Python library for making a Unix daemon process")
- (description "Python-daemon is a library that assists a Python program to
- turn itself into a well-behaved Unix daemon process, as specified in PEP 3143.
- This library provides a @code{DaemonContext} class that manages the following
- important tasks for becoming a daemon process:
- @enumerate
- @item Detach the process into its own process group.
- @item Set process environment appropriate for running inside a chroot.
- @item Renounce suid and sgid privileges.
- @item Close all open file descriptors.
- @item Change the working directory, uid, gid, and umask.
- @item Set appropriate signal handlers.
- @item Open new file descriptors for stdin, stdout, and stderr.
- @item Manage a specified PID lock file.
- @item Register cleanup functions for at-exit processing.
- @end enumerate")
- ;; Only setup.py is gpl3+, everything else is apache 2.0 licensed.
- (license (list license:asl2.0 license:gpl3+))))
- (define-public python-anytree
- (package
- (name "python-anytree")
- (version "2.8.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "anytree" version))
- (sha256
- (base32
- "1aycpc387wqz7h9w2p53qxn43qsh3m6by6ak4kkc66x9aprr63rz"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-six))
- (native-inputs
- (list ;; For tests.
- graphviz ;for 'dot'
- python-nose))
- (home-page "https://github.com/c0fec0de/anytree")
- (synopsis "Lightweight tree data library")
- (description
- "@code{anytree} is a simple, lightweight, and extensible tree data
- structure for Python.")
- (license license:asl2.0)))
- (define-public autokey
- (package
- (name "autokey")
- (version "0.95.10")
- (source (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/autokey/autokey")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0f0cqfnb49wwdy7zl2f2ypcnd5pc8r8n7z7ssxkq20d4xfxlgamr"))))
- (build-system python-build-system)
- (arguments
- (list
- ;; Tests are deprecated and broken until next version, see
- ;; https://github.com/autokey/autokey/issues/327
- #:tests? #f
- #:phases
- #~(modify-phases %standard-phases
- (add-after 'unpack 'fix-paths
- (lambda* (#:key inputs #:allow-other-keys)
- (substitute* "lib/autokey/scripting.py"
- (("\"wmctrl\"")
- (string-append "\"" (search-input-file inputs "bin/wmctrl") "\""))
- (("\"zenity\"")
- (string-append "\"" (search-input-file inputs "bin/zenity") "\"")))
- (substitute* "autokey-shell"
- (("'ipython3'")
- (string-append "'" (search-input-file inputs "bin/ipython3") "'"))
- (("'python3'")
- (string-append "'" (search-input-file inputs "bin/python3") "'")))))
- ;; Use 'prefix' instead of '=' to allow the user to use additional
- ;; GI paths from their autokey scripts. GUIX_PYTHONPATH is already
- ;; wrapped with prefix in python-build-system's wrap.
- (add-before 'wrap 'wrap-autokey-gi
- (lambda _
- (let ((gi-typelib-path (getenv "GI_TYPELIB_PATH")))
- (for-each
- (lambda (program)
- (wrap-program program
- `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))
- (map (lambda (name)
- (string-append #$output "/bin/" name))
- '("autokey-gtk"
- "autokey-shell")))))))))
- (inputs
- (list bash-minimal ; for wrap-program
- gtksourceview-3
- libappindicator
- libnotify
- python-dbus
- python-ipython
- python-pygobject
- python-pyinotify
- python-pyqt+qscintilla
- python-xlib
- wmctrl
- zenity))
- (home-page "https://github.com/autokey/autokey")
- (synopsis
- "Keyboard and GUI automation utility")
- (description
- "AutoKey is a desktop automation utility for X11. It allows the automation of
- virtually any task by responding to typed abbreviations and hotkeys. It
- offers a full-featured GUI (GTK and QT versions) that makes it highly
- accessible for novices, as well as a scripting interface offering the full
- flexibility and power of the Python language.")
- (license license:gpl3+)))
- (define-public python-docutils
- (package
- (name "python-docutils")
- (version "0.17.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "docutils" version))
- (sha256
- (base32
- "09gii36lp1bs26cpxqyfd20xahnpbrbjzcnba2xq08y3wk97frb8"))))
- (build-system python-build-system)
- (arguments
- '(#:phases (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (if tests?
- (invoke "python" "test/alltests.py")
- (format #t "test suite not run~%"))
- #t)))))
- (home-page "http://docutils.sourceforge.net/")
- (synopsis "Python Documentation Utilities")
- (description
- "Docutils is a modular system for processing documentation into useful
- formats, such as HTML, XML, and LaTeX. It uses @dfn{reStructuredText}, an
- easy to use markup language, for input.
- This package provides tools for converting @file{.rst} files to other formats
- via commands such as @command{rst2man}, as well as supporting Python code.")
- ;; Most of the source code is public domain, but some source files are
- ;; licensed under the PFSL, BSD 2-clause, and GPLv3+ licenses.
- (license (list license:public-domain license:psfl license:bsd-2 license:gpl3+))))
- (define-public python2-docutils
- (package-with-python2 python-docutils))
- ;; awscli refuses to be built with docutils < 0.16.
- (define-public python-docutils-0.15
- (package
- (inherit python-docutils)
- (version "0.15")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "docutils" version))
- (sha256
- (base32
- "0ja8q6mdj6xv62jjw3phv8j5nfqi5x8hnfy4pqfcjcgz4b34k8sl"))))
- ;; tests contain Python 2 syntax.
- (arguments '(#:tests? #false))))
- ;; python2-sphinx fails its test suite with newer versions.
- (define-public python2-docutils-0.14
- (package
- (inherit python2-docutils)
- (version "0.14")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "docutils" version))
- (sha256
- (base32
- "0x22fs3pdmr42kvz6c654756wja305qv6cx1zbhwlagvxgr4xrji"))))))
- (define-public python-restructuredtext-lint
- (package
- (name "python-restructuredtext-lint")
- (version "1.3.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "restructuredtext-lint" version))
- (sha256
- (base32
- "026rdy5h82ng4vqxk8fnprii9d6qxf7hkygiv0a8afjvdlsxmcwp"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (delete 'check)
- (add-after 'install 'check
- (lambda* (#:key inputs outputs tests? #:allow-other-keys)
- (when tests?
- (add-installed-pythonpath inputs outputs)
- (invoke "nosetests" "-v"))
- #t)))))
- (propagated-inputs
- (list python-docutils))
- (native-inputs
- (list python-nose))
- (home-page "https://github.com/twolfson/restructuredtext-lint")
- (synopsis "reStructuredText linter")
- (description "This package provides a linter for the reStructuredText
- format.")
- (license license:unlicense)))
- (define-public python-click-repl
- (package
- (name "python-click-repl")
- (version "0.2.0")
- (source
- (origin
- (method git-fetch) ; no tests in PyPI release
- (uri (git-reference
- (url "https://github.com/click-contrib/click-repl")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32 "16ybsnwlj2jlqcfxflky8jz7i3nhrd3f6mvkpgs95618l8lx994i"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key inputs outputs tests? #:allow-other-keys)
- (when tests?
- (add-installed-pythonpath inputs outputs)
- (invoke "python" "-m" "pytest")))))))
- (native-inputs
- (list python-pytest))
- (propagated-inputs
- (list python-click python-prompt-toolkit python-six))
- (home-page "https://github.com/untitaker/click-repl")
- (synopsis "REPL plugin for Click")
- (description "This package provides a REPL plugin for Click.")
- (license license:expat)))
- (define-public python-doc8
- (package
- (name "python-doc8")
- (version "0.8.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "doc8" version))
- (sha256
- (base32
- "0hw5w8mpgsp51qg8nnq28p7y1jiksvz7a0axnn5bkgss3af9zy1d"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (delete 'check)
- (add-after 'install 'check
- (lambda* (#:key inputs outputs tests? #:allow-other-keys)
- (when tests?
- (add-installed-pythonpath inputs outputs)
- (invoke "pytest" "-v"))
- #t)))))
- (propagated-inputs
- (list python-chardet python-docutils python-restructuredtext-lint
- python-six python-stevedore))
- (native-inputs
- (list python-testtools python-pytest))
- (home-page "https://launchpad.net/doc8")
- (synopsis
- "Style checker for Sphinx (or other) RST documentation")
- (description
- "Doc8 is an opinionated style checker for reStructured Text and plain
- text styles of documentation.")
- (license license:asl2.0)))
- (define-public python-pygments
- (package
- (name "python-pygments")
- (version "2.8.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "Pygments" version))
- (sha256
- (base32
- "153zyxigm879sk2n71lfv03y2pgxb7dl0dlsbwkz9aydxnkf2mi6"))))
- (build-system python-build-system)
- (arguments
- ;; FIXME: Tests require sphinx, which depends on this.
- '(#:tests? #f))
- (home-page "https://pygments.org/")
- (synopsis "Syntax highlighting")
- (description
- "Pygments is a syntax highlighting package written in Python.")
- (license license:bsd-2)
- (properties `((python2-variant . ,(delay python2-pygments))))))
- ;; Pygments 2.6 and later does not support Python 2.
- (define-public python2-pygments
- (let ((base (package-with-python2 (strip-python2-variant python-pygments))))
- (package
- (inherit base)
- (version "2.5.2")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "Pygments" version))
- (sha256
- (base32
- "1zmhnswy0wxfn0xprs9aqsvx2c3kmzfn2wx14q8cv3vpkxdamj4q")))))))
- (define-public python-pygments-github-lexers
- (package
- (name "python-pygments-github-lexers")
- (version "0.0.5")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pygments-github-lexers" version))
- (sha256
- (base32
- "0cz14clcc9z4pn79ll8hp3xzgsrfjscak5zfsvlgrz6ngkkmgjma"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-pygments))
- (home-page "https://github.com/liluo/pygments-github-lexers")
- (synopsis "Pygments Github custom lexers")
- (description "This package installs Github custom lexers to Pygments.")
- (license license:bsd-3)))
- (define-public python-bump2version
- (package
- (name "python-bump2version")
- (version "1.0.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "bump2version" version))
- (sha256
- (base32 "1rinm4gv1fyh7xjv3v6r1p3zh5kl4ry2qifz5f7frx31mnzv4b3n"))))
- (build-system python-build-system)
- (arguments
- ;; XXX: Tests fail with "bumpversion: error: the following arguments are
- ;; required: --new-version".
- `(#:tests? #false))
- (home-page "https://github.com/c4urself/bump2version")
- (synopsis "Version-bump your software with a single command!")
- (description
- "This package provides a small command line tool to simplify releasing
- software by updating all version strings in your source code by the correct
- increment. It also creates commits and tags.")
- (license license:expat)))
- (define-public python-bumpversion
- (package
- (name "python-bumpversion")
- (version "0.5.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "bumpversion" version))
- (sha256
- (base32
- "0zn7694yfipxg35ikkfh7kvgl2fissha3dnqad2c5bvsvmrwhi37"))))
- (build-system python-build-system)
- (home-page "https://github.com/peritus/bumpversion")
- (synopsis "Tool to bump software version")
- (description "This tool provides a command-line interface (CLI) to bump a
- software version simply.")
- (license license:expat)))
- (define-public python-deprecated
- (package
- (name "python-deprecated")
- (version "1.2.13")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/tantale/deprecated")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0v4ys9xr8lski2r98da99spsj6hjlnnqgnhhmyhrm66myiix885c"))))
- (build-system python-build-system)
- (arguments
- `(#:phases (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "pytest")))))))
- (propagated-inputs
- (list python-wrapt))
- (native-inputs
- (list python-bumpversion python-pytest python-pytest-cov
- python-sphinx python-tox))
- (home-page "https://github.com/tantale/deprecated")
- (synopsis "Python decorator to deprecate classes, functions or methods")
- (description "The @code{deprecated} decorator provides a convenient way to deprecate
- to deprecate classes, functions or methods.")
- (license license:expat)))
- (define-public python-pygithub
- (package
- (name "python-pygithub")
- (version "1.54.1")
- (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/PyGithub/PyGithub")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "1nl74bp5ikdnrc8xq0qr25ryl1mvarf0xi43k8w5jzlrllhq0nkq"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "pytest"))
- #t)))))
- (propagated-inputs
- (list python-cryptography python-deprecated python-pyjwt
- python-requests))
- (native-inputs
- (list python-httpretty python-pytest))
- (home-page "https://pygithub.readthedocs.io/en/latest/")
- (synopsis "Python library for the GitHub API")
- (description "This library allows managing GitHub resources such as
- repositories, user profiles, and organizations in your Python applications,
- using version 3 of the GitHub application programming interface (API).")
- (license license:lgpl3+)))
- (define-public python-rellu
- (package
- (name "python-rellu")
- (version "0.7")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "rellu" version))
- (sha256
- (base32
- "1w0arpj1sm7vh29nrbnca4pnp8sx42l07r17inwqcjjf9bhng66x"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-invoke python-pygithub))
- (home-page "https://github.com/robotframework/rellu")
- (synopsis "Utilities to create PyPI releases")
- (description "This collection of utilities contains tooling and templates
- to assist in creating releases on GitHub and publishing them on PyPI. It is
- designed to be used by Robot Framework and tools and libraries in its
- ecosystem, but can naturally be used also by other projects.")
- (license license:asl2.0)))
- (define-public python-robotframework
- (package
- (name "python-robotframework")
- (version "5.0")
- ;; There are no tests in the PyPI archive.
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/robotframework/robotframework")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "0qcm36c8hachbv3bc05ky7cf63i3sj0y8dw3bwjvcln28i543f81"))
- (patches (search-patches
- "python-robotframework-atest.patch"
- "python-robotframework-source-date-epoch.patch"))))
- (build-system python-build-system)
- (arguments
- (list
- #:modules '((guix build python-build-system)
- (guix build utils)
- (ice-9 ftw)
- (ice-9 match)
- (srfi srfi-26))
- #:phases
- #~(modify-phases %standard-phases
- (add-after 'unpack 'delete-problematic-tests
- (lambda _
- ;; Tests such as 'Tilde and username in path' rely on HOME and
- ;; USER being set, on top of the user's /etc/passwd home
- ;; directory not being '/', as is the case in the Guix build
- ;; container.
- (delete-file "atest/robot/standard_libraries/\
- operating_system/path_expansion.robot")
- ;; FIXME: The test 'Process.Sending Signal.By default signal
- ;; is not sent to process running in shell' fails for unknown
- ;; reason (see:
- ;; https://github.com/robotframework/robotframework/issues/4292).
- (delete-file "atest/robot/standard_libraries/\
- process/sending_signal.robot")))
- (add-before 'build 'build-and-install-doc
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((doc (string-append (assoc-ref outputs "doc")
- "/share/doc/robotframework")))
- (invoke "invoke" "library-docs" "all")
- (invoke "doc/userguide/ug2html.py" "dist") ;user guide
- (mkdir-p doc)
- (with-directory-excursion "dist"
- (define user-guide-dir
- (match (scandir "." (cut string-prefix?
- "robotframework-userguide-" <>))
- ((dir) dir)
- (_ (error "could not find the user guide directory"))))
- (copy-recursively user-guide-dir doc)))))
- (replace 'check
- (lambda* (#:key native-inputs inputs tests?
- #:allow-other-keys)
- (when tests?
- ;; Some tests require timezone data. Otherwise, they
- ;; look up /etc/localtime, which doesn't exist, and
- ;; fail with:
- ;;
- ;; OverflowError: mktime argument out of range
- (setenv "TZDIR"
- (search-input-directory
- (or native-inputs inputs) "share/zoneinfo"))
- (setenv "TZ" "Europe/Paris")
- (format #t "Running unit tests...~%")
- (invoke "utest/run.py")
- (format #t "Running acceptance tests...~%")
- (invoke "xvfb-run" "atest/run.py")))))))
- (native-inputs
- (list python-docutils
- python-jsonschema
- python-invoke
- python-lxml
- python-pygments
- python-pyyaml
- python-rellu
- `(,python "tk") ;used when building the HTML doc
- python-xmlschema
- scrot ;for taking screenshots
- tzdata-for-tests
- xvfb-run))
- (outputs '("out" "doc"))
- (home-page "https://robotframework.org")
- (synopsis "Generic automation framework")
- (description "Robot Framework is a generic automation framework for
- acceptance testing, acceptance test driven development (ATDD), and robotic
- process automation (RPA).")
- (license license:asl2.0)))
- (define-public python-robotframework-datadriver
- (package
- (name "python-robotframework-datadriver")
- (version "1.6.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "robotframework-datadriver" version))
- (sha256
- (base32 "0qa2vry8jr49k5rbrvmkgggzsmis1wv06dp5dvwmp7afm7vjc51k"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-before 'check 'skip-problematic-tests
- (lambda _
- ;; The test file 'tab-csv-file-name.tsv' contains special
- ;; characters for which there is no locale in the build
- ;; environment, causing one test to fail.
- (delete-file-recursively "atest/TestCases/csv_reader_config")))
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (with-directory-excursion "atest"
- (invoke "sh" "run_atest.sh"))))))))
- (native-inputs (list python-docutils
- python-robotframework-stacktrace))
- (propagated-inputs (list python-openpyxl
- python-pandas
- python-pygments
- python-robotframework))
- (home-page "https://github.com/Snooz82/robotframework-datadriver")
- (synopsis "Data-driven test extension for Robot Framework")
- (description "DataDriver is a data-driven extension for Robot Framework.
- DataDriver uses the Listener Interface of Robot Framework to create new test
- cases based on a data file that contains the test data. DataDriver supports
- data files in the CSV, XLS or XLSX formats.")
- (license license:asl2.0)))
- (define-public python-robotframework-lint
- ;; There is no properly tagged release; the commit below seems to correspond
- ;; to the 0.9 stable release available from PyPI. The tests are not
- ;; included in the PyPI archive, so we fetch the sources from the upstream
- ;; Git repo.
- (let ((commit "b0619ac58a8b1be125f9c98856a664594614570f")
- (revision "0"))
- (package
- (name "python-robotframework-lint")
- (version (git-version "1.1" ;version taken from 'rflint/version.py'
- revision commit))
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/boakley/robotframework-lint")
- (commit commit)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "180npmvzqync25b2scs878gv8q4y17dsinxyjcc10bw22msfap6b"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "python" "-m" "robot" "-A"
- "tests/conf/default.args" "tests"))))))
- (propagated-inputs
- (list python-robotframework))
- (home-page "https://github.com/boakley/robotframework-lint/")
- (synopsis "Static analysis tool (linter) for Robot Framework")
- (description "This package provides the @code{rflint} command-line
- utility, a static analysis tool (linter) for Robot Framework source files.")
- (license license:asl2.0))))
- (define-public python-robotframework-pabot
- (package
- (name "python-robotframework-pabot")
- (version "2.5.2")
- (source
- (origin
- ;; There are no tests in the PyPI archive.
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/mkorpela/pabot")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "14a8isq1f4lgfwjb84hhzg6jm7ns18dxa9bg6dy8k2ml8zl0qknk"))))
- (build-system python-build-system)
- (arguments
- (list
- #:phases #~(modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "pytest" "-vv" "tests")))))))
- (propagated-inputs
- (list python-robotframework python-robotframework-stacktrace))
- (native-inputs
- (list python-pytest))
- (home-page "https://pabot.org")
- (synopsis "Parallel test runner for Robot Framework")
- (description "Pabot is a parallel executor for Robot Framework tests.")
- (license license:asl2.0)))
- (define-public python-robotframework-stacktrace
- (package
- (name "python-robotframework-stacktrace")
- (version "0.4.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "robotframework-stacktrace" version))
- (sha256
- (base32 "19gnwr7da1zz9clhwsmvqfjf02d195i61lzpq4253dcsgrpb6v79"))))
- (build-system python-build-system)
- (arguments
- ;; The test suite fails (see:
- ;; https://github.com/MarketSquare/robotframework-stacktrace/issues/4).
- `(#:tests? #f
- #:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (with-directory-excursion "tests"
- (invoke "python" "-m" "robot" "."))))))))
- (propagated-inputs (list python-robotframework))
- (home-page "https://github.com/MarketSquare/robotframework-stacktrace")
- (synopsis "Robot Framework listener to print a stack trace on error")
- (description "StackTrace is a Robot Framework listener that prints a stack
- trace directly to the terminal to ease debugging.")
- (license license:asl2.0)))
- (define-public python-robotframework-sshlibrary
- (package
- (name "python-robotframework-sshlibrary")
- (version "3.8.0")
- ;; There are no tests in the PyPI archive.
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/robotframework/SSHLibrary")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "1fn72hw7xacjjpl4dd6wynh2x63i9rk8iqhj3v640db21qpcnbkw"))
- (patches (search-patches
- "python-robotframework-sshlibrary-rf5-compat.patch"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-before 'build 'build-and-install-doc
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((doc (string-append
- (assoc-ref outputs "doc")
- "/share/doc/robotframework-sshlibrary")))
- (invoke "chmod" "-R" "+w" "docs")
- (invoke "invoke" "kw-docs" "project-docs")
- (mkdir-p doc)
- (for-each delete-file (find-files "docs" "\\.rst"))
- (copy-recursively "docs" doc))))
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- ;; Some tests require an SSH server; we remove them.
- (delete-file "utest/test_client_api.py")
- (delete-file "utest/test_scp.py")
- (invoke "python" "utest/run.py")))))))
- (propagated-inputs
- (list python-robotframework python-paramiko python-scp))
- (native-inputs
- (list openssh
- which
- ;; To generate the documentation
- python-docutils
- python-invoke
- python-pygments
- python-rellu))
- (outputs '("out" "doc"))
- (home-page "https://github.com/robotframework/SSHLibrary")
- (synopsis "Robot Framework library for SSH and SFTP")
- (description "SSHLibrary is a Robot Framework library providing support
- for SSH and SFTP. It has the following main usages:
- @itemize @bullet
- @item Executing commands on the remote machine, either blocking or non-blocking.
- @item Writing and reading in an interactive shell.
- @item Transferring files and directories over SFTP.
- @item Ensuring that files and directories exist on the remote machine.
- @end itemize")
- (license license:asl2.0)))
- (define-public python-robotframework-pythonlibcore
- (package
- (name "python-robotframework-pythonlibcore")
- (version "3.0.0")
- (source
- (origin
- (method git-fetch) ;no tests in pypi archive
- (uri (git-reference
- (url "https://github.com/robotframework/PythonLibCore")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0v89v8va65l6inh0fb34qgxawx6p29pnrmw4n5941yzdi3804rc4"))))
- (build-system python-build-system)
- (arguments
- `(#:phases (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "utest/run.py")))))))
- (native-inputs
- (list python-pytest python-pytest-cov python-pytest-mockito
- python-robotframework))
- (home-page "https://github.com/robotframework/PythonLibCore")
- (synopsis "Robot Framework Python library tools")
- (description "PythonLibCore provides tools for creating larger test
- libraries for Robot Framework using Python. The Robot Framework hybrid and
- dynamic library APIs give more flexibility for library than the static library
- API, but they also set requirements for libraries which need to be implemented
- in the library side. PythonLibCore eases the problem by providing a simpler
- interface and by handling all the requirements towards the Robot Framework
- library APIs.")
- (license license:asl2.0)))
- (define-public python-robotframework-seleniumlibrary
- (package
- (name "python-robotframework-seleniumlibrary")
- (version "5.1.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "robotframework-seleniumlibrary" version))
- (sha256
- (base32 "1dihrbcid9i7daw2qy6h3xsvwaxzmyip820jw5z11n60qrl006pm"))))
- (build-system python-build-system)
- ;; XXX: Tests require ungoogled-chromium, but the chromium module would
- ;; introduce a cycle if imported here.
- (propagated-inputs
- (list python-robotframework python-robotframework-pythonlibcore
- python-selenium))
- (home-page "https://github.com/robotframework/SeleniumLibrary")
- (synopsis "Web testing library for Robot Framework")
- (description "SeleniumLibrary is a web testing library for Robot Framework
- that utilizes the Selenium tool internally.")
- (license license:asl2.0)))
- (define-public python-robotframework-seleniumscreenshots
- (package
- (name "python-robotframework-seleniumscreenshots")
- (version "0.9.5")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "robotframework-seleniumscreenshots" version))
- (sha256
- (base32 "05qv323hvjmy62h33ryrjaa9k1hyvp8hq5qnj8j1x3ap2ci3q3s0"))))
- (build-system python-build-system)
- (arguments
- ;; XXX: The tests require a relatively complicated setup configured in
- ;; their CI with Nix (!).
- `(#:tests? #f))
- (propagated-inputs
- (list python-robotframework python-robotframework-seleniumlibrary))
- (home-page "https://github.com/MarketSquare/robotframework-seleniumscreenshots")
- (synopsis "Robot Framework library for annotating and cropping screenshots")
- (description "The SeleniumScreenshots library for Robot Framework provides
- keywords for annotating and cropping screenshots taken with SeleniumLibrary.
- It is useful for scripting automatically updated screenshots for documentation
- or for visual regression testing purposes.")
- (license license:bsd-3)))
- (define-public python-rstr
- (package
- (name "python-rstr")
- (version "2.2.6")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "rstr" version))
- (sha256
- (base32
- "197dw8mbq0pjjz1l6h1ksi62vgn7x55d373ch74y06744qiq5sjx"))))
- (build-system python-build-system)
- (home-page "https://github.com/leapfrogonline/rstr")
- (synopsis "Generate random strings in Python")
- (description "This package provides a python module for generating
- random strings of various types. It could be useful for fuzz testing,
- generating dummy data, or other applications. It has no dependencies
- outside the standard library.")
- (license license:bsd-3)))
- (define-public python-scp
- (package
- (name "python-scp")
- (version "0.13.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "scp" version))
- (sha256
- (base32 "1m2v09m407p097cy3xy5rxicqfzrqjwf8v5rd4qhfqkk7lllimwb"))))
- (build-system python-build-system)
- (arguments
- '(#:tests? #f)) ;tests require an SSH server
- (propagated-inputs
- (list python-paramiko))
- (home-page "https://github.com/jbardin/scp.py")
- (synopsis "SCP protocol module for Python and Paramiko")
- (description "The scp module extends the Paramiko library to send and
- receive files via the SCP1 protocol, as implemented by the OpenSSH
- @command{scp} program.")
- (license license:gpl2+)))
- (define-public python-rst.linker
- (package
- (name "python-rst.linker")
- (version "1.11")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "rst.linker" version))
- (sha256
- (base32 "0pqsfqqx8h0pq21k8l3k62kznrgaj2ala93c64s4d9rpbr4mgkd2"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-dateutil python-six))
- (native-inputs
- (list python-setuptools-scm))
- ;; Test would require path.py, which would introduce a cyclic dependence.
- (arguments `(#:tests? #f))
- ;; Note: As of version 1.7 the documentation is not worth building.
- (home-page "https://github.com/jaraco/rst.linker")
- (synopsis "Sphinx plugin to add links and timestamps")
- (description "rst.linker automatically replaces text by a
- reStructuredText external reference or timestamps. It's primary purpose is to
- augment the changelog, but it can be used for other documents, too.")
- (license license:expat)))
- (define-public python2-rst.linker
- (package-with-python2 python-rst.linker))
- (define-public python-sshpubkeys
- (package
- (name "python-sshpubkeys")
- (version "3.1.0")
- (home-page "https://github.com/ojarva/python-sshpubkeys")
- (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
- "1h4gwmcfn84kkqh83km1vfz8sc5kr2g4gzgzmr8gz704jmqiv7nq"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-cryptography python-ecdsa))
- (synopsis "OpenSSH public key parser")
- (description
- "This package provides a library for parsing and validating OpenSSH
- public key files.")
- (license license:bsd-3)))
- (define-public python-feedgenerator
- (package
- (name "python-feedgenerator")
- (version "1.9")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "feedgenerator" version))
- (sha256
- (base32
- "01mirwkm7xfx539hmvj7g9da1j51gw5lsx74dr0glizskjm5vq2s"))
- (modules '((guix build utils)))
- (snippet
- '(begin
- ;; Remove pre-compiled .pyc files from source.
- (for-each delete-file-recursively
- (find-files "." "__pycache__" #:directories? #t))
- (for-each delete-file (find-files "." "\\.pyc$"))
- #t))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-pytz python-six))
- (home-page "https://github.com/getpelican/feedgenerator")
- (synopsis
- "Standalone version of Django's Atom/RSS feed generator")
- (description
- "Feedgenerator-py3k is a standalone version of Django's feedgenerator,
- which can produce feeds in RSS 2.0, RSS 0.91, and Atom formats.")
- (license license:bsd-3)))
- (define-public python2-feedgenerator
- (package-with-python2 python-feedgenerator))
- (define-public python-lsp-jsonrpc
- (package
- (name "python-lsp-jsonrpc")
- (version "1.0.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "python-lsp-jsonrpc" version))
- (sha256
- (base32
- "1gb0fsamxndhplx25v8m0b3k7aknzy454fpa0qsqsqnv6c3igv3v"))))
- (build-system python-build-system)
- (native-inputs
- (list python-mock python-pytest))
- (propagated-inputs
- (list python-ujson))
- (home-page "https://github.com/python-lsp/python-lsp-jsonrpc")
- (synopsis "JSON RPC 2.0 server library")
- (description
- "This package provides a JSON RPC 2.0 server library for Python.")
- (license license:expat)))
- (define-public python-jsonrpc-server
- (deprecated-package "python-jsonrpc-server" python-lsp-jsonrpc))
- (define-public python-pydantic
- (package
- (name "python-pydantic")
- (version "1.9.0")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/samuelcolvin/pydantic")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "14wj3k9007fpbxk7593w6gdqrr68yzrsw4a41sj5ji4cv3r8z18b"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (add-before 'check 'disable-test
- (lambda _
- ;; Reported upstream:
- ;; <https://github.com/samuelcolvin/pydantic/issues/1580>.
- ;; Disable the faulty test as the fix is unclear.
- (substitute* "tests/test_validators.py"
- (("test_assert_raises_validation_error")
- "_test_assert_raises_validation_error"))
- ;; These fail because of <https://bugs.python.org/issue40398>.
- ;; Remove after Python has been upgraded to >= 3.9.
- (substitute* "tests/test_generics.py"
- (("assert replace_types\\(Callable, \\{T: int\\}\\) == Callable")
- ""))
- (substitute* "tests/test_schema.py"
- (("test_unenforced_constraints_schema")
- "_test_unenforced_constraints_schema"))
- ;; Disable tests for the Hypothesis plugin because it is tricky
- ;; to configure in the build container.
- (delete-file "tests/test_hypothesis_plugin.py")))
- (replace 'check
- (lambda _ (invoke "pytest" "-vv"))))))
- (native-inputs
- (list python-pytest python-pytest-mock))
- (propagated-inputs
- (list python-typing-extensions))
- (home-page "https://github.com/samuelcolvin/pydantic")
- (synopsis "Python data validation and settings management")
- (description
- "Pydantic enforces type hints at runtime, and provides user friendly
- errors when data is invalid.")
- (license license:expat)))
- (define-public python-pydocstyle
- (package
- (name "python-pydocstyle")
- (version "3.0.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pydocstyle" version))
- (sha256
- (base32
- "1m1xv9clkg9lgzyza6dnj359z04vh5g0h49nhzghv7lg81gchhap"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-six python-snowballstemmer))
- (home-page
- "https://github.com/PyCQA/pydocstyle/")
- (synopsis "Python docstring style checker")
- (description
- "This package provides a style checker for the Python Language
- Server (PLS).")
- (license license:expat)))
- (define-public python-lsp-server
- (package
- (name "python-lsp-server")
- (version "1.3.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "python-lsp-server" version))
- (sha256
- (base32
- "0h6wxzmm6qjfwkkn3mnzn1fpmcp23fpbk74bi8p540q1nzccqj0v"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-before 'check 'set-HOME
- (lambda _ (setenv "HOME" "/tmp")))
- (replace 'check
- (lambda _
- ;; Disable failing test.
- (invoke "python" "-m" "pytest" "-k"
- "not test_pyqt_completion"))))))
- (propagated-inputs
- (list python-autopep8
- python-configparser
- python-pydocstyle
- python-flake8
- python-future
- python-jedi
- python-lsp-jsonrpc
- python-pluggy
- python-pycodestyle
- python-pyflakes
- python-rope
- python-ujson
- python-yapf))
- (native-inputs
- (list python-coverage
- python-flaky
- python-matplotlib
- python-mock
- python-numpy
- python-pandas
- python-pylint
- python-pytest
- python-pytest-cov
- python-versioneer))
- (home-page "https://github.com/python-lsp/python-lsp-server")
- (synopsis "Python implementation of the Language Server Protocol")
- (description
- "The Python Language Server @command{pylsp} is an implementation of the
- Python 3 language specification for the Language Server Protocol (LSP).
- This tool is used in text editing environments to provide a complete
- and integrated feature-set for programming Python effectively.")
- (license license:expat)))
- (define-public python-language-server
- (deprecated-package "python-language-server" python-lsp-server))
- (define-public python-pathspec
- (package
- (name "python-pathspec")
- (version "0.9.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pathspec" version))
- (sha256
- (base32
- "1cdbdb3s6ldnjpwbi0bgl0xlmw4mbfxk08bbdxc3srx26na4jr75"))))
- (build-system python-build-system)
- (home-page "https://github.com/cpburnz/python-path-specification")
- (synopsis "Utility library for gitignore style pattern matching of file paths")
- (description
- "This package provides a utility library for gitignore style pattern
- matching of file paths.")
- (license license:mpl2.0)))
- (define-public python-black
- (package
- (name "python-black")
- (version "21.12b0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "black" version))
- (sha256
- (base32
- "1czjwr1bx9ax5l64xfi54sxb1ycdy4s9ciaqg592x7jn79lhzf3p"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- ;; XXX Remove this when updating this package:
- ;; https://github.com/psf/black/issues/2703#issuecomment-1004752142
- (add-after 'unpack 'relax-version-requirements
- (lambda _
- (substitute* "setup.py"
- (("tomli[^\"]*\",")
- "tomli\","))))
- (add-after 'patch-source-shebangs 'use-absolute-file-names
- (lambda* (#:key native-inputs inputs #:allow-other-keys)
- (let* ((inpts (or native-inputs inputs))
- (python3 (search-input-file inpts "/bin/python3"))
- (/bin/false (search-input-file inpts "/bin/false"))
- (/bin/sleep (search-input-file inpts "/bin/sleep")))
- (substitute* (find-files "tests" "\\.py$")
- (("#!/usr/bin/env python3(\\.[0-9]+)?" _ minor-version)
- (string-append "#!" python3 (if (string? minor-version)
- minor-version
- ""))))
- (substitute* "tests/test_primer.py"
- (("/bin/false") /bin/false)
- (("/bin/sleep") /bin/sleep)))))
- (add-after 'unpack 'disable-broken-tests
- (lambda* (#:key outputs inputs #:allow-other-keys)
- ;; Make installed package available for running the tests
- (setenv "PATH" (string-append (assoc-ref outputs "out") "/bin"
- ":" (getenv "PATH")))
- ;; The source formatting test fails because we patch various
- ;; files; just disable it.
- (substitute* "tests/test_format.py"
- (("def test_source_is_formatted" all)
- (format #f "@pytest.mark.skip(\"Disabled by Guix.\")\n~a"
- all)))))
- ;; Remove blackd, because it depends on python-aiohttp and
- ;; python-aiohttp-cors.
- (add-after 'unpack 'remove-entrypoint
- (lambda _
- (substitute* "setup.py"
- (("\\s*\"blackd=blackd:patched_main \\[d\\]\",\n") "")
- (("\"blackd\", ") ""))))
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests? (invoke "pytest" "-vv")))))))
- (propagated-inputs
- (list python-click
- python-attrs
- python-appdirs
- python-pathspec
- python-mypy-extensions
- python-platformdirs
- python-regex
- python-tomli
- python-typed-ast
- python-typing-extensions))
- (native-inputs
- (list python-pytest python-pytest-aiohttp python-setuptools-scm))
- (home-page "https://github.com/psf/black")
- (synopsis "The uncompromising code formatter")
- (description "Black is the uncompromising Python code formatter.")
- (license license:expat)))
- (define-public python-black-macchiato
- (package
- (name "python-black-macchiato")
- (version "1.3.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "black-macchiato" version))
- (sha256
- (base32
- "1drp5p697ni1xn5y2lbjpalgpkzy2i4cyxjj5pk4dxr0vk97dd7i"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-black))
- (home-page "https://github.com/wbolster/black-macchiato")
- (synopsis "Partial @code{python-black} formatting")
- (description
- "This package is built on top the @{python-black} code formatter to
- enable formatting of partial files.")
- (license license:bsd-3)))
- (define-public python-blinker
- (package
- (name "python-blinker")
- (version "1.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "blinker" version))
- (sha256
- (base32
- "1dpq0vb01p36jjwbhhd08ylvrnyvcc82yxx3mwjx6awrycjyw6j7"))))
- (build-system python-build-system)
- (home-page "https://pythonhosted.org/blinker/")
- (synopsis "Fast, simple object-to-object and broadcast signaling")
- (description
- "Blinker provides a fast dispatching system that allows any number of
- interested parties to subscribe to events, or \"signals\".")
- (license license:expat)))
- (define-public python2-blinker
- (package-with-python2 python-blinker))
- (define-public pelican
- (package
- (name "pelican")
- (version "4.7.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pelican" version))
- (sha256
- (base32 "1sfckd3fhgnj305002fi3fdhkynric1ck7a5i8qany7k3vdsbasv"))))
- (build-system python-build-system)
- (inputs
- (list python-blinker
- python-dateutil
- ;; Ignoring `guix lint` warning as python-docutils is used to support
- ;; reStructuredText processing at runtime.
- python-docutils
- python-feedgenerator
- python-jinja2
- python-markdown
- python-pygments
- python-pytz
- python-rich
- python-unidecode))
- (home-page "https://blog.getpelican.com/")
- (arguments
- `(;; XXX Requires a lot more packages to do unit tests :P
- #:tests? #f))
- (synopsis "Python-based static site publishing system")
- (description
- "Pelican is a tool to generate a static blog from reStructuredText,
- Markdown input files, and more. Pelican uses Jinja2 for templating
- and is very extensible.")
- (license license:agpl3+)))
- (define-public mallard-ducktype
- (package
- (name "mallard-ducktype")
- (version "1.0.2")
- (source
- (origin
- (method git-fetch)
- ;; git-reference because tests are not included in pypi source tarball
- ;; https://issues.guix.gnu.org/issue/36755#2
- (uri (git-reference
- (url "https://github.com/projectmallard/mallard-ducktype")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "1jk9bfz7g04ip78s03b0xak6d54rj4h9zpgadkziy1ji216g6y4c"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (with-directory-excursion "tests"
- (invoke "sh" "runtests")))))))
- (home-page "http://projectmallard.org")
- (synopsis "Convert Ducktype to Mallard documentation markup")
- (description
- "Ducktype is a lightweight syntax that can represent all the semantics
- of the Mallard XML documentation system. Ducktype files can be converted to
- Mallard using the @command{ducktype} tool. The yelp-tools package
- provides additional functionality on the produced Mallard documents.")
- (license license:expat)))
- (define-public python-cython
- (package
- (name "python-cython")
- (version "0.29.24")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "Cython" version))
- (sha256
- (base32 "0hw4gs18rh4slij1fg252argxhraypld9apbqbl60230qc3lvw6d"))))
- (build-system python-build-system)
- ;; we need the full python package and not just the python-wrapper
- ;; because we need libpython3.3m.so
- (inputs
- (list python))
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-before 'check 'set-HOME
- ;; some tests require access to "$HOME/.cython"
- (lambda _ (setenv "HOME" "/tmp")))
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- ;; Disable compiler optimizations to greatly reduce the running
- ;; time of the test suite.
- (setenv "CFLAGS" "-O0")
- (when tests?
- (invoke "python" "runtests.py" "-vv"
- "-j" (number->string (parallel-job-count))
- ;; XXX: On 32-bit architectures, running the parallel tests
- ;; fails on many-core systems, see
- ;; <https://github.com/cython/cython/issues/2807>.
- ,@(if (not (target-64bit?))
- '("-x" "run.parallel")
- '())
- ;; This test fails when running on 24 cores.
- "-x" "cpp_stl_conversion")))))))
- (home-page "https://cython.org/")
- (synopsis "C extensions for Python")
- (description "Cython is an optimising static compiler for both the Python
- programming language and the extended Cython programming language. It makes
- writing C extensions for Python as easy as Python itself.")
- (license license:asl2.0)
- (properties `((python2-variant . ,(delay python2-cython))))))
- (define-public python2-cython
- (let ((base (package-with-python2 (strip-python2-variant python-cython))))
- (package/inherit base
- (name "python2-cython")
- (inputs
- `(("python-2" ,python-2))) ;this is not automatically changed
- (arguments
- (substitute-keyword-arguments (package-arguments base)
- ((#:phases phases)
- `(modify-phases ,phases
- (add-before 'check 'adjust-test_embed
- (lambda _
- (substitute* "runtests.py"
- ;; test_embed goes great lengths to find the static libpythonX.Y.a
- ;; so it can give the right -L flag to GCC when embedding static
- ;; builds of Python. It is unaware that the Python "config"
- ;; directory (where the static library lives) was renamed in
- ;; Python 3, and falls back to sysconfig.get_config_var('LIBDIR'),
- ;; which works fine, because that is where the shared library is.
- ;;
- ;; It also appears to be unaware that the Makefile in Demos/embed
- ;; already unconditionally pass the static library location to GCC,
- ;; after checking sysconfig.get_config_var('LIBPL).
- ;;
- ;; The effect is that the linker is unable to resolve libexpat
- ;; symbols when building for Python 2, because neither the Python 2
- ;; shared library nor Expat is available. To fix it, we can either
- ;; add Expat as an input and make it visible to the linker, or just
- ;; prevent it from overriding the Python shared library location.
- ;; The end result is identical, so we take the easy route.
- ((" or libname not in os\\.listdir\\(libdir\\)")
- ""))
- #t)))))))))
- (define-public python-cython-3
- (package
- (inherit python-cython)
- ;; Cython 3 is not officially released yet, so distinguish the name
- ;; for now.
- (name "python-cython-next")
- (version "3.0.0a10")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "Cython" version))
- (sha256
- (base32
- "17fqacrpis05w1rpi7d7sbimrk20xf8h6d3vrz5nf6ix3899abil"))))
- (properties '())))
- (define-public python-numpy-next
- (package
- (name "python-numpy-next")
- (version "1.21.3")
- (source
- (origin
- (method url-fetch)
- (uri (string-append
- "https://github.com/numpy/numpy/releases/download/v"
- version "/numpy-" version ".tar.gz"))
- (sha256
- (base32
- "0s6hy8828yr7fcjiwnym4l8lrknr21gqfkaiawsf86n0hd0a5fyh"))))
- (build-system python-build-system)
- (inputs
- (list openblas))
- (native-inputs
- (list python-cython python-hypothesis python-pytest
- python-pytest-xdist gfortran))
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-before 'build 'configure-blas
- (lambda* (#:key inputs #:allow-other-keys)
- (call-with-output-file "site.cfg"
- (lambda (port)
- (format port
- "\
- [openblas]
- libraries = openblas
- library_dirs = ~a/lib
- include_dirs = ~a/include
- "
- (assoc-ref inputs "openblas")
- (assoc-ref inputs "openblas"))))))
- (add-before 'build 'fix-executable-paths
- (lambda* (#:key inputs #:allow-other-keys)
- ;; Make /gnu/store/...-bash-.../bin/sh the default shell,
- ;; instead of /bin/sh.
- (substitute* "numpy/distutils/exec_command.py"
- (("(os.environ.get\\('SHELL', ')(/bin/sh'\\))" match match-start match-end)
- (string-append match-start (assoc-ref inputs "bash") match-end)))
- ;; Use "gcc" executable, not "cc".
- (substitute* "numpy/distutils/system_info.py"
- (("c = distutils\\.ccompiler\\.new_compiler\\(\\)")
- "c = distutils.ccompiler.new_compiler(); c.set_executables(compiler='gcc',compiler_so='gcc',linker_exe='gcc',linker_so='gcc -shared')"))))
- (replace 'check
- (lambda* (#:key tests? outputs inputs #:allow-other-keys)
- (when tests?
- ;; Make installed package available for running the tests.
- (add-installed-pythonpath inputs outputs)
- ;; Make sure "f2py" etc is found.
- (setenv "PATH" (string-append (assoc-ref outputs "out") "/bin"
- ":" (getenv "PATH")))
- (invoke "./runtests.py"
- "-j" (number->string (parallel-job-count)))))))))
- (home-page "https://numpy.org")
- (synopsis "Fundamental package for scientific computing with Python")
- (description "NumPy is the fundamental package for scientific computing
- with Python. It contains among other things: a powerful N-dimensional array
- object, sophisticated (broadcasting) functions, tools for integrating C/C++
- and Fortran code, useful linear algebra, Fourier transform, and random number
- capabilities.")
- (properties `((python2-variant . ,(delay python2-numpy))))
- (license license:bsd-3)))
- ;; Numpy 1.16.x are the last versions that support Python 2.
- (define-public python2-numpy
- (let ((numpy (package-with-python2
- (strip-python2-variant python-numpy-next))))
- (package
- (inherit numpy)
- (name "python-numpy")
- (version "1.16.5")
- (source (origin
- (method url-fetch)
- (uri (string-append
- "https://github.com/numpy/numpy/releases/download/v"
- version "/numpy-" version ".tar.gz"))
- (sha256
- (base32
- "0lg1cycxzi4rvvrd5zxinpdz0ni792fpx6xjd75z1923zcac8qrb"))))
- (arguments
- (substitute-keyword-arguments (package-arguments numpy)
- ((#:phases phases)
- `(modify-phases ,phases
- (add-after 'unpack 'delete-failing-test
- (lambda _
- ;; There's just one failing test here.
- (delete-file "numpy/linalg/tests/test_linalg.py")
- ;; ...and this one depends on the previous one.
- (delete-file "numpy/matrixlib/tests/test_matrix_linalg.py")))))))
- (native-inputs
- (list python2-cython python2-pytest gfortran)))))
- ;; Needed by python-numba, see https://github.com/numba/numba/issues/7176
- (define-public python-numpy-1.20
- (package
- (inherit python-numpy-next)
- (name "python-numpy")
- (version "1.20.3")
- (source (origin
- (method url-fetch)
- (uri (string-append
- "https://github.com/numpy/numpy/releases/download/v"
- version "/numpy-" version ".tar.gz"))
- (sha256
- (base32
- "140zq9snx0di4id4g97vaw9zz8x2rfla5lp3a70j666f5030yd5p"))))
- ;; 92 tests fail, many of them because parts of the temp file name
- ;; accidentally ends up in a comparison.
- (arguments
- (substitute-keyword-arguments (package-arguments python-numpy-next)
- ((#:tests? _ #t) #f)))))
- ;; NOTE: when upgrading numpy please make sure that python-pandas and
- ;; python-scipy still build, as these three packages are often used together.
- (define-public python-numpy python-numpy-1.20)
- ;; NOTE: NumPy 1.8 is packaged only for Python 2 because it is of
- ;; interest only for legacy code going back to NumPy's predecessor
- ;; Numeric.
- (define-public python2-numpy-1.8
- (package (inherit python2-numpy)
- (version "1.8.2")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/numpy/numpy")
- (commit (string-append "v" version))))
- (file-name (git-file-name "numpy" version))
- (sha256
- (base32
- "0ikgi15rsqwbkfsjjxrwh40lqyal2wvyp3923y6w6ch3dcr82sfk"))))
- (arguments
- (substitute-keyword-arguments (package-arguments python2-numpy)
- ((#:phases phases)
- `(modify-phases ,phases
- (replace 'configure-blas
- (lambda* (#:key inputs #:allow-other-keys)
- (call-with-output-file "site.cfg"
- (lambda (port)
- (format port
- "[openblas]
- libraries = openblas
- library_dirs = ~a/lib
- include_dirs = ~a/include
- "
- (assoc-ref inputs "openblas")
- (assoc-ref inputs "openblas"))))))))))
- (native-inputs
- (list python2-nose))
- (description "NumPy is the fundamental package for scientific computing
- with Python. It contains among other things: a powerful N-dimensional array
- object, sophisticated (broadcasting) functions, tools for integrating C/C++
- and Fortran code, useful linear algebra, Fourier transform, and random number
- capabilities. Version 1.8 is the last one to contain the numpy.oldnumeric API
- that includes the compatibility layer numpy.oldnumeric with NumPy's predecessor
- Numeric.")
- (license license:bsd-3)))
- (define-public python-munch
- (package
- (name "python-munch")
- (version "2.0.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "munch" version))
- (sha256
- (base32
- "1cmqg91xnqx8gvnh4pmp0bfl1dfcm65d5p9mg73zz8pkjhx6h80l"))))
- (build-system python-build-system)
- (home-page "https://github.com/Infinidat/munch")
- (synopsis "Dot-accessible dictionary")
- (description "Munch is a dot-accessible dictionary similar to JavaScript
- objects.")
- (license license:expat)))
- (define-public python2-munch
- (package-with-python2 python-munch))
- (define-public python-colormath
- (package
- (name "python-colormath")
- (version "3.0.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "colormath" version))
- (sha256
- (base32
- "05qjycgxp3p2f9n6lmic68sxmsyvgnnlyl4z9w7dl9s56jphaiix"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-networkx python-numpy))
- (home-page "https://github.com/gtaylor/python-colormath")
- (synopsis "Color math and conversion library")
- (description
- "This is a Python library for color math and conversions.")
- (license license:bsd-3)))
- (define-public python-sparse
- (package
- (name "python-sparse")
- (version "0.13.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "sparse" version))
- (sha256
- (base32
- "05ar1lhq1yy4nb78s7vpb1wz4ac4kj0r4lrd7yrf23kpmaacjpb8"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "python" "-m" "pytest" "-v")))))))
- (propagated-inputs
- (list python-numba python-numpy python-scipy))
- (native-inputs
- (list python-dask python-pytest python-pytest-black
- python-pytest-cov))
- (home-page "https://github.com/pydata/sparse/")
- (synopsis "Library for multi-dimensional sparse arrays")
- (description
- "This package implements sparse arrays of arbitrary dimension on top of
- @code{numpy} and @code{scipy.sparse}. Sparse array is a matrix in which most
- of the elements are zero. @code{python-sparse} generalizes the
- @code{scipy.sparse.coo_matrix} and @code{scipy.sparse.dok_matrix} layouts, but
- extends beyond just rows and columns to an arbitrary number of dimensions.
- Additionally, this project maintains compatibility with the
- @code{numpy.ndarray} interface rather than the @code{numpy.matrix} interface
- used in @code{scipy.sparse}. These differences make this project useful in
- certain situations where @code{scipy.sparse} matrices are not well suited, but
- it should not be considered a full replacement. It lacks layouts that are not
- easily generalized like @dfn{compressed sparse row/column}(CSR/CSC) and
- depends on @code{scipy.sparse} for some computations.")
- (license license:bsd-3)))
- (define-public python-spectra
- (package
- (name "python-spectra")
- (version "0.0.11")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "spectra" version))
- (sha256
- (base32
- "1f322x914bhkg6r5gv1vmnir3iy0k5kih0fd2gp3rdkw32jn5cwf"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _ (invoke "nosetests" "-v"))))))
- (propagated-inputs
- (list python-colormath))
- (native-inputs
- (list python-nose))
- (home-page "https://github.com/jsvine/spectra")
- (synopsis "Color scales and color conversion")
- (description
- "This package provides a Python library intended to make color math,
- color scales, and color space conversion easy. It has support for:
- @enumerate
- @item Color scales
- @item Color ranges
- @item Color blending
- @item Brightening/darkening colors
- @item Saturating/desaturating colors
- @item Conversion to/from multiple color spaces.
- @end enumerate\n")
- (license license:expat)))
- (define-public python-pyspnego
- (package
- (name "python-pyspnego")
- (version "0.1.6")
- (source
- (origin
- (method git-fetch) ;no tests in PyPI release
- (uri (git-reference
- (url "https://github.com/jborean93/pyspnego")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0pfh2x0539f0k2qi2pbjm64b2fqp64c63xxpinvg1yfaw915kgpb"))))
- (build-system python-build-system)
- (arguments
- `(#:phases (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "pytest")))))))
- (native-inputs
- (list python-pytest python-pytest-mock))
- (propagated-inputs
- (list python-cryptography python-gssapi python-ruamel.yaml))
- (home-page "https://github.com/jborean93/pyspnego")
- (synopsis "Python SPNEGO library")
- (description "The @code{pyspnego} Python library handles Negotiate, NTLM,
- Kerberos (SPNEGO) and CredSSP authentication. It also includes a packet
- parser that can be used to decode raw NTLM/SPNEGO/Kerberos tokens into a human
- readable format.")
- (license license:expat)))
- (define-public python-numpy-documentation
- (package
- (name "python-numpy-documentation")
- (version (package-version python-numpy))
- (source (package-source python-numpy))
- (build-system python-build-system)
- (native-inputs
- `(("python-matplotlib" ,python-matplotlib)
- ("python-numpy" ,python-numpy)
- ("pkg-config" ,pkg-config)
- ("python-sphinx" ,python-sphinx)
- ("python-numpydoc" ,python-numpydoc)
- ("texlive" ,(texlive-updmap.cfg (list
- texlive-capt-of
- texlive-cm-super
- texlive-fonts-ec
- texlive-generic-iftex
- texlive-pdftex
- texlive-amsfonts
- texlive-latex-cmap
- texlive-latex-environ
- texlive-latex-eqparbox
- texlive-etoolbox
- texlive-latex-expdlist
- texlive-latex-fancyhdr
- texlive-latex-fancyvrb
- texlive-latex-fncychap
- texlive-latex-float
- texlive-latex-framed
- texlive-latex-geometry
- texlive-latex-graphics
- texlive-hyperref
- texlive-latex-mdwtools
- texlive-latex-multirow
- texlive-latex-needspace
- texlive-oberdiek
- texlive-latex-parskip
- texlive-latex-preview
- texlive-latex-tabulary
- texlive-latex-threeparttable
- texlive-latex-titlesec
- texlive-latex-trimspaces
- texlive-latex-ucs
- texlive-latex-upquote
- texlive-url
- texlive-latex-varwidth
- texlive-wrapfig)))
- ("texinfo" ,texinfo)
- ("perl" ,perl)
- ("scipy-sphinx-theme"
- ,(let ((commit "c466764e2231ba132c09826b5b138fffa1cfcec3"))
- (origin ;the build script expects scipy-sphinx-theme as a git submodule
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/scipy/scipy-sphinx-theme")
- (commit commit)))
- (file-name (git-file-name "python-scipy-sphinx-theme"
- (string-take commit 7)))
- (sha256
- (base32
- "0q2y87clwlsgc7wvlsn9pzyssybcq10plwhq2w1ydykfsyyqbmkl")))))
- ,@(package-native-inputs python-numpy)))
- (arguments
- `(#:tests? #f ; we're only generating the documentation
- #:phases
- (modify-phases %standard-phases
- (delete 'build)
- (replace 'install
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let* ((data (string-append (assoc-ref outputs "out") "/share"))
- (doc (string-append
- data "/doc/" ,name "-"
- ,(package-version python-numpy)))
- (info-reader (string-append data "/info"))
- (html (string-append doc "/html"))
- (scipy-sphinx-theme "scipy-sphinx-theme")
- (sphinx-theme-checkout (assoc-ref inputs scipy-sphinx-theme))
- (pyver ,(string-append "PYVER=")))
- ;; FIXME: this is needed to for texlive-updmap.cfg to generate
- ;; fonts, which are not found.
- (setenv "HOME" "/tmp")
- (with-directory-excursion "doc"
- (copy-recursively sphinx-theme-checkout scipy-sphinx-theme)
- (mkdir-p html)
- (invoke "make" "html" pyver)
- (invoke "make" "latex" "PAPER=a4" pyver)
- (invoke "make" "-C" "build/latex"
- "all-pdf" "PAPER=a4" pyver)
- ;; FIXME: Generation of the info file fails.
- ;; (invoke "make" "info" pyver)
- ;; (mkdir-p info)
- ;; (copy-file "build/texinfo/numpy.info"
- ;; (string-append info "/numpy.info"))
- (for-each (lambda (file)
- (copy-file (string-append "build/latex" file)
- (string-append doc file)))
- '("/numpy-ref.pdf" "/numpy-user.pdf"))
- (with-directory-excursion "build/html"
- (for-each (lambda (file)
- (let* ((dir (dirname file))
- (tgt-dir (string-append html "/" dir)))
- (unless (equal? "." dir)
- (mkdir-p tgt-dir))
- (install-file file html)))
- (find-files "." ".*")))))
- #t)))))
- (home-page (package-home-page python-numpy))
- (synopsis "Documentation for the python-numpy package")
- (description (package-description python-numpy))
- (license (package-license python-numpy))))
- (define-public python-pygit2
- (package
- (name "python-pygit2")
- (version "1.7.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pygit2" version))
- (sha256
- (base32 "0p8n25bijirxh31cv99vd1mkdsvpcs6z6441wz1fqva3b2as5ynp"))))
- (build-system python-build-system)
- (arguments
- '(#:tests? #f)) ; tests don't run correctly in our environment
- (propagated-inputs
- (list python-cached-property python-cffi libgit2))
- (native-inputs
- (list python-pytest))
- (home-page "https://github.com/libgit2/pygit2")
- (synopsis "Python bindings for libgit2")
- (description "Pygit2 is a set of Python bindings to the libgit2 shared
- library, libgit2 implements Git plumbing.")
- ;; GPL2.0 only, with linking exception.
- (license license:gpl2)))
- (define-public python-patiencediff
- (package
- (name "python-patiencediff")
- (version "0.2.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "patiencediff" version))
- (sha256
- (base32
- "0yjk50lsd4gnllxls925xbcdxwvmda37w2a1shk0p1nvl3fcha6q"))))
- (build-system python-build-system)
- (home-page "https://www.breezy-vcs.org/")
- (synopsis "Python implementation of the patiencediff algorithm")
- (description
- "This package contains a Python implementation of the @code{patiencediff}
- algorithm. Patiencediff provides a good balance of performance, nice output for
- humans, and implementation simplicity.")
- (license license:gpl2)))
- (define-public python-wmctrl
- (package
- (name "python-wmctrl")
- (version "0.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "wmctrl" version))
- (sha256
- (base32
- "1q0l1sqnj5wma87k3dsgmsyph464syjc6fl8qcpa41nan1rgzjv6"))))
- (build-system python-build-system)
- (arguments
- `(#:phases (modify-phases %standard-phases
- (add-after 'unpack 'patch-paths
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((wmctrl (assoc-ref inputs "wmctrl")))
- (substitute* "wmctrl.py"
- (("'wmctrl")
- (string-append "'" wmctrl "/bin/wmctrl")))))))))
- (inputs (list wmctrl))
- (propagated-inputs (list python-attrs))
- (home-page "https://github.com/antocuni/wmctrl")
- (synopsis "Tool to programmatically control Xorg windows")
- (description "This package provides a library for programmatically
- controlling Xorg windows using Python. The library relies on the
- @command{wmctrl} to do so.")
- (license license:expat)))
- (define-public python-fancycompleter
- (package
- (name "python-fancycompleter")
- (version "0.9.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "fancycompleter" version))
- (sha256
- (base32 "0wkj4h01pxa8prv59zl09a0i3w26k835bfpjgvyvsai4mswgxq09"))))
- (build-system python-build-system)
- (arguments
- `(#:phases (modify-phases %standard-phases
- (add-after 'unpack 'fix-setup.py
- (lambda _
- (substitute* "setup.py"
- ((".*setupmeta.*")
- "")
- (("versioning=.*")
- (string-append "version='" ,version "',"))
- ((".*pyrepl.*") ;broken on Python 3
- "")))))))
- (home-page "https://github.com/pdbpp/fancycompleter")
- (synopsis "TAB completion library for Python")
- (description "@code{fancycompleter} is a module that adds TAB completion
- to the interactive prompt. It is an extension of the @code{rlcompleter}
- module from the standard Python library.")
- (license license:bsd-3)))
- (define-public python-pdbpp
- (package
- (name "python-pdbpp")
- (version "0.10.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pdbpp" version))
- (sha256
- (base32
- "1xb9yvi30rb1cdpvfdk2kg79vh3anvkz91r8bwvfp3iqv97kzr6r"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "pytest"
- "-k"
- (string-append
- ;; These tests seem to require a real TTY.
- "not interaction_restores_previous_sigint_handler "
- "and not python_m_pdb_uses_pdbpp"))))))))
- (propagated-inputs
- (list python-fancycompleter python-pygments python-wmctrl))
- (native-inputs
- (list python-pytest python-setuptools-scm))
- (home-page "https://github.com/pdbpp/pdbpp")
- (synopsis "Drop-in replacement for pdb")
- (description "Pdb++ is a drop-in replacement for @code{pdb}. It
- includes the following improvements compared to @code{pdb}:
- @itemize
- @item auto-completion
- @item syntax highlighting of code listings
- @item sticky mode
- @item new commands to be used from the interactive (Pdb++) prompt
- @item smart command parsing
- @item additional convenience functions in the @code{pdb} module.
- @end itemize")
- (license license:bsd-3)))
- (define-public python-pdftotext
- (package
- (name "python-pdftotext")
- (version "2.1.6")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pdftotext" version))
- (sha256
- (base32 "1555wbgr5spj8xflrs4mwsrdmba2f9s72nk50xzqk9ghxaxdvy6a"))))
- (build-system python-build-system)
- (inputs
- (list poppler))
- (home-page "https://github.com/jalan/pdftotext")
- (synopsis "Simple PDF text extraction")
- (description "Pdftotext is a Python library of PDF text extraction.")
- (license license:expat)))
- (define-public python-pluginbase
- (package
- (name "python-pluginbase")
- (version "1.0.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pluginbase" version))
- (sha256
- (base32
- "11z2vvbp13828y0x3w39f29p9r9xcix7h7c4fff2w8yfiylk6v7z"))))
- (build-system python-build-system)
- (arguments
- `(#:phases (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "make" "test")))))))
- (native-inputs (list python-pytest))
- (home-page "https://github.com/mitsuhiko/pluginbase")
- (synopsis "Simple but flexible plugin system for Python")
- (description "PluginBase is a library useful in the development of
- flexible plugin systems in Python.")
- (license license:bsd-3)))
- (define-public python-node-semver
- (package
- (name "python-node-semver")
- (version "0.8.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "node-semver" version))
- (sha256
- (base32
- "000ypfns5x72b41w5f9pk6k3jnr35scliqfbvmilyvv0178005i8"))))
- (build-system python-build-system)
- (native-inputs
- (list python-pytest))
- (home-page "https://github.com/podhmo/python-node-semver")
- (synopsis "Python port of node-semver")
- (description "This module provides a Python version of node-semver, a
- semantic version parser for Node.js.")
- (license license:expat)))
- (define-public python-patch-ng
- (package
- (name "python-patch-ng")
- (version "1.17.4")
- (source
- (origin
- (method git-fetch) ;no tests in PyPI archive
- (uri (git-reference
- (url "https://github.com/conan-io/python-patch-ng")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0qxn4ss2s54qy87xrpcybz26kp2fwlaq41x4k9jcmp6d7p0w569m"))))
- (build-system python-build-system)
- (arguments
- `(#:phases (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "tests/run_tests.py" "-v")))))))
- (home-page "https://github.com/conan-io/python-patch-ng")
- (synopsis "Python library to parse and apply unified diffs")
- (description "Patch NG (New Generation) is a command and Python library to
- parse and apply unified diffs. It has features such as:
- @itemize
- @item automatic correction of common patch formatting corruption
- @item patch format detection (SVN, Hg, Git)
- @item nice diffstat histogram.
- @end itemize")
- (license license:expat)))
- (define-public python-numpydoc
- (package
- (name "python-numpydoc")
- (version "1.1.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "numpydoc" version))
- (sha256
- (base32
- "13j4fvy2p7lc8sn00sxvs0jb19vicaznfgx4cphv9jgxgz5xcvy3"))))
- (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" "-v" "numpydoc/tests"
- ;; TODO: unclear why these fail.
- "-k" "not test_MyClass and not test_my_function")))))))
- (propagated-inputs
- (list python-sphinx))
- (native-inputs
- (list python-matplotlib python-pytest python-pytest-cov))
- (home-page "https://pypi.org/project/numpydoc/")
- (synopsis
- "Numpy's Sphinx extensions")
- (description
- "Sphinx extension to support docstrings in Numpy format.")
- (license license:bsd-2)
- (properties `((python2-variant . ,(delay python2-numpydoc))))))
- (define-public python2-numpydoc
- (let ((base (package-with-python2
- (strip-python2-variant python-numpydoc))))
- (package/inherit base
- ;; This is the last version to support Python 2
- (version "0.9.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "numpydoc" version))
- (sha256
- (base32
- "09x6l1a4dcvj7001bvcmcayg1nwqwhaxlwbp6kzj9qrk57lqx3z0"))))
- (propagated-inputs
- `(("python2-jinja2" ,python2-jinja2)
- ,@(package-propagated-inputs base))))))
- (define-public python-numexpr
- (package
- (name "python-numexpr")
- (version "2.7.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "numexpr" version))
- (sha256
- (base32
- "09d8yfsx33ddwfkpn8805w2mxnn4cvf47yc66g4azldpz4lnaqa3"))))
- (build-system python-build-system)
- (arguments `(#:tests? #f)) ; no tests included
- (propagated-inputs
- (list python-numpy))
- (home-page "https://github.com/pydata/numexpr")
- (synopsis "Fast numerical expression evaluator for NumPy")
- (description
- "Numexpr is a fast numerical expression evaluator for NumPy. With it,
- expressions that operate on arrays are accelerated and use less memory than
- doing the same calculation in Python. In addition, its multi-threaded
- capabilities can make use of all your cores, which may accelerate
- computations, most specially if they are not memory-bounded (e.g. those using
- transcendental functions).")
- (license license:expat)))
- (define-public python2-numexpr
- (package-with-python2 python-numexpr))
- (define-public python-cycler
- (package
- (name "python-cycler")
- (version "0.10.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "cycler" version))
- (sha256
- (base32
- "1n69n23fak1gjxlrbhqisi2b9pv3ckrfj98llx3p53953082syyd"))))
- (build-system python-build-system)
- (arguments
- ;; XXX: The current version requires 'coveralls' which we don't have.
- ;; Enable this for the next release which uses 'python-pytest'.
- '(#:tests? #f))
- (propagated-inputs
- (list python-six))
- (home-page "https://matplotlib.org/cycler/")
- (synopsis "Composable keyword argument iterator")
- (description
- "When using @code{matplotlib} and plotting more than one line, it is
- common to want to be able to want to be able to cycle over one or more artist
- styles; but the plotting logic can quickly become involved.
- To address this and enable easy cycling over arbitrary @code{kwargs}, the
- @code{Cycler} class was developed.")
- (license license:bsd-3)))
- (define-public python2-cycler
- (package-with-python2 python-cycler))
- (define-public python-colorspacious
- (package
- (name "python-colorspacious")
- (version "1.1.2")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/njsmith/colorspacious")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "0x7nkphr6g5ql5fvgss8l56rgiyjgh6fm8zzs73i94ci9wzlm63w"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-numpy))
- (native-inputs
- (list python-nose))
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "nosetests" "--all-modules" "-v" "colorspacious"))))))
- (home-page "https://github.com/njsmith/colorspacious")
- (synopsis "Python library for colorspace conversions")
- (description "@code{colorspacious} is a Python library that lets you
- convert between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc.")
- (license license:expat)))
- (define-public python2-colorspacious
- (package-with-python2 python-colorspacious))
- (define-public python-proto-matcher
- (package
- (name "python-proto-matcher")
- (version "0.0.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "proto_matcher" version))
- (sha256
- (base32 "1644x0hrl398ji3281n44ymfgc3cspzfagjckhqjn4nja5nlikxg"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f)) ;no test suite
- (propagated-inputs
- (list python-protobuf python-pyhamcrest))
- (home-page "https://github.com/dayfine/proto-matcher")
- (synopsis "PyHamcrest test matchers for protocol buffers")
- (description "This package provides the following PyHamcrest test
- matchers, that enable matching a protocol buffer message:
- @table @code
- @item equals_proto
- Test the argument equals the given protobuf message.
- @item approximately
- Test the argument equals the given protobuf message, while comparing any float
- field using approximation.
- @item ignoring_field_paths
- Test the argument equals the given protobuf message, while ignoring those
- fields specified in the field paths.
- @item ignoring_repeated_field_ordering
- Test the argument equals the given protobuf message, ignoring the ordering of
- any repeated field.
- @item partially
- Test the argument partially equals the given protobuf message, i.e. if a field
- is in the argument but not in the expected message, it's ignored in the
- comparison.
- @end table")
- (license license:asl2.0)))
- (define-public python-matplotlib
- (package
- (name "python-matplotlib")
- (version "3.5.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "matplotlib" version))
- (sha256
- (base32 "076f8qi265x8jy89c03r3vv5h4is4ir5mawwrrrpp96314783sdj"))))
- (build-system python-build-system)
- (propagated-inputs ; the following packages are all needed at run time
- `(("python-cycler" ,python-cycler)
- ("python-fonttools" ,python-fonttools)
- ("python-kiwisolver" ,python-kiwisolver)
- ("python-packaging" ,python-packaging)
- ("python-pyparsing" ,python-pyparsing)
- ("python-pygobject" ,python-pygobject)
- ("python-certifi" ,python-certifi)
- ("gobject-introspection" ,gobject-introspection)
- ("python-tkinter" ,python "tk")
- ("python-dateutil" ,python-dateutil)
- ("python-numpy" ,python-numpy)
- ("python-pillow" ,python-pillow)
- ("python-pytz" ,python-pytz)
- ("python-six" ,python-six)
- ("python-wxpython" ,python-wxpython)
- ;; From version 1.4.0 'matplotlib' makes use of 'cairocffi' instead of
- ;; 'pycairo'. However, 'pygobject' makes use of a 'pycairo' 'context'
- ;; object. For this reason we need to import both libraries.
- ;; https://cairocffi.readthedocs.io/en/stable/cffi_api.html#converting-pycairo-wrappers-to-cairocffi
- ("python-pycairo" ,python-pycairo)
- ("python-cairocffi" ,python-cairocffi)))
- (inputs
- (list libpng
- freetype
- qhull
- cairo
- glib
- tcl
- tk))
- (native-inputs
- `(("pkg-config" ,pkg-config)
- ("python-pytest" ,python-pytest)
- ("python-pytest-timeout" ,python-pytest-timeout)
- ("python-pytest-xdist" ,python-pytest-xdist)
- ("python-setuptools-scm" ,python-setuptools-scm)
- ("python-setuptools-scm-git-archive" ,python-setuptools-scm-git-archive)))
- (arguments
- (list
- #:phases
- #~(modify-phases %standard-phases
- (add-before 'build 'pretend-version
- ;; The version string is usually derived via setuptools-scm, but
- ;; without the git metadata available, the version string is set to
- ;; '0.0.0'.
- (lambda _
- (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" #$version)))
- (add-after 'unpack 'fix-and-disable-failing-tests
- ;; XXX: Disable all image comparison tests because we're using a
- ;; newer version of FreeType than matplotlib expects. This leads
- ;; to minor differences throughout the tests.
- (lambda _
- (substitute* (append (find-files "lib/matplotlib/tests/"
- "test_.*\\.py$")
- (find-files "lib/mpl_toolkits/tests"
- "test_.*\\.py$"))
- (("^from matplotlib" match)
- (string-append "import pytest\n" match))
- (("( *)@([^_]+_)*(image_comparison|check_figures_equal)" match
- indent)
- (string-append indent "@pytest.mark.skip(\
- reason=\"unknown minor image differences\")\n" match)))
- (substitute* "lib/matplotlib/tests/test_animation.py"
- (("/bin/sh") (which "sh")))
- (for-each delete-file
- ;; test_normal_axes, test_get_tightbbox_polar
- '("lib/matplotlib/tests/test_axes.py"
- "lib/matplotlib/tests/test_polar.py"
- ;; We don't use the webagg backend and this test
- ;; forces it.
- "lib/matplotlib/tests/test_backend_webagg.py"
- ;; test_outward_ticks
- "lib/matplotlib/tests/test_tightlayout.py"
- ;; test_hidden_axes fails with minor extent
- ;; differences, possibly due to the use of a
- ;; different version of FreeType.
- "lib/matplotlib/tests/test_constrainedlayout.py"
- ;; Fontconfig returns no fonts.
- "lib/matplotlib/tests/test_font_manager.py"))))
- (add-before 'build 'configure-environment
- (lambda* (#:key inputs #:allow-other-keys)
- ;; Fix rounding errors when using the x87 FPU.
- (when (string-prefix? "i686" #$(%current-system))
- (setenv "CFLAGS" "-ffloat-store"))
- (call-with-output-file "mplsetup.cfg"
- (lambda (port)
- (format port "\
- [libs]
- system_freetype = true
- system_qhull = true
- [rc_options]
- backend=Agg
- [directories]
- basedirlist = ~a,~a
- [packages]
- tests = True~%" (assoc-ref inputs "tcl") (assoc-ref inputs "tk"))))))
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- ;; Step out of the source directory to avoid interference.
- (with-directory-excursion "/tmp"
- ;; Run the installed tests, which is what we want since not
- ;; everything gets built in the source directory.
- (invoke "pytest"
- "-n" (number->string (parallel-job-count))
- "-m" "not network" "--pyargs" "matplotlib"))))))))
- (home-page "https://matplotlib.org/")
- (synopsis "2D plotting library for Python")
- (description
- "Matplotlib is a Python 2D plotting library which produces publication
- quality figures in a variety of hardcopy formats and interactive environments
- across platforms. Matplotlib can be used in Python scripts, the python and
- ipython shell, web application servers, and six graphical user interface
- toolkits.")
- (license license:psfl)
- (properties `((python2-variant . ,(delay python2-matplotlib))))))
- (define-public python2-matplotlib
- (let ((matplotlib (package-with-python2
- (strip-python2-variant python-matplotlib))))
- (package/inherit matplotlib
- (version "2.2.5")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "matplotlib" version))
- (sha256
- (base32
- "1sk05fdai9rw35l983rw2ymvz0nafs7szs7yz4nxrpyr1j27l0x3"))))
- (arguments
- (substitute-keyword-arguments (package-arguments matplotlib)
- ((#:phases phases)
- #~(modify-phases #$phases
- (add-after 'install 'create-init-file
- (lambda _
- (with-output-to-file
- (string-append
- #$output
- "/lib/python2.7/site-packages/mpl_toolkits/__init__.py")
- (lambda _ (display "")))))
- (delete 'fix-and-disable-failing-tests)
- (delete 'check))))) ; These tests weren't run the the past.
- (native-inputs
- `(("pkg-config" ,pkg-config)))
- (propagated-inputs
- `(("gobject-introspection" ,gobject-introspection)
- ("python2-backports-functools-lru-cache" ,python2-backports-functools-lru-cache)
- ("python2-certifi" ,python2-certifi)
- ("python2-cycler" ,python2-cycler)
- ("python2-dateutil" ,python2-dateutil)
- ("python2-functools32" ,python2-functools32)
- ("python2-kiwisolver" ,python2-kiwisolver)
- ("python2-numpy" ,python2-numpy)
- ("python2-pillow" ,python2-pillow)
- ("python2-pycairo" ,python2-pycairo)
- ("python2-pygobject-2" ,python2-pygobject-2)
- ("python2-pyparsing" ,python2-pyparsing)
- ("python2-pytz" ,python2-pytz)
- ("python2-six" ,python2-six)
- ("python2-subprocess32" ,python2-subprocess32)
- ("python2-tkinter" ,python-2 "tk"))))))
- (define-public python-matplotlib-documentation
- (package
- (name "python-matplotlib-documentation")
- (version (package-version python-matplotlib))
- (source (package-source python-matplotlib))
- (build-system python-build-system)
- (native-inputs
- `(("python-matplotlib" ,python-matplotlib)
- ("python-colorspacious" ,python-colorspacious)
- ("python-sphinx" ,python-sphinx)
- ("python-sphinx-copybutton" ,python-sphinx-copybutton)
- ("python-sphinx-gallery" ,python-sphinx-gallery)
- ("python-numpydoc" ,python-numpydoc)
- ("python-ipython" ,python-ipython)
- ("python-ipykernel" ,python-ipykernel)
- ("python-mock" ,python-mock)
- ("graphviz" ,graphviz)
- ("texlive" ,(texlive-updmap.cfg (list texlive-amsfonts
- texlive-enumitem
- texlive-latex-amsmath
- texlive-latex-expdlist
- texlive-latex-geometry
- texlive-latex-preview
- texlive-latex-type1cm
- texlive-latex-ucs
- texlive-pdftex
- texlive-fonts-ec
- texlive-times
- texlive-txfonts)))
- ("texinfo" ,texinfo)
- ,@(package-native-inputs python-matplotlib)))
- (arguments
- `(#:tests? #f ; we're only generating documentation
- #:phases
- (modify-phases %standard-phases
- ;; The tests in python-matplotlib are run after the install phase, so
- ;; we need to delete the extra phase here.
- (delete 'check)
- (replace 'build
- (lambda _
- (chdir "doc")
- (setenv "PYTHONPATH" "../examples/units")
- (substitute* "conf.py"
- ;; Don't use git.
- (("^SHA = check_output.*")
- (string-append "SHA = \"" ,version "\"\n"))
- ;; Don't fetch intersphinx files from the Internet
- (("^explicit_order_folders" m)
- (string-append "intersphinx_mapping = {}\n" m))
- (("'sphinx.ext.intersphinx',") "")
- ;; Disable URL embedding which requires internet access.
- (("'https://docs.scipy.org/doc/numpy'") "None")
- (("'https://docs.scipy.org/doc/scipy/reference'") "None"))
- (invoke "make"
- "SPHINXBUILD=sphinx-build"
- "SPHINXOPTS=" ; don't abort on warnings
- "html" "texinfo")))
- (replace 'install
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let* ((data (string-append (assoc-ref outputs "out") "/share"))
- (doc (string-append data "/doc/python-matplotlib-" ,version))
- (info (string-append data "/info"))
- (html (string-append doc "/html")))
- (mkdir-p html)
- (mkdir-p info)
- (copy-recursively "build/html" html)
- (symlink (string-append html "/_images")
- (string-append info "/matplotlib-figures"))
- (with-directory-excursion "build/texinfo"
- (substitute* "matplotlib.texi"
- (("@image\\{([^,]*)" all file)
- (string-append "@image{matplotlib-figures/" file)))
- (symlink (string-append html "/_images")
- "./matplotlib-figures")
- (invoke "makeinfo" "--no-split"
- "-o" "matplotlib.info" "matplotlib.texi"))
- (install-file "build/texinfo/matplotlib.info" info)))))))
- (home-page (package-home-page python-matplotlib))
- (synopsis "Documentation for the python-matplotlib package")
- (description (package-description python-matplotlib))
- (license (package-license python-matplotlib))))
- (define-public python-matplotlib-inline
- (package
- (name "python-matplotlib-inline")
- (version "0.1.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "matplotlib-inline" version))
- (sha256
- (base32 "1vilzwj3xp00mxprmmn1hlafm3p23vn56s46kx3ra4qd5signjx0"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-matplotlib python-traitlets))
- (arguments
- ;; Tests disabled because of a circular dependency with ipython.
- `(#:tests? #f))
- (home-page "https://github.com/ipython/matplotlib-inline")
- (synopsis "Inline Matplotlib backend for Jupyter")
- (description
- "This package provides a Matplotlib inline back-end for IPython and
- Jupyter.")
- (license license:bsd-3)))
- (define-public python-matplotlib-venn
- (package
- (name "python-matplotlib-venn")
- (version "0.11.5")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "matplotlib-venn" version ".zip"))
- (sha256
- (base32
- "13w3i1wih0mij08hrgppzg0g9z50y54rc28l6gdi1r5w45l7l0dy"))))
- (build-system python-build-system)
- (arguments '(#:tests? #f)) ; tests are not included
- (propagated-inputs
- (list python-matplotlib python-numpy python-scipy))
- (native-inputs
- (list unzip))
- (home-page "https://github.com/konstantint/matplotlib-venn")
- (synopsis "Plot area-proportional Venn diagrams")
- (description
- "This package provides tools for plotting area-proportional two- and
- three-way Venn diagrams in @code{matplotlib}.")
- (license license:expat)))
- (define-public python-pysnptools
- (package
- (name "python-pysnptools")
- (version "0.4.11")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pysnptools" version))
- (sha256
- (base32
- "0gxr0bjix307wvk0qh7vkafbxbzfpdmq0wlswpxyyaymy0fwcypv"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f ; no test data are included
- #:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key inputs outputs tests? #:allow-other-keys)
- (if tests?
- (begin
- (add-installed-pythonpath inputs outputs)
- (invoke "python3" "pysnptools/test.py"))
- #t))))))
- (propagated-inputs
- (list python-dill
- python-h5py
- python-numpy
- python-pandas
- python-psutil
- python-scipy))
- (native-inputs
- (list python-cython))
- (home-page "http://microsoftgenomics.github.io/PySnpTools/")
- (synopsis "Library for reading and manipulating genetic data")
- (description
- "PySnpTools is a library for reading and manipulating genetic data. It
- can, for example, efficiently read whole PLINK *.bed/bim/fam files or parts of
- those files. It can also efficiently manipulate ranges of integers using set
- operators such as union, intersection, and difference.")
- (license license:asl2.0)))
- (define-public python2-pysnptools
- (package-with-python2 python-pysnptools))
- (define-public python-pykdtree
- (package
- (name "python-pykdtree")
- (version "1.3.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pykdtree" version))
- (sha256
- (base32 "0p8n2ljdacfixkiw092974dmhy4s1c0h032ii1z9kwi9h5h5rgmy"))))
- (build-system python-build-system)
- (native-inputs
- (list python-nose))
- (propagated-inputs
- (list python-numpy))
- (home-page "https://github.com/storpipfugl/pykdtree")
- (synopsis "Fast kd-tree implementation with OpenMP-enabled queries")
- (description
- "@code{pykdtree} is a kd-tree implementation for fast nearest neighbour
- search in Python.")
- (license license:lgpl3+)))
- (define-public python-wurlitzer
- (package
- (name "python-wurlitzer")
- (version "2.0.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "wurlitzer" version))
- (sha256
- (base32 "0hvmbc41kdwrjns8z1s4a59a4azdvzb8q3vs7nn1li4qm4l0g3yh"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "pytest" "-vv" "test.py"))))))
- (native-inputs
- (list python-mock python-pytest))
- (home-page "https://github.com/minrk/wurlitzer")
- (synopsis "Capture C-level output in context managers")
- (description
- "This library helps to redirect @code{sys.stdout} to a stream or a file
- while executing some piece of code, including C code running within a Python
- process.")
- (license license:expat)))
- (define-public python-socksipy-branch
- (package
- (name "python-socksipy-branch")
- (version "1.01")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "SocksiPy-branch" version))
- (sha256
- (base32
- "01l41v4g7fy9fzvinmjxy6zcbhgqaif8dhdqm4w90fwcw9h51a8p"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f)) ; There are no tests
- (home-page "https://code.google.com/archive/p/socksipy-branch/")
- (synopsis "Python SOCKS module")
- (description
- "SocksiPy - A Python SOCKS client module. It provides a
- socket-like interface that supports connections to any TCP
- service through the use of a SOCKS4, SOCKS5 or HTTP proxy.
- The original version was developed by Dan Haim, this is a
- branch created by Mario Vilas to address some open issues,
- as the original project seems to have been abandoned circa 2007.")
- (license license:bsd-3)))
- (define-public python2-socksipy-branch
- (package-with-python2 python-socksipy-branch))
- (define-public python-socksipychain
- (package
- (name "python-socksipychain")
- (version "2.1.2")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/pagekite/PySocksipyChain")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "02pp994qmiivkdx4y6az5q80l6rzy8g6d2ipvp7kns7lsxvmc2y7"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f)) ; Tests try to access the network.
- (home-page "http://pagekite.net/wiki/Floss/PySocksipyChain/")
- (synopsis "Python SOCKS module with chained proxies support")
- (description
- "SocksiPyChain is a modified version of the SocksiPy SOCKS module, which
- adds support for arbitrary chaining of proxy servers and various modes of
- TLS/SSL encryption. It was developed for use in PageKite, and also includes
- a simple netcat replacement with chaining support.")
- (license license:bsd-3)))
- (define-public python-pycodestyle
- (package
- (name "python-pycodestyle")
- (version "2.7.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pycodestyle" version))
- (sha256
- (base32
- "1vqwmzmjdv331kmfq3q9j3as2x7r2r49lf83r9w4147pdg8c32f3"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "pytest" "-vv"))))))
- (native-inputs
- (list python-pytest))
- (home-page "https://pycodestyle.readthedocs.io/")
- (synopsis "Python style guide checker")
- (description "@code{pycodestyle} (formerly pep8) is a tool to check
- Python code against some of the style conventions in
- @url{http://www.python.org/dev/peps/pep-0008/,PEP 8}.")
- (license license:expat)))
- (define-public python2-pycodestyle
- (package-with-python2 python-pycodestyle))
- (define-public python-pycodestyle-2.6
- (package
- (inherit python-pycodestyle)
- (version "2.6.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "pycodestyle" version))
- (sha256
- (base32
- "0bhr6ia0hmgx3nhgibc9pmkzhlh1zcqk707i5fbxgs702ll7v2n5"))))))
- (define-public python-multidict
- (package
- (name "python-multidict")
- (version "4.7.5")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "multidict" version))
- (sha256
- (base32
- "07ikq2c72kd263hpldw55y0px2l3g34hjk66ml9lryh1jv287qmf"))))
- (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~%")))))))
- (native-inputs
- (list python-pytest python-pytest-cov))
- (home-page "https://github.com/aio-libs/multidict/")
- (synopsis "Multidict implementation")
- (description "Multidict is dict-like collection of key-value pairs
- where key might be occurred more than once in the container.")
- (license license:asl2.0)))
- (define-public python-orderedmultidict
- (package
- (name "python-orderedmultidict")
- (version "1.0.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "orderedmultidict" version))
- (sha256
- (base32
- "1bc2v0yflsxjyyjx4q9wqx0j3bvzcw9z87d5pz4iqac7bsxhn1q4"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-six))
- (native-inputs
- (list python-flake8 python-pycodestyle))
- (home-page "https://github.com/gruns/orderedmultidict")
- (synopsis "Python Ordered Multivalue Dictionary - omdict")
- (description "This package contains a library for ordered multivalue
- dictionaries. A multivalue dictionary is a dictionary that can store
- multiple values for the same key. An ordered multivalue dictionary is a
- multivalue dictionary that retains the order of insertions and deletions.")
- (license license:unlicense)))
- (define-public python-autopep8
- (package
- (name "python-autopep8")
- (version "1.5.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "autopep8" version))
- (sha256
- (base32
- "1w6vh627vrmgfbvrdcxrc3k4gxcldrb2lpgxv9irkdds851qrzb0"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-pycodestyle python-toml))
- (home-page "https://github.com/hhatto/autopep8")
- (synopsis "Format Python code according to the PEP 8 style guide")
- (description
- "@code{autopep8} automatically formats Python code to conform to
- the PEP 8 style guide. It uses the pycodestyle utility to determine
- what parts of the code needs to be formatted. @code{autopep8} is
- capable of fixing most of the formatting issues that can be reported
- by pycodestyle.")
- (license (license:non-copyleft
- "https://github.com/hhatto/autopep8/blob/master/LICENSE"))))
- (define-public python2-autopep8
- (package-with-python2 python-autopep8))
- (define-public python-distlib
- (package
- (name "python-distlib")
- (version "0.3.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "distlib" version ".zip"))
- (sha256
- (base32
- "1wdzv7fsjhrkhh1wfkarlhcwa8m00mgcpdsvknmf2qy8f9l13xpd"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-before 'build 'no-/bin/sh
- (lambda _
- (substitute* '("distlib/scripts.py" "tests/test_scripts.py")
- (("/bin/sh") (which "sh")))
- #t))
- (add-before 'check 'prepare-test-env
- (lambda _
- (setenv "HOME" "/tmp")
- ;; NOTE: Any value works, the variable just has to be present.
- (setenv "SKIP_ONLINE" "1")
- #t)))))
- (native-inputs (list unzip))
- (home-page "https://bitbucket.org/pypa/distlib")
- (synopsis "Distribution utilities")
- (description "Distlib is a library which implements low-level functions that
- relate to packaging and distribution of Python software. It is intended to be
- used as the basis for third-party packaging tools.")
- (license license:psfl)))
- (define-public python-distutils-extra
- (package
- (name "python-distutils-extra")
- (version "2.38")
- (source
- (origin
- (method url-fetch)
- (uri (string-append "https://launchpad.net/python-distutils-extra/trunk/"
- version "/+download/python-distutils-extra-"
- version ".tar.gz"))
- (sha256
- (base32
- "0lx15kcbby9zisx33p2h5hgakgwh2bvh0ibag8z0px4j6ifhs41x"))))
- (build-system python-build-system)
- (home-page "https://launchpad.net/python-distutils-extra/")
- (synopsis "Enhancements to Python's distutils")
- (description
- "The python-distutils-extra module enables you to easily integrate
- gettext support, themed icons, and scrollkeeper-based documentation into
- Python's distutils.")
- (license license:gpl2)))
- (define-public python2-distutils-extra
- (package-with-python2 python-distutils-extra))
- (define-public python2-elib.intl
- (package
- (name "python2-elib.intl")
- (version "0.0.3")
- (source
- (origin
- ;; This project doesn't tag releases or publish tarballs, so we take
- ;; source from a (semi-arbitrary, i.e. latest as of now) git commit.
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/dieterv/elib.intl")
- (commit "d09997cfef")))
- (file-name (string-append name "-" version "-checkout"))
- (sha256
- (base32
- "0y7vzff9xgbnaay7m0va1arl6g68ncwrvbgwl7jqlclsahzzb09d"))))
- (build-system python-build-system)
- (arguments
- ;; incompatible with Python 3 (exception syntax)
- `(#:python ,python-2
- #:tests? #f))
- (home-page "https://github.com/dieterv/elib.intl")
- (synopsis "Enhanced internationalization for Python")
- (description
- "The elib.intl module provides enhanced internationalization (I18N)
- services for your Python modules and applications.")
- (license license:lgpl3+)))
- (define-public python-olefile
- (package
- (name "python-olefile")
- (version "0.46")
- (source
- (origin
- (method url-fetch)
- (uri (string-append "https://github.com/decalage2/olefile/releases/"
- "download/v" version "/olefile-" version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32
- "1kjxh4gr651hpqkjfv89cfzr40hyvf3vjlda7mifiail83j7j07m"))))
- (build-system python-build-system)
- (home-page "https://www.decalage.info/python/olefileio")
- (synopsis "Read and write Microsoft OLE2 files")
- (description
- "@code{olefile} can parse, read and write Microsoft OLE2 files (Structured
- Storage or Compound Document, Microsoft Office). It is an improved version of
- the OleFileIO module from PIL, the Python Image Library.")
- (license license:bsd-3)))
- (define-public python2-olefile
- (package-with-python2 python-olefile))
- (define-public python-pypdf3
- (package
- (name "python-pypdf3")
- (version "1.0.5")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "PyPDF3" version))
- (sha256
- (base32 "018hlq9q2qa96vw4j7ppq352znykldwy98h2w9qcpkvpi93sjqhc"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-tqdm))
- (home-page "https://github.com/sfneal/PyPDF3")
- (synopsis "Utility to read and write PDFs with Python")
- (description "PyPDF3 is a pure-python PDF library capable of splitting,
- merging together, cropping, and transforming the pages of PDF files. It can
- also add custom data, viewing options, and passwords to PDF files. It can
- retrieve text and metadata from PDFs as well as merge entire files together.")
- (license license:bsd-3)))
- (define-public python-pikepdf
- (package
- (name "python-pikepdf")
- (version "2.16.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pikepdf" version))
- (sha256
- (base32 "1phdpi9cm2pbvgcxqvwr8ck327sxhdw4dnxmzhrbf7hzydmgykg2"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #false)) ;require python-xmp-toolkit
- (native-inputs
- (list pybind11
- python-setuptools
- python-setuptools-scm
- python-setuptools-scm-git-archive
- python-toml
- python-wheel))
- (inputs
- (list qpdf))
- (propagated-inputs
- (list python-lxml python-pillow))
- (home-page "https://github.com/pikepdf/pikepdf")
- (synopsis "Read and write PDFs with Python")
- (description
- "pikepdf is a Python library for reading and writing PDF files.")
- (license license:mpl2.0)))
- (define-public python-pillow
- (package
- (name "python-pillow")
- (version "9.0.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "Pillow" version))
- (sha256
- (base32
- "0gjry0yqryd2678sm47jhdnbghzxn5wk8pgyaqwr4qi7x5ijjvpf"))
- (modules '((guix build utils)))
- (snippet
- '(begin
- (delete-file-recursively "src/thirdparty")))))
- (build-system python-build-system)
- (native-inputs
- (list python-pytest))
- (inputs
- (list freetype
- lcms
- libjpeg-turbo
- libtiff
- libwebp
- openjpeg
- zlib))
- (propagated-inputs
- (list python-olefile))
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'patch-ldconfig
- (lambda _
- (substitute* "setup.py"
- (("\\['/sbin/ldconfig', '-p'\\]") "['true']"))))
- (replace 'check
- (lambda* (#:key outputs inputs tests? #:allow-other-keys)
- (when tests?
- (setenv "HOME" (getcwd))
- ;; Make installed package available for running the tests.
- (add-installed-pythonpath inputs outputs)
- (invoke "python" "selftest.py" "--installed")
- (invoke "python" "-m" "pytest" "-vv")))))))
- (home-page "https://python-pillow.org")
- (synopsis "Fork of the Python Imaging Library")
- (description
- "The Python Imaging Library adds image processing capabilities to your
- Python interpreter. This library provides extensive file format support, an
- efficient internal representation, and fairly powerful image processing
- capabilities. The core image library is designed for fast access to data
- stored in a few basic pixel formats. It should provide a solid foundation for
- a general image processing tool.")
- (properties `((python2-variant . ,(delay python2-pillow))
- (cpe-name . "pillow")))
- (license (license:x11-style
- "http://www.pythonware.com/products/pil/license.htm"
- "The PIL Software License"))))
- (define-public python2-pillow
- (package-with-python2
- (package
- (inherit (strip-python2-variant python-pillow))
- ;; Version 6 is the last series with Python 2 support.
- (version "6.2.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "Pillow" version))
- (sha256
- (base32
- "0l5rv8jkdrb5q846v60v03mcq64yrhklidjkgwv6s1pda71g17yv"))))
- (arguments
- (substitute-keyword-arguments (package-arguments python-pillow)
- ;; FIXME: One of the tests is failing.
- ((#:tests? _ #f) #f))))))
- (define-public python-pillow-2.9
- (package
- (inherit python-pillow)
- (version "2.9.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "Pillow" version))
- (sha256
- (base32
- "0ada7lf3lmbdsqm3b7ja920p1pllyfhmqndr85ikpj77fmz9s5qg"))))
- (arguments
- (substitute-keyword-arguments (package-arguments python-pillow)
- ((#:tests? _ #f) #f)))
- (properties '((hidden? #t)))))
- (define-public python-pillow-simd
- (package
- (inherit python-pillow)
- (name "python-pillow-simd")
- (version "9.0.0.post1")
- ;; The PyPI tarball does not include test files.
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/uploadcare/pillow-simd")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "1dnvsln451aw3qy2cxg2ndd5mcanf5nrhxw9l7mcam730635hdm9"))))
- (inputs
- (modify-inputs (package-inputs python-pillow)
- (prepend libraqm libimagequant)))
- (home-page "https://github.com/uploadcare/pillow-simd")
- (synopsis "Fork of the Python Imaging Library (Pillow)")
- (description "This package is a fork of Pillow which adds support for SIMD
- parallelism.")))
- (define-public python-imagecodecs
- (package
- (name "python-imagecodecs")
- (version "2021.3.31")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "imagecodecs" version))
- (sha256
- (base32
- "0q7pslb6wd56vbcq2mdxwsiha32mxjr7mgqqfbq5w42q601p9pi0"))
- (modules '((guix build utils)))
- (snippet
- '(begin
- ;; Unbundle 3rd party modules.
- (delete-file-recursively "3rdparty")
- ;; Delete pre-generated Cython files.
- (for-each delete-file (find-files "imagecodecs" "_.*\\.c$"))
- #t))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f ; Tests are disabled, because dependencies are missing.
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'create-configuration
- (lambda* (#:key inputs #:allow-other-keys)
- ;; By default everything is enabled. We can selectively disable
- ;; extensions (and thus dependencies) by deleting them from the
- ;; EXTENSIONS dictionary. This is upstream’s preferred way.
- (call-with-output-file "imagecodecs_distributor_setup.py"
- (lambda (port)
- (format port "\
- def customize_build(EXTENSIONS, OPTIONS):
- del EXTENSIONS['aec']
- del EXTENSIONS['avif']
- del EXTENSIONS['bitshuffle']
- del EXTENSIONS['deflate']
- del EXTENSIONS['jpeg2k']
- del EXTENSIONS['jpeg12']
- del EXTENSIONS['jpegls']
- del EXTENSIONS['jpegxl']
- del EXTENSIONS['jpegxr']
- del EXTENSIONS['lerc']
- del EXTENSIONS['ljpeg']
- del EXTENSIONS['lzf']
- del EXTENSIONS['zfp']
- del EXTENSIONS['zopfli']
- OPTIONS['cythonize']
- ")))))
- ;; XXX: The installed scripts import packages that depend on
- ;; this package; disable import check to avoid the cycle.
- (delete 'sanity-check))))
- (inputs
- (list c-blosc
- giflib
- brotli
- libjpeg-turbo
- libpng
- libtiff
- libwebp
- lz4
- snappy
- xz
- zlib
- `(,zstd "lib")))
- (propagated-inputs
- ;; For the Python library.
- (list python-numpy))
- (native-inputs
- ;; For building.
- (list python-cython
- ;; For testing. Incomplete.
- ;("python-numcodecs" ,python-numcodecs)
- ;("python-zarr" ,python-zarr)
- ;("python-pytest" ,python-pytest)
- ))
- (home-page "https://www.lfd.uci.edu/~gohlke/")
- (synopsis
- "Image transformation, compression, and decompression codecs")
- (description
- "Imagecodecs is a Python library that provides block-oriented, in-memory
- buffer transformation, compression, and decompression functions for use in the
- tifffile, czifile, and other scientific image input/output modules.")
- (license license:bsd-3)))
- (define-public python-executing
- (package
- (name "python-executing")
- (version "0.8.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "executing" version))
- (sha256
- (base32 "08q0xh9fd8k41sqpp23q6fb9bf7yj4y2q6sv30pj36vvk8pg8fy2"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f)) ; TODO: tests require python-asttokens
- (native-inputs
- (list python-setuptools-scm python-toml))
- (home-page "https://github.com/alexmojaki/executing")
- (synopsis "Get information about what a Python frame is currently doing")
- (description "This package lets you get information about what a frame is
- currently doing, particularly the AST node being executed.")
- (license license:expat)))
- (define-public python-roifile
- (package
- (name "python-roifile")
- (version "2020.11.28")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "roifile" version))
- (sha256
- (base32
- "04argnc7qccybkrj9ww18bf81ghsghhh93hnqy3p111rcdlyn66p"))))
- (build-system python-build-system)
- (arguments `(#:tests? #f)) ; there are none
- (propagated-inputs
- (list python-numpy))
- (home-page "https://www.lfd.uci.edu/~gohlke/")
- (synopsis "Read and write ImageJ ROI format")
- (description "Roifile is a Python library to read, write, create, and plot
- ImageJ ROIs, an undocumented and ImageJ application specific format to store
- regions of interest, geometric shapes, paths, text, etc for image overlays.")
- (license license:bsd-3)))
- (define-public python-tifffile
- (package
- (name "python-tifffile")
- (version "2021.4.8")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "tifffile" version))
- (sha256
- (base32
- "16r0hw7shka1bqf28bv198lj2jhf2r9gy3s5zv4nf5cfsfm8pajm"))))
- (build-system python-build-system)
- ;; Tests require lfdfiles, which depends on tifffile
- (arguments `(#:tests? #f))
- (propagated-inputs
- (list python-numpy python-imagecodecs))
- (home-page "https://www.lfd.uci.edu/~gohlke/")
- (synopsis "Read and write TIFF(r) files")
- (description "This package lets you read image and metadata from many
- bio-scientific formats such as plain TIFF, BigTIFF, OME-TIFF, STK, LSM, SGI,
- NIH, ImageJ, MicroManager, MD GEL, and FluoView files. It also lets you write
- numpy arrays to TIFF, BigTIFF, and ImageJ hyperstack compatible files.")
- (license license:bsd-3)))
- (define-public python-lfdfiles
- (package
- (name "python-lfdfiles")
- (version "2021.2.22")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "lfdfiles" version))
- (sha256
- (base32
- "12fxm4v805dgjrih7x6jnl1wd7y7jw1rkhjs3d4am8s6qk1cbar2"))
- (modules '((guix build utils)))
- (snippet
- '(begin
- ;; Delete pre-generated Cython files.
- (for-each delete-file (find-files "lfdfiles" "_.*\\.c$"))
- #t))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f)) ; No tests exist, despite a test dependency on pytest.
- (propagated-inputs
- (list python-click python-numpy python-tifffile))
- (native-inputs (list python-cython))
- (home-page "https://www.lfd.uci.edu/~gohlke/")
- (synopsis "Work with LFD data files")
- (description
- "Lfdfiles is a Python library and console script for reading, writing,
- converting, and viewing many of the proprietary file formats used to store
- experimental data and metadata at the Laboratory for Fluorescence Dynamics.")
- (license license:bsd-3)))
- (define-public python-imageio
- (package
- (name "python-imageio")
- (version "2.8.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "imageio" version))
- (sha256
- (base32
- "1ksjl523fm0fikrd85llxfba35rc1qsgwadgr6mbn9kis79xcpzv"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f ; many tests require online data
- #:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key outputs inputs tests? #:allow-other-keys)
- (if tests?
- (begin
- ;; Make installed package available for running the tests.
- (add-installed-pythonpath inputs outputs)
- (invoke "pytest" "-vv"))
- #t))))))
- (propagated-inputs
- (list python-numpy python-pillow python-psutil))
- (native-inputs
- (list python-pytest))
- (home-page "https://imageio.github.io/")
- (synopsis "Library for reading and writing a wide range of image data")
- (description
- "Imageio is a Python library that provides an easy interface to read and
- write a wide range of image data, including animated images, video, volumetric
- data, and scientific formats.")
- (license license:bsd-2)))
- (define-public python-pycparser
- (package
- (name "python-pycparser")
- (version "2.20")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pycparser" version))
- (sha256
- (base32
- "1w0m3xvlrzq4lkbvd1ngfm8mdw64r1yxy6n7djlw6qj5d0km6ird"))))
- (outputs '("out" "doc"))
- (build-system python-build-system)
- (native-inputs
- (list pkg-config))
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (with-directory-excursion "tests"
- (invoke "python" "all_tests.py"))
- #t))
- (add-after 'install 'install-doc
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
- (doc (string-append data "/doc/" ,name "-" ,version))
- (examples (string-append doc "/examples")))
- (mkdir-p examples)
- (for-each (lambda (file)
- (copy-file (string-append "." file)
- (string-append doc file)))
- '("/README.rst" "/CHANGES" "/LICENSE"))
- (copy-recursively "examples" examples)
- #t))))))
- (home-page "https://github.com/eliben/pycparser")
- (synopsis "C parser in Python")
- (description
- "Pycparser is a complete parser of the C language, written in pure Python
- using the PLY parsing library. It parses C code into an AST and can serve as
- a front-end for C compilers or analysis tools.")
- (license license:bsd-3)))
- (define-public python2-pycparser
- (package-with-python2 python-pycparser))
- (define-public python-xlsxwriter
- (package
- (name "python-xlsxwriter")
- (version "1.3.9")
- (source
- (origin
- ;; There are no tests in the PyPI tarball.
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/jmcnamara/XlsxWriter")
- (commit (string-append "RELEASE_" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "04idf331rp0iyhlnh7268jmim8ydw4jjb81hr5rh548sqnq4bhpl"))))
- (build-system python-build-system)
- (home-page "https://github.com/jmcnamara/XlsxWriter")
- (synopsis "Python module for creating Excel XLSX files")
- (description
- "XlsxWriter is a Python module that can be used to write text, numbers,
- formulas and hyperlinks to multiple worksheets in an Excel 2007+ XLSX file.")
- (license license:bsd-2)))
- (define-public python-pywavelets
- (package
- (name "python-pywavelets")
- (version "1.2.0")
- (home-page "https://github.com/PyWavelets/pywt")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "PyWavelets" version))
- (sha256
- (base32
- "13csbr6ls9q9ww53z2xwwsj0hpsz88rj2iwp623h0kmv8yq6kgbc"))))
- (build-system python-build-system)
- (arguments
- '(#:modules ((ice-9 ftw)
- (srfi srfi-1)
- (srfi srfi-26)
- (guix build utils)
- (guix build python-build-system))
- #:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (let ((cwd (getcwd))
- (libdir (find (cut string-prefix? "lib." <>)
- (scandir "build"))))
- (with-directory-excursion (string-append cwd "/build/" libdir)
- (invoke "pytest" "-vv"))))))))
- (native-inputs
- (list python-matplotlib ;for tests
- python-pytest))
- (propagated-inputs
- (list python-numpy))
- (synopsis "Wavelet transforms in Python")
- (description
- "PyWavelets is a library for wavelet transforms in Python. Wavelets are
- mathematical basis functions that are localized in both time and frequency.
- Wavelet transforms are time-frequency transforms employing wavelets. They are
- similar to Fourier transforms, the difference being that Fourier transforms are
- localized only in frequency instead of in time and frequency.")
- (license license:expat)))
- (define-public python-pywal
- (package
- (name "python-pywal")
- (version "3.3.0")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/dylanaraps/pywal")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32 "039m7dch479hlwddynacdrr0klz6a5bdly5swqbs94hfimficiyf"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-before 'check 'fix-home-directory
- (lambda _
- ;; Tests fail with "Permission denied: '/homeless-shelter'".
- (setenv "HOME" "/tmp")
- #t)))))
- (inputs
- (list imagemagick))
- (home-page "https://github.com/dylanaraps/pywal")
- (synopsis "Color palette generator and applicator")
- (description
- "Pywal is a tool that generates a color palette from the dominant colors
- in an image. It then applies the colors system-wide and on-the-fly in all of
- your favourite programs.")
- (license license:expat)))
- (define-public python-click-didyoumean
- (package
- (name "python-click-didyoumean")
- (version "0.3.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "click-didyoumean" version))
- (sha256
- (base32 "0dc0xrmqbw0idpx843ahzzvivmvx3fcfsm3k54lnssyra7cg117i"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f)) ; no tests in PyPI and no setup.py in github
- (propagated-inputs
- (list python-click))
- (home-page "https://github.com/timofurrer/click-didyoumean")
- (synopsis "Git-like did-you-mean feature in Click")
- (description
- "This plugin enables git-like did-you-mean feature in Click.")
- (license license:expat)))
- (define-public python-pywinrm
- (package
- (name "python-pywinrm")
- (version "0.4.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pywinrm" version))
- (sha256
- (base32
- "10gabhhg3rgacd5ahmi2r128z99fzbrbx6mz1nnq0dxmhmn5rpjf"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-six python-requests_ntlm python-xmltodict
- python-kerberos))
- (native-inputs
- (list python-mock python-pytest))
- (home-page "https://github.com/diyan/pywinrm/")
- (synopsis
- "Python library for Windows Remote Management (WinRM)")
- (description
- "pywinrm is a Python client for the Windows Remote Management (WinRM)
- service. It allows you to invoke commands on target Windows machines from
- any machine that can run Python.")
- (license license:expat)))
- (define-public python-xcffib
- (package
- (name "python-xcffib")
- (version "0.11.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "xcffib" version))
- (sha256
- (base32
- "0nkglsm9nbhv238iagmmsjcz6lf1yfdvp5kmspphdj385vz9r50j"))))
- (build-system python-build-system)
- (inputs
- (list libxcb))
- (propagated-inputs
- (list python-cffi ; used at run time
- python-six))
- (arguments
- `(;; FIXME: Tests need more work. See ".travis.yml" in the repository.
- #:tests? #f
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'fix-libxcb-path
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((libxcb (assoc-ref inputs "libxcb")))
- (substitute* '("xcffib/__init__.py")
- (("soname = ctypes.util.find_library.*xcb.*")
- (string-append "soname = \"" libxcb "/lib/libxcb.so\"\n")))
- #t)))
- (add-after 'install 'install-doc
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((doc (string-append (assoc-ref outputs "out") "/share"
- "/doc/" ,name "-" ,version)))
- (mkdir-p doc)
- (copy-file "README.md"
- (string-append doc "/README.md"))
- #t))))))
- (home-page "https://github.com/tych0/xcffib")
- (synopsis "XCB Python bindings")
- (description
- "Xcffib is a replacement for xpyb, an XCB Python bindings. It adds
- support for Python 3 and PyPy. It is based on cffi.")
- (license license:expat)))
- (define-public python2-xcffib
- (package-with-python2 python-xcffib))
- (define-public python-cairocffi
- (package
- (name "python-cairocffi")
- (version "1.2.0")
- (source
- (origin
- ;; The PyPI archive does not include the documentation, so use Git.
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/Kozea/cairocffi")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "1ypw0c2lr43acn57hbmckk183zq4h477j7p4ig2zjvw0mcpvia50"))))
- (build-system python-build-system)
- (outputs '("out" "doc"))
- (inputs
- (list glib gtk+ gdk-pixbuf cairo))
- (native-inputs
- (list python-numpy
- python-pytest
- python-pytest-cov
- python-pytest-runner
- python-sphinx
- python-sphinx-rtd-theme))
- (propagated-inputs
- (list python-xcffib)) ; used at run time
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'patch-paths
- (lambda* (#:key inputs #:allow-other-keys)
- (substitute* "cairocffi/__init__.py"
- ;; Hack the dynamic library loading mechanism.
- (("find_library\\(library_name\\)")
- "\"found\"")
- (("filenames = \\(library_filename,\\) \\+ filenames")
- "pass")
- (("libcairo.so.2")
- (search-input-file inputs "/lib/libcairo.so.2")))
- (substitute* "cairocffi/pixbuf.py"
- (("libgdk_pixbuf-2.0.so.0")
- (search-input-file inputs "/lib/libgdk_pixbuf-2.0.so.0"))
- (("libgobject-2.0.so.0")
- (search-input-file inputs "/lib/libgobject-2.0.so.0"))
- (("libglib-2.0.so.0")
- (search-input-file inputs "/lib/libglib-2.0.so.0"))
- (("libgdk-3.so.0")
- (search-input-file inputs "/lib/libgdk-3.so.0")))))
- (add-after 'unpack 'disable-linters
- ;; Their check fails; none of our business.
- (lambda _
- (substitute* "setup.cfg"
- ((".*pytest-flake8.*") "")
- ((".*pytest-isort.*") "")
- (("--flake8") "")
- (("--isort") ""))
- #t))
- (add-after 'install 'install-doc
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
- (doc (string-append data "/doc/" ,name "-" ,version))
- (html (string-append doc "/html")))
- (setenv "LD_LIBRARY_PATH"
- (string-append (assoc-ref inputs "cairo") "/lib" ":"
- (assoc-ref inputs "gdk-pixbuf") "/lib"))
- (setenv "LANG" "en_US.UTF-8")
- (mkdir-p html)
- (for-each (lambda (file)
- (copy-file (string-append "." file)
- (string-append doc file)))
- '("/README.rst" "/NEWS.rst"))
- (system* "python" "setup.py" "build_sphinx")
- (copy-recursively "docs/_build/html" html)
- #t))))))
- (home-page "https://github.com/Kozea/cairocffi")
- (synopsis "Python bindings and object-oriented API for Cairo")
- (description
- "Cairocffi is a CFFI-based drop-in replacement for Pycairo, a set of
- Python bindings and object-oriented API for cairo. Cairo is a 2D vector
- graphics library with support for multiple backends including image buffers,
- PNG, PostScript, PDF, and SVG file output.")
- (license license:bsd-3)))
- (define-public python-decorator
- (package
- (name "python-decorator")
- (version "5.0.9")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "decorator" version))
- (sha256
- (base32 "1mcy64hllgm938v8k1x2a4g0q9swsnrfnsvhz59kr28a6ajgpv3j"))))
- (build-system python-build-system)
- (home-page "https://pypi.org/project/decorator/")
- (synopsis "Python module to simplify usage of decorators")
- (description
- "The aim of the decorator module is to simplify the usage of decorators
- for the average programmer, and to popularize decorators usage giving examples
- of useful decorators, such as memoize, tracing, redirecting_stdout, locked,
- etc. The core of this module is a decorator factory.")
- (license license:expat)
- (properties `((python2-variant . ,(delay python2-decorator))))))
- ;; Version 5 does not support Python 2
- (define-public python2-decorator
- (package
- (inherit (package-with-python2
- (strip-python2-variant python-decorator)))
- (version "4.3.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "decorator" version))
- (sha256
- (base32 "0308djallnh00v112y5b7nadl657ysmkp6vc8xn51d6yzc9zm7n3"))))))
- (define-public python-drmaa
- (package
- (name "python-drmaa")
- (version "0.7.7")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "drmaa" version))
- (sha256
- (base32 "0xzqriqyvk5b8hszbavsyxd29wm3sxirm8zvvdm73rs2iq7w4hkx"))))
- (build-system python-build-system)
- ;; The test suite requires libdrmaa which is provided by the cluster
- ;; environment. At runtime the environment variable DRMAA_LIBRARY_PATH
- ;; should be set to the path of the libdrmaa library.
- (arguments
- '(#:tests? #f
- #:phases (modify-phases %standard-phases
- ;; Loading the library fails because DRMAA_LIBRARY_PATH
- ;; is not configured.
- (delete 'sanity-check))))
- (home-page "https://pypi.org/project/drmaa/")
- (synopsis "Python bindings for the DRMAA library")
- (description
- "A Python package for Distributed Resource Management (DRM) job
- submission and control. This package is an implementation of the DRMAA 1.0
- Python language binding specification.")
- (license license:bsd-3)))
- (define-public python2-drmaa
- (package-with-python2 python-drmaa))
- (define-public python-grako
- (package
- (name "python-grako")
- (version "3.99.9")
- (source
- (origin
- (method url-fetch)
- (uri
- (pypi-uri "grako" version ".zip"))
- (sha256
- (base32
- "0r63i68wcnv63rfjkasq1ah81frz61a6mzbcnaxhrkdpx84p7hzw"))))
- (build-system python-build-system)
- (arguments '(#:tests? #f)) ; Test file 'grako.ebnf' is missing from archive.
- (native-inputs
- (list unzip python-pytest python-pytest-runner))
- (home-page "https://bitbucket.org/neogeny/grako")
- (synopsis "EBNF parser generator")
- (description
- "Grako takes a grammar in a variation of EBNF as input, and outputs a
- memoizing PEG/Packrat parser in Python.")
- (license license:bsd-3)))
- (define-public python2-grako
- (package-with-python2 python-grako))
- (define-public python-grandalf
- (package
- (name "python-grandalf")
- (version "0.7")
- (source
- (origin
- ;; There's no source tarball on PyPI.
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/bdcht/grandalf")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "03p8w8ljpb87qbyldm3s6b7qi30hfcn43h33iwlgqcf31fjsyr4g"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "python" "setup.py" "pytest"))))))
- (native-inputs
- (list python-pytest python-pytest-runner))
- (propagated-inputs
- (list python-numpy python-ply))
- (home-page "https://github.com/bdcht/grandalf")
- (synopsis "Graph and drawing algorithms framework")
- (description
- "Grandalf is a Python package made for experimentations with graphs
- drawing algorithms. It is written in pure Python, and currently implements
- two layouts: the Sugiyama hierarchical layout and the force-driven or energy
- minimization approach. While not as fast or featured as graphviz or other
- libraries like OGDF (C++), it provides a way to walk and draw graphs no larger
- than thousands of nodes, while keeping the source code simple enough to tweak
- and hack any part of it for experimental purpose. With a total of about 1500
- lines of Python, the code involved in drawing the Sugiyama (dot) layout fits
- in less than 600 lines. The energy minimization approach is comprised of only
- 250 lines!
- Grandalf does only 2 not-so-simple things:
- @itemize
- @item computing the nodes (x,y) coordinates (based on provided nodes
- dimensions, and a chosen layout)
- @item routing the edges with lines or nurbs
- @end itemize
- It doesn’t depend on any GTK/Qt/whatever graphics toolkit. This means that it
- will help you find where to draw things like nodes and edges, but it’s up to
- you to actually draw things with your favorite toolkit.")
- ;; The user can choose either license.
- (license (list license:gpl2 license:epl1.0))))
- (define-public python-gridmap
- (package
- (name "python-gridmap")
- (version "0.14.0")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/pygridtools/gridmap")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "0v0sgpg6pz8h61f9aqjf5xk0ipr512bbz8dxzjjylksj135qr19l"))))
- (build-system python-build-system)
- (arguments
- '(#:tests? #f ;FIXME: Requires python-cherrypy.
- #:phases (modify-phases %standard-phases
- ;; Importing the web server module requires cherrypy, too.
- (delete 'sanity-check))))
- (propagated-inputs
- (list python-psutil python-drmaa python-pyzmq))
- (home-page "https://github.com/pygridtools/gridmap")
- (synopsis "Create jobs on a cluster directly from Python")
- (description
- "Gridmap is a Python package to allow you to easily create jobs on the
- cluster directly from Python. You can directly map Python functions onto the
- cluster without needing to write any wrapper code yourself.")
- (license license:gpl3+)))
- (define-public python-honcho
- (package
- (name "python-honcho")
- (version "1.1.0")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/nickstenning/honcho")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "1y0r8dw4pqcq7r4n58ixjdg1iy60lp0gxsd7d2jmhals16ij71rj"))))
- (build-system python-build-system)
- (native-inputs
- (list python-pytest python-mock python-tox which)) ;for tests
- (propagated-inputs
- (list python-jinja2))
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (delete 'check)
- (add-after 'install 'check
- (lambda* (#:key outputs inputs #:allow-other-keys)
- ;; fix honcho path in testsuite
- (substitute* "tests/conftest.py"
- (("'honcho'") (string-append "'" (assoc-ref outputs "out")
- "/bin/honcho" "'")))
- ;; It's easier to run tests after install.
- ;; Make installed package available for running the tests
- (add-installed-pythonpath inputs outputs)
- ;; Skip failing test_export
- (invoke "py.test" "-v" "-k" "not test_export"))))))
- (home-page "https://github.com/nickstenning/honcho")
- (synopsis "Manage Procfile-based applications")
- (description
- "A Procfile is a file which describes how to run an application
- consisting of several processes. honcho starts all listed processes.
- The output of all running processes is collected by honcho and
- displayed.")
- (license license:expat)))
- (define-public python-pebble
- (package
- (name "python-pebble")
- (version "4.6.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "Pebble" version))
- (sha256
- (base32 "16siqc3brbk7dp4d9sg48bjl6a8wyy24aib3il1hf4y2624draxh"))))
- (build-system python-build-system)
- (native-inputs
- (list python-pytest))
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _ (invoke "python" "-m" "pytest" "-sv"))))))
- (home-page "https://github.com/noxdafox/pebble")
- (synopsis "Threading and multiprocessing for Python")
- (description
- "Pebble aims to help manage threads and processes in an easier way. It
- wraps Python's standard library threading and multiprocessing objects.")
- (license license:lgpl3+)))
- (define-public python-pexpect
- (package
- (name "python-pexpect")
- (version "4.8.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pexpect" version))
- (sha256
- (base32 "032cg337h8awydgypz6f4wx848lw8dyrj4zy988x0lyib4ws8rgw"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-before 'check 'prepare-tests
- (lambda _
- (substitute* (find-files "tests")
- (("/bin/ls") (which "ls"))
- (("/bin/echo") (which "echo"))
- (("/bin/which") (which "which"))
- ;; Many tests try to use the /bin directory which
- ;; is not present in the build environment.
- ;; Use one that's non-empty and unlikely to change.
- (("/bin'") "/dev'")
- ;; Disable failing test. See upstream bug report
- ;; https://github.com/pexpect/pexpect/issues/568
- (("def test_bash") "def _test_bash"))
- ;; XXX: Socket connection test gets "Connection reset by peer".
- ;; Why does it not work? Delete for now.
- (delete-file "tests/test_socket.py")
- #t))
- (replace 'check (lambda _ (invoke "nosetests" "-v"))))))
- (native-inputs
- `(("python-nose" ,python-nose)
- ("python-pytest" ,python-pytest)
- ("man-db" ,man-db)
- ("which" ,which)
- ("bash-full" ,bash))) ;full Bash for 'test_replwrap.py'
- (propagated-inputs
- (list python-ptyprocess))
- (home-page "http://pexpect.readthedocs.org/")
- (synopsis "Controlling interactive console applications")
- (description
- "Pexpect is a pure Python module for spawning child applications;
- controlling them; and responding to expected patterns in their output.
- Pexpect works like Don Libes’ Expect. Pexpect allows your script to spawn a
- child application and control it as if a human were typing commands.")
- (license license:isc)))
- (define-public python2-pexpect
- (package-with-python2 python-pexpect))
- (define-public python-setuptools-scm
- (package
- (name "python-setuptools-scm")
- (version "6.3.2")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "setuptools_scm" version))
- (sha256
- (base32 "1wm0i27siyy1yqr9rv7lqvb65agay9051yi8jzmi8dgb3q4ai6m4"))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-packaging",python-packaging-bootstrap)
- ("python-tomli" ,python-tomli)))
- (home-page "https://github.com/pypa/setuptools_scm/")
- (synopsis "Manage Python package versions in SCM metadata")
- (description
- "Setuptools_scm handles managing your Python package versions in
- @dfn{software configuration management} (SCM) metadata instead of declaring
- them as the version argument or in a SCM managed file.")
- (license license:expat)
- (properties `((python2-variant . ,(delay python2-setuptools-scm))))))
- (define-public python2-setuptools-scm
- (let ((base (package-with-python2
- (strip-python2-variant python-setuptools-scm))))
- (package/inherit base
- (version "5.0.2") ;no python 2 support in version 6
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "setuptools_scm" version))
- (sha256
- (base32
- "1j75i8avp9fhrkpbabsa8vyvbi49kmxlq6l10xir9qs96kfwx843"))))
- (propagated-inputs '()))))
- (define-public python-sexpdata
- (package
- (name "python-sexpdata")
- (version "0.0.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "sexpdata" version))
- (sha256
- (base32
- "1q4lsjyzzqrdv64l0pv4ij9nd8gqhvxqcrpxc2xpxs652sk2gj0s"))))
- (build-system python-build-system)
- (home-page "https://github.com/jd-boyd/sexpdata")
- (synopsis "S-expression parser for Python")
- (description
- "Sexpdata is an S-expression parser/serializer. It has load and dump
- functions like pickle, json or PyYAML module.")
- (license license:bsd-3)))
- (define-public python-pathlib2
- (package
- (name "python-pathlib2")
- (version "2.3.6")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pathlib2" version))
- (sha256
- (base32
- "0psyg60vk8wca473djrh0v9gb853z8wcawi8im5dyg00amawp2vx"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-scandir python-six))
- (home-page "https://pypi.org/project/pathlib2/")
- (synopsis "Object-oriented file system paths")
- (description "The goal of pathlib2 is to provide a backport of the
- standard @code{pathlib} module which tracks the standard library module, so
- all the newest features of the standard @code{pathlib} can be used also on
- older Python versions.")
- (license license:expat)))
- (define-public python-importlib-resources
- (package
- (name "python-importlib-resources")
- (version "3.0.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "importlib_resources" version))
- (sha256
- (base32
- "1hq626mx5jl9zfl0wdrjkxsnh8qd98fqv322n68b9251xjk4bxqr"))))
- (build-system python-build-system)
- (native-inputs
- (list python-setuptools-scm python-toml))
- (home-page "http://importlib-resources.readthedocs.io/")
- (synopsis "Read resources from Python packages")
- (description
- "@code{importlib_resources} is a backport of Python 3's standard library
- @code{importlib.resources} module for Python 2.7, and Python 3.")
- (properties `((python2-variant . ,(delay python2-importlib-resources))))
- (license license:asl2.0)))
- (define-public python2-importlib-resources
- (package
- (name "python2-importlib-resources")
- (version "1.0.2")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "importlib_resources" version))
- (sha256
- (base32
- "0y3hg12iby1qyaspnbisz4s4vxax7syikk3skznwqizqyv89y9yk"))))
- (build-system python-build-system)
- (arguments
- `(#:python ,python-2
- #:phases (modify-phases %standard-phases
- ;; The build system tests for python-wheel, but it is
- ;; not required for Guix nor the test suite. Just drop
- ;; it to make bootstrapping pytest easier.
- (add-after 'unpack 'drop-wheel-dependency
- (lambda _
- (substitute* "setup.cfg"
- (("^[[:blank:]]+wheel")
- ""))
- #t)))))
- (propagated-inputs
- (list python2-pathlib2 python2-typing))
- (home-page "https://gitlab.com/python-devs/importlib_resources")
- (synopsis "Backport of @code{importlib.resources} from Python 3.7")
- (description
- "This package provides an implementation of @code{importlib.resources}
- for older versions of Python.")
- (license license:asl2.0)))
- ;; For importlib-metadata-bootstrap below.
- (define-public python2-importlib-resources-bootstrap
- (hidden-package
- (package/inherit
- python2-importlib-resources
- (name "python2-importlib-resources-bootstrap")
- (propagated-inputs
- `(("python-pathlib2-bootstrap" ,python2-pathlib2-bootstrap)
- ("python-typing" ,python2-typing))))))
- (define-public python-importlib-metadata
- (package
- (name "python-importlib-metadata")
- (version "1.5.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "importlib_metadata" version))
- (sha256
- (base32
- "00ikdj4gjhankdljnz7g5ggak4k9lql2926x0x117ir9j2lv7x86"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-zipp))
- (native-inputs
- (list python-setuptools-scm python-pyfakefs python-packaging))
- (home-page "https://importlib-metadata.readthedocs.io/")
- (synopsis "Read metadata from Python packages")
- (description
- "@code{importlib_metadata} is a library which provides an API for
- accessing an installed Python package's metadata, such as its entry points or
- its top-level name. This functionality intends to replace most uses of
- @code{pkg_resources} entry point API and metadata API. Along with
- @code{importlib.resources} in Python 3.7 and newer, this can eliminate the
- need to use the older and less efficient @code{pkg_resources} package.")
- (properties `((python2-variant . ,(delay python2-importlib-metadata))))
- (license license:asl2.0)))
- (define-public python2-importlib-metadata
- (let ((base (package-with-python2 (strip-python2-variant
- python-importlib-metadata))))
- (package/inherit
- base
- (name "python2-importlib-metadata")
- (native-inputs
- `(("python-setuptools-scm" ,python2-setuptools-scm)
- ("python-pyfakefs" ,python2-pyfakefs-bootstrap)
- ("python-packaging" ,python2-packaging-bootstrap)))
- (propagated-inputs
- `(("python-configparser" ,python2-configparser)
- ("python-contextlib2" ,python2-contextlib2)
- ("python-importlib-resources" ,python2-importlib-resources)
- ("python-pathlib2" ,python2-pathlib2)
- ,@(package-propagated-inputs base))))))
- ;; This package is used by python2-pytest, and thus must not depend on it.
- (define-public python2-importlib-metadata-bootstrap
- (hidden-package
- (package/inherit
- python2-importlib-metadata
- (name "python2-importlib-metadata-bootstrap")
- (arguments
- `(#:tests? #f
- ,@(package-arguments python2-importlib-metadata)))
- (propagated-inputs
- `(("python-zipp" ,python2-zipp-bootstrap)
- ("python-pathlib2" ,python2-pathlib2-bootstrap)
- ("python-configparser" ,python2-configparser)
- ("python-contextlib2" ,python2-contextlib2-bootstrap)
- ("python-importlib-resources" ,python2-importlib-resources-bootstrap))))))
- (define-public python-importmagic
- (package
- (name "python-importmagic")
- (version "0.1.7")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "importmagic" version))
- (sha256
- (base32
- "1n7qxa1snj06aw45mcfz7bxc46zp7fxj687140g2k6jcnyjmfxrz"))))
- (build-system python-build-system)
- (arguments
- (list #:phases
- #~(modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "pytest" "-v")))))))
- (native-inputs
- (list python-pytest))
- (home-page "https://github.com/alecthomas/importmagic")
- (synopsis "Library for adding, removing and managing Python imports")
- (description
- "Importmagic is a Python library for automatically managing imports by
- finding unresolved symbols in Python code and their corresponding imports.")
- (license license:bsd-3)))
- (define-public python-inotify-simple
- (package
- (name "python-inotify-simple")
- (version "1.3.5")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/chrisjbillington/inotify_simple")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32 "1dv9svrcz31acyq9smjlnw75xv3x5wpn5h6s8j8h0vrqyl3d7l05"))))
- (build-system python-build-system)
- (home-page
- "https://github.com/chrisjbillington/inotify_simple")
- (synopsis "Simple wrapper around inotify library")
- (description
- "@code{inotify-simple} is a simple wrapper around inotify library.")
- (license license:bsd-3)))
- (define-public python-jaraco-packaging
- (package
- (name "python-jaraco-packaging")
- (version "6.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "jaraco.packaging" version))
- (sha256
- (base32
- "0zimrnkh33b9g8ffw11mjh6kvs54cy5gcjw1h5cl1r7dc833dmkm"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-pytest
- python-pytest-checkdocs
- python-pytest-flake8
- python-rst.linker
- python-setuptools
- python-setuptools-scm
- python-six
- python-sphinx))
- (home-page "https://github.com/jaraco/jaraco.packaging")
- (synopsis "Tools to supplement packaging Python releases")
- (description
- "This package provides various tools to supplement packaging Python
- releases.")
- (license license:expat)))
- (define-public python-pathpy
- (package
- (name "python-pathpy")
- (version "11.5.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "path.py" version))
- (sha256
- (base32 "0ir9j1haq2jbi7aip6k2fa9l7q1l03k4hp1awxhjhcwzsnwp3ll8"))))
- (outputs '("out" "doc"))
- (build-system python-build-system)
- (propagated-inputs
- (list python-appdirs python-importlib-metadata))
- (native-inputs
- (list python-setuptools-scm
- python-sphinx
- python-rst.linker
- python-pytest
- python-pytest-runner
- python-jaraco-packaging))
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'build 'build-doc
- (lambda _
- (setenv "LANG" "en_US.UTF-8")
- (invoke "python" "setup.py" "build_sphinx")))
- (add-after 'install 'install-doc
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
- (doc (string-append data "/doc/" ,name "-" ,version))
- (html (string-append doc "/html")))
- (mkdir-p html)
- (for-each (lambda (file)
- (copy-file file (string-append doc "/" file)))
- '("README.rst" "CHANGES.rst"))
- (copy-recursively "build/sphinx/html" html)
- #t)))
- (replace 'check
- (lambda _
- ;; The import time test aborts if an import takes longer than
- ;; 100ms. It may very well take a little longer than that.
- (invoke "pytest" "-v" "-k" "not test_import_time"))))))
- (home-page "https://github.com/jaraco/path.py")
- (synopsis "Python module wrapper for built-in os.path")
- (description
- "@code{path.py} implements path objects as first-class entities, allowing
- common operations on files to be invoked on those path objects directly.")
- (license license:expat)))
- (define-public python-simplegeneric
- (package
- (name "python-simplegeneric")
- (version "0.8.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "simplegeneric" version ".zip"))
- (sha256
- (base32 "0wwi1c6md4vkbcsfsf8dklf3vr4mcdj4mpxkanwgb6jb1432x5yw"))))
- (build-system python-build-system)
- (native-inputs
- (list unzip))
- (home-page "http://cheeseshop.python.org/pypi/simplegeneric")
- (synopsis "Python module for simple generic functions")
- (description
- "The simplegeneric module lets you define simple single-dispatch generic
- functions, akin to Python’s built-in generic functions like @code{len()},
- @code{iter()} and so on. However, instead of using specially-named methods,
- these generic functions use simple lookup tables, akin to those used by
- e.g. @code{pickle.dump()} and other generic functions found in the Python
- standard library.")
- (license license:zpl2.1)))
- (define-public python2-simplegeneric
- (package-with-python2 python-simplegeneric))
- (define-public python-ipython-genutils
- ;; TODO: This package is retired, check if can be removed, see description.
- (package
- (name "python-ipython-genutils")
- (version "0.1.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "ipython_genutils" version))
- (sha256
- (base32 "19l2pp1c64ansr89l3cqh19jdi2ixhssdzx0vz4n6r52a6i281is"))))
- (build-system python-build-system)
- (arguments `(#:tests? #f)) ; no tests
- (home-page "https://ipython.org")
- (synopsis "Vestigial utilities from IPython")
- (description
- "This package provides retired utilities from IPython. No packages
- outside IPython/Jupyter should depend on it.
- This package shouldn't exist. It contains some common utilities shared by
- Jupyter and IPython projects during The Big Split. As soon as possible, those
- packages will remove their dependency on this, and this package will go
- away.")
- (license license:bsd-3)))
- (define-public python2-ipython-genutils
- (package-with-python2 python-ipython-genutils))
- (define-public python-ipyparallel
- (package
- (name "python-ipyparallel")
- (version "6.2.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "ipyparallel" version))
- (sha256
- (base32
- "0rf0dbpxf5z82bw8lsjj45r3wdd4wc74anz4wiiaf2rbjqlb1ivn"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f ; RuntimeError: IO Loop failed to start
- #:phases
- (modify-phases %standard-phases
- (add-before 'check 'prepare-for-tests
- (lambda _
- (setenv "HOME" (getcwd))
- #t)))))
- (propagated-inputs
- (list python-dateutil
- python-decorator
- python-ipykernel
- python-ipython
- python-ipython-genutils
- python-jupyter-client
- python-pyzmq
- python-tornado
- python-traitlets))
- (native-inputs
- (list python-ipython
- python-mock
- python-nose
- python-pytest
- python-pytest-cov
- python-testpath))
- (home-page "https://ipython.org/")
- (synopsis "Interactive Parallel Computing with IPython")
- (description
- "@code{ipyparallel} is a Python package and collection of CLI scripts for
- controlling clusters for Jupyter. @code{ipyparallel} contains the following
- CLI scripts:
- @enumerate
- @item ipcluster - start/stop a cluster
- @item ipcontroller - start a scheduler
- @item ipengine - start an engine
- @end enumerate")
- (license license:bsd-3)))
- (define-public python-ipython-cluster-helper
- (package
- (name "python-ipython-cluster-helper")
- (version "0.6.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "ipython-cluster-helper" version))
- (sha256
- (base32
- "1l6mlwxlkxpbvawfwk6qffich7ahg9hq2bxfissgz6144p3k4arj"))
- (modules '((guix build utils)))
- (snippet
- '(begin (substitute* "requirements.txt"
- (("ipython.*") "ipython\n"))
- #t))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f ; Test suite can't find IPython.
- #:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key inputs outputs tests? #:allow-other-keys)
- (if tests?
- (begin
- (setenv "HOME" (getcwd))
- (add-installed-pythonpath inputs outputs)
- (invoke "python" "example/example.py" "--local"))
- #t))))))
- (propagated-inputs
- (list python-ipyparallel
- python-ipython
- python-netifaces
- python-pyzmq
- python-setuptools
- python-six))
- (home-page "https://github.com/roryk/ipython-cluster-helper")
- (synopsis
- "Simplify IPython cluster start up and use for multiple schedulers")
- (description
- "@code{ipython-cluster-helper} creates a throwaway parallel IPython
- profile, launches a cluster and returns a view. On program exit it shuts the
- cluster down and deletes the throwaway profile.")
- (license license:expat)))
- (define-public python-ipython-sql
- (package
- (name "python-ipython-sql")
- (version "0.4.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "ipython-sql" version))
- (sha256
- (base32 "0v74ayc6vw98f4jljmwy45qpqbcbhlrb4g1qdyypq9sppxcqx21y"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'fix-build
- (lambda _
- ;; The "NEWS.rst" file is missing from the PyPI distribution.
- ;; (see: https://github.com/catherinedevlin/ipython-sql/issues/164)
- (substitute* "setup.py"
- (("NEWS = [^\n]*") "")
- (("long_description=README \\+ '\\\\n\\\\n' \\+ NEWS,")
- "long_description=README,")))))))
- (propagated-inputs
- (list python-ipython
- python-ipython-genutils
- python-prettytable
- python-six
- python-sqlalchemy
- python-sqlparse))
- (home-page "https://github.com/catherinedevlin/ipython-sql")
- (synopsis "RDBMS access via IPython")
- (description "This library connects to a database, using SQLAlchemy URL
- connect strings, then issue SQL commands within IPython or IPython Notebook.")
- (license license:expat)))
- (define-public python-traitlets
- (package
- (name "python-traitlets")
- (version "4.3.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "traitlets" version))
- (sha256
- (base32
- "1xsrwgivpkxlbr4dfndfsi098s29yqgswgjc1qqn69yxklvfw8yh"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check (lambda _ (invoke "pytest" "-vv" "traitlets"))))))
- (propagated-inputs
- (list python-ipython-genutils python-decorator python-six))
- (native-inputs
- (list python-pytest))
- (home-page "https://ipython.org")
- (synopsis "Configuration system for Python applications")
- (description
- "Traitlets is a framework that lets Python classes have attributes with
- type checking, dynamically calculated default values, and ‘on change’
- callbacks. The package also includes a mechanism to use traitlets for
- configuration, loading values from files or from command line arguments. This
- is a distinct layer on top of traitlets, so you can use traitlets in your code
- without using the configuration machinery.")
- (license license:bsd-3)))
- (define-public python-jupyter-core
- (package
- (name "python-jupyter-core")
- (version "4.7.1")
- (source
- (origin
- (method url-fetch)
- (uri (string-append (pypi-uri "jupyter_core" version)))
- (sha256
- (base32
- "1d12j5hkff0xiax87pnhmzbsph3jqqzhz16h8xld7z2y4armq0kr"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key inputs outputs tests? #:allow-other-keys)
- (when tests?
- ; Some tests write to $HOME.
- (setenv "HOME" "/tmp")
- ; Some tests load the installed package.
- (add-installed-pythonpath inputs outputs)
- (invoke "pytest" "-vv"))))
- (add-after 'unpack 'patch-testsuite
- (lambda _
- ;; test_not_on_path() and test_path_priority() try to run a test
- ;; that loads jupyter_core, so we need GUIX_PYTHONPATH
- (substitute* "jupyter_core/tests/test_command.py"
- (("env = \\{'PATH': ''\\}")
- "env = {'PATH': '', 'PYTHONPATH': os.environ['GUIX_PYTHONPATH']}")
- (("env = \\{'PATH': str\\(b\\)\\}")
- "env = {'PATH': str(b), 'PYTHONPATH': os.environ['GUIX_PYTHONPATH']}"))
- #t))
- ;; Migration is running whenever etc/jupyter exists, but the
- ;; Guix-managed directory will never contain any migratable IPython
- ;; config files and cannot be written to anyway, so just pretend we
- ;; already did that.
- (add-after 'install 'disable-migration
- (lambda* (#:key outputs #:allow-other-keys)
- (mkdir-p (string-append (assoc-ref outputs "out") "/etc/jupyter"))
- (invoke "touch"
- (string-append
- (assoc-ref outputs "out")
- "/etc/jupyter/migrated")))))))
- (propagated-inputs
- (list python-traitlets))
- (native-inputs
- (list python-six python-pytest))
- ;; This package provides the `jupyter` binary and thus also exports the
- ;; search paths.
- (native-search-paths
- (list (search-path-specification
- (variable "JUPYTER_CONFIG_PATH")
- (files '("etc/jupyter")))
- (search-path-specification
- (variable "JUPYTER_PATH")
- (files '("share/jupyter")))))
- (home-page "https://jupyter.org/")
- (synopsis "Jupyter base package")
- (description
- "Jupyter core is the base package on which Jupyter projects rely.")
- (license license:bsd-3)))
- (define-public python-jupyter-client
- (package
- (name "python-jupyter-client")
- (version "6.1.12")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "jupyter_client" version))
- (sha256
- (base32
- "10p7fcgvv9hvz9zical9wk68ks5ssak2ykbzx65wm1k1hk8a3g64"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'set-tool-file-names
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((iproute (assoc-ref inputs "iproute")))
- (substitute* "jupyter_client/localinterfaces.py"
- (("'ip'")
- (string-append "'" iproute "/sbin/ip'")))
- #t)))
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- ;; Some tests try to write to $HOME.
- (setenv "HOME" "/tmp")
- (invoke "pytest" "-vv")))))))
- (inputs
- `(("iproute" ,iproute)))
- (propagated-inputs
- (list python-dateutil python-jupyter-core python-pyzmq
- python-tornado-6 python-traitlets))
- (native-inputs
- `(("python-pytest" ,python-pytest)
- ("python-pytest-timeout" ,python-pytest-timeout)
- ("python-async-generator" ,python-async-generator)
- ("python-mock" ,python-mock)
- ("python-msgpack" ,python-msgpack)
- ("python-ipython" ,python-ipython)
- ("python-ipykernel" ,python-ipykernel-bootstrap)))
- (home-page "https://jupyter.org/")
- (synopsis "Jupyter protocol implementation and client libraries")
- (description
- "The @code{jupyter_client} package contains the reference implementation
- of the Jupyter protocol. It also provides client and kernel management APIs
- for working with kernels, and the @code{jupyter kernelspec} entrypoint for
- installing @code{kernelspec}s for use with Jupyter frontends.")
- (license license:bsd-3)))
- ;; Bootstrap variant of jupyter-client, which breaks the loop between ipykernel
- ;; and jupyter-client by removing the former from its native-inputs and
- ;; disabling tests.
- (define-public python-jupyter-client-bootstrap
- (let ((base python-jupyter-client))
- (hidden-package
- (package
- (inherit base)
- (name "python-jupyter-client-bootstrap")
- (arguments
- `(#:tests? #f
- ,@(package-arguments base)))
- (native-inputs `())))))
- (define-public python-ipykernel
- (package
- (name "python-ipykernel")
- (version "5.5.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "ipykernel" version))
- (sha256
- (base32 "02f55cjkp5q64x7ikjxznbxwjpkdmfy237b9kg7dk1pxmzvy90m6"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (setenv "HOME" "/tmp")
- (invoke "pytest" "-v"))))
- (add-after 'install 'set-python-file-name
- (lambda* (#:key outputs #:allow-other-keys)
- ;; Record the absolute file name of the 'python' executable in
- ;; 'kernel.json'.
- (let ((out (assoc-ref outputs "out")))
- (substitute* (string-append out "/share/jupyter"
- "/kernels/python3/kernel.json")
- (("\"python\"")
- (string-append "\"" (which "python") "\"")))
- #t))))))
- (propagated-inputs
- (list python-ipython python-tornado-6 python-traitlets
- ;; imported at runtime during connect
- python-jupyter-client))
- (native-inputs
- (list python-flaky python-nose python-pytest))
- (home-page "https://ipython.org")
- (synopsis "IPython Kernel for Jupyter")
- (description
- "This package provides the IPython kernel for Jupyter.")
- (license license:bsd-3)))
- ;; Bootstrap variant of ipykernel, which uses the bootstrap jupyter-client to
- ;; break the cycle between ipykernel and jupyter-client.
- (define-public python-ipykernel-bootstrap
- (let ((parent python-ipykernel))
- (hidden-package
- (package
- (inherit parent)
- (name "python-ipykernel-bootstrap")
- (propagated-inputs
- `(("python-jupyter-client" ,python-jupyter-client-bootstrap)
- ,@(fold alist-delete (package-propagated-inputs parent)
- '("python-jupyter-client"))))))))
- (define-public python-pari-jupyter
- (package
- (name "python-pari-jupyter")
- (version "1.4.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pari-jupyter" version))
- (sha256
- (base32
- "1hwjr66vfjsx28qmxrgsp3z0px1xqwxv53byvsrbwbjp4pbp79sz"))))
- (build-system python-build-system)
- (arguments '(#:tests? #f)) ;no test suite
- (propagated-inputs
- (list python-ipykernel))
- (inputs
- (list pari-gp readline))
- (home-page "https://github.com/jdemeyer/pari-jupyter")
- (synopsis "Jupyter kernel for PARI/GP")
- (description "The package provides a PARI/GP kernel for Jupyter.")
- (license license:gpl3+)))
- (define-public python-backcall
- (package
- (name "python-backcall")
- (version "0.2.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "backcall" version))
- (sha256
- (base32
- "07jy4562lvnhkk6kfr3cphmizy88anlhmbwb8kdzlz2ypqkvzgaw"))))
- (build-system python-build-system)
- (home-page "https://github.com/takluyver/backcall/")
- (synopsis "Specifications for callback functions passed in to an API")
- (description
- "If your code lets other people supply callback functions, it's important
- to specify the function signature you expect, and check that functions support
- that. Adding extra parameters later would break other peoples code unless
- you're careful. The @code{backcall} package provides a way of specifying the
- callback signature using a prototype function.")
- (license license:bsd-3)))
- (define-public python-ipython
- (package
- (name "python-ipython")
- (version "7.27.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "ipython" version ".tar.gz"))
- (sha256
- (base32 "04xgymypnbfgf2q0d5b0hanjbjsp53f055sh1p8xlq52vyzmxdaq"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-backcall
- python-pyzmq
- python-prompt-toolkit-2
- python-terminado
- python-matplotlib
- python-matplotlib-inline
- python-numpy
- python-numpydoc
- python-jedi
- python-jinja2
- python-mistune
- python-pexpect
- python-pickleshare
- python-simplegeneric
- python-jsonschema
- python-traitlets
- python-nbformat
- python-pygments))
- (inputs
- (list readline which))
- (native-inputs
- (list graphviz
- pkg-config
- python-requests ;; for tests
- python-testpath
- python-nose))
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'make-docs-reproducible
- (lambda _
- (substitute* "IPython/sphinxext/ipython_directive.py"
- ((".*import datetime") "")
- ((".*datetime.datetime.now\\(\\)") "")
- (("%timeit") "# %timeit"))))
- ;; Tests can only be run after the library has been installed and not
- ;; within the source directory.
- (delete 'check)
- (add-after 'install 'check
- (lambda* (#:key inputs outputs tests? #:allow-other-keys)
- (if tests?
- (begin
- ;; Make installed package available for running the tests
- (add-installed-pythonpath inputs outputs)
- (setenv "HOME" "/tmp/") ;; required by a test
- ;; We only test the core because one of the other tests
- ;; tries to import ipykernel.
- (invoke "python" "IPython/testing/iptest.py"
- "-v" "IPython/core/tests")))))
- (add-before 'check 'fix-tests
- (lambda* (#:key inputs #:allow-other-keys)
- (substitute* "./IPython/utils/_process_posix.py"
- (("/usr/bin/env', 'which") (which "which")))
- (substitute* "./IPython/core/tests/test_inputtransformer.py"
- (("#!/usr/bin/env python")
- (string-append "#!" (which "python"))))
- ;; This test introduces a circular dependency on ipykernel
- ;; (which depends on ipython).
- (delete-file "IPython/core/tests/test_display.py")
- ;; AttributeError: module 'IPython.core' has no attribute 'formatters'
- (delete-file "IPython/core/tests/test_interactiveshell.py")
- ;; AttributeError: module 'matplotlib_inline' has no
- ;; attribute 'backend_inline'
- (delete-file "IPython/core/tests/test_pylabtools.py"))))))
- (home-page "https://ipython.org")
- (synopsis "IPython is a tool for interactive computing in Python")
- (description
- "IPython provides a rich architecture for interactive computing with:
- Powerful interactive shells, a browser-based notebook, support for interactive
- data visualization, embeddable interpreters and tools for parallel
- computing.")
- (properties '((cpe-name . "ipython")))
- (license license:bsd-3)))
- (define-public python-ipython-documentation
- (package
- (inherit python-ipython)
- (name "python-ipython-documentation")
- (version (package-version python-ipython))
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (delete 'build)
- (delete 'check)
- (replace 'install
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((data (string-append (assoc-ref outputs "out") "/share"))
- (doc (string-append data "/doc/" ,name "-" ,version))
- (html (string-append doc "/html"))
- (man1 (string-append data "/man/man1"))
- (info (string-append data "/info"))
- (examples (string-append doc "/examples"))
- (python-arg (string-append "PYTHON=" (which "python"))))
- (setenv "LANG" "en_US.utf8")
- (with-directory-excursion "docs"
- ;; FIXME: pdf fails to build
- ;;(system* "make" "pdf" "PAPER=a4")
- (system* "make" python-arg "html")
- ;; FIXME: the generated texi file contains ^@^@, which trips
- ;; up the parser.
- ;; (system* "make" python-arg "info")
- )
- (copy-recursively "docs/man" man1)
- (copy-recursively "examples" examples)
- (copy-recursively "docs/build/html" html)
- ;; (copy-file "docs/build/latex/ipython.pdf"
- ;; (string-append doc "/ipython.pdf"))
- (mkdir-p info)
- ;; (copy-file "docs/build/texinfo/ipython.info"
- ;; (string-append info "/ipython.info"))
- (copy-file "COPYING.rst" (string-append doc "/COPYING.rst")))
- #t)))))
- (inputs
- (list python-ipython python-ipykernel))
- (native-inputs
- `(("python-sphinx" ,python-sphinx)
- ("python-sphinx-rtd-theme" ,python-sphinx-rtd-theme)
- ;; FIXME: It's possible that a smaller union would work just as well.
- ("texlive" ,(texlive-updmap.cfg (list texlive-amsfonts
- texlive-capt-of
- texlive-fonts-ec
- texlive-generic-iftex
- texlive-pdftex
- texlive-latex-cmap
- texlive-latex-environ
- texlive-latex-eqparbox
- texlive-etoolbox
- texlive-latex-expdlist
- texlive-latex-fancyhdr
- texlive-latex-fancyvrb
- texlive-latex-fncychap
- texlive-latex-float
- texlive-latex-framed
- texlive-latex-geometry
- texlive-latex-graphics
- texlive-hyperref
- texlive-latex-mdwtools
- texlive-latex-multirow
- texlive-latex-needspace
- texlive-oberdiek
- texlive-latex-parskip
- texlive-latex-preview
- texlive-latex-tabulary
- texlive-latex-threeparttable
- texlive-latex-titlesec
- texlive-latex-trimspaces
- texlive-latex-ucs
- texlive-latex-upquote
- texlive-url
- texlive-latex-varwidth
- texlive-wrapfig)))
- ("texinfo" ,texinfo)))))
- (define-public python-urwid
- (package
- (name "python-urwid")
- (version "2.1.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "urwid" version))
- (sha256
- (base32
- "1bky2bra6673xx8jy0826znw6cmxs89wcwwzda8d025j3jffx2sq"))))
- (build-system python-build-system)
- (arguments
- (list
- #:phases
- #~(modify-phases %standard-phases
- (add-after 'unpack 'remove-vterm-tests
- ;; According to Debian these tests are cursed.
- ;; https://salsa.debian.org/python-team/packages/urwid/-/blob/debian/2.1.2-2/debian/changelog#L141
- (lambda _
- (delete-file "urwid/tests/test_vterm.py"))))))
- (home-page "http://urwid.org")
- (synopsis "Console user interface library for Python")
- (description
- "Urwid is a curses-based UI/widget library for Python. It includes many
- features useful for text console applications.")
- (properties `((python2-variant . ,(delay python2-urwid))))
- (license license:lgpl2.1+)))
- (define-public python2-urwid
- (let ((base (package-with-python2
- (strip-python2-variant python-urwid))))
- (package
- (inherit base)
- (version "2.1.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "urwid" version))
- (sha256
- (base32
- "11ndnhxd41m13darf5s0c6bafdpkzq1l6mfb04wbzdmyc1hg75h8")))))))
- (define-public python-urwid-readline
- (package
- (name "python-urwid-readline")
- (version "0.12")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/rr-/urwid_readline")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0sq5qgxj7gcfww3ww7idr87isnmp0hi36n241b3q395x1zafdv22"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "python" "-m" "pytest"))
- #t)))))
- (propagated-inputs
- (list python-urwid))
- (native-inputs
- (list python-pytest))
- (home-page "https://github.com/rr-/urwid_readline")
- (synopsis "Text input widget for urwid that supports readline shortcuts")
- (description
- "This package provides a textbox edit widget for @code{python-urwid} that
- supports @code{readline} shortcuts.")
- (license license:expat)))
- (define-public python-textdistance
- (package
- (name "python-textdistance")
- (version "4.2.1")
- (source
- (origin
- ;; There are no tests in the PyPI tarball.
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/life4/textdistance")
- (commit (string-append "v." version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "1g17i356fnny4k6hjr2ayy9k77jbvd6zzmngws2kbrnvhss1wgwf"))))
- (build-system python-build-system)
- (arguments
- `(#:test-target "pytest"
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'delete-external-test
- (lambda _
- ;; All tests in this file require external libraries.
- (delete-file "tests/test_external.py")
- #t)))))
- (native-inputs
- (list python-hypothesis
- python-isort
- python-numpy
- python-pytest
- python-pytest-runner
- python-tabulate))
- (home-page "https://github.com/life4/textdistance")
- (synopsis "Compute distance between the two texts")
- (description "@code{textdistance} is a pure Python library for comparing
- distance between two or more sequences by many algorithms.")
- (license license:expat)))
- (define-public python-urwidtrees
- (package
- (name "python-urwidtrees")
- (version "1.0.3")
- (source
- (origin
- (method git-fetch)
- ;; package author intends on distributing via github rather than pypi:
- ;; https://github.com/pazz/alot/issues/877#issuecomment-230173331
- (uri (git-reference
- (url "https://github.com/pazz/urwidtrees")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "1y1vysx7jg0vbrarlsykhf7nmr8fc6k1fva1q3i98xq2m30s6r68"))))
- (build-system python-build-system)
- (arguments
- '(#:tests? #f)) ; no tests
- (propagated-inputs (list python-urwid))
- (native-inputs (list python-mock))
- (home-page "https://github.com/pazz/urwidtrees")
- (synopsis "Tree widgets for urwid")
- (description "Urwidtrees is a Widget Container API for the @code{urwid}
- toolkit. Use it to build trees of widgets.")
- (license license:gpl3+)))
- (define-public python2-urwidtrees
- (package-with-python2 python-urwidtrees))
- (define-public python-ua-parser
- (package
- (name "python-ua-parser")
- (version "0.8.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "ua-parser" version))
- (sha256
- (base32
- "1jwdf58rhchjzzrad405pviv0iq24xa2xmmmdgcm2c8s6b4wzfwp"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f)) ;no test suite in release
- (native-inputs
- (list python-pyyaml))
- (home-page "https://github.com/ua-parser/uap-python")
- (synopsis "User agent parser")
- (description
- "@code{ua-parser} is a Python port of Browserscope's user agent parser.")
- (license license:asl2.0)))
- (define-public python2-ua-parser
- (package-with-python2 python-ua-parser))
- (define-public python-user-agents
- (package
- (name "python-user-agents")
- (version "1.1.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "user-agents" version))
- (sha256
- (base32
- "0fc00cd3j8dahq1zzn8pkgfgd7lq37bp2scmdma2n1c049vicgb4"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f)) ;missing devices.json test file in release
- (propagated-inputs
- (list python-ua-parser))
- (home-page "https://github.com/selwin/python-user-agents")
- (synopsis "User Agent strings parsing library")
- (description
- "A library to identify devices (phones, tablets) and their capabilities by
- parsing (browser/HTTP) user agent strings.")
- (license license:expat)))
- (define-public python2-user-agents
- (package-with-python2 python-user-agents))
- (define-public python-pydbus
- (package
- (name "python-pydbus")
- (version "0.6.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pydbus" version))
- (sha256
- (base32 "0b0gipvz7vcfa9ddmwq2jrx16d4apb0hdnl5q4i3h8jlzwp1c1s2"))))
- (build-system python-build-system)
- (propagated-inputs (list python-pygobject))
- (home-page "https://github.com/LEW21/pydbus")
- (synopsis "Pythonic D-Bus library")
- (description "Pydbus provides a pythonic interface to the D-Bus
- message bus system. Pydbus can be used to access remote objects and
- also for object publication. It is based on PyGI, the Python GObject
- Introspection bindings, which is the recommended way to use GLib from Python.")
- (license license:lgpl2.1+)))
- (define-public python-dbus
- (package
- (name "python-dbus")
- (version "1.2.18")
- (source
- (origin
- (method url-fetch)
- (uri (string-append "https://dbus.freedesktop.org/releases/dbus-python/"
- "dbus-python-" version ".tar.gz"))
- (sha256
- (base32 "0q3jrw515z98mqdk9x822nd95rky455zz9876f1nqna5igkd3gcj"))))
- (build-system gnu-build-system)
- (native-inputs
- (list pkg-config))
- (inputs
- `(("python" ,python-wrapper)
- ("dbus-glib" ,dbus-glib)))
- (synopsis "Python bindings for D-bus")
- (description "python-dbus provides bindings for libdbus, the reference
- implementation of D-Bus.")
- (home-page "https://www.freedesktop.org/wiki/Software/DBusBindings/")
- (properties `((python2-variant . ,(delay python2-dbus))))
- (license license:expat)))
- (define-public python2-dbus
- (package/inherit python-dbus
- (name "python2-dbus")
- (inputs `(("python" ,python-2)
- ,@(alist-delete "python"
- (package-inputs python-dbus))))
- (arguments
- `(#:configure-flags '("PYTHON_VERSION=2")))))
- (define-public python-dbus-next
- (package
- (name "python-dbus-next")
- (version "0.2.3")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/altdesktop/python-dbus-next")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "1ahaz52kny1p9xxv6phvk4iq56rg8li390wywlxf2yslaij1188h"))))
- (build-system python-build-system)
- (native-inputs
- (list python-pytest))
- (home-page "https://github.com/altdesktop/python-dbus-next")
- (synopsis "Zero-dependency DBus library for Python with asyncio support")
- (description
- "This DBus library for Python aims to be a fully-featured high-level
- library primarily geared towards integration of applications into desktop and
- mobile environments.")
- (license license:expat)))
- (define-public python-notify2
- (package
- (name "python-notify2")
- (version "0.3.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "notify2" version))
- (sha256
- (base32
- "0z8rrv9rsg1r2qgh2dxj3dfj5xnki98kgi3w839kqby4a26i1yik"))))
- (build-system python-build-system)
- (arguments `(#:tests? #f)) ; tests depend on system state
- (propagated-inputs
- (list python-dbus))
- (home-page "https://bitbucket.org/takluyver/pynotify2")
- (synopsis "Python interface to D-Bus notifications")
- (description
- "Pynotify2 provides a Python interface for sending D-Bus notifications.
- It is a reimplementation of pynotify in pure Python, and an alternative to
- the GObject Introspection bindings to libnotify for non-GTK applications.")
- (license (list license:bsd-2
- license:lgpl2.1+))))
- (define-public python2-notify2
- (package-with-python2 python-notify2))
- ;; beautifulsoup4 has a totally different namespace than 3.x,
- ;; and pypi seems to put it under its own name, so I guess we should too
- (define-public python-beautifulsoup4
- (package
- (name "python-beautifulsoup4")
- (version "4.10.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "beautifulsoup4" version))
- (sha256
- (base32
- "14c8z4gh9bi38agx9ls8ym5rscc02pc6f6hmliaqk08xa8yd4fn2"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-soupsieve python-html5lib python-lxml))
- (home-page
- "https://www.crummy.com/software/BeautifulSoup/bs4/")
- (synopsis
- "Python screen-scraping library")
- (description
- "Beautiful Soup is a Python library designed for rapidly setting up
- screen-scraping projects. It offers Pythonic idioms for navigating,
- searching, and modifying a parse tree, providing a toolkit for
- dissecting a document and extracting what you need. It automatically
- converts incoming documents to Unicode and outgoing documents to UTF-8.")
- (license license:expat)
- (properties `((python2-variant . ,(delay python2-beautifulsoup4))))))
- (define-public python2-beautifulsoup4
- (let ((base (package-with-python2
- (strip-python2-variant python-beautifulsoup4))))
- (package/inherit base
- (version "4.9.3") ;last version to support Python 2
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "beautifulsoup4" version))
- (sha256
- (base32
- "09gbd49mwz86k572r1231x2rdp82p42zlnw0bz9b9mfi58r9wwl4"))))
- (arguments `(#:python ,python-2)))))
- (define-public python-soupsieve
- (package
- (name "python-soupsieve")
- (version "2.2.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "soupsieve" version))
- (sha256
- (base32
- "1k70gpn2d3vgdyxbdy536dgm4kchcraxz6lmgsfg3324iy2789q5"))))
- (build-system python-build-system)
- (arguments
- ;;XXX: 2 tests fail currently despite claming they were to be
- ;;skipped. Also, beautifulsoup4 may depend on this in the future, so we
- ;;don't want to create a circular dependency.
- (list #:tests? #f
- #:phases
- #~(modify-phases %standard-phases
- ;; Circular dependency with python-beautifulsoup4.
- (delete 'sanity-check))))
- (home-page "https://github.com/facelessuser/soupsieve")
- (synopsis "CSS selector library")
- (description
- "Soup Sieve is a CSS selector library designed to be used with Beautiful
- Soup 4. It aims to provide selecting, matching, and filtering using modern
- CSS selectors. Soup Sieve currently provides selectors from the CSS level 1
- specifications up through the latest CSS level 4 drafts and beyond (though
- some are not yet implemented).")
- (properties `((python2-variant . ,(delay python2-soupsieve))))
- (license license:expat)))
- ;; This is the last version that supports python-2
- (define-public python2-soupsieve
- (let ((base (package-with-python2 (strip-python2-variant python-soupsieve))))
- (package
- (inherit base)
- (version "1.9.6")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "soupsieve" version))
- (sha256
- (base32
- "1apgqxngi1216h1cyvrvj9gy3wf45mh1lz4n76j26jf3k36bm1br"))))
- (propagated-inputs
- (modify-inputs (package-propagated-inputs base)
- (prepend python2-backports-functools-lru-cache))))))
- (define-public python-netifaces
- (package
- (name "python-netifaces")
- (version "0.11.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "netifaces" version))
- (sha256
- (base32
- "0cnajf5rl4w1sa72j921scbigr6zndig56cq8ggpx45jdqa7jfh4"))))
- (build-system python-build-system)
- (home-page "https://github.com/al45tair/netifaces")
- (synopsis
- "Python module for portable network interface information")
- (description
- "Netifaces is a Python module providing information on network
- interfaces in an easy and portable manner.")
- (license license:expat)))
- (define-public python2-netifaces
- (package-with-python2 python-netifaces))
- (define-public python-networkx
- (package
- (name "python-networkx")
- (version "2.6.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "networkx" version))
- (sha256
- (base32 "1fqrq7gc0nn4rd4zqibw96cap75vb5nlixapkajwawp71jaz21i3"))))
- (build-system python-build-system)
- (arguments
- '(#:phases (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (if tests?
- (invoke "pytest" "-vv" "--pyargs" "networkx")
- (format #t "test suite not run~%"))
- #t)))))
- ;; python-decorator is needed at runtime.
- (propagated-inputs
- (list python-decorator))
- (native-inputs
- (list python-pytest))
- (home-page "https://networkx.github.io/")
- (synopsis "Python module for creating and manipulating graphs and networks")
- (description
- "NetworkX is a Python package for the creation, manipulation, and study
- of the structure, dynamics, and functions of complex networks.")
- (properties `((python2-variant . ,(delay python2-networkx))))
- (license license:bsd-3)))
- ;; NetworkX 2.2 is the last version with support for Python 2.
- (define-public python2-networkx
- (let ((base (package-with-python2 (strip-python2-variant python-networkx))))
- (package
- (inherit base)
- (version "2.2")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "networkx" version ".zip"))
- (sha256
- (base32
- "12swxb15299v9vqjsq4z8rgh5sdhvpx497xwnhpnb0gynrx6zra5"))))
- (arguments
- `(#:python ,python-2))
- (native-inputs
- (list python2-nose unzip)))))
- (define-public python-datrie
- (package
- (name "python-datrie")
- (version "0.8.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "datrie" version))
- (sha256
- (base32
- "0pbn32flkrpjiwfcknmj6398qa81ba783kbcvwan3kym73v0hnsj"))))
- (build-system python-build-system)
- (native-inputs
- (list python-cython python-hypothesis python-pytest
- python-pytest-runner))
- (home-page "https://github.com/kmike/datrie")
- (synopsis "Fast, efficiently stored trie for Python")
- (description
- "This package provides a fast, efficiently stored trie implementation for
- Python.")
- (license license:lgpl2.1+)))
- (define-public python-amply
- (package
- (name "python-amply")
- (version "0.1.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "amply" version))
- (sha256
- (base32
- "0f1db9zp0rsfzxvaz55xwh8h5rfdgr9a2a715g06ic8nknsdq4nb"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-docutils python-pyparsing))
- (native-inputs
- (list python-setuptools-scm))
- (home-page "https://github.com/willu47/amply")
- (synopsis "Load and manipulate AMPL/GLPK data as Python data structures")
- (description
- "Amply allows you to load and manipulate AMPL/GLPK data as Python data
- structures.")
- (license license:epl1.0)))
- (define-public python-pulp
- (package
- (name "python-pulp")
- (version "2.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "PuLP" version))
- (sha256
- (base32
- "1dammrg0f1v0r028i3rpxbf2bsyxmjq0q6ihb4x2wsdki44z3bxj"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-amply))
- (home-page "https://github.com/coin-or/pulp")
- (synopsis "Linear Programming modeler")
- (description
- "PuLP is a Linear Programming modeler written in Python. PuLP can
- generate MPS or LP files and call GLPK, COIN CLP/CBC, CPLEX, and GUROBI to
- solve linear problems.")
- (license license:expat)))
- (define-public python-toposort
- (package
- (name "python-toposort")
- (version "1.6")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "toposort" version))
- (sha256
- (base32
- "1b2hppzjg3p006qya3yfdnp76dwq8frl97lypdam0kw4xxb8yhm7"))))
- (build-system python-build-system)
- (home-page "https://gitlab.com/ericvsmith/toposort")
- (synopsis "Topological sort algorithm")
- (description
- "This package provides an implementation of a topological sort
- algorithm.")
- (license license:asl2.0)))
- (define-public python-three-merge
- (package
- (name "python-three-merge")
- (version "0.1.1")
- (source
- (origin
- ;; There are no tests in the PyPI tarball.
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/spyder-ide/three-merge")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "1fw28swh6jq4myr09j7gv68l241b8vwg470ak5xv0x4xwh2a1m86"))))
- (build-system python-build-system)
- (arguments
- `(#:test-target "pytest"))
- (propagated-inputs
- (list python-diff-match-patch))
- (native-inputs
- (list python-flaky python-pytest python-pytest-cov
- python-pytest-runner python-pytest-timeout))
- (home-page "https://github.com/spyder-ide/three-merge")
- (synopsis "Library for merging two strings with respect to a base one")
- (description
- "This package provides a Python library to perform a 3-way merge between
- strings, based on @code{diff-match-patch}. This library performs merges at a
- character level, as opposed to most VCS systems, which opt for a line-based
- approach.")
- (license license:expat)))
- (define-public snakemake
- (package
- (name "snakemake")
- (version "5.32.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "snakemake" version))
- (sha256
- (base32 "13013gdavwvyj1qr9xfi9fpwhb3km8c3z53bja5b7ic3sb2z6dgz"))))
- (build-system python-build-system)
- (arguments
- ;; TODO: Package missing test dependencies.
- '(#:tests? #f
- #:phases
- (modify-phases %standard-phases
- ;; For cluster execution Snakemake will call Python. Since there is
- ;; no suitable PYTHONPATH set, cluster execution will fail. We fix
- ;; this by calling the snakemake wrapper instead.
- (add-after 'unpack 'call-wrapper-not-wrapped-snakemake
- (lambda* (#:key outputs #:allow-other-keys)
- (substitute* "snakemake/executors/__init__.py"
- (("\\{sys.executable\\} -m snakemake")
- (string-append (assoc-ref outputs "out")
- "/bin/snakemake")))
- #t)))))
- (propagated-inputs
- (list python-appdirs
- python-configargparse
- python-datrie
- python-docutils
- python-gitpython
- python-jinja2
- python-jsonschema
- python-nbformat
- python-networkx
- python-psutil
- python-pulp
- python-pyyaml
- python-ratelimiter
- python-requests
- python-toposort
- python-wrapt))
- (home-page "https://snakemake.readthedocs.io")
- (synopsis "Python-based execution environment for make-like workflows")
- (description
- "Snakemake aims to reduce the complexity of creating workflows by
- providing a clean and modern domain specific specification language (DSL) in
- Python style, together with a fast and comfortable execution environment.")
- (license license:expat)))
- (define-public python-pyqrcode
- (package
- (name "python-pyqrcode")
- (version "1.2.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "PyQRCode" version))
- (sha256
- (base32
- "1m9ln8k9v7dfbh1i81225hx5mdsh8mpf9g7r4wpbfmiyfcs7dgzx"))))
- (build-system python-build-system)
- (home-page
- "https://github.com/mnooner256/pyqrcode")
- (synopsis "QR code generator")
- (description
- "Pyqrcode is a QR code generator written purely in Python with
- SVG, EPS, PNG and terminal output.")
- (license license:bsd-3)))
- (define-public python-seaborn
- (package
- (name "python-seaborn")
- (version "0.11.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "seaborn" version))
- (sha256
- (base32 "1xpl3zb945sihsiwm9q1yyx84sakk1phcg0fprj6i0j0dllfjifg"))
- (patches (search-patches "python-seaborn-kde-test.patch"
- "python-seaborn-2690.patch"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'patch-more-tests
- (lambda _
- (substitute* "seaborn/tests/test_distributions.py"
- (("get_contour_color\\(ax\\.collections\\[0\\]\\)")
- "get_contour_color(ax.collections[0])")
- (("c\\.get_color\\(\\)") "get_contour_color(c)")
- ;; These three are borked and have been fixed upstream, but
- ;; there's no simple patch we could apply here, so we just
- ;; disable them.
- (("def test_hue_ignores_cmap")
- "def skip_test_hue_ignores_cmap")
- (("def test_fill_artists")
- "def skip_test_fill_artists")
- (("def test_with_rug")
- "def skip_test_with_rug"))))
- (add-before 'check 'start-xserver
- (lambda _
- ;; There must be a running X server and make check doesn't
- ;; start one. Therefore we must do it.
- (system "Xvfb :1 &")
- (setenv "DISPLAY" ":1")))
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "pytest" "seaborn")))))))
- (propagated-inputs
- (list python-pandas python-matplotlib python-numpy python-scipy))
- (native-inputs
- (list python-pytest xorg-server-for-tests))
- (home-page "https://seaborn.pydata.org/")
- (synopsis "Statistical data visualization")
- (description
- "Seaborn is a library for making attractive and informative statistical
- graphics in Python. It is built on top of matplotlib and tightly integrated
- with the PyData stack, including support for numpy and pandas data structures
- and statistical routines from scipy and statsmodels.")
- (properties `((python2-variant . ,(delay python2-seaborn))))
- (license license:bsd-3)))
- ;; 0.9.1 is the last release with support for Python 2.
- (define-public python2-seaborn
- (let ((base (package-with-python2 (strip-python2-variant python-seaborn))))
- (package
- (inherit base)
- (version "0.9.1")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "seaborn" version))
- (sha256
- (base32
- "1bjnshjz4d6z3vrwfwall1a3yh8h3a1h47c3fg7458x9426alcys")))))))
- (define-public python-mpmath
- (package
- (name "python-mpmath")
- (version "1.2.1")
- (source (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/fredrik-johansson/mpmath")
- (commit "c6a35f9ee7c294bcf4e0517bc76b268843db9499")))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0ifw59fjjls3mas104rh0frilvab2fhk1dkjraxlqni5n9l676im"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-before 'build 'set-version
- (lambda _
- (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" ,version)
- ;; ZIP does not support timestamps before 1980.
- (setenv "SOURCE_DATE_EPOCH" "315532800")))
- (replace 'check
- (lambda* (#:key tests? inputs outputs #:allow-other-keys)
- (when tests?
- (add-installed-pythonpath inputs outputs)
- (invoke "pytest" "-vv")))))))
- (native-inputs
- (list python-pytest python-setuptools-scm))
- (home-page "https://mpmath.org")
- (synopsis "Arbitrary-precision floating-point arithmetic in python")
- (description
- "@code{mpmath} can be used as an arbitrary-precision substitute for
- Python's float/complex types and math/cmath modules, but also does much
- more advanced mathematics.")
- (license license:bsd-3)))
- (define-public python2-mpmath
- (package-with-python2 python-mpmath))
- (define-public python-bigfloat
- (package
- (name "python-bigfloat")
- (version "0.3.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "bigfloat" version))
- (sha256
- (base32 "0xd7q4l7v0f463diznjv4k9wlaks80pn9drdqmfifi7zx8qvybi6"))))
- (build-system python-build-system)
- (inputs
- (list mpfr))
- (home-page "https://github.com/mdickinson/bigfloat")
- (synopsis "Arbitrary precision floating-point arithmetic for Python")
- (description
- "This package provides a Python interface to the MPFR library for
- multiprecision arithmetic.")
- (license license:lgpl3+)))
- (define-public python-sympy
- (package
- (name "python-sympy")
- (version "1.7.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "sympy" version))
- (sha256
- (base32 "0bkb4jf24yv5i4kjpsmg1xjjccfhqyi0syv0p0xvhdbmx5hr5pm3"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key outputs #:allow-other-keys)
- (invoke
- (or (which "python3") (which "python"))
- "-c" "import sympy; sympy.test(\"/core\")"))))))
- (propagated-inputs
- (list python-mpmath))
- (home-page "https://www.sympy.org/")
- (synopsis "Python library for symbolic mathematics")
- (description
- "SymPy is a Python library for symbolic mathematics. It aims to become a
- full-featured computer algebra system (CAS) while keeping the code as simple
- as possible in order to be comprehensible and easily extensible.")
- (license license:bsd-3)))
- (define-public python2-sympy
- (package
- (inherit (package-with-python2 python-sympy))
- (version "1.5.1") ; last release for python2
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "sympy" version))
- (sha256
- (base32 "0zjfbxlkazzh9z22gf62azrkipb2xw7mpzjz3wl1az9893bh2yfp"))))))
- (define-public python-q
- (package
- (name "python-q")
- (version "2.6")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "q" version))
- (sha256
- (base32
- "1mgfazh8fkizh6walra2zv885f3lcgr3nb02v1frfm4p8ddcy3yy"))))
- (build-system python-build-system)
- (home-page "https://github.com/zestyping/q")
- (synopsis "Quick-and-dirty debugging output for tired programmers")
- (description
- "q is a Python module for \"print\" style of debugging Python code. It
- provides convenient short API for print out of values, tracebacks, and
- falling into the Python interpreter.")
- (license license:asl2.0)))
- (define-public python2-q
- (package-with-python2 python-q))
- (define-public python-xlib
- (package
- (name "python-xlib")
- (version "0.29")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/python-xlib/python-xlib")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32 "17cwd2knqm2vwrii3kqii9abwsnydhpg4byqx1vy7rjs6i1vbqfc"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-before 'check 'start-xserver
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((xorg-server (assoc-ref inputs "xorg-server")))
- ;; There must be a running X server and make check doesn't
- ;; start one. Therefore we must do it.
- (system (format #f "~a/bin/Xvfb :1 &" xorg-server))
- (setenv "DISPLAY" ":1")
- #t))))))
- (native-inputs
- (list python-mock python-setuptools-scm xorg-server))
- (propagated-inputs
- (list python-six))
- (home-page "https://github.com/python-xlib/python-xlib")
- (synopsis "Python X11 client library")
- (description
- "The Python X Library is intended to be a fully functional
- X client library for Python programs. It is useful to implement
- low-level X clients. It is written entirely in Python.")
- (license license:gpl2+)))
- (define-public python2-xlib
- (package-with-python2 python-xlib))
- (define-public python-singledispatch
- (package
- (name "python-singledispatch")
- (version "3.4.0.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "singledispatch" version))
- (sha256
- (base32
- "171b7ip0hsq5qm83np40h3phlr36ym18w0lay0a8v08kvy3sy1jv"))))
- (build-system python-build-system)
- (native-inputs
- (list python-six)) ; required for conversion, not at run-time
- (home-page
- "https://docs.python.org/3/library/functools.html#functools.singledispatch")
- (synopsis "Backport of singledispatch feature from Python 3.4")
- (description
- "This library brings functools.singledispatch from Python 3.4 to Python
- 2.6-3.3.")
- (license license:expat)))
- (define-public python2-singledispatch
- (package-with-python2 python-singledispatch))
- ;; the python- version can be removed with python-3.5
- (define-public python-backports-abc
- (package
- (name "python-backports-abc")
- (version "0.5")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "backports_abc" version))
- (sha256
- (base32
- "1pkv8d1zxj5f9i227dxbjczncbv7ks7ywnjwyxfjagm02i2yafq3"))))
- (build-system python-build-system)
- (home-page "https://github.com/cython/backports_abc")
- (synopsis "Backport of additions to the 'collections.abc' module")
- (description
- "Python-backports-abc provides a backport of additions to the
- @code{collections.abc} module in Python-3.5.")
- (license license:psfl)))
- (define-public python2-backports-abc
- (package-with-python2 python-backports-abc))
- (define-public python-backports-csv
- (package
- (name "python-backports-csv")
- (version "1.0.7")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "backports.csv" version))
- (sha256
- (base32 "0vdx5jlhs91iizc8j8l8811nqprwvdx39pgkdc82w2qkfgzxyxqj"))))
- (build-system python-build-system)
- (home-page "https://github.com/ryanhiebert/backports.csv")
- (synopsis "Backport of Python 3's csv module for Python 2")
- (description
- "Provides a backport of Python 3's @code{csv} module for parsing
- comma separated values. The API of the @code{csv} module in Python 2
- is drastically different from the @code{csv} module in Python 3.
- This is due, for the most part, to the difference between str in
- Python 2 and Python 3.")
- (license license:psfl)))
- (define-public python2-backports-csv
- (package
- (inherit (package-with-python2 python-backports-csv))
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- ;; The sanity-check attempts attempts to import the non-existent
- ;; module "backports".
- (delete 'sanity-check))))))
- (define-public python2-backports-shutil-get-terminal-size
- (package
- (name "python2-backports-shutil-get-terminal-size")
- (version "1.0.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "backports.shutil_get_terminal_size" version))
- (sha256
- (base32
- "107cmn7g3jnbkp826zlj8rrj19fam301qvaqf0f3905f5217lgki"))))
- (build-system python-build-system)
- (arguments
- `(#:python ,python-2
- #:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "py.test" "-v"))))))
- (native-inputs
- (list python2-pytest))
- (home-page "https://github.com/chrippa/backports.shutil_get_terminal_size")
- (synopsis "Backport of Python 3.3's @code{shutil.get_terminal_size}")
- (description
- "This package provides a backport of the @code{get_terminal_size
- function} from Python 3.3's @code{shutil}.
- Unlike the original version it is written in pure Python rather than C,
- so it might be a tiny bit slower.")
- (license license:expat)))
- (define-public python-waf
- (package
- (name "python-waf")
- (version "2.0.19")
- (source (origin
- (method url-fetch)
- (uri (string-append "https://waf.io/"
- "waf-" version ".tar.bz2"))
- (sha256
- (base32
- "19dvqbsvxz7ch03dh1v0znklrwxlz6yzddc3k9smzrrgny4jch6q"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'build
- (lambda _
- ;; XXX: Find a way to add all extra tools.
- (let ((tools '("gccdeps"
- "clang_compilation_database")))
- (invoke "python" "waf-light" "configure" "build"
- (string-append "--tools="
- (string-join tools ","))))))
- (replace 'check
- (lambda _
- (invoke "python" "waf" "--version")))
- (replace 'install
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- (install-file "waf" (string-append out "/bin")))
- #t))
- ;; waf breaks when it is wrapped.
- (delete 'wrap))))
- (home-page "https://waf.io/")
- (synopsis "Python-based build system")
- (description
- "Waf is a Python-based framework for configuring, compiling and installing
- applications.")
- (license license:bsd-3)))
- (define-public python2-waf
- (package-with-python2 python-waf))
- (define-public python-pyzmq
- (package
- (name "python-pyzmq")
- (version "22.3.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pyzmq" version))
- (sha256
- (base32 "0737kizh53n4rjq1xbm6nhr0bq65xflg04i1d8fcky0nwwrw1pcf"))))
- (build-system python-build-system)
- (arguments
- `(#:configure-flags
- (list (string-append "--zmq=" (assoc-ref %build-inputs "zeromq")))
- #:phases
- (modify-phases %standard-phases
- (add-before 'check 'build-extensions
- (lambda _
- ;; Cython extensions have to be built before running the tests.
- (invoke "python" "setup.py" "build_ext" "--inplace"))))))
- (inputs
- (list zeromq))
- (native-inputs
- (list pkg-config python-cython python-pytest))
- (home-page "https://github.com/zeromq/pyzmq")
- (synopsis "Python bindings for 0MQ")
- (description
- "PyZMQ is the official Python binding for the ZeroMQ messaging library.")
- (license license:bsd-4)))
- (define-public python-immutabledict
- (package
- (name "python-immutabledict")
- (version "2.2.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "immutabledict" version))
- (sha256
- (base32 "0fpc4gbk7inpfbgdypsg6c18bmdjw8gwx47bjw0hvixn3gghxnqx"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f)) ; no tests in PyPI release and no setup.py in GitHub
- (native-inputs
- (list python-pytest))
- (home-page "https://github.com/corenting/immutabledict")
- (synopsis "Immutable wrapper around dictionaries")
- (description
- "@dfn{immutabledict} is an immutable wrapper around dictionaries.
- It implements the complete mapping interface and can be used as a drop-in
- replacement for dictionaries where immutability is desired.")
- (license license:expat)))
- (define-public python-emoji
- (package
- (name "python-emoji")
- (version "1.6.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "emoji" version))
- (sha256
- (base32 "0923mpixwq6hdpkgvi4r46alfvf608iq975rb8lnqpq29j71mmjk"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "python" "-m" "pytest")))))))
- (native-inputs
- (list python-pytest))
- (home-page "https://github.com/carpedm20/emoji/")
- (synopsis "Emoji terminal output for Python")
- (description "This package provides Emoji terminal output for Python. The
- entire set of Emoji codes as defined by the Unicode Consortium is supported in
- addition to a bunch of aliases.")
- (license license:bsd-3)))
- (define-public python-sarge
- (package
- (name "python-sarge")
- (version "0.1.7.post1") ; post release only to correct errors in metadata
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "sarge" version))
- (sha256
- (base32 "0g9a53mfnp96877n1yq2jdk1mcv3xm0d93iisvgcn2prdsp45zv4"))))
- (build-system python-build-system)
- (home-page "https://docs.red-dove.com/sarge/")
- (synopsis "Subprocess wrapper with command pipeline functionality")
- (description "@code{sarge} is a wrapper for subprocess which provides
- command pipeline functionality.")
- (license license:bsd-3)))
- (define-public python-zipstream-new
- (package
- (name "python-zipstream-new")
- (version "1.1.8")
- (source
- (origin
- (method git-fetch) ; no tests in PyPI release
- (uri (git-reference
- (url "https://github.com/arjan-s/python-zipstream")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "14vhgg8mcjqi8cpzrw8qzbij2fr2a63l2a8fhil21k2r8vzv92cv"))))
- (build-system python-build-system)
- (native-inputs
- (list python-nose))
- (home-page "https://github.com/arjan-s/python-zipstream")
- (synopsis "Zipfile generator that takes input files as well as streams")
- (description "@code{zipstream.py} is a zip archive generator based on
- @code{zipfile.py}. It was created to generate a zip file generator for
- streaming. This is beneficial for when you want to provide a downloadable
- archive of a large collection of regular files, which would be infeasible
- to generate the archive prior to downloading or of a very large file that
- you do not want to store entirely on disk or on memory.")
- ;; No copyright headers in the source. The LICENSE file indicates GPL3.
- (license license:gpl3)))
- (define-public python-sentry-sdk
- (package
- (name "python-sentry-sdk")
- (version "1.5.1")
- (source
- (origin
- (method git-fetch) ; no tests in PyPI release
- (uri (git-reference
- (url "https://github.com/getsentry/sentry-python")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32 "128bm136l5zprr3sqqb8j3d6k5i1fhz853mzvh3w8g0w1dw763mx"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key inputs outputs tests? #:allow-other-keys)
- (when tests?
- (add-installed-pythonpath inputs outputs)
- (invoke "python" "-m" "pytest" "-k"
- (string-append
- ;; This test requires extra dependencies.
- "not test_auto_enabling_integrations"
- "_catches_import_error"
- ;; Tests below run pip command.
- " and not test_unhandled_exception"
- " and not test_timeout_error"
- " and not test_performance_no_error"
- " and not test_performance_error"
- " and not test_traces_sampler_gets_correct"
- "_values_in_sampling_context"
- " and not test_handled_exception"
- ;; Tests below require network.
- " and not test_crumb_capture"
- " and not test_crumb_capture"
- " and not test_crumb_capture_hint"
- " and not test_httplib_misuse"
- ;; Fails with IndexError.
- " and not test_session_mode_defaults_to"
- "_request_mode_in_wsgi_handler"))))))))
- (native-inputs
- (list python-django
- python-executing
- python-gevent
- python-jsonschema
- python-mock
- python-pyrsistent
- python-pytest
- python-pytest-cov
- python-pytest-django
- python-pytest-forked
- python-pytest-localserver
- python-werkzeug))
- (propagated-inputs
- (list python-certifi python-urllib3))
- (home-page "https://github.com/getsentry/sentry-python")
- (synopsis "Python SDK for Sentry")
- (description "This package provides a Python SDK for the Sentry
- application monitoring and error tracking software.")
- (license license:bsd-2)))
- (define-public python-pep8
- ;; This package has been renamed to ‘pycodestyle’ and is no longer updated.
- ;; Its last release (1.7.1) adds only a scary warning to this effect, breaking
- ;; some dependents' test suites, and nothing more.
- (package
- (name "python-pep8")
- (version "1.7.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pep8" version))
- (sha256
- (base32
- "002rkl4lsn6x2mxmf8ar00l0m8i3mzrc6pnzz77blyksmpsxa4x1"))
- (patches (search-patches "python-pep8-stdlib-tokenize-compat.patch"))))
- (build-system python-build-system)
- (home-page "https://pep8.readthedocs.org/")
- (synopsis "Python style guide checker")
- (description
- "This tools checks Python code against some of the style conventions in
- PEP 8.")
- (license license:expat)))
- (define-public python2-pep8
- (package-with-python2 python-pep8))
- (define-public python-pep8-naming
- (package
- (name "python-pep8-naming")
- (version "0.12.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pep8-naming" version))
- (sha256
- (base32
- "04kyh9hkpyc8jzj16d1kkk29b5n8miqdvbs0zm035n1z5z5kx6hz"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-flake8 python-flake8-polyfill))
- (home-page "https://github.com/PyCQA/pep8-naming")
- (synopsis "Check PEP-8 naming conventions")
- (description
- "This package provides the @code{pep8-naming} Python module, a
- plugin for flake8 to check PEP-8 naming conventions.")
- (license license:expat)))
- (define-public python-pep517
- (package
- (inherit python-pep517-bootstrap)
- (name "python-pep517")
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (delete-file "pytest.ini")
- ;; This test tries to connect to the internet
- (delete-file "tests/test_meta.py")
- (if tests?
- (invoke "pytest")
- #t))))))
- (native-inputs
- (list python-mock python-pytest python-testpath))
- (properties `((python2-variant . ,(delay python2-pep517))))))
- ;; Skip the tests so we don't create a cyclical dependency with pytest.
- (define-public python2-pep517
- (let ((base (package-with-python2
- (strip-python2-variant python-pep517))))
- (package/inherit base
- (name "python2-pep517")
- (arguments
- `(#:tests? #f
- ,@(package-arguments base)))
- (native-inputs `()))))
- (define-public python-pyflakes
- (package
- (name "python-pyflakes")
- (version "2.3.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pyflakes" version))
- (sha256
- (base32
- "1ny10364ciqh4ripasj4zzv4145l21l3s85m3qlrvfq5pk58xg7m"))))
- (build-system python-build-system)
- (home-page "https://github.com/PyCQA/pyflakes")
- (synopsis "Passive checker of Python programs")
- (description
- "Pyflakes statically checks Python source code for common errors.")
- (license license:expat)))
- (define-public python2-pyflakes
- (package-with-python2 python-pyflakes))
- (define-public python-pyflakes-2.2
- (package
- (inherit python-pyflakes)
- (version "2.2.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "pyflakes" version))
- (sha256
- (base32
- "1j3zqbiwkyicvww499bblq33x0bjpzdrxajhaysr7sk7x5gdgcim"))
- (patches
- (search-patches "python-pyflakes-test-location.patch"))))))
- (define-public python-mccabe
- (package
- (name "python-mccabe")
- (version "0.6.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "mccabe" version))
- (sha256
- (base32
- "07w3p1qm44hgxf3vvwz84kswpsx6s7kvaibzrsx5dzm0hli1i3fx"))))
- (build-system python-build-system)
- (native-inputs
- (list python-toml python-pytest-bootstrap python-pytest-runner))
- (home-page "https://github.com/PyCQA/mccabe")
- (synopsis "McCabe checker, plugin for flake8")
- (description "This package provides a Flake8 plug-in to compute the McCabe
- cyclomatic complexity of Python source code.")
- (license license:expat)))
- (define-public python2-mccabe
- (package-with-python2 python-mccabe))
- (define-public python-flake8
- (package
- (name "python-flake8")
- (version "3.9.1")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "flake8" version))
- (sha256
- (base32
- "0y732h02n2aih8gzyfj4bbhg4jgahyv84mjwfindk2g6w45rka0s"))))
- (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" "-v"))))))
- (propagated-inputs
- (list python-pycodestyle python-entrypoints python-pyflakes
- python-mccabe))
- (native-inputs
- (list python-mock python-pytest))
- (home-page "https://gitlab.com/pycqa/flake8")
- (synopsis
- "The modular source code checker: pep8, pyflakes and co")
- (description
- "Flake8 is a wrapper around PyFlakes, pep8 and python-mccabe.")
- (properties `((python2-variant . ,(delay python2-flake8))))
- (license license:expat)))
- (define-public python2-flake8
- (let ((base (package-with-python2 (strip-python2-variant python-flake8))))
- (package/inherit base
- (propagated-inputs
- `(("python2-configparser" ,python2-configparser)
- ("python2-enum34" ,python2-enum34)
- ("python2-functools32" ,python2-functools32)
- ("python2-typing" ,python2-typing)
- ,@(package-propagated-inputs base))))))
- (define-public python-flake8-3.8
- (package
- (inherit python-flake8)
- (version "3.8.4")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "flake8" version))
- (sha256
- (base32
- "0fvcrsbyzjpcli8ldbpsdbpmf238nkvwc1dy4hy82lf63rvfinma"))))
- (propagated-inputs
- (list python-pycodestyle-2.6 python-entrypoints python-pyflakes-2.2
- python-mccabe))))
- (define-public python-flake8-bugbear
- (package
- (name "python-flake8-bugbear")
- (version "20.1.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "flake8-bugbear" version))
- (sha256
- (base32
- "0qiihb242fygzyrfynq913ak7cdmx8mcac9c0zk3y5gv16qf80mx"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (add-before 'check 'disable-test
- (lambda _
- ;; This test fails on slow computers.
- (substitute* "tests/test_bugbear.py"
- (("def test_does_not_crash_on_any_valid_code")
- "def _test_does_not_crash_on_any_valid_code")))))))
- (native-inputs
- (list python-hypothesis python-hypothesmith))
- (propagated-inputs
- (list python-attrs python-flake8))
- (home-page "https://github.com/PyCQA/flake8-bugbear")
- (synopsis
- "Flake8 plugin for finding likely bugs and design problems in your program")
- (description
- "This package contains a plugin for Flake8 finding likely bugs and
- design problems in your program. It contains warnings that don't belong
- in pyflakes and pycodestyle.")
- (license license:expat)))
- (define-public python-flake8-continuation
- (package
- (name "python-flake8-continuation")
- (version "1.0.5")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "flake8-continuation" version))
- (sha256
- (base32
- "0dzaw8jr7yhlabxhrblnrizxx17xa9ngjnbr1kidg5lapq6b9q1y"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-flake8 python-pycodestyle python-six))
- (home-page "https://github.com/planetlabs/flake8-continuation")
- (synopsis "Flake8 Line Continuation Plugin")
- (description "A Flake8 plugin that checks for the line continuation
- style to be in the preferred method according to PEP-8, specifically:
- @quotation
- The preferred way of wrapping long lines is by using Python's implied
- line continuation inside parentheses, brackets and braces. Long lines
- can be broken over multiple lines by wrapping expressions in parentheses.
- These should be used in preference to using a backslash for line continuation.
- @end quotation")
- (license license:asl2.0)))
- (define-public python-flake8-implicit-str-concat
- (package
- (name "python-flake8-implicit-str-concat")
- (version "0.2.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "flake8_implicit_str_concat" version))
- (sha256
- (base32 "1v0y29xlmbr2q12a4nnpm1dm9aw1mjiys1x8jif4z8c90d63cqm6"))))
- (build-system python-build-system)
- (arguments
- '(#:tests? #f ;no tests
- #:phases (modify-phases %standard-phases
- (add-after 'unpack 'loosen-requirements
- (lambda _
- ;; Permit newer versions of attrs. Remove for >0.2.
- (substitute* "setup.py"
- ((", <21") "")))))))
- (propagated-inputs
- (list python-attrs python-more-itertools))
- (home-page "https://github.com/keisheiled/flake8-implicit-str-concat")
- (synopsis "Flake8 plugin to encourage correct string literal concatenation")
- (description
- "This is a plugin for the Python code checking tool Flake8 to encourage
- correct string literal concatenation.
- It looks for style problems like implicitly concatenated string literals on
- the same line (which can be introduced by the code formatting tool Black), or
- unnecessary plus operators for explicit string literal concatenation.")
- (license license:expat)))
- (define-public python-flake8-polyfill
- (package
- (name "python-flake8-polyfill")
- (version "1.0.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "flake8-polyfill" version))
- (sha256
- (base32
- "1nlf1mkqw856vi6782qcglqhaacb23khk9wkcgn55npnjxshhjz4"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- ;; Be compatible with Pytest 4:
- ;; https://gitlab.com/pycqa/flake8-polyfill/merge_requests/7
- (substitute* "setup.cfg"
- (("\\[pytest\\]")
- "[tool:pytest]"))
- (invoke "py.test" "-v"))))))
- (propagated-inputs
- (list python-flake8))
- (native-inputs
- (list python-mock python-pep8 python-pycodestyle python-pytest))
- (home-page "https://gitlab.com/pycqa/flake8-polyfill")
- (synopsis "Polyfill package for Flake8 plugins")
- (description
- "This package that provides some compatibility helpers for Flake8
- plugins that intend to support Flake8 2.x and 3.x simultaneously.")
- (license license:expat)))
- (define-public python2-flake8-polyfill
- (package-with-python2 python-flake8-polyfill))
- (define-public python-flake8-print
- (package
- (name "python-flake8-print")
- (version "4.0.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "flake8-print" version))
- (sha256
- (base32 "05k5kkvyk6fdmvnacxfzypk74vbl3pmva13dqg1aljfwnxsc7yjs"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-flake8 python-pycodestyle python-six))
- (home-page "https://github.com/jbkahn/flake8-print")
- (synopsis "Print statement checker plugin for Flake8")
- (description
- "This plugin for Flake8 checks for @code{print} statements in Python
- files.")
- (license license:expat)))
- (define-public python-flake8-pyi
- (package
- (name "python-flake8-pyi")
- (version "20.10.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "flake8-pyi" version))
- (sha256
- (base32
- "0b27n2pmrxcc7nva4wp2i7mrag0fnq0firvhg1ljq593a45b5qyf"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-attrs python-flake8 python-pyflakes))
- (home-page "https://github.com/ambv/flake8-pyi")
- (synopsis
- "Flake8 plugin that provides specializations for type hinting stub files")
- (description
- "This package contains a plugin that provides specializations for
- type hinting stub files, especially interesting for linting typeshed. It
- adds the @file{.pyi} extension to the default value of the @code{--filename}
- command-line argument to Flake8. This means stubs are linted by default with
- this plugin enabled, without needing to explicitly list every file. It
- modifies PyFlakes runs for @file{.pyi} files to defer checking type annotation
- expressions after the entire file has been read. This enables support for
- first-class forward references that stub files use.")
- (license license:expat)))
- (define-public python-flake8-pie
- (package
- (name "python-flake8-pie")
- (version "0.5.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "flake8-pie" version))
- (sha256
- (base32 "0kgipl5gljlp7aa7ykx15pswpzkd0d0qiznihb2z0d9a73181dyd"))))
- (build-system python-build-system)
- (home-page "https://github.com/sbdchd/flake8-pie")
- (synopsis "Flake8 extension that implements lints")
- (description
- "This package provides a flake8 extension that implements miscellaneous
- lints.")
- (license license:bsd-2)))
- (define-public python-flake8-quotes
- (package
- (name "python-flake8-quotes")
- (version "3.2.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "flake8-quotes" version))
- (sha256
- (base32
- "0ph5s6lxgpzz4an0ax6s5xjqypqmngwr5b1i0h9pqhzghplic49z"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-flake8))
- (home-page "https://github.com/zheller/flake8-quotes/")
- (synopsis "Flake8 lint for quotes")
- (description "This package provides a Flake8 lint for quotes.")
- (license license:expat)))
- (define-public python-flake8-todo
- (package
- (name "python-flake8-todo")
- (version "0.7")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "flake8-todo" version))
- (sha256
- (base32
- "05arm0sch3r8248035kilmf01z0mxsahw6vpbbz0d343zy8m8k3f"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-pycodestyle))
- (home-page "https://github.com/schlamar/flake8-todo")
- (synopsis "TODO notes checker, plugin for flake8")
- (description
- "This package provides the @code{flake8-todo} Python module, a
- TODO notes checker plugin for flake8.")
- (license license:expat)))
- (define-public python-flake8-isort
- (package
- (name "python-flake8-isort")
- (version "4.1.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "flake8-isort" version))
- (sha256
- (base32 "05r7z0j9rqgy0a9261bhisairrz6w8hy5hy5kf2mhvhfnx53056q"))))
- (build-system python-build-system)
- (arguments
- (list
- #:phases
- #~(modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "pytest" "-vv")))))))
- (propagated-inputs (list python-flake8 python-isort python-testfixtures))
- (native-inputs (list python-pytest))
- (home-page "https://github.com/gforcada/flake8-isort")
- (synopsis "Flake8 plugin integrating isort")
- (description "This package provides a flake8 plugin that integrates isort,
- extending flake8 so that it can warn about badly sorted Python import
- directives.")
- (license license:gpl2+)))
- (define-public python-autoflake
- (package
- (name "python-autoflake")
- (version "1.3.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "autoflake" version))
- (sha256
- (base32 "0nzr057dbmgprp4a52ymafdkdd5zp2wcqf42913xc7hhvvdbj338"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-pyflakes))
- (home-page "https://github.com/myint/autoflake")
- (synopsis "Removes unused imports and unused variables")
- (description
- "@code{autoflake} removes unused imports and unused variables from Python
- code as reported by @code{pyflakes}.
- By default, it only removes unused imports for modules that are part of the
- standard library. Removal of unused variables is also disabled by default.
- It also removes useless @code{pass} statements.")
- (license license:expat)))
- (define-public python-mistune
- (package
- (name "python-mistune")
- (version "0.8.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "mistune" version))
- (sha256
- (base32
- "0vkmsh0x480rni51lhyvigfdf06b9247z868pk3bal1wnnfl58sr"))))
- (build-system python-build-system)
- (native-inputs
- (list python-nose python-cython))
- (home-page "https://github.com/lepture/mistune")
- (synopsis "Markdown parser in pure Python")
- (description "This package provides a fast markdown parser in pure
- Python.")
- (license license:bsd-3)))
- (define-public python2-mistune
- (package-with-python2 python-mistune))
- ;; 2.0 is not released yet, but some packages have started using it.
- (define-public python-mistune-next
- (package
- (inherit python-mistune)
- (name "python-mistune-next")
- (version "2.0.0rc1")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "mistune" version))
- (sha256
- (base32
- "1nd7iav1ixh9hlj4hxn6lmpava88d86ys8rqm30wgvr7gjlxnas5"))))
- (native-inputs (list python-nose))))
- (define-public python-markdown
- (package
- (name "python-markdown")
- (version "3.3.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "Markdown" version))
- (sha256
- (base32
- "0jbs73nincha8fkfxx267sfxac6pl0ckszjbqbb8gk4dhs8v9d9i"))))
- (build-system python-build-system)
- (native-inputs
- (list python-nose python-pyyaml))
- (home-page "https://python-markdown.github.io/")
- (synopsis "Python implementation of Markdown")
- (description
- "This package provides a Python implementation of John Gruber's
- Markdown. The library features international input, various Markdown
- extensions, and several HTML output formats. A command line wrapper
- markdown_py is also provided to convert Markdown files to HTML.")
- (properties `((python2-variant . ,(delay python2-markdown))))
- (license license:bsd-3)))
- ;; Markdown 3.2 dropped support for Python 2.
- (define-public python2-markdown
- (let ((base (package-with-python2 (strip-python2-variant python-markdown))))
- (package
- (inherit base)
- (version "3.1.1")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "Markdown" version))
- (sha256
- (base32
- "0yhylk4ffqqs7x086fav4pnfsl1021v7lghznzkififprmmqfl1f")))))))
- (define-public python-ptyprocess
- (package
- (name "python-ptyprocess")
- (version "0.5.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "ptyprocess" version))
- (sha256
- (base32
- "0ra31k10v3629xq0kdn8lwmfbi97anmk48r03yvh7mks0kq96hg6"))))
- (build-system python-build-system)
- (native-inputs
- (list python-nose))
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _ (invoke "nosetests"))))))
- (home-page "https://github.com/pexpect/ptyprocess")
- (synopsis "Run a subprocess in a pseudo terminal")
- (description
- "This package provides a Python library used to launch a subprocess in a
- pseudo terminal (pty), and interact with both the process and its pty.")
- (license license:isc)))
- (define-public python2-ptyprocess
- (package-with-python2 python-ptyprocess))
- (define-public python-cram
- (package
- (name "python-cram")
- (version "0.7")
- (home-page "https://bitheap.org/cram/")
- (source (origin
- (method url-fetch)
- (uri (list (string-append home-page "cram-"
- version ".tar.gz")
- (pypi-uri "cram" version)))
- (sha256
- (base32
- "0bvz6fwdi55rkrz3f50zsy35gvvwhlppki2yml5bj5ffy9d499vx"))))
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'patch-source
- (lambda _
- (substitute* (find-files "cram" ".*\\.py$")
- ;; Replace default shell path.
- (("/bin/sh") (which "sh")))
- (substitute* (find-files "tests" ".*\\.t$")
- (("md5") "md5sum")
- (("/bin/bash") (which "bash"))
- (("/bin/sh") (which "sh")))
- (substitute* "cram/_test.py"
- ;; This hack works around a bug triggered by substituting
- ;; the /bin/sh paths. "tests/usage.t" compares the output of
- ;; "cram -h", which breaks the output at 80 characters. This
- ;; causes the line showing the default shell to break into two
- ;; lines, but the test expects a single line...
- (("env\\['COLUMNS'\\] = '80'")
- "env['COLUMNS'] = '160'"))
- (substitute* "Makefile"
- ;; Recent versions of python-coverage have caused the test
- ;; coverage to decrease (as of version 0.7). Allow that.
- (("--fail-under=100")
- "--fail-under=90"))
- #t))
- (replace 'check
- ;; The test phase uses the built library and executable.
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (add-installed-pythonpath inputs outputs)
- (setenv "PATH" (string-append (getenv "PATH") ":"
- (assoc-ref outputs "out") "/bin"))
- (invoke "make" "test"))))))
- (build-system python-build-system)
- (native-inputs
- (list python-coverage which))
- (synopsis "Simple testing framework for command line applications")
- (description
- "Cram is a functional testing framework for command line applications.
- Cram tests look like snippets of interactive shell sessions. Cram runs each
- command and compares the command output in the test with the command’s actual
- output.")
- (license license:gpl2+)))
- (define-public python2-cram
- (package-with-python2 python-cram))
- (define-public python-crashtest
- (package
- (name "python-crashtest")
- (version "0.3.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "crashtest" version))
- (sha256
- (base32 "1p9p7mn8x2j9psc4jxab98897v4i9s4fliyfw8rp8v4bx1n7pjj2"))))
- (build-system python-build-system)
- (home-page "https://github.com/sdispater/crashtest")
- (synopsis "Manage Python errors with ease")
- (description
- "Python library that makes exceptions handling and inspection easier.")
- (license license:expat)))
- (define-public python-stdlib-list
- (package
- (name "python-stdlib-list")
- (version "0.8.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "stdlib-list" version))
- (sha256
- (base32
- "17vdn4q0sdlndc2fr9svapxx6366hnrhkn0fswp1xmr0jxqh7rd1"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f)) ; Tests require more dependencies.
- (native-inputs
- (list python-sphinx))
- (home-page "https://github.com/jackmaney/python-stdlib-list")
- (synopsis "Python Standard Libraries")
- (description "This package contains a list of Python Standard Libraries.")
- (license license:expat)))
- (define-public python-straight-plugin
- (package
- (name "python-straight-plugin")
- (version "1.4.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "straight.plugin" version))
- (sha256
- (base32
- "069pjll4383p4kkgvcc40hgyvf79j2wdbpgwz77yigzxksh1gj62"))))
- (build-system python-build-system)
- (home-page "https://github.com/ironfroggy/straight.plugin")
- (synopsis "Simple namespaced plugin facility")
- (description "Straight Plugin provides a type of plugin you can create from
- almost any existing Python modules, and an easy way for outside developers to
- add functionality and customization to your projects with their own plugins.")
- (license license:expat)))
- (define-public python2-straight-plugin
- (package-with-python2 python-straight-plugin))
- (define-public python-pysendfile
- (package
- (name "python-pysendfile")
- (version "2.0.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pysendfile" version))
- (sha256
- (base32 "05qf0m32isflln1zjgxlpw0wf469lj86vdwwqyizp1h94x5l22ji"))))
- (build-system python-build-system)
- (arguments
- (list
- #:phases #~(modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (setenv "HOME" "/tmp")
- (invoke "make" "test")))))))
- (home-page "https://github.com/giampaolo/pysendfile")
- (synopsis "Python interface to sendfile(2)")
- (description "The @{pysendfile} Python library provides an interface to
- the @code{sendfile(2)} system call.")
- (license license:expat)))
- (define-public python-pyftpdlib
- (package
- (name "python-pyftpdlib")
- (version "1.5.6")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pyftpdlib" version))
- (sha256
- (base32 "0pnv2byzmzg84q5nmmhn1xafvfil85qa5y52bj455br93zc5b9px"))))
- (build-system python-build-system)
- (arguments
- (list
- #:phases
- #~(modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke
- "pytest"
- ;; Deselect failing tests.
- "-k" (string-append
- ;; Using Pytest instead of the Makefile causes the
- ;; command line tests to fail on unknown Pytest
- ;; arguments.
- "not TestCommandLineParser "
- ;; https://github.com/giampaolo/pyftpdlib/issues/478
- "and not test_use_gmt_times "
- ;; https://github.com/giampaolo/pyftpdlib/issues/550
- "and not test_masquerade_address "
- ;; https://github.com/giampaolo/pyftpdlib/issues/500
- "and not test_rest_on_stor "
- "and not test_stor_ascii"))))))))
- (native-inputs (list python-psutil python-pytest))
- (propagated-inputs (list python-pyopenssl python-pysendfile))
- (home-page "https://github.com/giampaolo/pyftpdlib/")
- (synopsis "Asynchronous and scalable Python FTP server library")
- (description "The Python FTP server library provides a high-level
- interface to write efficient, scalable and asynchronous FTP servers with
- Python. It is the most complete @url{http://www.faqs.org/rfcs/rfc959.html,
- RFC-959} FTP server implementation available for Python, and has the following
- traits:
- @itemize
- @item
- It is lightweight, fast and scalable.
- @item
- It uses the @code{sendfile(2)} system call for uploads.
- @item
- It uses @code{epoll}, @code{kqueue} and @code{select} to handle concurrency
- asynchronously.
- @item
- It supports FTPS (@url{http://tools.ietf.org/html/rfc4217, RFC-4217}),
- IPv6 (RFC-2428), Unicode file names (@url{http://tools.ietf.org/html/rfc2640,
- RFC-2640}) and MLSD/MLST commands (RFC-3659).
- @item
- It has a flexible system of @samp{authorizers} able to manage both
- @samp{virtual} and @samp{real} users.
- @end itemize")
- (license license:expat)))
- (define-public python-fs
- (package
- (name "python-fs")
- (version "2.4.14")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "fs" version))
- (sha256
- (base32 "0v5kqzi0vd8ar4j4qf5440nzwa9dcagpxb3q6k0cln4cqlmxqmcm"))))
- (build-system python-build-system)
- (arguments
- (list
- #:phases #~(modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (setenv "HOME" "/tmp")
- (invoke "pytest" "-m" "not slow")))))))
- (propagated-inputs
- (list python-appdirs python-pytz python-six))
- (native-inputs
- (list python-mock python-parameterized python-pyftpdlib python-pytest))
- (home-page "https://github.com/PyFilesystem/pyfilesystem2/")
- (synopsis "File system abstraction layer for Python")
- (description "PyFilesystem's @code{FS} object is a file system abstraction
- sharing similarities with Python's own @code{file} object for single files.
- It allows opening all the files under a given directory recursively, as a
- single @code{FS} object. This enables, for example, counting the combined
- number of lines in the contained files easily.")
- (license license:expat)))
- ;;; Tests are left out in the main package to avoid cycles.
- (define-public python-fonttools
- (hidden-package
- (package
- (name "python-fonttools")
- (version "4.28.5")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "fonttools" version ".zip"))
- (sha256
- (base32
- "1jhl5n3rfqq7fznvsh6r80n7ylap1a7ppq1040y8cflhyz80ap2l"))))
- (build-system python-build-system)
- (native-inputs
- (list unzip))
- (arguments '(#:tests? #f))
- (home-page "https://github.com/fonttools/fonttools")
- (synopsis "Tools to manipulate font files")
- (description
- "FontTools/TTX is a library to manipulate font files from Python. It
- supports reading and writing of TrueType/OpenType fonts, reading and writing
- of AFM files, reading (and partially writing) of PS Type 1 fonts. The package
- also contains a tool called “TTX” which converts TrueType/OpenType fonts to and
- from an XML-based format.")
- (license license:expat)
- (properties `((python2-variant . ,(delay python2-fonttools)))))))
- (define-public python-fonttools-with-tests
- (package/inherit python-fonttools
- (arguments
- (substitute-keyword-arguments (package-arguments python-fonttools)
- ((#:tests? _ #f)
- #t)
- ((#:phases phases '%standard-phases)
- `(modify-phases ,phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "pytest" "-vv"
- "-k"
- ;; XXX: These tests need .trm files that are
- ;; not shipped with the PyPI release.
- (format #f "not ~a"
- (string-join
- '("test_read_fontdimens_mathsy"
- "test_read_fontdimens_mathex"
- "test_read_fontdimens_vanilla"
- "test_read_boundary_char"
- "fontTools.tfmLib")
- " and not "))))))))))
- (native-inputs
- (modify-inputs (package-native-inputs python-fonttools)
- (append python-pytest ;FIXME: indentation is broken
- python-brotli
- python-fs
- python-scipy
- python-zopfli)))
- (properties (alist-delete 'hidden? (package-properties python-fonttools)))))
- ;; Fonttools 4.x dropped support for Python 2, so stick with 3.x here.
- (define-public python2-fonttools
- (let ((base (package-with-python2 (strip-python2-variant python-fonttools))))
- (package
- (inherit base)
- (version "3.44.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "fonttools" version ".zip"))
- (sha256
- (base32
- "0v6399g755f2hn1ry62i5b6gdinf2fpx2966v3bxh6bjw1accb5p")))))))
- (define-public python-ly
- (package
- (name "python-ly")
- (version "0.9.5")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri name version))
- (sha256
- (base32
- "0x98dv7p8mg26p4816yy8hz4f34zf6hpnnfmr56msgh9jnsm2qfl"))))
- (build-system python-build-system)
- (arguments
- ;; FIXME: Some tests need network access.
- '(#:tests? #f))
- (synopsis "Tool and library for manipulating LilyPond files")
- (description "This package provides a Python library to parse, manipulate
- or create documents in LilyPond format. A command line program ly is also
- provided that can be used to do various manipulations with LilyPond files.")
- (home-page "https://pypi.org/project/python-ly/")
- (license license:gpl2+)))
- (define-public python-appdirs
- (package
- (name "python-appdirs")
- (version "1.4.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "appdirs" version))
- (sha256
- (base32
- "14id6wxi12lgyw0mg3bcfnf888ad07jz9yj46gfzhn186z8rcn4y"))))
- (build-system python-build-system)
- (home-page "https://github.com/ActiveState/appdirs")
- (synopsis
- "Determine platform-specific dirs, e.g. a \"user data dir\"")
- (description
- "This module provides a portable way of finding out where user data
- should be stored on various operating systems.")
- (license license:expat)))
- (define-public python2-appdirs
- (package-with-python2 python-appdirs))
- (define-public python-gorilla
- (package
- (name "python-gorilla")
- (version "0.3.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "gorilla" version))
- (sha256
- (base32
- "0b40blcp6fih4nvqbilra4qw1dfccv1ahjmr41ac4d9rjadqkcpy"))))
- (build-system python-build-system)
- (home-page "https://github.com/christophercrouzet/gorilla")
- (synopsis "Convenient monkey patching with Python")
- (description
- "Gorilla is a Python library that provides a convenient approach to
- monkey patching. Monkey patching is the process of modifying module and
- class attributes at runtime with the purpose of replacing or extending
- third-party code.")
- (license license:expat)))
- (define-public python-llfuse
- (package
- (name "python-llfuse")
- (version "1.4.1")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "llfuse" version))
- (sha256
- (base32
- "1jaf790rsxvz3hs9fbr3hrnmg0xzl6a2bqfa10bbbsjsdbcpk762"))))
- (build-system python-build-system)
- (inputs
- (list fuse attr))
- (native-inputs
- (list pkg-config python-pytest))
- (synopsis "Python bindings for FUSE")
- (description
- "Python-LLFUSE is a set of Python bindings for the low level FUSE API.")
- (home-page "https://bitbucket.org/nikratio/python-llfuse/")
- (license license:lgpl2.0+)))
- (define-public python-msgpack
- (package
- (name "python-msgpack")
- (version "1.0.3")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "msgpack" version))
- (sha256
- (base32
- "07m84yisf8m6gr68ip9v6vzxax7kqbn8qxg7ir18clk1jgxwgzai"))))
- (build-system python-build-system)
- (arguments
- `(#:modules ((guix build utils)
- (guix build python-build-system)
- (ice-9 ftw)
- (srfi srfi-1)
- (srfi srfi-26))
- #:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "pytest" "-v" "test"))))))
- (native-inputs
- (list python-pytest))
- (synopsis "MessagePack (de)serializer")
- (description "MessagePack is a fast, compact binary serialization format,
- suitable for similar data to JSON. This package provides CPython bindings for
- reading and writing MessagePack data.")
- (home-page "https://pypi.org/project/msgpack/")
- (license license:asl2.0)))
- (define-public python-msgpack-1.0.2
- (package
- (inherit python-msgpack)
- (version "1.0.2")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "msgpack" version))
- (sha256
- (base32
- "1109s2yynrahwi64ikax68hx0mbclz8p35afmpphw5dwynb49q7s"))))))
- ;; This msgpack library's name changed from "python-msgpack" to "msgpack" with
- ;; release 0.5. Some packages like borg still call it by the old name for now.
- ;; <https://bugs.gnu.org/30662>
- (define-public python-msgpack-transitional
- (package
- (inherit python-msgpack)
- (name "python-msgpack-transitional")
- (version "0.5.6")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "msgpack" version))
- (sha256
- (base32
- "1hz2dba1nvvn52afg34liijsm7kn65cmn06dl0xbwld6bb4cis0f"))))
- (arguments
- (substitute-keyword-arguments (package-arguments python-msgpack)
- ((#:phases phases)
- `(modify-phases ,phases
- (add-after 'unpack 'configure-transitional
- (lambda _
- ;; Keep using the old name.
- (substitute* "setup.py"
- (("TRANSITIONAL = False")
- "TRANSITIONAL = 1"))
- ;; This old version is not compatible with Python 3.9
- (substitute* '("test/test_buffer.py" "test/test_extension.py")
- ((".tostring\\(") ".tobytes("))
- (substitute* '("test/test_buffer.py" "test/test_extension.py")
- ((".fromstring\\(") ".frombytes("))
- #t))))))))
- (define-public python2-msgpack
- (package-with-python2 python-msgpack))
- (define-public python-netaddr
- (package
- (name "python-netaddr")
- (version "0.8.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "netaddr" version))
- (sha256
- (base32
- "0hx2npi0wnhwlcybilgwlddw6qffx1mb7a3sj4p9s7bvl33mgk6n"))))
- (build-system python-build-system)
- (arguments `(#:tests? #f)) ;; No tests.
- (home-page "https://github.com/drkjam/netaddr/")
- (synopsis "Pythonic manipulation of network addresses")
- (description
- "A Python library for representing and manipulating IPv4, IPv6, CIDR, EUI
- and MAC network addresses.")
- (license license:bsd-3)))
- (define-public python2-netaddr
- (package-with-python2 python-netaddr))
- (define-public python2-pyroute2
- (package
- (name "python2-pyroute2")
- (version "0.5.6")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pyroute2" version))
- (sha256
- (base32
- "1gmz4r1w0yzj6fjjypnalmfyy0lnfznydyn62gi3wk50j5hhxbny"))))
- (build-system python-build-system)
- (arguments
- `(#:python ,python-2)) ;Python 3.x is not supported
- (home-page "https://github.com/svinota/pyroute2")
- (synopsis "Python netlink library")
- (description
- "Pyroute2 is a pure Python netlink library with minimal dependencies.
- Supported netlink families and protocols include:
- @itemize
- @item rtnl, network settings - addresses, routes, traffic controls
- @item nfnetlink - netfilter API: ipset, nftables, ...
- @item ipq - simplest userspace packet filtering, iptables QUEUE target
- @item devlink - manage and monitor devlink-enabled hardware
- @item generic - generic netlink families
- @itemize
- @item nl80211 - wireless functions API (basic support)
- @item taskstats - extended process statistics
- @item acpi_events - ACPI events monitoring
- @item thermal_events - thermal events monitoring
- @item VFS_DQUOT - disk quota events monitoring
- @end itemize
- @end itemize")
- (license license:gpl2+)))
- (define-public python-wrapt
- (package
- (name "python-wrapt")
- (version "1.11.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "wrapt" version))
- (sha256
- (base32
- "1q81762dgsgrd12f8qc39zk8s5wll3m5xc32jdmlf6cls4gh4njn"))))
- (build-system python-build-system)
- (arguments
- ;; Tests are not included in the tarball, they are only available in the
- ;; git repository.
- `(#:tests? #f))
- (home-page "https://github.com/GrahamDumpleton/wrapt")
- (synopsis "Module for decorators, wrappers and monkey patching")
- (description
- "The aim of the wrapt module is to provide a transparent object proxy for
- Python, which can be used as the basis for the construction of function
- wrappers and decorator functions.")
- (license license:bsd-2)))
- (define-public python2-wrapt
- (package-with-python2 python-wrapt))
- (define-public python-commentjson
- (package
- (name "python-commentjson")
- (version "0.9.0")
- (source (origin
- ;; The PyPI release is missing some test files.
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/vaidik/commentjson")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "01iscgrc6bkyrxbzmf46csbf9c0n7g6dygdmxs3fq8fkzrrciybl"))))
- (build-system python-build-system)
- (arguments
- `(#:modules ((guix build python-build-system)
- (guix build utils)
- (ice-9 ftw)
- (ice-9 textual-ports))
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'relax-requirements
- (lambda _
- (substitute* "setup.py"
- (("lark-parser>=0.7.1,<0.8.0")
- "lark-parser>=0.7.1"))))
- (add-after 'unpack 'delete-unspported-tests
- ;; Some tests rely on the 'test' module of Python itself,
- ;; which is not available with the Python package in Guix;
- ;; remove them.
- (lambda _
- ;; XXX: Copied from (guix build dub-build-system).
- (define (grep string file-name)
- (string-contains (call-with-input-file file-name get-string-all)
- string))
- (with-directory-excursion "commentjson/tests/test_json"
- (let* ((dot? (lambda (x) (member x '("." ".."))))
- (test-files (scandir "." (negate dot?))))
- (for-each delete-file
- (filter (lambda (f) (grep "from test." f))
- test-files)))))))))
- (propagated-inputs
- (list python-lark-parser))
- (native-inputs
- (list python-six))
- (home-page "https://github.com/vaidik/commentjson")
- (synopsis "Python library for adding comments to JSON files")
- (description "Comment JSON is a Python package that helps you create JSON
- files with Python and JavaScript style inline comments. Its API is very
- similar to the Python standard library's @code{json} module.")
- (license license:expat)))
- (define-public python-resolvelib
- (package
- (name "python-resolvelib")
- (version "0.7.1")
- (source
- (origin
- ;; Tests are missing from the PyPI release.
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/sarugaku/resolvelib")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "1fqz75riagizihvf4j7wc3zjw6kmg1dd8sf49aszyml105kb33n8"))))
- (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")))))))
- (native-inputs
- (list python-commentjson python-packaging python-pytest))
- (home-page "https://github.com/sarugaku/resolvelib")
- (synopsis "Abstract dependencies resolver")
- (description "The ResolveLib library provides a @code{Resolver} class that
- includes dependency resolution logic.")
- (license license:isc)))
- ;;; This older version is required by ansible-core.
- (define-public python-resolvelib-0.5
- (package/inherit python-resolvelib
- (name "python-resolvelib")
- (version "0.5.4")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/sarugaku/resolvelib")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0697y330sqhiclk25v151qxg7aixzpj434lbg5qib0qlna5zg9la"))))))
- (define-public python-commonmark
- (package
- (name "python-commonmark")
- (version "0.9.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "commonmark" version))
- (sha256
- (base32 "0q7d39lm8kcingpmykk5r959hrwwj6v2icyw3mihczxyb749sbs5"))))
- (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"))))))
- (home-page "https://github.com/readthedocs/commonmark.py")
- (synopsis "Python parser for the CommonMark Markdown spec")
- (description
- "This module is a pure Python port of jgm's @code{commonmark.js}, a
- Markdown parser and renderer for the CommonMark specification, using only
- native modules.")
- (license license:bsd-3)))
- (define-public python-xlrd
- (package
- (name "python-xlrd")
- (version "2.0.1")
- (source (origin
- ;; The tests are not included in the PyPI archive.
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/python-excel/xlrd")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "170asszffvf6rh5w169ic4h5kxgjkmdl3060vw737d4g1qfifvzz"))))
- (build-system python-build-system)
- (native-inputs
- (list python-pytest))
- (home-page "http://www.python-excel.org/")
- (synopsis "Library for extracting data from Excel files")
- (description "This package provides a library to extract data from
- spreadsheets using Microsoft Excel proprietary file formats @samp{.xls} and
- @samp{.xlsx} (versions 2.0 onwards). It has support for Excel dates and is
- Unicode-aware. It is not intended as an end-user tool.")
- (license license:bsd-3)))
- (define-public python2-xlrd
- (package-with-python2 python-xlrd))
- ;; We need this for python-anndata
- (define-public python-xlrd-1
- (package
- (inherit python-xlrd)
- (name "python-xlrd")
- (version "1.2.0")
- (source (origin
- ;; The tests are not included in the PyPI archive.
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/python-excel/xlrd")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0sm5p0ii5ayh52ak1jpw0n1kgsv72vdwwp8c3z13l8yf4irsb587"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- ;; Some tests depend on writing a temporary file to the user's home
- ;; directory.
- (add-after 'unpack 'fix-tests
- (lambda _
- (setenv "HOME" "/tmp"))))))))
- ;;; Note: this package is unmaintained since 2018 (archived on GitHub).
- (define-public python-xlwt
- (package
- (name "python-xlwt")
- (version "1.3.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "xlwt" version))
- (sha256
- (base32 "123c2pdamshkq75wwvck8fq0cjq1843xd3x9qaiz2a4vg9qi56f5"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (setenv "GUIX_PYTHONPATH"
- (string-append (getcwd) "/build/lib:"
- (getenv "GUIX_PYTHONPATH")))
- (invoke "nosetests" "-v")))))))
- (native-inputs
- `(("nose" ,python-nose)))
- (home-page "http://www.python-excel.org/")
- (synopsis "Library for creating spreadsheet Excel files")
- (description "@code{xlwt} is a library for writing data and formatting
- information to older Excel files (i.e. .xls). The package itself is pure
- Python with no dependencies on modules or packages outside the standard Python
- distribution. It is not intended as an end-user tool.")
- (license license:bsd-3)))
- (define-public python-immutables
- (package
- (name "python-immutables")
- (version "0.14")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "immutables" version))
- (sha256
- (base32 "0y0aqw29g525frdnmv9paljzacpp4s21sadfbca5b137iciwr8d0"))))
- (build-system python-build-system)
- (home-page "https://github.com/MagicStack/immutables")
- (synopsis "High-performance immutable mapping type for Python")
- (description
- "An immutable mapping type for Python. The underlying datastructure is a
- Hash Array Mapped Trie (HAMT) used in Clojure, Scala, Haskell, and other
- functional languages.")
- (license license:asl2.0)))
- (define-public python-prettytable
- (package
- (name "python-prettytable")
- (version "0.7.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "prettytable" version ".tar.bz2"))
- (sha256
- (base32
- "0diwsicwmiq2cpzpxri7cyl5fmsvicafw6nfqf6p6p322dji2g45"))))
- (build-system python-build-system)
- (home-page "https://code.google.com/archive/p/prettytable/")
- (synopsis "Display tabular data in an ASCII table format")
- (description
- "A library designed to represent tabular data in visually appealing ASCII
- tables. PrettyTable allows for selection of which columns are to be printed,
- independent alignment of columns (left or right justified or centred) and
- printing of sub-tables by specifying a row range.")
- (license license:bsd-3)))
- (define-public python2-prettytable
- (package-with-python2 python-prettytable))
- (define-public python-curio
- (package
- (name "python-curio")
- (version "1.5")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "curio" version))
- (sha256
- (base32 "045wwg16qadsalhicbv21p14sj8i4w0l57639j7dmdqbb4p2225g"))))
- (build-system python-build-system)
- (arguments
- `(#: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" "-k"
- (string-append
- ;; Tries to open an outgoing connection.
- "not test_ssl_outgoing "
- ;; This test fails since Python 3.9.9 (see:
- ;; https://github.com/dabeaz/curio/issues/347).
- "and not test_timeout"))))))))
- (native-inputs
- (list python-pytest))
- (home-page "https://github.com/dabeaz/curio")
- (synopsis "Coroutine-based library for concurrent Python")
- (description
- "Curio is a coroutine-based library for concurrent Python systems
- programming. It provides standard programming abstractions such as as
- tasks, sockets, files, locks, and queues.")
- (license license:bsd-3)))
- (define-public python-tables
- (package
- (name "python-tables")
- (version "3.6.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "tables" version))
- (sha256
- (base32
- "0j8vnxh2m5n0cyk9z3ndcj5n1zj5rdxgc1gb78bqlyn2lyw75aa9"))
- (modules '((guix build utils)))
- (snippet
- '(begin
- ;; Remove pre-compiled .pyc files from source.
- (for-each delete-file-recursively
- (find-files "." "__pycache__" #:directories? #t))
- (for-each delete-file (find-files "." "\\.pyc$"))
- #t))))
- (build-system python-build-system)
- (arguments
- `(;; FIXME: python-build-system does not pass configure-flags to "build"
- ;; or "check", so we must override the build and check phases.
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'use-gcc
- (lambda _
- (substitute* "setup.py"
- (("^( +)compiler = new_compiler\\(\\)" line indent)
- (string-append line
- "\n"
- indent
- "compiler.set_executables(compiler='gcc',"
- "compiler_so='gcc',"
- "linker_exe='gcc',"
- "linker_so='gcc -shared')")))
- #t))
- (add-after 'unpack 'disable-tuning
- (lambda _
- (substitute* "setup.py"
- (("cpu_flags = .*")
- "cpu_flags = ['sse2']\n"))
- #t))
- (replace 'build
- (lambda* (#:key inputs #:allow-other-keys)
- (invoke "python" "setup.py" "build"
- (string-append "--hdf5="
- (assoc-ref inputs "hdf5")))))
- (replace 'check
- (lambda* (#:key inputs #:allow-other-keys)
- (invoke "python" "setup.py" "check"
- (string-append "--hdf5="
- (assoc-ref inputs "hdf5"))))))))
- (propagated-inputs
- (list python-numexpr python-numpy))
- (native-inputs
- (list python-cython pkg-config))
- (inputs
- (list hdf5-1.10 bzip2 zlib))
- (home-page "https://www.pytables.org/")
- (synopsis "Hierarchical datasets for Python")
- (description "PyTables is a package for managing hierarchical datasets and
- designed to efficiently cope with extremely large amounts of data.")
- (license license:bsd-3)))
- (define-public python-sniffio
- (package
- (name "python-sniffio")
- (version "1.2.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "sniffio" version))
- (sha256
- (base32 "1pnkvi6wvn4qd37y69n1ls6n8l63gfmn3pvb1jb50gqxxkn6wrn4"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "pytest" "-vv"))))))
- (native-inputs
- (list python-curio python-pytest python-pytest-cov))
- (home-page "https://github.com/python-trio/sniffio")
- (synopsis "Detect which async library a program is running under")
- (description "This package detects which async library a program is
- running under. It supports multiple async I/O packages, like Trio, and
- asyncio.")
- ;; Either license applies.
- (license (list license:expat license:asl2.0))))
- (define-public python-pytest-black
- (package
- (name "python-pytest-black")
- (version "0.3.8")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pytest-black" version))
- (sha256
- (base32
- "04lppqydxm0f3f3x0l8hj7v0j6d8syj34jc37yzqwqcyqsnaga81"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-pytest python-black python-toml))
- (native-inputs
- (list python-setuptools-scm))
- (home-page "https://github.com/shopkeep/pytest-black")
- (synopsis "Pytest plugin to enable format checking with black")
- (description
- "This package provides a pytest plugin to enable format checking with the
- Python code formatter \"black\".")
- (license license:expat)))
- (define-public python-geojson
- (package
- (name "python-geojson")
- (version "2.5.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "geojson" version))
- (sha256
- (base32 "12k5bzqskvq3gqzkryarhdjl0df47y5k9cf8r3clasi2wjnbfjvf"))))
- (build-system python-build-system)
- (arguments
- ;; https://github.com/jazzband/geojson/issues/175
- `(#:tests? #f))
- (home-page "https://github.com/jazzband/geojson")
- (synopsis "Python bindings and utilities for GeoJSON")
- (description
- "This package provides Python bindings and utilities for
- @uref{http://geojson.org/, GeoJSON}, a format for encoding geographic data
- structures.")
- (license license:bsd-3)))
- (define-public wfetch
- (let ((commit "e1cfa37814aebc9eb56ce994ebe877b6a6f9a715")
- (revision "1"))
- (package
- (name "wfetch")
- (version (git-version "0.1-pre" revision commit))
- (home-page "https://github.com/Gcat101/Wfetch")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference (url home-page)
- (commit commit)))
- (file-name (git-file-name name version))
- (sha256
- (base32 "1dmr85plx8zr6s14ym3r32g6crwxghkval5a24ah90ijx4dbn5q5"))))
- (build-system python-build-system)
- (arguments
- `(#:use-setuptools? #f ; no setup.py
- #:tests? #f ; no test suite
- #:phases
- (modify-phases %standard-phases
- (delete 'build)
- (replace 'install
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (bin (string-append out "/bin"))
- (share (string-append out "/share")))
- (mkdir-p share)
- (substitute* "wfetch/wfetch.py"
- (("os.sep, 'opt', 'wfetch'") (string-append "'" share "'")))
- (install-file "wfetch/wfetch.py" bin)
- (copy-recursively "wfetch/icons" share)))))))
- (inputs (list python-pyowm python-fire python-termcolor python-requests))
- (synopsis "Command-line tool to display weather info")
- (description
- "This package provides a tool similar to Neofetch/pfetch, but for
- weather: it can display the weather condition, temperature, humidity, etc.
- To use it, you must first run:
- @example
- export WEATHER_CLI_API=@var{your OpenWeatherMap API key}
- @end example\n")
- (license license:gpl3+))))
- (define-public python-get-version
- (package
- (name "python-get-version")
- (version "2.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "get_version" version))
- (sha256
- (base32
- "1g15jyx33vkxavv9hwv275cs4g9bp2i1y942raw3fxamq8kbaml1"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-pygments
- python-pytest
- python-pytest-black
- python-pytest-cov
- python-setuptools
- python-testpath))
- (home-page "https://github.com/flying-sheep/get_version")
- (synopsis "Version helper in the spirit of versioneer")
- (description
- "This package provides a version helper that lets you automatically use
- the latest @code{vX.X.X} Git tag as the version in your Python package. It
- also supports getting the version from Python source distributions or, once
- your package is installed, via @code{pkg_resources} (part of
- @code{setuptools}).")
- (license license:gpl3+)))
- (define-public python-filetype
- (package
- (name "python-filetype")
- (version "1.0.8")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "filetype" version))
- (sha256
- (base32 "05mkinkcn36v1cnb5hzay3zxmv7jmmflckxxp08rgzbkkf3i9pvp"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key inputs outputs tests? #:allow-other-keys)
- (when tests?
- (add-installed-pythonpath inputs outputs)
- (invoke "python" "-m" "pytest" "-k"
- (string-append
- ;; Both tests fail with FileNotFoundError.
- "not test_infer_zip_from_disk"
- " and not test_infer_tar_from_disk"))))))))
- (native-inputs
- (list python-pytest python-pytest-benchmark))
- (home-page "https://github.com/h2non/filetype.py")
- (synopsis "Infer file type and MIME type of any file/buffer")
- (description "@code{filetype} is a small and dependency free Python
- package to infer file type and MIME type checking the magic numbers
- signature of a file or buffer.")
- (license license:expat)))
- (define-public python-cachelib
- (package
- (name "python-cachelib")
- (version "0.4.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "cachelib" version))
- (sha256
- (base32 "0p4chkvbvffcllsny5rpzmsq2vyr24ql3kzif4ha0fxp3fp7vqk8"))))
- (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")))))))
- (native-inputs
- (list python-pytest python-pytest-xprocess))
- (home-page "https://github.com/pallets/cachelib")
- (synopsis "Collection of cache libraries")
- (description "Cachelib is a library extracted from @code{werkzeug} which
- provides a collection of cache libraries in the same API interface.")
- (license license:bsd-3)))
- (define-public python-pylru
- (package
- (name "python-pylru")
- (version "1.2.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pylru" version))
- (sha256
- (base32 "15yj46307sw703vjfkgnr04dqvaicmfcj0hc6yrciildp55r6bs9"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key inputs outputs tests? #:allow-other-keys)
- (when tests?
- (add-installed-pythonpath inputs outputs)
- (invoke "python" "test.py")))))))
- (home-page "https://github.com/jlhutch/pylru")
- (synopsis "Least recently used (LRU) cache implementation")
- (description
- "Pylru implements a true LRU cache along with several support classes.
- Pylru provides a cache class with a simple dict interface. It also provides
- classes to wrap any object that has a dict interface with a cache. Both
- write-through and write-back semantics are supported. Pylru also provides
- classes to wrap functions in a similar way, including a function decorator.")
- (license license:gpl2+)))
- (define-public python-legacy-api-wrap
- (package
- (name "python-legacy-api-wrap")
- (version "1.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "legacy-api-wrap" version))
- (sha256
- (base32
- "06qhp0g543dy98vpa41hwdalvdbsjfc3ldk474yr9sd75mhl8jh3"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-get-version python-pytest python-pytest-black
- python-pytest-cov python-setuptools))
- (home-page "https://github.com/flying-sheep/legacy-api-wrap")
- (synopsis "Legacy API wrapper")
- (description "This module defines a decorator to wrap legacy APIs. The
- primary use case is APIs defined before keyword-only parameters existed.")
- (license license:gpl3+)))
- (define-public python-langdetect
- (package
- (name "python-langdetect")
- (version "1.0.9")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "langdetect" version))
- (sha256
- (base32 "1805svvb7xjm4sf1j7b6nc3409x37pd1xmabfwwjf1ldkzwgxhfb"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-six))
- (home-page "https://github.com/Mimino666/langdetect")
- (synopsis "Language detection library")
- (description
- "This library is a port of Nakatani Shuyo's language-detection library
- (version from 03/03/2014) to Python.")
- (license license:expat)))
- (define-public python-pyasn1
- (package
- (name "python-pyasn1")
- (version "0.4.8")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pyasn1" version))
- (sha256
- (base32
- "1fnhbi3rmk47l9851gbik0flfr64vs5j0hbqx24cafjap6gprxxf"))))
- (build-system python-build-system)
- (home-page "http://pyasn1.sourceforge.net/")
- (synopsis "ASN.1 types and codecs")
- (description
- "This is an implementation of ASN.1 types and codecs in Python. It is
- suitable for a wide range of protocols based on the ASN.1 specification.")
- (license license:bsd-2)))
- (define-public python2-pyasn1
- (package-with-python2 python-pyasn1))
- (define-public python-pyasn1-modules
- (package
- (name "python-pyasn1-modules")
- (version "0.2.8")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pyasn1-modules" version))
- (sha256
- (base32
- "0pp6dcagd8c2c9qx3lahc1rdwlnmm0y0siqr5icjq2r32b3q8pwh"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-pyasn1))
- (home-page "https://sourceforge.net/projects/pyasn1/")
- (synopsis "ASN.1 codec implementations")
- (description
- "Pyasn1-modules is a collection of Python modules providing ASN.1 types and
- implementations of ASN.1-based codecs and protocols.")
- (license license:bsd-3)))
- (define-public python2-pyasn1-modules
- (package-with-python2 python-pyasn1-modules))
- (define-public python-ipaddress
- (package
- (name "python-ipaddress")
- (version "1.0.23")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "ipaddress" version))
- (sha256
- (base32
- "1qp743h30s04m3cg3yk3fycad930jv17q7dsslj4mfw0jlvf1y5p"))))
- (build-system python-build-system)
- (home-page "https://github.com/phihag/ipaddress")
- (synopsis "IP address manipulation library")
- (description
- "This package provides a fast, lightweight IPv4/IPv6 manipulation library
- in Python. This library is used to create, poke at, and manipulate IPv4 and
- IPv6 addresses and networks.")
- (license license:psfl)))
- (define-public python2-ipaddress
- (package-with-python2 python-ipaddress))
- (define-public python-asn1tools
- (package
- (name "python-asn1tools")
- (version "0.158.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "asn1tools" version))
- (sha256
- (base32 "1k88a1azmyvp2ab6qcf2i40dig5abhyn7cmlyhmwwh8kr3syvma0"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-bitstruct python-diskcache python-prompt-toolkit
- python-pyparsing))
- (home-page "https://github.com/eerimoq/asn1tools")
- (synopsis "ASN.1 parsing, encoding and decoding")
- (description "This package provides ASN.1 parsing, encoding and decoding
- for Python, including constraints checking. It supports several
- codecs (e.g. BER, PER, UPER, XER) as well as limited C source code generating
- for OER and UPER.")
- (license license:expat)))
- (define-public python2-ipaddr
- (package
- (name "python2-ipaddr")
- (version "2.1.11")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "ipaddr" version))
- (sha256
- (base32 "1dwq3ngsapjc93fw61rp17fvzggmab5x1drjzvd4y4q0i255nm8v"))))
- (build-system python-build-system)
- (arguments
- `(#:python ,python-2 ;version 2 only
- #:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _ (invoke "python" "ipaddr_test.py"))))))
- (home-page "https://github.com/google/ipaddr-py")
- (synopsis "IP address manipulation library")
- (description
- "Ipaddr is a Python@tie{}2 library for creating and manupilating IPv4 and
- IPv6 addresses and networks.
- For new implementations you may prefer to use the standard module
- @code{ipaddress}, which was introduced in Python 3.3 and backported to older
- versions of Python.")
- (license license:asl2.0)))
- (define-public python-idna
- (package
- (name "python-idna")
- (version "2.10")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "idna" version))
- (sha256
- (base32
- "1xmk3s92d2vq42684p61wixfmh3qpr2mw762w0n6662vhlpqf1xk"))))
- (build-system python-build-system)
- (home-page "https://github.com/kjd/idna")
- (synopsis "Internationalized domain names in applications")
- (description
- "This is a library to support the Internationalised Domain Names in
- Applications (IDNA) protocol as specified in RFC 5891. This version of the
- protocol is often referred to as “IDNA2008” and can produce different results
- from the earlier standard from 2003. The library is also intended to act as a
- suitable drop-in replacement for the “encodings.idna” module that comes with
- the Python standard library but currently only supports the older 2003
- specification.")
- (license license:bsd-4)))
- (define-public python2-idna
- (package-with-python2 python-idna))
- (define-public python-libsass
- (package
- (name "python-libsass")
- (version "0.20.1")
- (source
- (origin
- ;; PyPI tarball is missing some test files.
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/sass/libsass-python")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32 "1r0kgl7i6nnhgjl44sjw57k08gh2qr7l8slqih550dyxbf1akbxh"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- ;; Use Guix package of libsass instead of compiling from a checkout.
- (add-before 'build 'set-libsass
- (lambda _ (setenv "SYSTEM_SASS" "indeed")))
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "pytest" "sasstests.py"))))
- (add-after 'install 'delete-test
- (lambda* (#:key inputs outputs #:allow-other-keys)
- ;; Delete sasstests.py because it attempts to open a file
- ;; that is not installed when loaded, which breaks the sanity
- ;; check.
- (delete-file (string-append
- (assoc-ref outputs "out")
- "/lib/python"
- (python-version
- (dirname (dirname
- (search-input-file inputs "bin/python"))))
- "/site-packages/sasstests.py")))))))
- (native-inputs
- (list python-pytest python-werkzeug))
- (inputs
- (list libsass))
- (propagated-inputs
- (list python-six))
- (home-page "https://sass.github.io/libsass-python/")
- (synopsis "Straightforward binding of libsass for Python")
- (description
- "This package provides a simple Python extension module @code{sass} which
- is binding LibSass.")
- (license license:expat)))
- (define-public python-idna-ssl
- (package
- (name "python-idna-ssl")
- (version "1.0.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "idna-ssl" version))
- (sha256
- (base32
- "0ydrc8hpg9mdr5hqq1lqfsfbn6sjq69slwpfrnlrm3k0phqg14qj"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f)) ;circular dependency with python-aiohttp
- (propagated-inputs (list python-idna))
- (home-page "https://github.com/aio-libs/idna-ssl")
- (synopsis "Patch @code{ssl.match_hostname} for Unicode(idna) domains support")
- (description "Patch @code{ssl.match_hostname} for Unicode(idna)
- domains support.")
- (license license:expat)))
- (define-public python-pretend
- (package
- (name "python-pretend")
- (version "1.0.9")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pretend" version))
- (sha256
- (base32
- "040vm94lcbscg5p81g1icmwwwa2jm7wrd1ybmxnv1sz8rl8bh3n9"))))
- (build-system python-build-system)
- (home-page "https://github.com/alex/pretend")
- (synopsis "Library for stubbing in Python")
- (description
- "Pretend is a library to make stubbing with Python easier. Stubbing is a
- technique for writing tests. You may hear the term mixed up with mocks,
- fakes, or doubles. Basically, a stub is an object that returns pre-canned
- responses, rather than doing any computation.")
- (license license:bsd-3)))
- (define-public python2-pretend
- (package-with-python2 python-pretend))
- (define-public python-pip
- (package
- (name "python-pip")
- (version "20.2.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pip" version))
- (sha256
- (base32
- "18b4qcijwivvkj1g0hs4w8zjbks0bjzdjcrqybnhmyx0gs2rmjc5"))))
- (build-system python-build-system)
- (arguments
- '(#:tests? #f)) ; there are no tests in the pypi archive.
- (home-page "https://pip.pypa.io/")
- (synopsis "Package manager for Python software")
- (description
- "Pip is a package manager for Python software, that finds packages on the
- Python Package Index (PyPI).")
- (license license:expat)))
- (define-public python2-pip
- (package-with-python2 python-pip))
- (define-public python-tlsh
- (package
- (name "python-tlsh")
- (version "3.4.5")
- (home-page "https://github.com/trendmicro/tlsh")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/trendmicro/tlsh")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "1ydliir308xn4ywy705mmsh7863ldlixdvpqwdhbipzq9vfpmvll"))))
- (build-system cmake-build-system)
- (arguments
- '(#:out-of-source? #f
- #:phases (modify-phases %standard-phases
- (replace
- 'install
- (lambda* (#:key outputs #:allow-other-keys)
- ;; Build and install the Python bindings. The underlying
- ;; C++ library is apparently not meant to be installed.
- (let ((out (assoc-ref outputs "out")))
- (with-directory-excursion "py_ext"
- (and (system* "python" "setup.py" "build")
- (system* "python" "setup.py" "install"
- (string-append "--prefix=" out))))))))))
- (inputs `(("python" ,python-wrapper))) ;for the bindings
- (synopsis "Fuzzy matching library for Python")
- (description
- "Trend Micro Locality Sensitive Hash (TLSH) is a fuzzy matching library.
- Given a byte stream with a minimum length of 256 bytes, TLSH generates a hash
- value which can be used for similarity comparisons. Similar objects have
- similar hash values, which allows for the detection of similar objects by
- comparing their hash values. The byte stream should have a sufficient amount
- of complexity; for example, a byte stream of identical bytes will not generate
- a hash value.")
- (license license:asl2.0)))
- (define-public python2-tlsh
- (package/inherit python-tlsh
- (name "python2-tlsh")
- (inputs `(("python" ,python-2)))))
- (define-public python-termcolor
- (package
- (name "python-termcolor")
- (version "1.1.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "termcolor" version))
- (sha256
- (base32
- "0fv1vq14rpqwgazxg4981904lfyp84mnammw7y046491cv76jv8x"))))
- (build-system python-build-system)
- (arguments
- ;; There are no tests.
- `(#:tests? #f))
- (home-page "https://pypi.org/project/termcolor/")
- (synopsis "ANSII Color formatting for terminal output")
- (description
- "This package provides ANSII Color formatting for output in terminals.")
- (license license:expat)))
- (define-public python2-termcolor
- (package-with-python2 python-termcolor))
- (define-public python-terminaltables
- (package
- (name "python-terminaltables")
- (version "3.1.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "terminaltables" version))
- (sha256
- (base32
- "109vhldk6nv1z3hzp4dyqf6rjvlhl0y2k5k7qcm9fcrq5swhxszk"))))
- (build-system python-build-system)
- (home-page "https://github.com/Robpol86/terminaltables")
- (synopsis
- "Generate simple tables in terminals from a nested list of strings")
- (description
- "This package makes it easy to draw tables in terminal/console
- applications from a list of lists of strings. It supports multi-line rows.")
- (license license:expat)))
- (define-public python-libarchive-c
- (package
- (name "python-libarchive-c")
- (version "2.9")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "libarchive-c" version))
- (sha256
- (base32
- "0q7g6a97110bk0j5x81555kajyxh4sybaabab6v5sgr0xi6386cr"))))
- (build-system python-build-system)
- (arguments
- '(#:phases (modify-phases %standard-phases
- (add-before
- 'build 'reference-libarchive
- (lambda* (#:key inputs #:allow-other-keys)
- ;; Retain the absolute file name of libarchive.so.
- (let ((libarchive (assoc-ref inputs "libarchive")))
- (substitute* "libarchive/ffi.py"
- (("find_library\\('archive'\\)")
- (string-append "'" libarchive
- "/lib/libarchive.so'"))))))
- (replace 'check
- (lambda _ (invoke "pytest" "-vv"))))))
- (native-inputs
- (list python-mock python-pytest))
- (inputs
- (list libarchive))
- (home-page "https://github.com/Changaco/python-libarchive-c")
- (synopsis "Python interface to libarchive")
- (description
- "This package provides Python bindings to libarchive, a C library to
- access possibly compressed archives in many different formats. It uses
- Python's @code{ctypes} foreign function interface (FFI).")
- (license license:lgpl2.0+)))
- (define-public python2-libarchive-c
- (package-with-python2 python-libarchive-c))
- (define-public python-file
- (package/inherit file
- (name "python-file")
- (build-system python-build-system)
- (arguments
- '(#:tests? #f ;no tests
- #:configure-flags '("--single-version-externally-managed" "--root=/")
- #:phases (modify-phases %standard-phases
- (add-before 'build 'change-directory
- (lambda _
- (chdir "python")
- #t))
- (add-before 'build 'set-library-file-name
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((file (assoc-ref inputs "file")))
- (substitute* "magic.py"
- (("find_library\\('magic'\\)")
- (string-append "'" file "/lib/libmagic.so'")))
- #t))))))
- (inputs `(("file" ,file)))
- (native-inputs (if (%current-target-system)
- `(("self" ,this-package))
- '()))
- (synopsis "Python bindings to the libmagic file type guesser")
- (description "This package provides Python bindings to the libmagic file
- type guesser.
- Note that this module and the @code{python-magic} module both provide a
- @file{magic.py} file; these two modules, which are different and were
- developed separately, both serve the same purpose: provide Python bindings for
- libmagic.")))
- (define-public python2-file
- (package-with-python2 python-file))
- (define-public python-debian
- (package
- (name "python-debian")
- (home-page "https://salsa.debian.org/python-debian-team/python-debian")
- (version "0.1.36")
- (source
- (origin
- ;; Use git-fetch, as pypi doesn't include test suite.
- (method git-fetch)
- (uri (git-reference
- (url home-page)
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0qy6x28bj6yfikhjww932v5xq4mf5bm1iczl7acy4c7zm6mwhqfa"))))
- (build-system python-build-system)
- (arguments
- `(#:phases (modify-phases %standard-phases
- (add-after 'unpack 'remove-debian-specific-tests
- ;; python-apt, apt and dpkg are not yet available in guix,
- ;; and these tests heavily depend on them.
- (lambda _
- (delete-file "lib/debian/tests/test_deb822.py")
- (delete-file "lib/debian/tests/test_debfile.py")
- #t)))))
- (propagated-inputs
- (list python-six python-chardet))
- (synopsis "Debian package related modules")
- (description
- ;; XXX: Use @enumerate instead of @itemize to work around
- ;; <http://bugs.gnu.org/21772>.
- "This package provides Python modules that abstract many formats of
- Debian-related files, such as:
- @enumerate
- @item Debtags information;
- @item @file{debian/changelog} files;
- @item packages files, pdiffs;
- @item control files of single or multiple RFC822-style paragraphs---e.g.
- @file{debian/control}, @file{.changes}, @file{.dsc};
- @item Raw @file{.deb} and @file{.ar} files, with (read-only) access to
- contained files and meta-information.
- @end enumerate\n")
- ;; Modules are either GPLv2+ or GPLv3+.
- (license license:gpl3+)))
- (define-public python-json-spec
- (package
- (name "python-json-spec")
- (version "0.10.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "json-spec" version))
- (sha256
- (base32
- "06dpbsq61ja9r89wpa2pzdii47qh3xri9ajdrgn1awfl102znchb"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-pathlib python-six))
- (native-inputs
- (list python-pytest))
- (home-page "http://py.errorist.io/json-spec")
- (synopsis
- "JSON Schema, JSON Pointer and JSON Reference for Python")
- (description
- "This Python library implements several JSON specs, like JSON Schema,
- JSON Reference and JSON Pointer.")
- (license license:bsd-3)))
- (define-public python-fastjsonschema
- (package
- (name "python-fastjsonschema")
- (version "2.15.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "fastjsonschema" version))
- (sha256
- (base32 "1ln2j60jzyn6p8i8ljygfgrji58hc23452g7nllkcjdk4p93c7v7"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f ; Fail with a strange backtrace ending in importlib.
- #:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key inputs outputs tests? #:allow-other-keys)
- (when tests?
- (invoke "pytest" "-vv" "-m" "not benchmark")))))))
- (native-inputs
- (list python-colorama
- python-json-spec
- python-jsonschema
- python-pylint
- python-pytest
- python-pytest-benchmark
- python-pytest-cache
- python-validictory))
- (home-page
- "https://github.com/horejsek/python-fastjsonschema")
- (synopsis
- "Fast Python implementation of JSON schema")
- (description
- "This library implements validation of JSON documents by JSON schema for
- drafts 04, 06 and 07.")
- (license license:bsd-3)))
- (define-public python-nbformat
- (package
- (name "python-nbformat")
- (version "5.1.3")
- ;; The PyPi release tarball lacks some test cases and test data.
- (source (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/jupyter/nbformat.git")
- (commit version)))
- (sha256
- (base32
- "033v16cfmxzh3jn5phnil4p3silr49iwh9wiigzhv0crc6sanvwz"))
- (file-name (git-file-name name version))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key inputs outputs tests? #:allow-other-keys)
- (when tests?
- (invoke "pytest" "-vv")))))))
- (propagated-inputs
- (list python-ipython-genutils python-jsonschema python-jupyter-core
- python-traitlets))
- (native-inputs
- (list python-pytest
- python-fastjsonschema ; This is only active
- ; when setting NBFORMAT_VALIDATOR="fastjsonschema", so include it for
- ; testing only.
- python-testpath))
- (home-page "https://jupyter.org")
- (synopsis "Jupyter Notebook format")
- (description "This package provides the reference implementation of the
- Jupyter Notebook format and Python APIs for working with notebooks.")
- (license license:bsd-3)))
- (define-public python-nb-clean
- (package
- (name "python-nb-clean")
- (version "2.1.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "nb-clean" version))
- (sha256
- (base32 "01qvk9n7rx15dhc23m8bj9bw5wdyxh6y18c5fm8hllmrd3ndsx14"))))
- (build-system python-build-system)
- (propagated-inputs (list python-nbformat))
- (home-page "https://github.com/srstevenson/nb-clean")
- (synopsis "Clean Jupyter notebooks for versioning")
- (description "This package cleans Jupyter notebooks of cell execution
- counts, metadata, outputs, and empty cells, preparing them for committing to
- version control. It provides a Git filter to automatically clean notebooks
- before they're staged, and can also be used with other version control
- systems, as a command line tool, and as a Python library.")
- (license license:isc)))
- (define-public python-bleach
- (package
- (name "python-bleach")
- (version "4.1.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "bleach" version))
- (sha256
- (base32 "1nkibazmw1ry4cfxs9qrkkidxdf2z1hh1b20xq1ahqdsgsrxh009"))))
- (build-system python-build-system)
- (arguments
- '(#:phases (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests? (invoke "pytest" "-vv")))))))
- (propagated-inputs
- (list python-packaging python-six python-webencodings))
- (native-inputs
- (list python-pytest))
- (home-page "https://github.com/mozilla/bleach")
- (synopsis "Whitelist-based HTML-sanitizing tool")
- (description "Bleach is an easy whitelist-based HTML-sanitizing tool.")
- (license license:asl2.0)))
- (define-public python-entrypoints
- (package
- (name "python-entrypoints")
- (version "0.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "entrypoints" version))
- (sha256
- (base32
- "0lc4si3xb7hza424414rdqdc3vng3kcrph8jbvjqb32spqddf3f7"))))
- (build-system python-build-system)
- ;; The package does not come with a setup.py file, so we have to generate
- ;; one ourselves.
- (arguments
- `(#:tests? #f
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'create-setup.py
- (lambda _
- (call-with-output-file "setup.py"
- (lambda (port)
- (format port "\
- from setuptools import setup
- setup(name='entrypoints', version='~a', py_modules=['entrypoints'])
- " ,version))))))))
- (home-page "https://github.com/takluyver/entrypoints")
- (synopsis "Discover and load entry points from installed Python packages")
- (description "Entry points are a way for Python packages to advertise
- objects with some common interface. The most common examples are
- @code{console_scripts} entry points, which define shell commands by
- identifying a Python function to run. The @code{entrypoints} module contains
- functions to find and load entry points.")
- (license license:expat)
- (properties `((python2-variant . ,(delay python2-entrypoints))))))
- (define-public python2-entrypoints
- (package
- (inherit (package-with-python2
- (strip-python2-variant python-entrypoints)))
- (propagated-inputs
- (list python2-configparser))))
- (define-public python-epc
- (package
- (name "python-epc")
- (version "0.0.5")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "epc" version))
- (sha256
- (base32
- "09bx1ln1bwa00917dndlgs4k589h8qx2x080xch5m58p92kjwkd1"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-sexpdata))
- (native-inputs
- (list python-nose))
- (home-page "https://github.com/tkf/python-epc")
- (synopsis "Remote procedure call (RPC) stack for Emacs Lisp and Python")
- (description
- "Python-EPC can call elisp functions from Python and Python functions
- from elisp.")
- (license license:gpl3)))
- (define-public python-forex-python
- (package
- (name "python-forex-python")
- (version "1.5")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "forex-python" version))
- (sha256
- (base32 "1ma8cl1i2dh8aa99pifnlilyy4d1gd1s07fj0yd17wcbpsh532cj"))))
- (build-system python-build-system)
- (arguments
- ;; Tests are not included in the PyPI tarball. Also, the tests in the
- ;; repository require online data.
- `(#:tests? #f))
- (propagated-inputs
- (list python-requests python-simplejson))
- (home-page "https://github.com/MicroPyramid/forex-python")
- (synopsis "Foreign exchange rates and currency conversion")
- (description
- "@code{python-forex-python} can be used to manipulate foreign
- exchange rates and to operate currency conversions.
- Features:
- @itemize
- @item List all currency rates.
- @item BitCoin price for all currencies.
- @item Converting amount to BitCoins.
- @item Get historical rates for any day since 1999.
- @item Conversion rate for one currency(ex; USD to INR).
- @item Convert amount from one currency to other.('USD 10$' to INR).
- @item Currency symbols.
- @item Currency names.
- @end itemize")
- (license license:expat)))
- (define-public python-simpleeval
- (package
- (name "python-simpleeval")
- (version "0.9.12")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "simpleeval" version))
- (sha256
- (base32 "0diysdzvx865yy2rjfah75ha2qfxaxz7r108kp7j2kkd903ya2ry"))))
- (build-system python-build-system)
- (home-page "https://github.com/danthedeckie/simpleeval")
- (synopsis "Simple, safe single expression evaluator library")
- (description
- "This package provides a quick single file library for easily adding
- evaluatable expressions into python projects. Say you want to allow a user
- to set an alarm volume, which could depend on the time of day, alarm level,
- how many previous alarms had gone off, and if there is music playing at the
- time.")
- (license license:expat)))
- (define-public python-nbconvert
- (package
- (name "python-nbconvert")
- (version "6.0.7")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "nbconvert" version))
- (sha256
- (base32
- "00lhqaxn481qvk2w5568asqlsnvrw2fm61p1vssx3m7vdnl17g6b"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'fix-paths-and-tests
- (lambda _
- ;; Use pandoc binary from input.
- (substitute* "nbconvert/utils/pandoc.py"
- (("'pandoc'") (string-append "'" (which "pandoc") "'")))
- ;; Same for LaTeX.
- (substitute* "nbconvert/exporters/pdf.py"
- (("\"xelatex\"") (string-append "\"" (which "xelatex") "\""))
- (("\"bibtex\"") (string-append "\"" (which "bibtex") "\"")))
- ;; Make sure tests are not skipped.
- (substitute* (find-files "." "test_.+\\.py$")
- (("@onlyif_cmds_exist\\(('(pandoc|xelatex)'(, )?)+\\)") ""))
- ;; Pandoc is never missing, disable test.
- (substitute* "nbconvert/utils/tests/test_pandoc.py"
- (("import os" all) (string-append all "\nimport pytest"))
- (("(.+)(def test_pandoc_available)" all indent def)
- (string-append indent "@pytest.mark.skip('disabled by guix')\n"
- indent def)))
- ;; Not installing pyppeteer, delete test.
- (delete-file "nbconvert/exporters/tests/test_webpdf.py")
- (substitute* "nbconvert/tests/test_nbconvertapp.py"
- (("(.+)(def test_webpdf_with_chromium)" all indent def)
- (string-append indent "@pytest.mark.skip('disabled by guix')\n"
- indent def)))))
- (replace 'check
- (lambda* (#:key tests? inputs outputs #:allow-other-keys)
- (when tests?
- ;; Some tests invoke the installed nbconvert binary.
- (add-installed-pythonpath inputs outputs)
- ;; Tests depend on templates installed to output.
- (setenv "JUPYTER_PATH"
- (string-append
- (assoc-ref outputs "out")
- "/share/jupyter:"
- (getenv "JUPYTER_PATH")))
- ;; Some tests need HOME
- (setenv "HOME" "/tmp")
- (invoke "pytest" "-vv")))))))
- (inputs
- (list pandoc
- ;; XXX: Disabled, needs substitute*.
- ;;("inkscape" ,inkscape)
- ))
- (native-inputs
- `(("python-ipykernel" ,python-ipykernel)
- ;; XXX: Disabled, not in guix.
- ;;("python-pyppeteer" ,python-pyppeteer)
- ("python-pytest" ,python-pytest)
- ("python-pytest-cov" ,python-pytest-cov)
- ("python-pytest-dependency" ,python-pytest-dependency)))
- (propagated-inputs
- (list python-bleach
- python-defusedxml
- python-entrypoints
- python-jinja2
- python-jupyter-core
- python-mistune
- python-nbclient
- python-nbformat
- python-pandocfilters
- python-pygments
- python-jupyterlab-pygments
- python-testpath
- python-traitlets
- ;; Required, even if [serve] is not used.
- python-tornado-6
- ;; Required at runtime for `jupyter nbconvert --to=pdf`.
- (texlive-updmap.cfg (list texlive-adjustbox
- texlive-amsfonts
- texlive-booktabs
- texlive-caption
- texlive-enumitem
- texlive-eurosym
- texlive-fonts-rsfs
- texlive-generic-iftex
- texlive-jknappen
- texlive-latex-amsmath
- texlive-latex-fancyvrb
- texlive-latex-float
- texlive-fontspec
- texlive-latex-geometry
- texlive-grffile
- texlive-hyperref
- texlive-latex-jknapltx
- texlive-latex-ms
- texlive-oberdiek
- texlive-latex-parskip
- texlive-latex-trimspaces
- texlive-latex-upquote
- texlive-latex-ucs
- texlive-lm
- texlive-mathpazo
- texlive-stringenc
- texlive-tcolorbox
- texlive-titling
- texlive-tools
- texlive-ulem
- texlive-xcolor
- texlive-zapfding))))
- (home-page "https://jupyter.org")
- (synopsis "Converting Jupyter Notebooks")
- (description "The @code{nbconvert} tool, @{jupyter nbconvert}, converts
- notebooks to various other formats via Jinja templates. It allows you to
- convert an @code{.ipynb} notebook file into various static formats including:
- @enumerate
- @item HTML
- @item LaTeX
- @item PDF
- @item Reveal JS
- @item Markdown (md)
- @item ReStructured Text (rst)
- @item executable script
- @end enumerate\n")
- (license license:bsd-3)))
- (define-public python-notebook
- (package
- (name "python-notebook")
- (version "6.3.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "notebook" version))
- (sha256
- (base32
- "0zfwr87ndjzmdp9adpc9lby1hdqdkjp2q7c9vff3wiw1dj6kkjfb"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'use-our-home-for-tests
- (lambda _
- ;; The 'get_patch_env' function in this file reads:
- ;; 'HOME': cls.home_dir
- ;; but for some reason, that definition of HOME is not what the
- ;; GLib/GIO trash mechanism honors, which would cause test
- ;; failures. Instead, set 'HOME' here to an existing directory
- ;; and let the tests honor it.
- (substitute* "notebook/tests/launchnotebook.py"
- (("'HOME': .*," all)
- (string-append "# " all "\n")))
- (setenv "HOME" (getcwd))))
- (replace 'check
- (lambda* (#:key tests? inputs outputs #:allow-other-keys)
- ;; These tests require a browser
- (delete-file-recursively "notebook/tests/selenium")
- (when tests?
- (add-installed-pythonpath inputs outputs)
- ;; Interferes with test expectations.
- (unsetenv "JUPYTER_CONFIG_PATH")
- ;; Some tests do not expect all files to be installed in the
- ;; same directory, but JUPYTER_PATH contains multiple entries.
- (unsetenv "JUPYTER_PATH")
- (invoke "pytest" "-vv"
- ;; TODO: This tests fails because nbconvert does not
- ;; list "python" as a format.
- "-k" "not test_list_formats")))))))
- (propagated-inputs
- (list python-argon2-cffi
- python-ipykernel
- python-ipython-genutils
- python-jinja2
- python-jupyter-client
- python-jupyter-core
- python-nbconvert
- python-nbformat
- python-prometheus-client
- python-pyzmq
- python-send2trash
- python-terminado
- python-tornado-6
- python-traitlets))
- (native-inputs
- (list python-coverage
- python-nbval
- python-pytest
- python-pytest-cov
- python-requests
- python-requests-unixsocket))
- (home-page "https://jupyter.org/")
- (synopsis "Web-based notebook environment for interactive computing")
- (description
- "The Jupyter HTML notebook is a web-based notebook environment for
- interactive computing.")
- (license license:bsd-3)))
- (define-public python-widgetsnbextension
- (package
- (name "python-widgetsnbextension")
- (version "3.5.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "widgetsnbextension" version))
- (sha256
- (base32
- "1ismyaxbv9d56yqqqb8xl58hg0iq0bbyy014a53y1g3hfbc8g7q7"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-notebook))
- (home-page "https://ipython.org")
- (synopsis "IPython HTML widgets for Jupyter")
- (description "This package provides interactive HTML widgets for Jupyter
- notebooks.")
- (license license:bsd-3)))
- (define-public python-ipywidgets
- (package
- (name "python-ipywidgets")
- (version "7.6.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "ipywidgets" version))
- (sha256
- (base32
- "1w217j8i53x14l7b05fk300k222zs9vkcjaa1rbrw3sk43k466lz"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-ipykernel
- python-ipython
- python-jupyterlab-widgets
- python-nbformat
- python-traitlets
- python-widgetsnbextension))
- (native-inputs
- (list python-mock python-pytest python-pytest-cov))
- (home-page "https://ipython.org")
- (synopsis "IPython HTML widgets for Jupyter")
- (description "Ipywidgets are interactive HTML widgets for Jupyter
- notebooks and the IPython kernel. Notebooks come alive when interactive
- widgets are used. Users gain control of their data and can visualize changes
- in the data.")
- (license license:bsd-3)))
- (define-public python-jupyter-console
- (package
- (name "python-jupyter-console")
- (version "6.4.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "jupyter_console" version))
- (sha256
- (base32
- "1iqrxhd8hvlyf8cqbc731ssnwm61wrycnbiczy5wsfahd3hlh8i4"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-ipykernel python-jupyter-client python-prompt-toolkit-2
- python-pygments))
- (native-inputs
- (list python-nose python-pytest))
- (home-page "https://jupyter.org")
- (synopsis "Jupyter terminal console")
- (description "This package provides a terminal-based console frontend for
- Jupyter kernels. It also allows for console-based interaction with non-Python
- Jupyter kernels such as IJulia and IRKernel.")
- (license license:bsd-3)))
- ;; The python-ipython and python-jupyter-console require each other. To get
- ;; the functionality in both packages working, strip down the
- ;; python-jupyter-console package when using it as an input to python-ipython.
- (define python-jupyter-console-minimal
- (package/inherit python-jupyter-console
- (name "python-jupyter-console-minimal")
- (arguments
- (substitute-keyword-arguments
- (package-arguments python-jupyter-console)
- ((#:phases phases)
- `(modify-phases ,phases
- (add-after 'install 'delete-bin
- (lambda* (#:key outputs #:allow-other-keys)
- ;; Delete the bin files, to avoid conflicts in profiles
- ;; where python-ipython and python-jupyter-console are
- ;; both present.
- (delete-file-recursively
- (string-append
- (assoc-ref outputs "out") "/bin"))))))))
- ;; Remove the python-ipython propagated input, to avoid the cycle
- (propagated-inputs
- (alist-delete
- "python-ipython"
- (package-propagated-inputs python-jupyter-console)))))
- (define-public python-qtconsole
- (package
- (name "python-qtconsole")
- (version "4.7.7")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "qtconsole" version))
- (sha256
- (base32 "013qgpsm8jzcz3prhq7sxs36l8f7fgagmn3xa010gfhxf7cfldpj"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-before 'check 'pre-check
- (lambda _
- (setenv "QT_QPA_PLATFORM" "offscreen")
- (setenv "HOME" "/tmp")
- ;; FIXME: skip a failing test.
- (substitute* "qtconsole/tests/test_jupyter_widget.py"
- (("def test_other_output") "def _test_other_output")))))))
- (propagated-inputs
- (list python-ipykernel python-ipython-genutils python-jupyter-client
- python-jupyter-core python-pygments python-pyqt python-pyzmq
- python-qtpy python-traitlets))
- (native-inputs
- (list python-flaky python-pytest))
- (home-page "https://jupyter.org")
- (synopsis "Jupyter Qt console")
- (description "This package provides a Qt-based console for Jupyter with
- support for rich media output.")
- (license license:bsd-3)))
- (define-public python-jsbeautifier
- (package
- (name "python-jsbeautifier")
- (version "1.10.2")
- (home-page "https://github.com/beautify-web/js-beautify")
- (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
- "0wawb070ki1axb3jc9xvsrgpji52vcfif3zmjzc3z4g98m5xw4kg"))))
- (build-system python-build-system)
- (arguments
- `(#:phases (modify-phases %standard-phases
- (add-after 'unpack 'chdir
- (lambda _
- ;; The upstream Git repository contains all the code,
- ;; but this package only builds the python code.
- (chdir "python")
- #t))
- (add-after 'unpack 'patch-python-six-requirements
- (lambda _
- (substitute* "python/setup.py"
- (("six>=1.12.0")
- "six>=1.11.0"))
- #t)))))
- (propagated-inputs
- (list python-editorconfig python-six))
- (native-inputs
- (list python-pytest))
- (synopsis "JavaScript unobfuscator and beautifier")
- (description "Beautify, unpack or deobfuscate JavaScript, leveraging
- popular online obfuscators.")
- (license license:expat)))
- (define-public jupyter
- (package
- (name "jupyter")
- (version "1.0.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "jupyter" version))
- (sha256
- (base32
- "0pwf3pminkzyzgx5kcplvvbvwrrzd3baa7lmh96f647k30rlpp6r"))))
- (build-system python-build-system)
- (arguments '(#:tests? #f)) ; there are none.
- (propagated-inputs
- (list python-ipykernel
- python-ipywidgets
- python-jupyter-console
- python-nbconvert
- python-notebook
- python-qtconsole))
- (home-page "https://jupyter.org")
- (synopsis "Web application for interactive documents")
- (description
- "The Jupyter Notebook is a web application that allows you to create and
- share documents that contain live code, equations, visualizations and
- explanatory text. Uses include: data cleaning and transformation, numerical
- simulation, statistical modeling, machine learning and much more.")
- (license license:bsd-3)))
- (define-public python-chardet
- (package
- (name "python-chardet")
- (version "3.0.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "chardet" version))
- (sha256
- (base32
- "1bpalpia6r5x1kknbk11p1fzph56fmmnp405ds8icksd3knr5aw4"))))
- (native-inputs
- (list python-hypothesis python-pytest python-pytest-runner))
- (build-system python-build-system)
- ;; XXX: Incompatible with Pytest 4: <https://github.com/chardet/chardet/issues/173>.
- (arguments `(#:tests? #f))
- (home-page "https://github.com/chardet/chardet")
- (synopsis "Universal encoding detector for Python 2 and 3")
- (description
- "This package provides @code{chardet}, a Python module that can
- automatically detect a wide range of file encodings.")
- (license license:lgpl2.1+)))
- (define-public python2-chardet
- (package-with-python2 python-chardet))
- (define-public python-charset-normalizer
- (package
- (name "python-charset-normalizer")
- (version "2.0.5")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "charset-normalizer" version))
- (sha256
- (base32 "0rr3iv2xw4rz5ijnfqk229fw85cq6p6rhqqsilm0ldzncblfg63h"))))
- (build-system python-build-system)
- (native-inputs
- (list python-pytest))
- (home-page "https://github.com/ousret/charset_normalizer")
- (synopsis "Universal Charset Detector, alternative to Chardet")
- (description "This library helps you read text from an unknown charset
- encoding. Motivated by @code{chardet}, it tries to resolve the issue by
- taking a new approach. All IANA character set names for which the Python core
- library provides codecs are supported.")
- (license license:expat)))
- (define-public python-docopt
- (package
- (name "python-docopt")
- (version "0.6.2")
- (source
- (origin
- (method git-fetch)
- ;; The release on PyPI does not include tests.
- (uri (git-reference
- (url "https://github.com/docopt/docopt")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0aad9gbswnnhssin2q0m5lmpm0ahyf80ahs2zjigbn5y7fvljnd0"))
- (patches (search-patches "python-docopt-pytest6-compat.patch"))))
- (build-system python-build-system)
- (native-inputs
- (list python-pytest))
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "py.test")))))))
- (home-page "http://docopt.org")
- (synopsis "Command-line interface description language for Python")
- (description "This library allows the user to define a command-line
- interface from a program's help message rather than specifying it
- programmatically with command-line parsers like @code{getopt} and
- @code{argparse}.")
- (license license:expat)))
- (define-public python2-docopt
- (package-with-python2 python-docopt))
- (define-public python-pythonanywhere
- (package
- (name "python-pythonanywhere")
- (version "0.9.10")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/pythonanywhere/helper_scripts")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0vzzc1g8pl7cb9yvm3n1j5zlzxf0jd423rzspc2kvpb8yhvydklx"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-before 'check 'change-home
- (lambda _
- (setenv "HOME" "/tmp")))
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- ;; Exclude tests marked as slowtest that assume running
- ;; inside Git repository on system with virtualenvwrapper
- ;; installed.
- (invoke "pytest" "-m" "not slowtest")))))))
- (native-inputs
- (list python-pytest
- python-psutil
- python-responses
- python-pytest-mock))
- (propagated-inputs
- (list python-dateutil
- python-docopt
- python-packaging
- python-requests
- python-schema
- python-tabulate
- python-typer))
- (home-page "https://github.com/pythonanywhere/helper_scripts/")
- (synopsis "PythonAnywhere helper tools for users")
- (description "PythonAnywhere provides a command-line interface and an
- application programming interface that allows managing Web apps and scheduled
- tasks. It includes single-command deployment for the Django Girls tutorial.")
- (license license:expat)))
- (define-public python-pythondialog
- (package
- (name "python-pythondialog")
- (version "3.4.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pythondialog" version))
- (sha256
- (base32
- "1728ghsran47jczn9bhlnkvk5bvqmmbihabgif5h705b84r1272c"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'patch-path
- (lambda* (#:key inputs #:allow-other-keys)
- (let* ((dialog (assoc-ref inputs "dialog")))
- ;; Since this library really wants to grovel the search path, we
- ;; must hardcode dialog's store path into it.
- (substitute* "dialog.py"
- (("os.getenv\\(\"PATH\", \":/bin:/usr/bin\"\\)")
- (string-append "os.getenv(\"PATH\") + \":" dialog "/bin\"")))
- #t))))
- #:tests? #f)) ; no test suite
- (propagated-inputs
- (list dialog))
- (home-page "http://pythondialog.sourceforge.net/")
- (synopsis "Python interface to the UNIX dialog utility")
- (description "A Python wrapper for the dialog utility. Its purpose is to
- provide an easy to use, pythonic and comprehensive Python interface to dialog.
- This allows one to make simple text-mode user interfaces on Unix-like systems")
- (license license:lgpl2.1)
- (properties `((python2-variant . ,(delay python2-pythondialog))))))
- (define-public python2-pythondialog
- (let ((base (package-with-python2 (strip-python2-variant python-pythondialog))))
- (package
- (inherit base)
- (version (package-version python-pythondialog))
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "python2-pythondialog" version))
- (sha256
- (base32
- "0d8k7lxk50imdyx85lv8j98i4c93a71iwpapnl1506rpkbm9qvd9")))))))
- (define-public python-configobj
- (package
- (name "python-configobj")
- (version "5.0.6")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "configobj" version))
- (sha256
- (base32
- "00h9rcmws03xvdlfni11yb60bz3kxfvsj6dg6nrpzj71f03nbxd2"))
- ;; Patch setup.py so it looks for python-setuptools, which is
- ;; required to parse the keyword 'install_requires' in setup.py.
- (patches (search-patches "python-configobj-setuptools.patch"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-six))
- (synopsis "Config file reading, writing and validation")
- (description "ConfigObj is a simple but powerful config file reader and
- writer: an ini file round tripper. Its main feature is that it is very easy to
- use, with a straightforward programmer’s interface and a simple syntax for
- config files.")
- (home-page "https://github.com/DiffSK/configobj")
- (license license:bsd-3)))
- (define-public python2-configobj
- (package-with-python2 python-configobj))
- (define-public python-configargparse
- (package
- (name "python-configargparse")
- (version "1.2.3")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "ConfigArgParse" version))
- (sha256
- (base32
- "1p1pzpf5qpf80bfxsx1mbw9blyhhypjvhl3i60pbmhfmhvlpplgd"))))
- (build-system python-build-system)
- (native-inputs
- (list python-pyyaml))
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- ;; Bypass setuptools-shim because one test relies on "setup.py"
- ;; being the first argument passed to the python call.
- ;;
- ;; NOTE: Many tests do not run because they rely on Python's
- ;; built-in test.test_argparse, but we remove the unit tests from
- ;; our Python installation.
- (invoke "python" "setup.py" "test"))))))
- (synopsis "Replacement for argparse")
- (description "A drop-in replacement for argparse that allows options to also
- be set via config files and/or environment variables.")
- (home-page "https://github.com/bw2/ConfigArgParse")
- (license license:expat)))
- (define-public python-argparse-manpage
- (package
- (name "python-argparse-manpage")
- (version "1.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "argparse-manpage" version))
- (sha256
- (base32
- "0blh31zns68anina9lba5wh81d1414s97p60zw5l0d0shhh0wj5p"))))
- (build-system python-build-system)
- (home-page "https://github.com/praiskup/argparse-manpage")
- (synopsis "Build manual page from Python's ArgumentParser object")
- (description
- "This package provides tools to build manual pages from Python's
- @code{ArgumentParser} object.")
- (license license:asl2.0)))
- (define-public python-contextlib2
- (package
- (name "python-contextlib2")
- (version "0.6.0.post1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "contextlib2" version))
- (sha256
- (base32
- "0bhnr2ac7wy5l85ji909gyljyk85n92w8pdvslmrvc8qih4r1x01"))))
- (build-system python-build-system)
- (home-page "https://contextlib2.readthedocs.org/")
- (synopsis "Tools for decorators and context managers")
- (description "This module is primarily a backport of the Python
- 3.2 contextlib to earlier Python versions. Like contextlib, it
- provides utilities for common tasks involving decorators and context
- managers. It also contains additional features that are not part of
- the standard library.")
- (properties `((python2-variant . ,(delay python2-contextlib2))))
- (license license:psfl)))
- (define-public python2-contextlib2
- (let ((base (package-with-python2
- (strip-python2-variant python-contextlib2))))
- (package/inherit base
- (arguments
- (substitute-keyword-arguments (package-arguments base)
- ((#:phases phases)
- `(modify-phases ,phases
- (replace 'check
- (lambda _ (invoke "python" "test_contextlib2.py" "-v")))))))
- (native-inputs
- `(("python2-unittest2" ,python2-unittest2))))))
- ;; This package is used by python2-pytest via python2-importlib-metadata,
- ;; and thus can not depend on python-unittest2 (which depends on pytest).
- (define-public python2-contextlib2-bootstrap
- (hidden-package
- (package/inherit
- python2-contextlib2
- (name "python2-contextlib2-bootstrap")
- (arguments
- `(#:tests? #f
- ,@(package-arguments python2-contextlib2)))
- (native-inputs '()))))
- (define-public python-texttable
- (package
- (name "python-texttable")
- (version "1.6.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "texttable" version))
- (sha256
- (base32
- "1sbn821394rix6xgj3zqk743pj6nqm1qz81zgis2bcpp2ng7pvj2"))))
- (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.py")))))))
- (native-inputs
- (list python-pytest))
- (home-page "https://github.com/foutaise/texttable/")
- (synopsis "Python module for creating simple ASCII tables")
- (description "Texttable is a Python module for creating simple ASCII
- tables.")
- (license license:expat)))
- (define-public python2-texttable
- (package-with-python2 python-texttable))
- (define-public python-atomicwrites
- (package
- (name "python-atomicwrites")
- (version "1.4.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "atomicwrites" version))
- (sha256
- (base32
- "0yla2svfhfqrcj8qbyqzx7wi4jy0dwcxvlkg0k3zjd54s5m3jw5f"))))
- (build-system python-build-system)
- (arguments `(#:tests? #f)) ;avoid circular dependency with pytest
- (synopsis "Atomic file writes in Python")
- (description "Library for atomic file writes using platform dependent tools
- for atomic file system operations.")
- (home-page "https://github.com/untitaker/python-atomicwrites")
- (license license:expat)))
- (define-public python2-atomicwrites
- (package-with-python2 python-atomicwrites))
- (define-public python-atomicwrites-1.4
- (package
- (inherit python-atomicwrites)
- (version "1.4.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "atomicwrites" version))
- (sha256
- (base32
- "0yla2svfhfqrcj8qbyqzx7wi4jy0dwcxvlkg0k3zjd54s5m3jw5f"))))))
- (define-public python-qstylizer
- (package
- (name "python-qstylizer")
- (version "0.1.10")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/blambright/qstylizer")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32 "0zvkn6g1dn51kkw33v8qrlnwlmf5h6sw1ay3bh14ifjr8b9xsjjz"))))
- (build-system python-build-system)
- (arguments
- `(#:test-target "pytest"
- #:phases
- (modify-phases %standard-phases
- (add-before 'build 'set-pbr-version
- (lambda _
- (setenv "PBR_VERSION" "3.0.1"))))))
- (native-inputs
- (list python-pbr
- python-pytest
- python-pytest-catchlog
- python-pytest-cov
- python-pytest-mock
- python-pytest-runner
- python-pytest-xdist))
- (propagated-inputs
- (list python-inflection python-tinycss))
- (home-page "https://github.com/blambright/qstylizer")
- (synopsis "Qt stylesheet generation utility for PyQt/PySide")
- (description "@code{qstylizer} is a Python package designed to help with
- the construction of PyQt/PySide stylesheets.")
- (license license:expat)))
- (define-public python-click-threading
- (package
- (name "python-click-threading")
- (version "0.5.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "click-threading" version))
- (sha256
- (base32
- "0f9lmxwcq0y9lb8w0whbni7gwy12gbv74h1igh85qn9aq0iydkxd"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-click))
- (synopsis "Utilities for multithreading in Click")
- (description "This package provides utilities for multithreading in Click
- applications.")
- (home-page "https://github.com/click-contrib/click-threading")
- (license license:expat)))
- (define-public python-click-log
- (package
- (name "python-click-log")
- (version "0.3.2")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "click-log" version))
- (sha256
- (base32
- "091i03bhxyzsdbc6kilxhivfda2f8ymz3b33xa6cj5kbzjiirz8n"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-click))
- (synopsis "Logging for click applications")
- (description "This package provides a Python library for logging Click
- applications.")
- (home-page "https://github.com/click-contrib/click-log")
- (license license:expat)))
- (define-public python-click-default-group
- (package
- (name "python-click-default-group")
- (version "1.2.2")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "click-default-group" version))
- (sha256
- (base32
- "015r78jk8gznfw0dphpwaqcx5mhg5822b55w5xbb6i7sin70wmnr"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f)) ; no target
- (propagated-inputs
- (list python-click))
- (synopsis "Extends click.Group")
- (description "This package extends click.Group to invoke a command without
- explicit subcommand name.")
- (home-page "https://github.com/click-contrib/click-default-group")
- (license license:bsd-3)))
- (define-public python-structlog
- (package
- (name "python-structlog")
- (version "20.2.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "structlog" version))
- (sha256
- (base32
- "0x1i21vn3xjfa3j9ijbblia5z0jlzc9aqvpqc26sy16i8yjxyydg"))))
- (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"))
- #t)))))
- (native-inputs
- (list python-coverage
- python-freezegun
- python-pretend
- python-pytest
- python-pytest-asyncio
- python-simplejson
- python-twisted))
- (home-page "https://www.structlog.org/")
- (synopsis "Structured Logging for Python")
- (description "@code{structlog} changes logging in Python by adding structure
- to your log entries.")
- (license (list license:asl2.0 license:expat))))
- (define-public python-apipkg
- (package
- (name "python-apipkg")
- (version "1.5")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "apipkg" version))
- (sha256
- (base32
- "1xhak74yj3lqflvpijg15rnkklrigvsp5q7s4as4h6a157d8q8ip"))))
- (build-system python-build-system)
- (native-inputs
- (list python-pytest python-setuptools-scm))
- (synopsis "Namespace control and lazy-import mechanism")
- (description "With apipkg you can control the exported namespace of a Python
- package and greatly reduce the number of imports for your users. It is a small
- pure Python module that works on virtually all Python versions.")
- (home-page "https://github.com/pytest-dev/apipkg")
- (license license:expat)))
- (define-public python-execnet
- (package
- (name "python-execnet")
- (version "1.9.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "execnet" version))
- (sha256
- (base32
- "1ia7dvrh0gvzzpi758mx55f9flr16bzdqlmi12swm4ncm4xlyscg"))
- (patches (search-patches "python-execnet-read-only-fix.patch"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key inputs outputs tests? #:allow-other-keys)
- (when tests?
- ;; Unset PYTHONDONTWRITEBYTECODE to match the
- ;; expectations of a test in
- ;; 'testing/test_gateway.py'.
- (unsetenv "PYTHONDONTWRITEBYTECODE")
- (add-installed-pythonpath inputs outputs)
- (invoke "pytest" "-vv")))))))
- (native-inputs
- (list python-pytest python-setuptools-scm))
- (synopsis "Rapid multi-Python deployment")
- (description "Execnet provides a share-nothing model with
- channel-send/receive communication for distributing execution across many
- Python interpreters across version, platform and network barriers. It has a
- minimal and fast API targeting the following uses:
- @enumerate
- @item distribute tasks to (many) local or remote CPUs
- @item write and deploy hybrid multi-process applications
- @item write scripts to administer multiple environments
- @end enumerate")
- (home-page "https://codespeak.net/execnet/")
- (license license:expat)))
- (define-public python2-execnet
- (package-with-python2 python-execnet))
- (define-public python-icalendar
- (package
- (name "python-icalendar")
- (version "4.0.7")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "icalendar" version))
- (sha256
- (base32
- "19574j3jwssm2dkqykih4568xqfgjsa3hcd79yl5s2vfys3qvh8g"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-dateutil python-pytz))
- (synopsis "Python library for parsing iCalendar files")
- (description "The icalendar package is a parser/generator of iCalendar
- files for use with Python.")
- (home-page "https://github.com/collective/icalendar")
- (license license:bsd-2)))
- (define-public python-args
- (package
- (name "python-args")
- (version "0.1.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "args" version))
- (sha256
- (base32
- "057qzi46h5dmxdqknsbrssn78lmqjlnm624iqdhrnpk26zcbi1d7"))))
- (build-system python-build-system)
- (home-page "https://github.com/kennethreitz/args")
- (synopsis "Command-line argument parser")
- (description
- "This library provides a Python module to parse command-line arguments.")
- (license license:bsd-3)))
- (define-public python2-args
- (package-with-python2 python-args))
- (define-public python-clint
- (package
- (name "python-clint")
- (version "0.5.1")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "clint" version))
- (sha256
- (base32
- "1an5lkkqk1zha47198p42ji3m94xmzx1a03dn7866m87n4r4q8h5"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _ (invoke "py.test" "-v"))))))
- (native-inputs
- (list python-pytest))
- (propagated-inputs
- (list python-args))
- (home-page "https://github.com/kennethreitz/clint")
- (synopsis "Command-line interface tools")
- (description
- "Clint is a Python module filled with a set of tools for developing
- command-line applications, including tools for colored and indented
- output, progress bar display, and pipes.")
- (license license:isc)))
- (define-public python2-clint
- (package-with-python2 python-clint))
- (define-public python-rply
- (package
- (name "python-rply")
- (version "0.7.8")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "rply" version))
- (sha256
- (base32
- "1j81nddvnb145x4p81bnfpyai6g26i2dc1633ycsk025bb18m01a"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-appdirs))
- (home-page "https://github.com/alex/rply")
- (synopsis "Parser generator for Python")
- (description
- "This package provides a pure Python based parser generator, that also
- works with RPython. It is a more-or-less direct port of David Bazzley's PLY,
- with a new public API, and RPython support.")
- (license license:bsd-3)))
- (define-public python2-rply
- (package-with-python2 python-rply))
- (define-public python-hy
- (package
- (name "python-hy")
- (version "0.20.0")
- (source
- (origin
- (method git-fetch) ; no tests in PyPI release
- (uri (git-reference
- (url "https://github.com/hylang/hy")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32 "1g7djra9z7b0wyqyfrk2n4z3zamp2xkahv00jwdv35xmwwn09hq4"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "python" "-m" "pytest" "-k"
- (string-append ; skip some failed tests
- "not test_bin_hy_sys_executable"
- " and not test_bin_hy_circular_macro_require"
- " and not test_macro_from_module"))))))))
- (native-inputs
- (list python-pytest))
- (propagated-inputs
- (list python-astor python-colorama python-funcparserlib python-rply))
- (home-page "https://docs.hylang.org/en/stable/")
- (synopsis "Lisp frontend to Python")
- (description
- "Hy is a dialect of Lisp that's embedded in Python. Since Hy transforms
- its Lisp code into the Python Abstract Syntax Tree, you have the whole world of
- Python at your fingertips, in Lisp form.")
- (license license:expat)))
- (define-public python-hissp
- (package
- (name "python-hissp")
- (version "0.2.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "hissp" version))
- (sha256
- (base32
- "0yns7f0q699zn2ziagyas2nkndl7mp1hhssv9x9mpl7jxj2p5myw"))))
- (build-system python-build-system)
- (home-page "https://github.com/gilch/hissp")
- (synopsis "It's Python with a Lissp")
- (description "Hissp is a modular Lisp implementation that compiles to a
- functional subset of Python—Syntactic macro metaprogramming with full access
- to the Python ecosystem.")
- (license license:asl2.0)))
- (define-public python2-functools32
- (package
- (name "python2-functools32")
- (version "3.2.3-2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "functools32" version))
- (sha256
- (base32
- "0v8ya0b58x47wp216n1zamimv4iw57cxz3xxhzix52jkw3xks9gn"))))
- (build-system python-build-system)
- (arguments
- `(#:python ,python-2
- #:tests? #f)) ; no test target
- (home-page "https://github.com/MiCHiLU/python-functools32")
- (synopsis
- "Backport of the functools module from Python 3.2.3")
- (description
- "This package is a backport of the @code{functools} module from Python
- 3.2.3 for use with older versions of Python and PyPy.")
- (license license:expat)))
- (define-public python2-subprocess32
- (package
- (name "python2-subprocess32")
- (version "3.2.7")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "subprocess32" version))
- (sha256
- (base32
- "14350dhhlhyz5gqzi3lihn9m6lvskx5mcb20srx1kgsk9i50li8y"))
- (patches
- (search-patches "python2-subprocess32-disable-input-test.patch"))))
- (build-system python-build-system)
- (arguments
- `(#:python ,python-2
- ;; The test suite fails with Python > 2.7.13:
- ;; import test.support
- ;; ImportError: No module named support
- #:tests? #f
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'patch-/bin/sh
- (lambda _
- (substitute* '("subprocess32.py"
- "test_subprocess32.py")
- (("/bin/sh") (which "sh")))
- #t)))))
- (home-page "https://github.com/google/python-subprocess32")
- (synopsis "Backport of the subprocess module from Python 3.2")
- (description
- "This is a backport of the @code{subprocess} standard library module
- from Python 3.2 and 3.3 for use on Python 2. It includes bugfixes and some
- new features. On POSIX systems it is guaranteed to be reliable when used
- in threaded applications. It includes timeout support from Python 3.3 but
- otherwise matches 3.2’s API.")
- (license license:psfl)))
- (define-public python2-futures
- (package
- (name "python2-futures")
- (version "3.2.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "futures" version))
- (sha256
- (base32
- "0rdjmmsab550kxsssdq49jcniz77zlkpw4pvi9hvib3lsskjmh4y"))))
- (build-system python-build-system)
- (arguments
- `(#:python ,python-2
- #:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "python" "test_futures.py")
- #t)))))
- (home-page "https://github.com/agronholm/pythonfutures")
- (synopsis
- "Backport of the concurrent.futures package from Python 3.2")
- (description
- "The concurrent.futures module provides a high-level interface for
- asynchronously executing callables. This package backports the
- concurrent.futures package from Python 3.2")
- (license license:bsd-3)))
- (define-public python-promise
- (package
- (name "python-promise")
- (version "0.4.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "promise" version))
- (sha256
- (base32
- "1k19ms8l3d5jzjh557rgkxb5sg4mqgfc315rn4hx1z3n8qq6lr3h"))))
- (build-system python-build-system)
- ;; Tests wants python-futures, which is a python2 only program, and
- ;; can't be found by python-promise at test time.
- (arguments `(#:tests? #f))
- (home-page "https://github.com/syrusakbary/promise")
- (synopsis "Promises/A+ implementation for Python")
- (description
- "Promises/A+ implementation for Python")
- (license license:expat)))
- (define-public python-progressbar2
- (package
- (name "python-progressbar2")
- (version "3.51.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "progressbar2" version))
- (sha256
- (base32
- "0b2v3mim90rmfvixkaniz2qrs650sk230rzgd5zhcjfldmlqgxpc"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-six python-utils))
- (native-inputs
- (list python-flake8
- python-freezegun
- python-pycodestyle
- python-pytest
- python-pytest-cache
- python-pytest-cov
- python-pytest-flakes
- python-pytest-pep8
- python-sphinx))
- (home-page "https://github.com/WoLpH/python-progressbar")
- (synopsis "Text progress bar library for Python")
- (description
- "This package provides a Python progressbar library to provide
- visual (yet text based) progress to long running operations.")
- (license license:bsd-3)))
- (define-public python-progressbar33
- (package
- (name "python-progressbar33")
- (version "2.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "progressbar33" version))
- (sha256
- (base32
- "1zvf6zs5hzrc03p9nfs4p16vhilqikycvv1yk0pxn8s07fdhvzji"))))
- (build-system python-build-system)
- (home-page "https://github.com/germangh/python-progressbar")
- (synopsis "Text progress bar library for Python")
- (description
- "This package provides a text progress bar library for Python. This
- version only differs from the original @code{progressbar} package in that it
- uses relative package imports instead of absolute imports, which is necessary
- for the module to work under Python 3.3.")
- ;; Either or both of these licenses may be selected.
- (license (list license:lgpl2.1+ license:bsd-3))))
- (define-public python-colorama
- (package
- (name "python-colorama")
- (version "0.4.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "colorama" version))
- (sha256
- (base32 "16w62sm95hmh55rqxn4zwdz0bkh3fqm1qnz9cwi3s510iasb4har"))))
- (build-system python-build-system)
- (synopsis "Colored terminal text rendering for Python")
- (description "Colorama is a Python library for rendering colored terminal
- text.")
- (home-page "https://pypi.org/project/colorama/")
- (license license:bsd-3)))
- (define-public python2-colorama
- (package-with-python2 python-colorama))
- ;; awscli and botocore do not accept version 0.4.4
- (define-public python-colorama-for-awscli
- (package
- (inherit python-colorama)
- (version "0.4.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "colorama" version))
- (sha256
- (base32 "189n8hpijy14jfan4ha9f5n06mnl33cxz7ay92wjqgkr639s0vg9"))))))
- (define-public python-moto
- (package
- (name "python-moto")
- (version "2.2.12")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "moto" version))
- (sha256
- (base32
- "0pvay0jp119lzzwf5qj5h6311271yq0w2i6344ds20grpf6g6gz8"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'patch-hardcoded-executable-names
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((bash-exec (search-input-file inputs "/bin/sh")))
- (substitute* "moto/batch/models.py"
- (("/bin/sh") bash-exec))
- (substitute* (find-files "tests" "\\.py$")
- (("#!/bin/bash") (string-append "#!" bash-exec))))))
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "pytest" "-vv" "-m" "not network" "-k"
- (string-append
- ;; XXX: This test is timing sensitive and may
- ;; fail non-deterministically.
- "not test_cancel_pending_job"
- ;; These tests require Docker.
- " and not test_terminate_job"
- " and not test_invoke_function_from_sqs_exception"
- " and not test_rotate_secret_lambda_invocations"
- ;; These tests also require the network.
- " and not test_put_record_batch_http_destination"
- " and not test_put_record_http_destination"
- " and not test_dependencies"
- " and not test_cancel_running_job"
- " and not test_container_overrides"))))))))
- (native-inputs
- (list python-flask
- python-flask-cors
- python-freezegun
- python-parameterized
- python-pytest
- python-sure))
- (inputs
- (list bash-minimal))
- (propagated-inputs
- (list python-aws-xray-sdk
- python-boto
- python-boto3
- python-botocore
- python-cfn-lint
- python-cryptography
- python-dateutil
- python-docker
- python-idna
- python-jinja2
- python-jose
- python-jsondiff
- python-mock
- python-pytz
- python-pyyaml
- python-requests
- python-responses
- python-six
- python-sshpubkeys
- python-werkzeug
- python-xmltodict))
- (home-page "https://github.com/spulec/moto")
- (synopsis "Mock out the boto library")
- (description
- "@code{moto} is a library designed to easily mock out the
- @code{boto} library.")
- (license license:asl2.0)))
- (define-public python-rsa
- (package
- (name "python-rsa")
- (version "3.4.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "rsa" version))
- (sha256
- (base32
- "1dcxvszbikgzh99ybdc7jq0zb9wspy2ds8z9mjsqiyv3q884xpr5"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-pyasn1))
- (synopsis "Pure-Python RSA implementation")
- (description "Python-RSA is a pure-Python RSA implementation. It supports
- encryption and decryption, signing and verifying signatures, and key
- generation according to PKCS#1 version 1.5. It can be used as a Python
- library as well as on the command line.")
- (home-page "https://stuvel.eu/rsa")
- (license license:asl2.0)))
- (define-public python2-rsa
- (package-with-python2 python-rsa))
- (define-public python-pluggy
- (package
- (name "python-pluggy")
- (version "0.13.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pluggy" version))
- (sha256
- (base32
- "1c35qyhvy27q9ih9n899f3h4sdnpgq027dbiilly2qb5cvgarchm"))))
- (build-system python-build-system)
- (native-inputs
- (list python-setuptools-scm))
- (synopsis "Plugin and hook calling mechanism for Python")
- (description "Pluggy is an extraction of the plugin manager as used by
- Pytest but stripped of Pytest specific details.")
- (home-page "https://pypi.org/project/pluggy/")
- (properties `((python2-variant . ,(delay python2-pluggy))))
- (license license:expat)))
- (define-public python2-pluggy
- (let ((base (package-with-python2 (strip-python2-variant
- python-pluggy))))
- (package/inherit
- base
- (propagated-inputs
- `(("python-importlib-metadata" ,python2-importlib-metadata))))))
- ;; This package requires python2-importlib-metadata, but that package
- ;; ends up needing python2-pluggy via python2-pytest, so we need this
- ;; variant to solve the circular dependency.
- (define-public python2-pluggy-bootstrap
- (hidden-package
- (package/inherit
- python2-pluggy
- (name "python2-pluggy-bootstrap")
- (arguments
- `(#:tests? #f
- ,@(package-arguments python2-pluggy)))
- (propagated-inputs
- `(("python-importlib-metadata" ,python2-importlib-metadata-bootstrap))))))
- (define-public python-plumbum
- (package
- (name "python-plumbum")
- (version "1.7.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "plumbum" version))
- (sha256
- (base32 "1kidj821k79dw064rlxh84xamb9h79ychg3pgj81jlvm5hs48xri"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f)) ;no tests
- (native-inputs
- ;; XXX: Not actually used since there are no tests but required for
- ;; build.
- (list python-pytest))
- (home-page "https://plumbum.readthedocs.io")
- (synopsis "Python shell combinators library")
- (description
- "Plumbum is a library of tools for replacing shell scripts with Python
- code.")
- (license license:expat)))
- (define-public python-deprecation
- (package
- (name "python-deprecation")
- (version "2.1.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "deprecation" version))
- (sha256
- (base32
- "1zqqjlgmhgkpzg9ss5ki8wamxl83xn51fs6gn2a8cxsx9vkbvcvj"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-packaging))
- (native-inputs
- (list python-unittest2))
- (home-page "https://deprecation.readthedocs.io/")
- (synopsis "Python library to handle automated deprecations")
- (description
- "This is a library that enables automated deprecations. It offers the
- @code{deprecated()} decorator to wrap functions, providing proper warnings
- both in documentation and via Python’s warnings system, as well as the
- @code{deprecation.fail_if_not_removed()} decorator for test methods to ensure
- that deprecated code is eventually removed.")
- (license license:asl2.0)))
- (define-public python-tox
- (package
- (name "python-tox")
- (version "3.20.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "tox" version))
- (sha256
- (base32
- "0nk0nyzhzamcrvn0qqzzy54isxxqwdi28swml7a2ym78c3f9sqpb"))))
- (build-system python-build-system)
- (arguments
- ;; FIXME: Tests require pytest-timeout, which itself requires
- ;; pytest>=2.8.0 for installation.
- '(#:tests? #f))
- (propagated-inputs
- (list python-filelock
- python-packaging
- python-pluggy
- python-py
- python-six
- python-toml
- python-virtualenv))
- (native-inputs
- (list ; FIXME: Missing: ("python-pytest-timeout" ,python-pytest-timeout)
- python-pytest ; >= 2.3.5
- python-setuptools-scm))
- (home-page "https://tox.readthedocs.io")
- (synopsis "Virtualenv-based automation of test activities")
- (description "Tox is a generic virtualenv management and test command line
- tool. It can be used to check that a package installs correctly with
- different Python versions and interpreters, or run tests in each type of
- supported environment, or act as a frontend to continuous integration
- servers.")
- (license license:expat)))
- (define-public python-jmespath
- (package
- (name "python-jmespath")
- (version "0.9.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "jmespath" version))
- (sha256
- (base32
- "0k0765x1mybcrzajh3hiqkl8sy9hs0bmn4900frxy0j3ykvaxqmx"))))
- (build-system python-build-system)
- (native-inputs
- (list python-nose))
- (synopsis "JSON Matching Expressions")
- (description "JMESPath (pronounced “james path”) is a Python library that
- allows one to declaratively specify how to extract elements from a JSON
- document.")
- (home-page "https://github.com/jmespath/jmespath.py")
- (license license:expat)))
- (define-public python2-jmespath
- (package-with-python2 python-jmespath))
- (define-public python-symengine
- (package
- (name "python-symengine")
- (version "0.6.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "symengine" version))
- (sha256
- (base32 "1kn1w4dp9mrsq6kzmhf4pjmx3wicxc3dw1mwa924q8g48g77lr4c"))))
- (build-system python-build-system)
- (native-inputs
- (list cmake python-cython))
- (inputs
- (list symengine))
- (home-page "https://github.com/symengine/symengine.py")
- (synopsis "Python library providing wrappers to SymEngine")
- (description
- "This library provides a Python wrapper to SymEngine, a fast C++ symbolic
- manipulation library.")
- (license license:expat)))
- (define-public python-uncertainties
- (package
- (name "python-uncertainties")
- (version "3.1.5")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "uncertainties" version))
- (sha256
- (base32
- "00z9xl40czmqk0vmxjvmjvwb41r893l4dad7nj1nh6blw3kw28li"))))
- (build-system python-build-system)
- ;; While there are test files, there is no "tests" directory, so the tests
- ;; fail.
- (arguments '(#:tests? #false))
- (propagated-inputs
- (list python-future))
- (native-inputs
- (list python-nose python-numpy))
- (home-page "https://uncertainties-python-package.readthedocs.io/")
- (synopsis "Calculations with uncertainties")
- (description
- "The uncertainties package transparently handles calculations with
- numbers with uncertainties. It can also yield the derivatives of any
- expression.")
- (license license:bsd-3)))
- (define-public python-asteval
- (package
- (name "python-asteval")
- (version "0.9.23")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "asteval" version))
- (sha256
- (base32
- "0f54sd4w1a72ij1bcxs2x7dk9xf8bzclawijf1z18bqx9f96l2gm"))))
- (build-system python-build-system)
- (native-inputs
- (list python-pytest))
- (home-page "https://github.com/newville/asteval")
- (synopsis "Minimalistic evaluator of Python expressions")
- (description
- "This package provides a minimalistic evaluator of Python expression
- using the @code{ast} module")
- (license license:expat)))
- (define-public python-lmfit
- (package
- (name "python-lmfit")
- (version "1.0.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "lmfit" version))
- (sha256
- (base32
- "0iab33jjb60f8kn0k0cqb0vjp1mdskks2n3kpn97zkw5cvjhq2b7"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-asteval python-numpy python-scipy python-uncertainties))
- (native-inputs
- (list python-pytest))
- (home-page "https://lmfit.github.io/lmfit-py/")
- (synopsis "Least-Squares minimization with bounds and constraints")
- (description
- "Lmfit provides a high-level interface to non-linear optimization and
- curve fitting problems for Python. It builds on and extends many of the
- optimization methods of @code{scipy.optimize}. Initially inspired by (and
- named for) extending the Levenberg-Marquardt method from
- @code{scipy.optimize.leastsq}, lmfit now provides a number of useful
- enhancements to optimization and data fitting problems.")
- (license license:bsd-3)))
- (define-public python-boto
- (package
- (name "python-boto")
- (version "2.49.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "boto" version))
- (sha256
- (base32
- "0njy09c4wjx7ipxhwi6vv404nflyiasl78vwwxxpclnql903n3ga"))))
- (build-system python-build-system)
- (arguments
- ;; XXX: This package is unmaintained and has problems with newer versions
- ;; of Python 3 as well as test libraries. 'python-moto' still uses a
- ;; subset of this library, so keep it around for now, but disable tests.
- '(#:tests? #f))
- (propagated-inputs
- (list python-paramiko python-requests))
- (home-page "https://github.com/boto/boto")
- (synopsis "Python interfaces for Amazon Web Services")
- (description
- "This package provides various facilities for interacting with Amazon
- Web Services through Python.
- This software is unmaintained, and new projects should use @code{boto3} instead.")
- (license license:expat)))
- (define-public python-botocore
- ;; Note: When updating botocore, also make sure that boto3 and awscli
- ;; are compatible.
- (package
- (name "python-botocore")
- (version "1.22.11")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "botocore" version))
- (sha256
- (base32
- "1z7g2scyzvfq4yj9b4w911k7802ry1v6lqfnwq12l0ak7ywmsvrh"))))
- (build-system python-build-system)
- (arguments
- ;; FIXME: Many tests are failing.
- '(#:tests? #f))
- (propagated-inputs
- (list python-dateutil python-jmespath python-urllib3))
- (home-page "https://github.com/boto/botocore")
- (synopsis "Low-level interface to AWS")
- (description "Botocore is a Python library that provides a low-level
- interface to the Amazon Web Services (AWS) API.")
- (license license:asl2.0)))
- (define-public python2-botocore
- (package-with-python2 python-botocore))
- (define-public python-boto3
- (package
- (name "python-boto3")
- (version "1.19.11")
- (home-page "https://github.com/boto/boto3")
- (source (origin
- (method git-fetch)
- (uri (git-reference (url home-page) (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "1wv0ci2z5ywvm63dh4mp64vqyyvkm4qxc8dxv8ncrqiiphpgr9aq"))))
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'delete-network-tests
- ;; Deleting integration tests because they are trying to connect to AWS.
- (lambda _
- (delete-file-recursively "tests/integration"))))))
- (build-system python-build-system)
- (native-inputs
- (list python-nose python-mock python-pytest))
- (propagated-inputs
- (list python-botocore python-jmespath python-s3transfer))
- (synopsis "AWS SDK for Python")
- (description
- "Boto3 is a Python library for writing programs that interact with
- @acronym{AWS,Amazon Web Services}.")
- (license license:asl2.0)))
- (define-public python-pyfiglet
- (package
- (name "python-pyfiglet")
- (version "0.8.post1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pyfiglet" version))
- (sha256
- (base32
- "0f9n2076ga2ccsg174k2d7n0z4d44ml96yzc72s6g4nhalbk5hn6"))))
- (build-system python-build-system)
- (home-page "https://github.com/pwaller/pyfiglet")
- (synopsis "Draw ASCII art big letters in Python")
- (description "This module lets you draw large letter from ordinary characters
- in pure Python.")
- (license license:expat)))
- (define-public python-xdo
- (package
- (name "python-xdo")
- (version "0.3")
- (source (origin
- (method url-fetch)
- (uri (string-append
- "http://http.debian.net/debian/pool/main/p/python-xdo/"
- "python-xdo_" version ".orig.tar.gz"))
- (sha256
- (base32
- "1vqh1n5yy5dhnq312kwrl90fnck4v26is3lq3lxdvcn60vv19da0"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (add-before 'install 'patch-libxdo-path
- ;; Hardcode the path of dynamically loaded libxdo library.
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((libxdo (string-append
- (assoc-ref inputs "xdotool")
- "/lib/libxdo.so"))
- (libc (string-append
- (assoc-ref inputs "libc")
- "/lib/libc.so.6")))
- (substitute* "xdo/_xdo.py"
- (("find_library\\(\"xdo\"\\)")
- (simple-format #f "\"~a\"" libxdo))
- (("ctypes\\.util\\.find_library\\('libc'\\)")
- (simple-format #f "\"~a\"" libc)))
- #t))))
- #:tests? #f)) ; no tests provided
- (propagated-inputs
- (list python-six))
- (inputs
- `(("xdotool" ,xdotool)
- ("libX11" ,libx11)))
- (home-page "https://tracker.debian.org/pkg/python-xdo")
- (synopsis "Python library for simulating X11 keyboard/mouse input")
- (description "Provides bindings to libxdo for manipulating X11 via simulated
- input. (Note that this is mostly a legacy library; you may wish to look at
- python-xdo for newer bindings.)")
- (license license:bsd-3)))
- (define-public python2-xdo
- (package-with-python2 python-xdo))
- (define-public python-mako
- (package
- (name "python-mako")
- (version "1.1.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "Mako" version))
- (sha256
- (base32
- "09ywrmhr6gdyfx6d5727wwjnz73i6rklqcb4c14m7sqc830wi5c1"))))
- (build-system python-build-system)
- (arguments
- `(#:phases (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (if tests?
- (invoke "nosetests" "-v")
- (format #t "test suite not run~%"))
- #t)))))
- (propagated-inputs
- (list python-markupsafe))
- (native-inputs
- (list python-mock python-nose))
- (home-page "https://www.makotemplates.org/")
- (synopsis "Templating language for Python")
- (description "Mako is a templating language for Python that compiles
- templates into Python modules.")
- (license license:expat)))
- (define-public python2-mako
- (package-with-python2 python-mako))
- (define-public python-waitress
- (package
- (name "python-waitress")
- (version "1.1.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "waitress" version))
- (patches (search-patches "python-waitress-fix-tests.patch"))
- (sha256
- (base32
- "1a85gyji0kajc3p0s1pwwfm06w4wfxjkvvl4rnrz3h164kbd6g6k"))))
- (build-system python-build-system)
- (home-page "https://github.com/Pylons/waitress")
- (synopsis "Waitress WSGI server")
- (description "Waitress is meant to be a production-quality pure-Python WSGI
- server with very acceptable performance.")
- (license license:zpl2.1)))
- (define-public python2-waitress
- (package-with-python2 python-waitress))
- (define-public python-whichcraft
- (package
- (name "python-whichcraft")
- (version "0.6.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "whichcraft" version))
- (sha256
- (base32
- "11yfkzyplizdgndy34vyd5qlmr1n5mxis3a3svxmx8fnccdvknxc"))))
- (build-system python-build-system)
- (native-inputs
- (list python-pytest))
- (home-page "https://github.com/pydanny/whichcraft")
- (synopsis "Cross-platform cross-python shutil.which functionality")
- (description
- "This package provides a shim of the shutil.which function that's
- designed to work across multiple versions of Python.")
- (license license:bsd-3)))
- (define-public python-cookiecutter
- (package
- (name "python-cookiecutter")
- (version "1.7.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "cookiecutter" version))
- (sha256
- (base32 "0mx49whhwcxmvcak27zr7p7ndzkn3w7psfd7fzh3n91fi1r4v6kb"))))
- (build-system python-build-system)
- (native-inputs
- (list python-freezegun python-pytest python-pytest-catchlog
- python-pytest-cov python-pytest-mock))
- (propagated-inputs
- (list python-binaryornot
- python-click
- python-future
- python-jinja2
- python-jinja2-time
- python-poyo
- python-requests
- python-slugify
- python-text-unidecode
- python-whichcraft))
- (home-page "https://github.com/cookiecutter/cookiecutter")
- (synopsis
- "Command-line utility that creates projects from project templates")
- (description
- "This package provides a command-line utility that creates projects from
- project templates, e.g. creating a Python package project from a Python package
- project template.")
- (license license:bsd-3)))
- (define-public python-pyquery
- (package
- (name "python-pyquery")
- (version "1.2.17")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pyquery" version))
- (sha256
- (base32
- "1xia20wm0vx5dk85kcwgh13bylz8qh47ffjxssd2586r60xi783a"))))
- (build-system python-build-system)
- (native-inputs
- (list python-webob python-webtest))
- (propagated-inputs
- (list python-lxml python-cssselect))
- (home-page "https://github.com/gawel/pyquery")
- (synopsis "Make jQuery-like queries on xml documents")
- (description "pyquery allows you to make jQuery queries on xml documents.
- The API is as much as possible the similar to jQuery. pyquery uses lxml for
- fast xml and html manipulation.")
- (license license:bsd-3)))
- (define-public python-anyjson
- (package
- (name "python-anyjson")
- (version "0.3.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "anyjson" version))
- (sha256
- (base32
- "1fjph4alvcscsl5d4b6qpv1yh31jy05jxi1l0xff7lws7j32v09p"))))
- (build-system python-build-system)
- (arguments
- `(;; We could possibly get tests working, but on Python 3 it's not so easy.
- ;; Very strangely, 2to3 is run *during setup.py install* (or bdist, or
- ;; whatever) so this transformation needs to be done before the tests
- ;; can be run. Maybe we could add a build step to transform beforehand
- ;; but it could be annoying/difficult.
- ;; We can enable tests for the Python 2 version, though, and do below.
- #:tests? #f))
- (home-page "https://bitbucket.org/runeh/anyjson/")
- (synopsis
- "Wraps best available JSON implementation in a common interface")
- (description
- "Anyjson loads whichever is the fastest JSON module installed
- and provides a uniform API regardless of which JSON implementation is used.")
- (license license:bsd-3)
- (properties `((python2-variant . ,(delay python2-anyjson))))))
- (define-public python2-anyjson
- (let ((anyjson (package-with-python2
- (strip-python2-variant python-anyjson))))
- (package/inherit anyjson
- (arguments `(;; Unlike the python 3 variant, we do run tests. See above!
- #:tests? #t
- ,@(package-arguments anyjson)))
- (native-inputs `(("python2-nose" ,python2-nose))))))
- (define-public python-amqp
- (package
- (name "python-amqp")
- (version "5.0.7")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "amqp" version))
- (sha256
- (base32 "0p9alyinl24z699w4gpd8wvn90sm2il1p0gfwdhbpinksy7vfmyp"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f)) ; not compatible with pytest>=6 as of 5.0.7
- (propagated-inputs
- (list python-vine))
- (home-page "https://github.com/celery/py-amqp")
- (synopsis "Low-level AMQP client for Python (fork of amqplib)")
- (description
- "This is a fork of amqplib which was originally written by Barry Pederson.
- It is maintained by the Celery project, and used by kombu as a pure python
- alternative when librabbitmq is not available.")
- (license license:lgpl2.1+)))
- (define-public python-beniget
- (package
- (name "python-beniget")
- (version "0.4.1")
- (home-page "https://github.com/serge-sans-paille/beniget")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "beniget" version))
- (sha256
- (base32 "035c4f78yllpw2c5p1w92520rilm7nnpsqh7yvi3qmfhi8xlnmbm"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-gast))
- (synopsis "Extract semantic information about static Python code")
- (description
- "Beniget is a collection of analyzers for Python @acronym{AST,
- Abstract Syntax Tree}. It is a building block for writing a static analyzer
- or compiler for Python.")
- (license license:bsd-3)))
- (define-public python-txamqp
- (package
- (name "python-txamqp")
- (version "0.8.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "txAMQP" version))
- (sha256
- (base32
- "0jd9864k3csc06kipiwzjlk9mq4054s8kzk5q1cfnxj8572s4iv4"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-six python-twisted))
- (home-page "https://github.com/txamqp/txamqp")
- (synopsis "Communicate with AMQP peers and brokers using Twisted")
- (description
- "This package provides a Python library for communicating with AMQP peers
- and brokers using the asynchronous networking framework Twisted. It contains
- all the necessary code to connect, send and receive messages to/from an
- AMQP-compliant peer or broker (Qpid, OpenAMQ, RabbitMQ) using Twisted. It
- also includes support for using Thrift RPC over AMQP in Twisted
- applications.")
- (license license:asl2.0)))
- (define-public python-kombu
- (package
- (name "python-kombu")
- (version "5.2.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "kombu" version))
- (sha256
- (base32 "0256915q3z4pjrkqxw16a31np3p25dxnk1mq2zv0hs4izdihfp8g"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'delete-transport-tests
- (lambda _ ; this tests message passing to many different databases
- (delete-file-recursively "t/unit/transport"))))))
- (native-inputs
- (list python-case python-mock python-pyro4 python-pytest-sugar
- python-pytz))
- (propagated-inputs
- (list python-amqp python-cached-property python-vine))
- (home-page "https://kombu.readthedocs.io")
- (synopsis "Message passing library for Python")
- (description "The aim of Kombu is to make messaging in Python as easy as
- possible by providing an idiomatic high-level interface for the AMQ protocol,
- and also provide proven and tested solutions to common messaging problems.
- AMQP is the Advanced Message Queuing Protocol, an open standard protocol for
- message orientation, queuing, routing, reliability and security, for which the
- RabbitMQ messaging server is the most popular implementation.")
- (license license:bsd-3)))
- (define-public python-billiard
- (package
- (name "python-billiard")
- (version "3.6.4.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "billiard" version))
- (sha256
- (base32 "0ismj2p8c66ykpss94rs0bfra5agxxmljz8r3gaq79r8valfb799"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'remove-win-files
- (lambda _
- (for-each delete-file-recursively
- ;; test_multiprocessing seem to be written in Python2.
- '("t/integration/tests/test_multiprocessing.py"
- "t/unit/test_win32.py"
- "billiard/popen_spawn_win32.py"
- "billiard/_win.py")))))))
- (native-inputs
- (list python-case python-psutil python-pytest))
- (home-page "https://github.com/celery/billiard")
- (synopsis "Python multiprocessing fork with improvements and bugfixes")
- (description
- "Billiard is a fork of the Python 2.7 multiprocessing package. The
- multiprocessing package itself is a renamed and updated version of R Oudkerk's
- pyprocessing package. This standalone variant is intended to be compatible with
- Python 2.4 and 2.5, and will draw its fixes/improvements from python-trunk.")
- (license license:bsd-3)))
- (define-public python-celery
- (package
- (name "python-celery")
- (version "5.1.2") ;newer versions require python-click>=8
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "celery" version))
- (sha256
- (base32 "1c6lw31i3v81fyj4yn37lbvv70xdgb389iccirzyjr992vlkv6ld"))))
- (build-system python-build-system)
- (arguments
- '(#:tests? #f
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'delete-integration-tests
- (lambda _
- (delete-file-recursively "t/integration"))) ;hangs tests
- (replace 'check
- (lambda* (#:key inputs outputs tests? #:allow-other-keys)
- (when tests?
- (add-installed-pythonpath inputs outputs)
- (invoke "python" "-m" "pytest" "t" "-k"
- (string-append ; AssertionErrors
- "not test_check_privileges_no_fchown"
- " and not test_all_reqs_enabled_in_tests"))))))))
- (native-inputs
- (list python-case
- python-flaky
- python-iniconfig
- python-moto
- python-msgpack
- python-pytest
- python-pytest-celery
- python-pytest-subtests
- python-pytest-timeout
- python-toml))
- (propagated-inputs
- (list python-billiard
- python-boto3
- python-click
- python-click-didyoumean
- python-click-plugins
- python-click-repl
- python-cryptography
- python-kombu
- python-pytz
- python-vine))
- (home-page "https://celeryproject.org")
- (synopsis "Distributed Task Queue")
- (description "Celery is an asynchronous task queue/job queue based on
- distributed message passing. It is focused on real-time operation, but
- supports scheduling as well. The execution units, called tasks, are executed
- concurrently on a single or more worker servers using multiprocessing,
- Eventlet, or gevent. Tasks can execute asynchronously (in the background) or
- synchronously (wait until ready).")
- (license license:bsd-3)))
- (define-public python-translitcodec
- (package
- (name "python-translitcodec")
- (version "0.4.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "translitcodec" version))
- (sha256
- (base32
- "10x6pvblkzky1zhjs8nmx64nb9jdzxad4bxhq4iwv0j4z2aqjnki"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f)) ; no tests provided
- (home-page
- "https://github.com/claudep/translitcodec")
- (synopsis
- "Unicode to 8-bit charset transliteration codec")
- (description
- "This package contains codecs for transliterating ISO 10646 texts into
- best-effort representations using smaller coded character sets (ASCII,
- ISO 8859, etc.).")
- (license license:expat)))
- (define-public python2-translitcodec
- (package-with-python2 python-translitcodec))
- (define-public python-anyqt
- (package
- (name "python-anyqt")
- (version "0.0.13")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "AnyQt" version))
- (sha256
- (base32 "0z7myf0mp1qx4gza6ncqyq9whk67vblmh9n3klk19dv4aakjml2f"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f ;there are no tests
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'delete-files
- ;; Delete files related to other operating systems.
- (lambda _
- (delete-file "AnyQt/QtMacExtras.py")
- (delete-file "AnyQt/QtWinExtras.py"))))))
- (home-page "https://github.com/ales-erjavec/anyqt")
- (synopsis "PyQt4/PyQt5 compatibility layer")
- (description "AnyQt is a PyQt4/PyQt5 compatibility layer.")
- (license license:gpl3)))
- (define-public python-pyqtgraph
- (package
- (name "python-pyqtgraph")
- (version "0.12.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pyqtgraph" version))
- (sha256
- (base32 "0kc7ncv0lr3spni29i9g8nszyr4xinswqi2zzs6v8kqqi593pvyj"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-before 'check 'set-home-and-qpa
- (lambda _
- (setenv "HOME" "/tmp")
- (setenv "QT_QPA_PLATFORM" "offscreen")
- #t))
- (replace 'check
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (add-installed-pythonpath inputs outputs)
- (invoke "pytest" "-vv" "-k"
- (string-append
- ;; These tests try to download online data.
- "not test_PolyLineROI"
- " and not test_getArrayRegion_axisorder"
- " and not test_getArrayRegion"
- " and not test_PlotCurveItem"
- " and not test_NonUniformImage_colormap"
- " and not test_NonUniformImage_lut"
- " and not test_ImageItem_axisorder"
- " and not test_ImageItem"
- ;; The test_reload test fails and suggests adding
- ;; "--assert=plain" to the pytest command, but it
- ;; doesn't solve the failure.
- " and not test_reload")))))))
- (native-inputs
- (list python-pytest python-pytest-cov python-pytest-xdist))
- (inputs
- (list qtbase-5))
- (propagated-inputs
- (list python-h5py python-numpy python-pyopengl python-scipy
- python-pyqt-without-qtwebkit))
- (home-page "http://www.pyqtgraph.org")
- (synopsis "Scientific graphics and GUI library for Python")
- (description
- "PyQtGraph is a Pure-python graphics library for PyQt5, PyQt6, PySide2
- and PySide6. It is intended for use in mathematics, scientific or engineering
- applications.")
- (license license:expat)))
- (define-public python-qasync
- (package
- (name "python-qasync")
- (version "0.22.0")
- (source
- (origin
- ;; There are no tests in the PyPI tarball.
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/CabbageDevelopment/qasync/")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "1q9cllrwf94whr0f6mipa0hdq1rcyqvklwx19g35g2dav8f3xkjl"))))
- (build-system python-build-system)
- (arguments
- `(#:test-target "pytest"
- #:phases
- (modify-phases %standard-phases
- (add-before 'check 'set-qpa
- (lambda _
- (setenv "QT_QPA_PLATFORM" "offscreen"))))))
- (native-inputs
- (list python-pytest python-pytest-runner))
- (propagated-inputs
- (list python-pyqt))
- (home-page "https://github.com/CabbageDevelopment/qasync")
- (synopsis "Implementation of the PEP 3156 Event-Loop with Qt")
- (description
- "@code{qasync} allows coroutines to be used in PyQt/PySide applications
- by providing an implementation of the PEP 3156 event-loop.")
- (license license:bsd-2)))
- (define-public python-editor
- (package
- (name "python-editor")
- (version "1.0.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "python-editor" version))
- (sha256
- (base32
- "0yrjh8w72ivqxi4i7xsg5b1vz15x8fg51xra7c3bgfyxqnyadzai"))))
- (build-system python-build-system)
- (arguments
- '(#:tests? #f)) ;XXX: needs a TTY and an editor
- (home-page "https://github.com/fmoo/python-editor")
- (synopsis "Programmatically open an editor, capture the result")
- (description
- "python-editor is a library that provides the editor module for
- programmatically interfacing with your system's $EDITOR.")
- (license license:asl2.0)))
- (define-public python2-editor
- (package-with-python2 python-editor))
- (define-public python-multiprocessing-logging
- (package
- (name "python-multiprocessing-logging")
- (version "0.3.1")
- (home-page "https://github.com/jruere/multiprocessing-logging")
- (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
- "1625wy3djlr3b2fpd3vi822f8gw6b75mnls5a4318dbi9za5pf0y"))))
- (build-system python-build-system)
- (synopsis "Manage logs from multiple processes")
- (description
- "This Python module implements a multiprocessing-aware @code{Handler}
- that, when set on the root @code{Logger}, will tunnel log records to the
- main process so that they are handled correctly.")
- (license license:lgpl3+)))
- (define-public python-vobject
- (package
- (name "python-vobject")
- (version "0.9.6.1")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "vobject" version))
- (sha256
- (base32
- "0081g4gngw28j7vw8101jk600wz4gzfrhf5myrqvn2mrfkn2llcn"))))
- (build-system python-build-system)
- (arguments
- '(;; The test suite relies on some non-portable Windows interfaces.
- #:tests? #f))
- (propagated-inputs
- (list python-dateutil python-pyicu))
- (synopsis "Parse and generate vCard and vCalendar files")
- (description "Vobject is intended to be a full featured Python package for
- parsing and generating vCard and vCalendar files. Currently, iCalendar files
- are supported and well tested. vCard 3.0 files are supported, and all data
- should be imported, but only a few components are understood in a sophisticated
- way.")
- (home-page "https://eventable.github.io/vobject/")
- (license license:asl2.0)))
- (define-public python2-vobject
- (package-with-python2 python-vobject))
- (define-public python-munkres
- (package
- (name "python-munkres")
- (version "1.1.4")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "munkres" version))
- (sha256
- (base32
- "00yvj8bxmhhhhd74v7j0x673is7vizmxwgb3dd5xmnkr74ybyi7w"))))
- (build-system python-build-system)
- (native-inputs (list python-pytest-6))
- (home-page "https://software.clapper.org/munkres/")
- (synopsis "Implementation of the Munkres algorithm")
- (description "The Munkres module provides an implementation of the Munkres
- algorithm (also called the Hungarian algorithm or the Kuhn-Munkres algorithm),
- useful for solving the Assignment Problem.")
- (license license:bsd-3)))
- (define-public python-whoosh
- (package
- (name "python-whoosh")
- (version "2.7.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "Whoosh" version))
- (sha256
- (base32
- "10qsqdjpbc85fykc1vgcs8xwbgn4l2l52c8d83xf1q59pwyn79bw"))))
- (build-system python-build-system)
- (arguments '(#:tests? #f)) ; Test invocation is no longer supported by Python.
- (native-inputs
- (list python-pytest))
- (home-page "https://bitbucket.org/mchaput/whoosh")
- (synopsis "Full text indexing, search, and spell checking library")
- (description
- "Whoosh is a fast, pure-Python full text indexing, search, and spell
- checking library.")
- (license license:bsd-2)))
- (define-public python2-whoosh
- (let ((whoosh (package-with-python2 (strip-python2-variant python-whoosh))))
- (package/inherit whoosh
- (propagated-inputs
- `(("python2-backport-ssl-match-hostname"
- ,python2-backport-ssl-match-hostname)
- ,@(package-propagated-inputs whoosh))))))
- (define-public python-codespell
- (package
- (name "python-codespell")
- (version "2.1.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "codespell" version))
- (sha256
- (base32 "1r9y714cz8m894rxp7pyvicr1lw2iid24vz6fxbl5wzy8ibgxlqr"))))
- (build-system python-build-system)
- (inputs
- (list python-chardet))
- (native-inputs
- (list python-check-manifest python-flake8 python-pytest
- python-pytest-cov python-pytest-dependency))
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key outputs tests? #:allow-other-keys)
- (when tests?
- ;; Make installed executable available for running the tests.
- (setenv "PATH"
- (string-append (assoc-ref outputs "out") "/bin"
- ":" (getenv "PATH")))
- (invoke "pytest" "-vv")))))))
- (home-page "https://github.com/codespell-project/codespell/")
- (synopsis "Spellchecker for code")
- (description "Codespell fixes common misspellings in text files.
- It's designed primarily for checking misspelled words in source code,
- but it can be used with other files as well. It does not check for word
- membership in a complete dictionary, but instead looks for a set of
- common misspellings. Therefore it should catch errors like \"adn\", but
- it will not catch \"adnasdfasdf\". This also means it shouldn't
- generate false-positives when you use a niche term it doesn't know
- about.")
- (license
- (list
- ; for codespell and codespell_lib
- license:gpl2
- ; for dictionary*.txt
- license:cc-by-sa3.0))))
- (define-public python-pathlib
- (package
- (name "python-pathlib")
- (version "1.0.1")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "pathlib" version))
- (sha256
- (base32
- "17zajiw4mjbkkv6ahp3xf025qglkj0805m9s41c45zryzj6p2h39"))))
- (build-system python-build-system)
- ;; The tests depend on the internal "test" module, which does not provide
- ;; a stable interface.
- (arguments `(#:tests? #f))
- (home-page "https://pathlib.readthedocs.org/")
- (synopsis "Object-oriented file system paths")
- (description "Pathlib offers a set of classes to handle file system paths.
- It offers the following advantages over using string objects:
- @enumerate
- @item No more cumbersome use of os and os.path functions. Everything can
- be done easily through operators, attribute accesses, and method calls.
- @item Embodies the semantics of different path types. For example,
- comparing Windows paths ignores casing.
- @item Well-defined semantics, eliminating any inconsistencies or
- ambiguities (forward vs. backward slashes, etc.).
- @end enumerate
- Note: In Python 3.4, pathlib is now part of the standard library. For other
- Python versions please consider python-pathlib2 instead, which tracks the
- standard library module. This module (python-pathlib) isn't maintained
- anymore.")
- (license license:expat)))
- (define-public python2-pathlib
- (package-with-python2 python-pathlib))
- (define-public python2-pathlib2
- (package
- (name "python2-pathlib2")
- (version "2.3.5")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "pathlib2" version))
- (sha256
- (base32
- "0s4qa8c082fdkb17izh4mfgwrjd1n5pya18wvrbwqdvvb5xs9nbc"))))
- (build-system python-build-system)
- ;; We only need the the Python 2 variant, since for Python 3 our minimum
- ;; version is 3.4 which already includes this package as part of the
- ;; standard library.
- (arguments
- `(#:python ,python-2))
- (propagated-inputs
- (list python2-scandir python2-six))
- (home-page "https://pypi.org/project/pathlib2/")
- (synopsis "Object-oriented file system paths - backport of standard
- pathlib module")
- (description "The goal of pathlib2 is to provide a backport of standard
- pathlib module which tracks the standard library module, so all the newest
- features of the standard pathlib can be used also on older Python versions.
- Pathlib offers a set of classes to handle file system paths. It offers the
- following advantages over using string objects:
- @enumerate
- @item No more cumbersome use of os and os.path functions. Everything can
- be done easily through operators, attribute accesses, and method calls.
- @item Embodies the semantics of different path types. For example,
- comparing Windows paths ignores casing.
- @item Well-defined semantics, eliminating any inconsistencies or
- ambiguities (forward vs. backward slashes, etc.).
- @end enumerate")
- (license license:expat)))
- (define-public python2-pathlib2-bootstrap
- (hidden-package
- (package
- (inherit python2-pathlib2)
- (name "python2-pathlib2-bootstrap")
- (propagated-inputs
- `(("python2-scandir" ,python2-scandir)
- ("python2-six" ,python2-six-bootstrap))))))
- (define-public python-jellyfish
- (package
- (name "python-jellyfish")
- (version "0.8.8")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "jellyfish" version))
- (sha256
- (base32
- "0p2s6b30sfffx8sya2i8kz0i0riw9fq1fi0k89s8kdgrmjf0h1h5"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f ; XXX: Tests cannot find C coded version.
- #: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" "jellyfish/test.py")))))))
- (native-inputs
- (list python-pytest))
- (home-page "https://github.com/jamesturk/jellyfish")
- (synopsis "Approximate and phonetic matching of strings")
- (description "Jellyfish uses a variety of string comparison and phonetic
- encoding algorithms to do fuzzy string matching.")
- (license license:bsd-2)))
- (define-public python2-unicodecsv
- (package
- (name "python2-unicodecsv")
- (version "0.14.1")
- (source (origin
- (method git-fetch)
- ;; The test suite is not included in the PyPi release.
- ;; https://github.com/jdunck/python-unicodecsv/issues/19
- (uri (git-reference
- (url "https://github.com/jdunck/python-unicodecsv")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "15hx2k41a2lpv4hcml9zp4cvlx1171mnb5s4s13xc1pxkq3vgdjy"))))
- (build-system python-build-system)
- (arguments
- `(;; It supports Python 3, but Python 3 can already do Unicode CSV.
- #:python ,python-2))
- (native-inputs
- (list python2-unittest2))
- (home-page "https://github.com/jdunck/python-unicodecsv")
- (synopsis "Unicode CSV module for Python 2")
- (description "Unicodecsv is a drop-in replacement for Python 2.7's CSV
- module, adding support for Unicode strings.")
- (license license:bsd-2)))
- (define-public python-pdfminer-six
- (package
- (name "python-pdfminer-six")
- (version "20201018")
- ;; There are no tests in the PyPI tarball.
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/pdfminer/pdfminer.six")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32 "1a2fxxnnjqbx344znpvx7cnv1881dk6585ibw01inhfq3w6yj2lr"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- ;; Tests write to the source tree.
- (add-after 'unpack 'make-git-checkout-writable
- (lambda _
- (for-each make-file-writable (find-files "."))
- #t))
- (replace 'check
- (lambda _
- (invoke "make" "test"))))))
- (propagated-inputs
- (list python-chardet python-cryptography python-sortedcontainers))
- (native-inputs
- (list python-nose python-tox))
- (home-page "https://github.com/pdfminer/pdfminer.six")
- (synopsis "PDF parser and analyzer")
- (description "@code{pdfminer.six} is a community maintained fork of
- the original PDFMiner. It is a tool for extracting information from PDF
- documents. It focuses on getting and analyzing text data. Pdfminer.six
- extracts the text from a page directly from the sourcecode of the PDF. It
- can also be used to get the exact location, font or color of the text.")
- (license license:expat)))
- (define-public python-rarfile
- (package
- (name "python-rarfile")
- (version "4.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "rarfile" version))
- (sha256
- (base32
- "1882wv9szcm29mnyhjmspyflyr2l7z73srn14w4dlnww49lqfm37"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f ;; The bsdtar utility is very limited and most tests fail.
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'patch
- (lambda* (#:key inputs #:allow-other-keys)
- (substitute* "rarfile.py"
- ;; Disable unrar and unar, which are unavailable on Guix.
- (("(unrar|unar)=True" all tool) (string-append tool "=False"))
- ;; Hardcode path to bsdtar
- (("\"bsdtar\"")
- (string-append "\"" (assoc-ref inputs "libarchive") "/bin/bsdtar\"")))
- #t))
- (replace 'check
- (lambda* (#:key inputs tests? #:allow-other-keys)
- (when tests?
- (invoke "pytest" "-vv")))))))
- (native-inputs (list python-pytest))
- (inputs (list libarchive))
- (home-page "https://github.com/markokr/rarfile")
- (synopsis "RAR archive reader for Python")
- (description "This is Python module for RAR archive reading. The interface
- is made as zipfile like as possible.")
- (license license:isc)))
- (define-public python-rich
- (package
- (name "python-rich")
- (version "10.2.2")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "rich" version))
- (sha256
- (base32
- "1z5m5brcdf3vndpavcqj5nl35xby4x5rfj48klhwqycfqf3g9cqp"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key inputs tests? #:allow-other-keys)
- (when tests?
- (copy-recursively (string-append
- (assoc-ref inputs "tests") "/tests")
- "tests")
- (invoke "python" "-m" "pytest" "-vv")))))))
- (propagated-inputs
- (list python-attrs python-colorama python-commonmark python-pygments
- python-typing-extensions))
- (native-inputs
- `(("python-pytest" ,python-pytest)
- ("tests"
- ;; The release on pypi comes without tests. We can't build from this
- ;; checkout, though, because installation requires an invocation of
- ;; poetry.
- ,(origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/willmcgugan/rich")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "19f4svb363sn5708qkpa6lakmiwzyb25h8kmh7bqrsbbrvi9hr70"))))))
- (home-page "https://github.com/willmcgugan/rich")
- (synopsis "Render rich text and more to the terminal")
- (description
- "This is a Python package for rendering rich text, tables, progress bars,
- syntax highlighting, markdown and more to the terminal.")
- (license license:expat)))
- (define-public python-magic
- (package
- (name "python-magic")
- (version "0.4.24")
- (home-page "https://github.com/ahupp/python-magic")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference (url home-page) (commit version)))
- (file-name (git-file-name name version))
- (patches (search-patches "python-magic-python-bytecode.patch"))
- (sha256
- (base32
- "17jalhjbfd600lzfz296m0nvgp6c7vx1mgz82jbzn8hgdzknf4w0"))))
- (build-system python-build-system)
- (arguments
- '(#:phases (modify-phases %standard-phases
- ;; Replace a specific method call with a hard-coded
- ;; path to the necessary libmagic.so file in the
- ;; store. If we don't do this, then the method call
- ;; will fail to find the libmagic.so file, which in
- ;; turn will cause any application using
- ;; python-magic to fail.
- (add-before 'build 'hard-code-path-to-libmagic
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((magic (search-input-file inputs "/lib/libmagic.so")))
- (substitute* "magic/loader.py"
- (("find_library\\('magic'\\)")
- (string-append "'" magic "'"))))))
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- ;; The test suite mandates this variable.
- (setenv "LC_ALL" "en_US.UTF-8")
- (if tests?
- (with-directory-excursion "test"
- (invoke "python" "./test.py")
- (invoke "python" "./libmagic_test.py"))
- (format #t "test suite not run~%")))))))
- (native-inputs
- (list which))
- (inputs
- ;; python-magic needs to be able to find libmagic.so.
- ;; Use a newer version because 5.39 returns bogus for some archives
- ;; (notably Chromium .crx extensions), which breaks e.g. 'diffoscope'.
- (list file-next))
- (synopsis "File type identification using libmagic")
- (description
- "This module uses ctypes to access the libmagic file type
- identification library. It makes use of the local magic database and
- supports both textual and MIME-type output. Note that this module and
- the python-file module both provide a \"magic.py\" file; these two
- modules, which are different and were developed separately, both serve
- the same purpose: to provide Python bindings for libmagic.")
- (license license:expat)))
- (define-public python2-magic
- (package-with-python2 python-magic))
- (define-public python2-s3cmd
- (package
- (name "python2-s3cmd")
- (version "1.6.1")
- (source
- (origin
- (method url-fetch)
- (uri (string-append "mirror://sourceforge/s3tools/s3cmd/" version "/"
- "s3cmd-" version ".tar.gz"))
- (sha256
- (base32
- "0ki1rzhm5icvi9ry5jswi4b22yqwyj0d2wsqsgilwx6qhi7pjxa6"))))
- (build-system python-build-system)
- (arguments
- ;; s3cmd is written for python2 only and contains no tests.
- `(#:python ,python-2
- #:tests? #f))
- (propagated-inputs
- (list python2-dateutil
- ;; The python-file package also provides a magic.py module.
- ;; This is an unfortunate state of affairs; however, s3cmd
- ;; fails to install if it cannot find specifically the
- ;; python-magic package. Thus we include it, instead of using
- ;; python-file. Ironically, s3cmd sometimes works better
- ;; without libmagic bindings at all:
- ;; https://github.com/s3tools/s3cmd/issues/198
- python2-magic))
- (home-page "https://s3tools.org/s3cmd")
- (synopsis "Command line tool for S3-compatible storage services")
- (description
- "S3cmd is a command line tool for uploading, retrieving and managing data
- in storage services that are compatible with the Amazon Simple Storage
- Service (S3) protocol, including S3 itself. It supports rsync-like backup,
- GnuPG encryption, and more. It also supports management of Amazon's
- CloudFront content delivery network.")
- (license license:gpl2+)))
- (define-public python-pkgconfig
- (package
- (name "python-pkgconfig")
- (version "1.3.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pkgconfig" version))
- (sha256
- (base32
- "107x2wmchlch8saixb488cgjz9n6inl38wi7nxkb942rbaapxiqb"))))
- (build-system python-build-system)
- (native-inputs
- (list python-nose))
- (inputs
- (list pkg-config))
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-before 'build 'patch
- ;; Hard-code the path to pkg-config.
- (lambda _
- (substitute* "pkgconfig/pkgconfig.py"
- (("'pkg-config'")
- (string-append "'" (which "pkg-config") "'")))))
- (replace 'check
- (lambda _
- (invoke "nosetests" "test.py"))))))
- (home-page "https://github.com/matze/pkgconfig")
- (synopsis "Python interface for pkg-config")
- (description "This module provides a Python interface to pkg-config. It
- can be used to find all pkg-config packages, check if a package exists,
- check if a package meets certain version requirements, query CFLAGS and
- LDFLAGS and parse the output to build extensions with setup.py.")
- (license license:expat)))
- (define-public python2-pkgconfig
- (package-with-python2 python-pkgconfig))
- (define-public python-bz2file
- (package
- (name "python-bz2file")
- (version "0.98")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "bz2file" version))
- (sha256
- (base32
- "126s53fkpx04f33a829yqqk8fj4png3qwg4m66cvlmhmwc8zihb4"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f)) ; Tests use deprecated python modules.
- (home-page "https://github.com/nvawda/bz2file")
- (synopsis "Read and write bzip2-compressed files")
- (description
- "Bz2file is a Python library for reading and writing bzip2-compressed
- files. It contains a drop-in replacement for the I/O interface in the
- standard library's @code{bz2} module, including features from the latest
- development version of CPython that are not available in older releases.")
- (license license:asl2.0)))
- (define-public python2-bz2file
- (package-with-python2 python-bz2file))
- (define-public python-future
- (package
- (name "python-future")
- (version "0.18.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "future" version))
- (sha256
- (base32
- "0zakvfj87gy6mn1nba06sdha63rn4njm7bhh0wzyrxhcny8avgmi"))))
- (build-system python-build-system)
- ;; Many tests connect to the network or are otherwise flawed.
- ;; https://github.com/PythonCharmers/python-future/issues/210
- (arguments
- `(#:tests? #f
- #:phases
- (modify-phases %standard-phases
- (replace 'sanity-check
- (let ((sanity-check (assoc-ref %standard-phases 'sanity-check)))
- (lambda* (#:key inputs outputs #:allow-other-keys #:rest args)
- (let* ((files (find-files (site-packages inputs outputs)
- "top_level\\.txt"))
- (backups (map (lambda (f) (string-append f ".bak"))
- files)))
- (for-each copy-file files backups)
- (substitute* files
- ;; Nobody be usin' winreg on Guix
- ;; Also, don't force users to have tkinter when they don't
- ;; need it
- (("(winreg|tkinter)") ""))
- (apply sanity-check args)
- (for-each rename-file backups files))))))))
- (home-page "https://python-future.org")
- (synopsis "Single-source support for Python 3 and 2")
- (description
- "@code{python-future} is the missing compatibility layer between Python 2 and
- Python 3. It allows you to use a single, clean Python 3.x-compatible codebase
- to support both Python 2 and Python 3 with minimal overhead.")
- (license license:expat)))
- (define-public python2-future
- (package-with-python2 python-future))
- (define-public python-cysignals
- (package
- (name "python-cysignals")
- (version "1.9.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "cysignals" version))
- (sha256
- (base32
- "15ix8crpad26cfl1skyg7qajqqfdrm8q5ahhmlfmqi1aw0jqj2g2"))))
- (build-system python-build-system)
- (native-inputs
- (list python-cython python-sphinx))
- (inputs
- (list pari-gp))
- (arguments
- `(#:modules ((guix build python-build-system)
- ((guix build gnu-build-system) #:prefix gnu:)
- (guix build utils))
- ;; FIXME: Tests are executed after installation and currently fail
- ;; when not installing into standard locations; the author is working
- ;; on a fix.
- #:tests? #f
- #:phases
- (modify-phases %standard-phases
- (add-before
- 'build 'configure
- (assoc-ref gnu:%standard-phases 'configure)))))
- (home-page
- "https://github.com/sagemath/cysignals")
- (synopsis
- "Handling of interrupts and signals for Cython")
- (description
- "The cysignals package provides mechanisms to handle interrupts (and
- other signals and errors) in Cython code, using two related approaches,
- for mixed Cython/Python code or external C libraries and pure Cython code,
- respectively.")
- (license license:lgpl3+)))
- (define-public python2-cysignals
- (package-with-python2 python-cysignals))
- (define-public python2-shedskin
- (package
- (name "python2-shedskin")
- (version "0.9.4")
- (source
- (origin
- (method url-fetch)
- (uri (string-append "https://github.com/shedskin/shedskin/"
- "releases/download/v" version
- "/shedskin-" version ".tgz"))
- (sha256
- (base32
- "0nzwrzgw1ga8rw6f0ryq7zr9kkiavd1cqz5hzxkcbicl1dk7kz41"))))
- (build-system python-build-system)
- (arguments
- `(#:python ,python-2
- #:phases (modify-phases %standard-phases
- (add-after 'unpack 'fix-resulting-include-libs
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((libgc (assoc-ref inputs "libgc"))
- (pcre (assoc-ref inputs "pcre")))
- (substitute* "shedskin/makefile.py"
- (("variable == 'CCFLAGS':[ ]*")
- (string-append "variable == 'CCFLAGS':\n"
- " line += ' -I " pcre "/include"
- " -I " libgc "/include'"))
- (("variable == 'LFLAGS':[ ]*")
- (string-append "variable == 'LFLAGS':\n"
- " line += ' -L" pcre "/lib"
- " -L " libgc "/lib'")))
- #t))))))
- (inputs (list pcre libgc))
- (home-page "https://shedskin.github.io/")
- (synopsis "Experimental Python-2 to C++ Compiler")
- (description (string-append "This is an experimental compiler for a subset of
- Python. It generates C++ code and a Makefile."))
- (license (list license:gpl3 license:bsd-3 license:expat))))
- (define-public python-rope
- (package
- (name "python-rope")
- (version "0.19.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "rope" version))
- (sha256
- (base32
- "1nlhkmsfvn2p1msrmwqnypnvr993alzawnpc1605q7rfad3xgrk4"))))
- (build-system python-build-system)
- (home-page "https://github.com/python-rope/rope")
- (synopsis "Refactoring library for Python")
- (description "Rope is a refactoring library for Python. It facilitates
- the renaming, moving and extracting of attributes, functions, modules, fields
- and parameters in Python 2 source code. These refactorings can also be applied
- to occurrences in strings and comments.")
- (license license:lgpl3+)))
- (define-public python-py3status
- (package
- (name "python-py3status")
- (version "3.21")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "py3status" version))
- (sha256
- (base32 "16z8zq83hxy48g6hh4xczbdz50qvxv9k1aahr4fqq7jis60cc262"))))
- (build-system python-build-system)
- (inputs
- (list file))
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- ;; 'file' is used for detection of configuration file encoding
- ;; let's make link the dependency to particular input
- (add-before 'build 'patch-file-path
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((file-path (assoc-ref inputs "file")))
- (substitute* "py3status/parse_config.py"
- (("\\[\"file\", \"-b\"")
- (string-append "['" file-path "/bin/file', '-b'")))
- #t))))
- #:tests? #f)) ; TODO: Requires many libraries not in Guix.
- (home-page "https://github.com/ultrabug/py3status")
- (synopsis "Extensible i3status wrapper written in Python")
- (description "py3status is an i3status wrapper which extends i3status
- functionality in a modular way, allowing you to extend your panel with your
- own code, responding to click events and updating clock every second.")
- (license license:bsd-3)))
- (define-public python-tblib
- (package
- (name "python-tblib")
- (version "1.6.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "tblib" version))
- (sha256
- (base32
- "0i136n5pydmd202254wzrdbspkw0br0c9mbxhfs9hpfbahvyx6r2"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "py.test" "-vv" "tests" "README.rst"))))))
- (native-inputs
- (list python-pytest python-six))
- (home-page "https://github.com/ionelmc/python-tblib")
- (synopsis "Traceback serialization library")
- (description
- "Traceback serialization allows you to:
- @enumerate
- @item Pickle tracebacks and raise exceptions with pickled tracebacks in
- different processes. This allows better error handling when running code over
- multiple processes (imagine multiprocessing, billiard, futures, celery etc).
- @item Parse traceback strings and raise with the parsed tracebacks.
- @end enumerate\n")
- (license license:bsd-3)))
- (define-public python2-tblib
- (package-with-python2 python-tblib))
- (define-public python-tftpy
- (package
- (name "python-tftpy")
- (version "0.8.2")
- (source
- (origin
- (method git-fetch) ;no tests in PyPI archive
- (uri (git-reference
- (url "https://github.com/msoulier/tftpy")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "1gl04ps8h8r7av3h0zbm8gwmkqs9rkk5vf7n8mv2bzrkwvy9hacc"))))
- (build-system python-build-system)
- (arguments
- `(#:phases (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? inputs outputs #:allow-other-keys)
- (when tests?
- ;; The default DEBUG logging level is way too verbose.
- (substitute* "t/test.py"
- (("logging\\.DEBUG")
- "logging.INFO"))
- (invoke "python" "-m" "unittest" "t/test.py")))))))
- (home-page "http://tftpy.sourceforge.net/")
- (synopsis "Python trivial file transfer protocol (TFTP) library")
- (description "TFTPy is a trivial file transfer protocol (TFTP) Python
- library. It can be used to act both as a TFTP client or TFTP server.")
- (license license:expat)))
- (define-public python-greenlet
- (package
- (name "python-greenlet")
- (version "1.1.1")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "greenlet" version))
- (sha256
- (base32
- "10gllbrcbazxck84nr7dw3js3gq0rxrsr4kkvy5hg542rms2gwn0"))))
- (build-system python-build-system)
- (home-page "https://greenlet.readthedocs.io/")
- (synopsis "Lightweight in-process concurrent programming")
- (description
- "Greenlet package is a spin-off of Stackless, a version of CPython
- that supports micro-threads called \"tasklets\". Tasklets run
- pseudo-concurrently (typically in a single or a few OS-level threads) and
- are synchronized with data exchanges on \"channels\".")
- (license (list license:psfl license:expat))))
- (define-public python-objgraph
- (package
- (name "python-objgraph")
- (version "3.4.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "objgraph" version))
- (sha256
- (base32
- "19qmqsh984zq1rzzjy4vqnmviaqnymcyl8h7z99pnicbgwnm2adz"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-graphviz))
- (native-inputs
- (list python-mock graphviz))
- (home-page "https://mg.pov.lt/objgraph/")
- (synopsis "Draw Python object reference graphs with graphviz")
- (description
- "This package provides tools to draw Python object reference graphs with
- graphviz.")
- (license license:expat)))
- (define-public python2-objgraph
- (package-with-python2 python-objgraph))
- (define-public python-gevent
- (package
- (name "python-gevent")
- (version "21.12.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "gevent" version))
- (sha256
- (base32
- "0kh9mmq811mzfgj60n64icybjp4ryjmfmy1vg7x92yrniibn92zl"))
- (modules '((guix build utils)))
- (snippet
- '(begin
- ;; unbunding libev and c-ares
- (delete-file-recursively "deps")))))
- (build-system python-build-system)
- (arguments
- `(#:modules ((ice-9 ftw)
- (ice-9 match)
- (srfi srfi-26)
- (guix build utils)
- (guix build python-build-system))
- #:phases (modify-phases %standard-phases
- (add-before 'patch-source-shebangs 'patch-hard-coded-paths
- (lambda _
- (substitute* "src/gevent/subprocess.py"
- (("/bin/sh") (which "sh")))
- (for-each (lambda (file)
- (substitute* file
- (("/bin/sh") (which "sh"))
- (("/bin/true") (which "true"))))
- (find-files "src/greentest" "\\.py$"))))
- (add-before 'build 'do-not-use-bundled-sources
- (lambda _
- (setenv "GEVENTSETUP_EMBED" "0")
- ;; Prevent building bundled libev.
- (substitute* "setup.py"
- (("run_make=_BUILDING")
- "run_make=False"))))
- (add-before 'build 'add-greenlet-on-C_INCLUDE_PATH
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((greenlet (string-append
- (assoc-ref inputs "python-greenlet")
- "/include")))
- (match (scandir greenlet
- (lambda (item)
- (string-prefix? "python" item)))
- ((python)
- (setenv "C_INCLUDE_PATH"
- (string-append greenlet "/" python ":"
- (or (getenv "C_INCLUDE_PATH")
- ""))))))))
- (add-before 'check 'pretend-to-be-CI
- (lambda _
- ;; A few tests are skipped due to network constraints or
- ;; get longer timeouts when running in a CI environment.
- ;; Piggy-back on that, as we need the same adjustments.
- (setenv "TRAVIS" "1")
- (setenv "APPVEYOR" "1")))
- (add-before 'check 'adjust-tests
- (lambda _
- (let ((disabled-tests
- '(;; These tests relies on networking which is
- ;; not available in the build container.
- "test__getaddrinfo_import.py"
- "test__server_pywsgi.py"
- ;; XXX: These tests borrow functionality from the
- ;; Python builtin 'test' module, but it is not
- ;; installed with the Guix Python distribution.
- "test_smtpd.py"
- "test_wsgiref.py"
- "test_urllib2.py"
- "test_thread.py"
- "test_threading.py"
- "test__threading_2.py"
- ;; These tests rely on KeyboardInterrupts which do not
- ;; work inside the build container for some reason
- ;; (lack of controlling terminal?).
- "test_subprocess.py"
- "test__issues461_471.py"
- ;; TODO: Patch out the tests that use getprotobyname, etc
- ;; instead of disabling all the tests from these files.
- "test__resolver_dnspython.py"
- "test__doctests.py"
- "test__all__.py"
- "test___config.py"
- "test__execmodules.py")))
- (call-with-output-file "skipped_tests.txt"
- (lambda (port)
- (format port "~a~%"
- (string-join disabled-tests "\n")))))))
- (replace 'check
- (lambda _
- ;; Use the build daemons configured number of workers.
- (setenv "NWORKERS" (number->string (parallel-job-count)))
- (invoke "python" "-m" "gevent.tests" "-unone" "--config"
- "known_failures.py" "--ignore" "skipped_tests.txt"))))))
- (propagated-inputs
- (list python-greenlet python-zope-event python-zope-interface))
- (native-inputs
- ;; For tests.
- (list python-dnspython python-psutil python-objgraph))
- (inputs
- (list c-ares libev))
- (home-page "https://www.gevent.org/")
- (synopsis "Coroutine-based network library")
- (description
- "@code{gevent} is a coroutine-based Python networking library that uses
- @code{greenlet} to provide a high-level synchronous API on top of the
- @code{libev} event loop.")
- (license license:expat)))
- (define-public python-fastimport
- (package
- (name "python-fastimport")
- (version "0.9.9")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "fastimport" version))
- (sha256
- (base32 "06gk14qgm9dxx3pzjn0ckdbywc8ial2bjfzddqwlr4bn1nnqkbll"))))
- (build-system python-build-system)
- (home-page "https://github.com/jelmer/python-fastimport")
- (synopsis "VCS fastimport parser and generator in Python")
- (description "This package provides a parser for and generator of the Git
- @url{https://www.kernel.org/pub/software/scm/git/docs/git-fast-import.html,fastimport}
- format.")
- (license license:gpl2+)))
- (define-public python-twisted
- (package
- (name "python-twisted")
- (version "19.7.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "Twisted" version ".tar.bz2"))
- (sha256
- (base32
- "17d3hnxv9qndagzz63mdpyk99xj63p9gq586vjn0rxk8cl197nym"))))
- (build-system python-build-system)
- (arguments
- '(#:tests? #f ; FIXME: some tests fail
- #:phases
- (modify-phases %standard-phases
- ;; Remove scripts, because they depend on [conch]
- (add-after 'unpack 'remove-entrypoint
- (lambda _
- (substitute* "src/twisted/python/_setup.py"
- (("\".+ = twisted\\.conch\\.scripts\\..+\",") "")))))))
- (propagated-inputs
- (list python-zope-interface
- python-pyhamcrest
- python-incremental
- python-hyperlink
- python-constantly
- python-automat))
- (home-page "https://twistedmatrix.com/")
- (synopsis "Asynchronous networking framework written in Python")
- (description
- "Twisted is an extensible framework for Python programming, with special
- focus on event-based network programming and multiprotocol integration.")
- (license license:expat)))
- (define-public python-pika
- (package
- (name "python-pika")
- (version "1.2.0")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/pika/pika")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0cm45xydk2jigydwszwik89qlbk6l3l18sxhzppzqmxw2rdkm22s"))))
- (build-system python-build-system)
- (arguments
- '(#:phases (modify-phases %standard-phases
- (add-before 'check 'disable-live-tests
- (lambda _
- ;; Disable tests that require RabbitMQ, which is not
- ;; yet available in Guix.
- (substitute* "setup.cfg"
- (("tests/unit,tests/acceptance")
- "tests/unit"))
- (with-directory-excursion "tests"
- (for-each delete-file
- '("unit/base_connection_tests.py"
- "unit/threaded_test_wrapper_test.py")))))
- (replace 'check
- (lambda _
- (invoke "nosetests"))))))
- (native-inputs
- (list python-mock
- python-nose
- ;; These are optional at runtime, and provided here for tests.
- python-gevent
- python-tornado
- python-twisted))
- (home-page "https://pika.readthedocs.org")
- (synopsis "Pure Python AMQP Client Library")
- (description
- "Pika is a pure-Python implementation of the AMQP (Advanced Message Queuing
- Protocol) 0-9-1 protocol that tries to stay fairly independent of the underlying
- network support library.")
- (license license:bsd-3)))
- (define-public python-ply
- (package
- (name "python-ply")
- (version "3.11")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "ply" version))
- (sha256
- (base32
- "18qx113g9bi1ac4indd5phma82zcdq601lxncp3vjn43m2mc3iq0"))))
- (build-system python-build-system)
- (home-page "http://www.dabeaz.com/ply/")
- (synopsis "Python Lex & Yacc")
- (description "PLY is a @code{lex}/@code{yacc} implemented purely in Python.
- It uses LR parsing and does extensive error checking.")
- (license license:bsd-3)))
- (define-public python-tabulate
- (package
- (name "python-tabulate")
- (version "0.8.9")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "tabulate" version))
- (sha256
- (base32
- "19qkdz8xwk5jxa5xn53mnk76qnh4ysm81vzj664jw1b0azr167gb"))))
- (build-system python-build-system)
- (arguments
- ;; FIXME: The pypi release tarball is missing a 'test/common.py'
- ;; and the latest release is not tagged in the upstream repository.
- '(#:tests? #f))
- (home-page "https://bitbucket.org/astanin/python-tabulate")
- (synopsis "Pretty-print tabular data")
- (description
- "Tabulate is a library and command-line utility to pretty-print tabular
- data in Python.")
- (license license:expat)))
- (define-public python2-tabulate
- (package-with-python2 python-tabulate))
- (define-public python-kazoo
- (package
- (name "python-kazoo")
- (version "2.8.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "kazoo" version))
- (sha256
- (base32
- "1zpj5cc8624w6i0pxgcxqkjwbkm4pkrv19d7wh5df3jais32g3jq"))))
- (build-system python-build-system)
- (arguments '(#:tests? #f)) ; XXX: needs zookeeper
- (propagated-inputs
- (list python-six))
- (home-page "https://kazoo.readthedocs.org")
- (synopsis "High-level Zookeeper client library")
- (description
- "Kazoo is a Python client library for the Apache Zookeeper distributed
- application service. It is designed to be easy to use and to avoid common
- programming errors.")
- (license license:asl2.0)))
- (define-public python2-kazoo
- (package-with-python2 python-kazoo))
- (define-public python-pykafka
- (package
- (name "python-pykafka")
- (version "2.4.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "pykafka" version))
- (sha256
- (base32
- "1id6sr159p6aa13bxcqyr9gln8sqg1l0ddzns5iws8kk5q1p5cfv"))))
- (build-system python-build-system)
- (arguments '(#:tests? #f)) ; XXX: needs zookeeper, kafka, etc.
- (propagated-inputs
- (list python-gevent python-kazoo python-tabulate))
- (inputs
- (list librdkafka))
- (home-page "https://pykafka.readthedocs.io/")
- (synopsis "Apache Kafka client for Python")
- (description
- "PyKafka is a client for the Apache Kafka distributed messaging system.
- It includes Python implementations of Kafka producers and consumers, which
- are optionally backed by a C extension built on librdkafka.")
- (license license:asl2.0)))
- (define-public python-wcwidth
- (package
- (name "python-wcwidth")
- (version "0.1.8")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "wcwidth" version))
- (sha256
- (base32
- "1a1pzds3xzfylm5mnc5f6c1p8kiig0daqjc9gygd9rc3cj53x2zj"))))
- (build-system python-build-system)
- (home-page "https://github.com/jquast/wcwidth")
- (synopsis "Measure number of terminal column cells of wide-character codes")
- (description "Wcwidth measures the number of terminal column cells of
- wide-character codes. It is useful for those implementing a terminal emulator,
- or programs that carefully produce output to be interpreted by one. It is a
- Python implementation of the @code{wcwidth} and @code{wcswidth} C functions
- specified in POSIX.1-2001 and POSIX.1-2008.")
- (license license:expat)))
- (define-public python2-wcwidth
- (package-with-python2 python-wcwidth))
- (define-public python2-jsonrpclib
- (package
- (name "python2-jsonrpclib")
- (version "0.1.7")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "jsonrpclib" version))
- (sha256
- (base32
- "02vgirw2bcgvpcxhv5hf3yvvb4h5wzd1lpjx8na5psdmaffj6l3z"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f
- #:python ,python-2))
- (home-page "https://github.com/joshmarshall/jsonrpclib/")
- (synopsis "Implementation of JSON-RPC specification for Python")
- (description
- "This library is an implementation of the JSON-RPC specification.
- It supports both the original 1.0 specification, as well as the
- new (proposed) 2.0 spec, which includes batch submission, keyword arguments,
- etc.")
- (license license:asl2.0)))
- (define-public python-chai
- (package
- (name "python-chai")
- (version "1.1.2")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "chai" version))
- (sha256
- (base32
- "1k6n6zbgrrs83crp6mr3yqj9zlv40b8rpisyrliwsq7naml2p3gz"))
- (patches (search-patches "python-chai-drop-python2.patch"))))
- (build-system python-build-system)
- (home-page "https://github.com/agoragames/chai")
- (synopsis "Mocking framework for Python")
- (description
- "Chai provides an api for mocking, stubbing and spying your python
- objects, patterned after the Mocha library for Ruby.")
- (license license:bsd-3)))
- (define-public python-inflection
- (package
- (name "python-inflection")
- (version "0.3.1")
- (source
- (origin (method url-fetch)
- (uri (pypi-uri "inflection" version))
- (sha256
- (base32
- "1jhnxgnw8y3mbzjssixh6qkc7a3afc4fygajhqrqalnilyvpzshq"))))
- (build-system python-build-system)
- (native-inputs
- (list python-pytest))
- (home-page "https://github.com/jpvanhal/inflection")
- (synopsis "Python string transformation library")
- (description
- "Inflection is a string transformation library. It singularizes
- and pluralizes English words, and transforms strings from CamelCase to
- underscored string.")
- (license license:expat)))
- (define-public python2-inflection
- (package-with-python2 python-inflection))
- (define-public python-pylev
- (package
- (name "python-pylev")
- (version "1.3.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "pylev" version))
- (sha256
- (base32
- "1hz1x9blsbxya1y9nnhnwwdnqmakxi9mc0jkwj0rn6b1h44i0f86"))))
- (build-system python-build-system)
- (home-page "https://github.com/toastdriven/pylev")
- (synopsis "Levenshtein distance implementation in Python")
- (description "Pure Python Levenshtein implementation, based off the
- Wikipedia code samples at
- @url{http://en.wikipedia.org/wiki/Levenshtein_distance}.")
- (license license:bsd-3)))
- (define-public python2-pylev
- (package-with-python2 python-pylev))
- (define-public python-cleo
- (package
- (name "python-cleo")
- (version "0.8.1")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "cleo" version))
- (sha256
- (base32
- "17q6wi3q280kxmxzb2iwnnqih2xbljn18v0bjx2ip18p079j43ix"))))
- (build-system python-build-system)
- (native-inputs
- (list ;; For testing
- python-mock python-pytest-mock python-pytest))
- (propagated-inputs
- (list python-backpack python-clikit python-pastel python-pylev))
- (home-page "https://github.com/sdispater/cleo")
- (synopsis "Command-line arguments library for Python")
- (description
- "Cleo allows you to create command-line commands with signature in
- docstring and colored output.")
- (license license:expat)))
- (define-public python2-cleo
- (package-with-python2 python-cleo))
- (define-public python-tomlkit
- (package
- (name "python-tomlkit")
- (version "0.7.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "tomlkit" version))
- (sha256
- (base32 "062n694sfv24ylda6nh8228y2q9hrvy554kqx84y7czsjfbg4mxc"))))
- (build-system python-build-system)
- (native-inputs
- (list python-pytest python-pyyaml))
- (home-page "https://github.com/sdispater/tomlkit")
- (synopsis "Style-preserving TOML library")
- (description
- "TOML Kit is a 1.0.0rc1-compliant TOML library. It includes a parser that
- preserves all comments, indentations, whitespace and internal element ordering,
- and makes them accessible and editable via an intuitive API. It can also
- create new TOML documents from scratch using the provided helpers. Part of the
- implementation has been adapted, improved, and fixed from Molten.")
- (license license:expat)))
- (define-public python-shellingham
- (package
- (name "python-shellingham")
- (version "1.3.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "shellingham" version))
- (sha256
- (base32 "07kmia2hvd2q7wik89m82hig9mqr2faynvy38vxq5fm0ps11jv2p"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'restore-setup.py
- ;; setup.py will return in the next release.
- ;; <https://github.com/sarugaku/shellingham/issues/33>
- (lambda _
- (with-output-to-file "setup.py"
- (lambda _
- (display "from setuptools import setup\nsetup()\n")))
- #t)))))
- (home-page "https://github.com/sarugaku/shellingham")
- (synopsis "Tool to detect surrounding shell")
- (description
- "Shellingham detects what shell the current Python executable is
- running in.")
- (license license:isc)))
- (define-public python-memcached
- (package
- (name "python-memcached")
- (version "1.59")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "python-memcached" version))
- (sha256
- (base32
- "0kvyapavbirk2x3n1jx4yb9nyigrj1s3x15nm3qhpvhkpqvqdqm2"))
- (patches (search-patches "python-memcached-syntax-warnings.patch"))))
- (build-system python-build-system)
- (propagated-inputs (list python-six))
- (home-page
- "https://github.com/linsomniac/python-memcached")
- (synopsis "Pure python memcached client")
- (description
- "This software is a pure Python interface to the memcached memory cache
- daemon. It is the client side software which allows storing values in one or
- more, possibly remote, memcached servers.")
- (license license:psfl)))
- (define-public python-clikit
- (package
- (name "python-clikit")
- (version "0.6.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "clikit" version))
- (sha256
- (base32
- "0ngdkmb73gkp5y00q7r9k1cdlfn0wyzws2wrqlshc4hlkbdyabj4"))))
- (build-system python-build-system)
- (arguments '(#:tests? #f)) ; no test in the PyPI tarball
- (propagated-inputs
- (list python-crashtest python-pastel python-pylev))
- (home-page "https://github.com/sdispater/clikit")
- (synopsis "Group of utilities to build command line interfaces")
- (description
- "CliKit is a group of utilities to build testable command line
- interfaces.")
- (properties `((python2-variant . ,(delay python2-clikit))))
- (license license:expat)))
- (define-public python2-clikit
- (let ((base (package-with-python2 (strip-python2-variant python-clikit))))
- (package/inherit
- base
- (propagated-inputs
- `(("python-enum34" ,python2-enum34)
- ("python-typing" ,python2-typing)
- ,@(package-propagated-inputs base))))))
- (define-public python-msgpack-python
- (package
- (name "python-msgpack-python")
- (version "0.5.6")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "msgpack-python" version))
- (sha256
- (base32
- "16wh8qgybmfh4pjp8vfv78mdlkxfmcasg78lzlnm6nslsfkci31p"))))
- (build-system python-build-system)
- (home-page "https://msgpack.org/")
- (synopsis "Package to deserialize messages in MessagePack binary format")
- (description
- "MessagePack is an efficient binary serialization format. It lets you
- exchange data among multiple languages like JSON. But it's faster and
- smaller. Small integers are encoded into a single byte, and typical short
- strings require only one extra byte in addition to the strings themselves.")
- (license license:asl2.0)))
- (define-public python-cachy
- (package
- (name "python-cachy")
- (version "0.3.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "cachy" version))
- (sha256
- (base32
- "1cb9naly8ampzlky7h74n5wj628l7jkpsh0c0jz0namlrvs82r8q"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _ (invoke "pifpaf" "run" "memcached" "--port" "11211" "--"
- "pytest"))))))
- (native-inputs
- (list memcached python-fakeredis python-flexmock python-pifpaf
- python-pytest))
- (propagated-inputs
- (list python-memcached python-msgpack-python python-redis))
- (home-page "https://github.com/sdispater/cachy")
- (synopsis "Simple yet effective caching library")
- (description
- "Cachy provides a simple yet effective caching library. A simple but
- powerful API: thread-safety; decorator syntax; support for memcached, redis,
- database, file, dict stores. Cachy supports python versions 2.7+ and 3.2+.")
- (license license:expat)))
- (define-public poetry
- (package
- (name "poetry")
- (version "1.1.12")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "poetry" version))
- (sha256
- (base32
- "0rr54mvcfcv9cv6vw2122y28xvd2pwqpv2x8c8j5ayz3gwsy4rjw"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f ;PyPI does not have tests
- #:phases
- (modify-phases %standard-phases
- (add-before 'build 'patch-setup-py
- (lambda _
- (substitute* "setup.py"
- ;; Relax some of the requirements.
- (("(keyring>=21.2.0),<22.0.0" _ keyring) keyring)
- (("(packaging>=20.4),<21.0" _ packaging) packaging)))))))
- (propagated-inputs
- (list python-cachecontrol
- python-cachy
- python-cleo
- python-crashtest
- python-entrypoints
- python-html5lib
- python-keyring
- ; Use of deprecated version of msgpack reported upstream:
- ; https://github.com/python-poetry/poetry/issues/3607
- python-msgpack-transitional
- python-packaging
- python-pexpect
- python-pip
- python-pkginfo
- python-poetry-core
- python-requests
- python-requests-toolbelt
- python-shellingham
- python-tomlkit
- python-virtualenv))
- (home-page "https://python-poetry.org")
- (synopsis "Python dependency management and packaging made easy")
- (description "Poetry is a tool for dependency management and packaging
- in Python. It allows you to declare the libraries your project depends on and
- it will manage (install/update) them for you.")
- (license license:expat)))
- (define-public python-lark-parser
- (package
- (name "python-lark-parser")
- (version "0.9.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "lark-parser" version))
- (sha256
- (base32
- "1kd61asrb3h9spgsj4bslfbgp8q4271sw3hblk6f2vbbblv8jxcy"))))
- (build-system python-build-system)
- (home-page "https://github.com/lark-parser/lark")
- (synopsis "Multi-language parser for Python")
- (description
- "Lark is a parser built with a focus on ergonomics, performance and
- resilience. Lark can parse all context-free languages. That means it is
- capable of parsing almost any programming language out there, and to
- some degree most natural languages too.")
- (license license:expat)))
- (define-public python-libcst
- (package
- (name "python-libcst")
- (version "0.3.8")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "libcst" version))
- (sha256
- (base32
- "05zsc61gsd2pyb6wiyh58zczndxi6rm4d2jl94rpf5cv1fzw6ks8"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'remove-failing-tests
- (lambda _
- ;; Reported upstream: <https://github.com/Instagram/LibCST/issues/346>.
- (delete-file "libcst/tests/test_fuzz.py")
- ;; Reported upstream: <https://github.com/Instagram/LibCST/issues/347>.
- (delete-file "libcst/tests/test_pyre_integration.py")
- (delete-file "libcst/codemod/tests/test_codemod_cli.py")
- (delete-file "libcst/metadata/tests/test_full_repo_manager.py")
- (delete-file "libcst/metadata/tests/test_type_inference_provider.py")))
- (add-before 'check 'generate-test-data
- (lambda _
- (invoke "python" "-m" "libcst.codegen.generate" "visitors")
- (invoke "python" "-m" "libcst.codegen.generate" "return_types")))
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "python" "-m" "unittest")))))))
- (native-inputs
- (list python-black python-isort))
- (propagated-inputs
- (list python-typing-extensions python-typing-inspect python-pyyaml))
- (home-page "https://github.com/Instagram/LibCST")
- (synopsis "Concrete Syntax Tree (CST) parser and serializer library for Python")
- (description
- "LibCST parses Python source code as a CST tree that keeps all
- formatting details (comments, whitespaces, parentheses, etc). It's useful
- for building automated refactoring (codemod) applications and linters.
- LibCST creates a compromise between an Abstract Syntax Tree (AST) and
- a traditional Concrete Syntax Tree (CST). By carefully reorganizing and
- naming node types and fields, LibCST creates a lossless CST that looks and
- feels like an AST.")
- (license (list license:expat
- ;; Some files unde libcst/_parser/ are under Python Software
- ;; Foundation license (see LICENSE file for details)
- license:psfl
- ;; libcst/_add_slots.py
- license:asl2.0))))
- (define-public python-libcst-minimal
- (hidden-package
- (package
- (inherit python-libcst)
- (name "python-libcst-minimal")
- (arguments '(#:tests? #f))
- (native-inputs '()))))
- (define-public python-typing-inspect
- (package
- (name "python-typing-inspect")
- (version "0.6.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "typing_inspect" version))
- (sha256
- (base32
- "1dzs9a1pr23dhbvmnvms2jv7l7jk26023g5ysf0zvnq8b791s6wg"))
- (patches (search-patches "python-typing-inspect-fix.patch"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-mypy-extensions python-typing-extensions))
- (home-page "https://github.com/ilevkivskyi/typing_inspect")
- (synopsis "API for inspection of types in the Python @code{typing} module")
- (description
- "The @code{typing_inspect} module defines experimental API for runtime
- inspection of types defined in the Python standard typing module.")
- (license license:expat)))
- (define-public python-lazy-object-proxy
- (package
- (name "python-lazy-object-proxy")
- (version "1.5.1")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "lazy-object-proxy" version))
- (sha256
- (base32
- "0hwh29m9wa582ramj30p4pysckdrmki1z1b8iaaxk6mpfx2kc8wp"))))
- (native-inputs
- (list python-setuptools-scm))
- (build-system python-build-system)
- (home-page "https://github.com/ionelmc/python-lazy-object-proxy")
- (synopsis "Lazy object proxy for python")
- (description
- "Lazy object proxy is an object that wraps a callable but defers the call
- until the object is actually required, and caches the result of said call.")
- (license license:bsd-2)))
- (define-public python2-lazy-object-proxy
- (package-with-python2 python-lazy-object-proxy))
- (define-public python-dnspython
- (package
- (name "python-dnspython")
- (version "2.1.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "dnspython" version ".zip"))
- (sha256
- (base32
- "1m0xvyby8baaxp6pfm0fgq8d2pq5dd8qm8bzfbrs009jaw5pza74"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f ; XXX: requires internet access
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'patch-getprotobyname-calls
- ;; These calls are problematic in the build environment as there is
- ;; no /etc/protocols. This breaks the sanity-check phase of any
- ;; package depnding on this one.
- (lambda _
- (substitute* "dns/rdtypes/IN/WKS.py"
- (("socket.getprotobyname\\('tcp'\\)")
- "6")
- (("socket.getprotobyname\\('udp'\\)")
- "17")))))))
- (native-inputs (list unzip))
- (home-page "https://www.dnspython.org")
- (synopsis "DNS toolkit for Python")
- (description
- "dnspython is a DNS toolkit for Python. It supports almost all record
- types. It can be used for queries, zone transfers, and dynamic updates.
- It supports TSIG authenticated messages and EDNS0.")
- (license license:expat)))
- (define-public python-dnspython-1.16
- (package
- (inherit python-dnspython)
- (version "1.16.0")
- (source (origin
- (method url-fetch)
- (uri (string-append "http://www.dnspython.org/kits/"
- version "/dnspython-" version ".tar.gz"))
- (sha256
- (base32
- "1yaw7irazy42n0kdhlk7wyg8ki34rxcnc5xbc1wfwy245b0wbxab"))))
- (native-inputs '())))
- (define-public python2-dnspython-1.16
- (package-with-python2 python-dnspython-1.16))
- (define-public python-py3dns
- (package
- (name "python-py3dns")
- (version "3.2.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "py3dns" version))
- (sha256
- (base32
- "1r25f0ys5p37bhld7m7n4gb0lrysaym3w318w2f8bncq7r3d81qz"))))
- (build-system python-build-system)
- ;; This package wants to read /etc/resolv.conf. We can't patch it without
- ;; removing functionality so we copy from Nix and "just don't build it".
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'patch-source
- (lambda _
- (substitute* "setup.py"
- (("import DNS") "")
- (("DNS.__version__") (string-append "\"" ,version "\"")))
- #t)))
- #:tests? #f)) ; Also skip the tests.
- (home-page "https://launchpad.net/py3dns")
- (synopsis "Python 3 DNS library")
- (description "This Python 3 module provides a DNS API for looking up DNS
- entries from within Python 3 modules and applications. This module is a
- simple, lightweight implementation.")
- (license license:psfl)))
- (define-public python-email-validator
- (package
- (name "python-email-validator")
- (version "1.0.2")
- (source
- (origin (method url-fetch)
- (uri (pypi-uri "email_validator" version))
- (sha256
- (base32
- "1ja9149l9ck5n45a72h3is7v476hjny5ybxbcamx1nw6iplsm7k6"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (add-before 'build 'use-dnspython
- (lambda _
- (substitute* "setup.py"
- (("dnspython3") "dnspython"))
- #t)))))
- (propagated-inputs
- (list python-dnspython python-idna))
- (home-page "https://github.com/JoshData/python-email-validator")
- (synopsis "Email address validation library for Python")
- (description
- "This library validates email address syntax and deliverability.")
- (license license:cc0)))
- (define-public python2-email-validator
- (package-with-python2 python-email-validator))
- (define-public python-ukpostcodeparser
- (package
- (name "python-ukpostcodeparser")
- (version "1.1.2")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "UkPostcodeParser" version))
- (sha256
- (base32
- "03jkf1ygbwq3akzbcjyjk1akc1hv2sfgx90306pq1nwklbpn80lk"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- ;; Tests for lowercase postcodes fail.
- (invoke "pytest" "-vv" "ukpostcodeparser/test/parser.py" "-k"
- (string-append "not test_091 "
- "and not test_097 "
- "and not test_098 "
- "and not test_125 "
- "and not test_131"))))))))
- (native-inputs
- (list python-pytest))
- (home-page "https://github.com/hamstah/ukpostcodeparser")
- (synopsis "UK Postcode parser for Python")
- (description
- "This library provides the @code{parse_uk_postcode} function for
- parsing UK postcodes.")
- (license license:expat)))
- (define-public python2-ukpostcodeparser
- (package-with-python2 python-ukpostcodeparser))
- (define-public python-faker
- (package
- (name "python-faker")
- (version "9.3.1")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "Faker" version))
- (sha256
- (base32
- "0lpfdc4ndvk7chgqrfd2b1my4n54pccq9b645vp9cp5s5ypyknfd"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _ (invoke "python" "-m" "pytest" "-v"))))))
- (native-inputs
- (list ;; For testing
- python-freezegun
- python-pytest-6
- python-random2
- python-ukpostcodeparser
- python-validators))
- (propagated-inputs
- (list python-dateutil python-text-unidecode))
- (home-page "https://github.com/joke2k/faker")
- (synopsis "Python package that generates fake data")
- (description
- "Faker is a Python package that generates fake data such as names,
- addresses, and phone numbers.")
- (license license:expat)))
- (define-public python-pyaml
- (package
- (name "python-pyaml")
- (version "18.11.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "pyaml" version))
- (sha256
- (base32
- "0fi604ix8lbpj1266q7js6szm771saprdzzcdwmj43wy83694qmr"))))
- (build-system python-build-system)
- (native-inputs
- (list python-unidecode))
- (propagated-inputs
- (list python-pyyaml))
- (home-page "https://github.com/mk-fg/pretty-yaml")
- (synopsis "YAML pretty-print library for Python")
- (description
- "pyaml is a PyYAML based python module to produce pretty and readable
- YAML-serialized data.")
- (license license:wtfpl2)))
- (define-public python2-pyaml
- (package-with-python2 python-pyaml))
- (define-public python-backpack
- (package
- (name "python-backpack")
- (version "0.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "backpack" version))
- (sha256
- (base32
- "14rq1mvm0jda90lcx9gyyby9dvq4x3js2cmxvd6vl4686ixwyqh1"))))
- (build-system python-build-system)
- (native-inputs
- (list python-pytest python-nose python-toml))
- (propagated-inputs
- (list python-simplejson))
- (home-page "https://github.com/sdispater/backpack")
- (synopsis "Utilities for working with Python collections")
- (description "Backpack provides some useful utilities for working with
- collections of data.")
- (license license:expat)))
- (define-public python2-backpack
- (package-with-python2 python-backpack))
- (define-public python-prompt-toolkit
- (package
- (name "python-prompt-toolkit")
- (version "3.0.18")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "prompt_toolkit" version))
- (sha256
- (base32 "1g1kq1aimhm23k2dmlmnznfzc83l6ly65g0h32hqz8injcdz3d71"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (delete 'check)
- (add-after 'install 'post-install-check
- (lambda* (#:key inputs outputs #:allow-other-keys)
- ;; HOME is needed for the test
- ;; "test_pathcompleter_can_expanduser".
- (setenv "HOME" "/tmp")
- (add-installed-pythonpath inputs outputs)
- (invoke "py.test"))))))
- (propagated-inputs
- (list python-wcwidth))
- (native-inputs
- (list python-pytest))
- (home-page "https://github.com/prompt-toolkit/python-prompt-toolkit")
- (synopsis "Library for building command line interfaces in Python")
- (description
- "Prompt-Toolkit is a library for building interactive command line
- interfaces in Python. It's like GNU Readline but it also features syntax
- highlighting while typing, out-of-the-box multi-line input editing, advanced
- code completion, incremental search, support for Chinese double-width
- characters, mouse support, and auto suggestions.")
- (license license:bsd-3)
- (properties `((python2-variant . ,(delay python-prompt-toolkit-2))))))
- (define-public python-prompt-toolkit-2
- (package (inherit python-prompt-toolkit)
- (name "python-prompt-toolkit")
- (version "2.0.7")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "prompt_toolkit" version))
- (sha256
- (base32
- "0fgacqk73w7s932vy46pan2yp8rvjmlkag20xvaydh9mhf6h85zx"))))
- (propagated-inputs
- (list python-wcwidth python-six python-pygments))
- (properties '())))
- (define-public python2-prompt-toolkit
- (package-with-python2 python-prompt-toolkit-2))
- (define-public python-prompt-toolkit-1
- (package (inherit python-prompt-toolkit-2)
- (version "1.0.15")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "prompt_toolkit" version ".tar.gz"))
- (sha256
- (base32
- "05v9h5nydljwpj5nm8n804ms0glajwfy1zagrzqrg91wk3qqi1c5"))))))
- (define-public python2-prompt-toolkit-1
- (package-with-python2 python-prompt-toolkit-1))
- (define-public python-jedi
- (package
- (name "python-jedi")
- (version "0.18.1")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/davidhalter/jedi")
- (commit (string-append "v" version))
- (recursive? #true)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "07drmi3ai49jw5n23ibkambcgijqcw073ihypjgxfnks5lv4yqy1"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (setenv "HOME" "/tmp")
- (invoke "python" "-m" "pytest" "-vv"))
- #t)))))
- (native-inputs
- (list python-colorama python-docopt python-pytest))
- (propagated-inputs
- (list python-parso))
- (home-page "https://github.com/davidhalter/jedi")
- (synopsis "Autocompletion and static analysis library for Python")
- (description
- "Jedi is a static analysis tool for Python that can be used in Integrated
- Development Environments (@dfn{IDE}s) and text editors. It understands Python
- on a deeper level than many other static analysis frameworks for Python.
- Jedi understands docstrings and you can use Jedi autocompletion in your REPL
- as well.")
- (license license:expat)))
- (define-public ptpython
- (package
- (name "ptpython")
- (version "3.0.17")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "ptpython" version))
- (sha256
- (base32
- "1phk1grcvn456igjg8gwjjg8bf4kszddq5nd5sdlz3hslg62a7ci"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f)) ;there are no tests
- (propagated-inputs
- (list python-appdirs python-black python-jedi python-prompt-toolkit
- python-pygments))
- (home-page "https://github.com/jonathanslenders/ptpython")
- (synopsis "Python Read-Eval-Print-Loop with nice IDE-like features")
- (description
- "ptpython is a Python read-eval-print loop with IDE-like features.
- It supports syntax highlighting, multiline editing, autocompletion, mouse,
- color schemes, bracketed paste, Vi and Emacs keybindings, Chinese characters
- etc.")
- (license license:bsd-3)
- (properties `((python2-variant . ,(delay ptpython-2))))))
- (define-public ptpython-2
- (let ((base (package-with-python2 (strip-python2-variant ptpython))))
- (package/inherit base
- (name "ptpython2"))))
- (define-public python-easyprocess
- (package
- (name "python-easyprocess")
- (version "0.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "EasyProcess" version))
- (sha256
- (base32 "115rzzr0hx4af4m6krf7dxn8851n4l8jfxahjzjc2r0zq2m8v57v"))))
- (build-system python-build-system)
- (arguments
- ;; Tests require pyvirtualdisplay, which requires this package.
- `(#:tests? #f))
- (home-page "https://github.com/ponty/easyprocess")
- (synopsis "Python subprocess interface")
- (description
- "@code{easyprocess} is an easy to use Python subprocess interface.")
- (license license:bsd-3)))
- (define-public python-entrypoint2
- (package
- (name "python-entrypoint2")
- (version "0.2.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "entrypoint2" version))
- (sha256
- (base32 "1qyxq54r2fbh09ab5sffbxajy8arbk6czxz5lq3ccr9qrypw6w27"))))
- (build-system python-build-system)
- (arguments
- `(#:test-target "pytest"))
- (native-inputs
- (list python-easyprocess python-pytest python-pytest-runner))
- (home-page "https://github.com/ponty/entrypoint2")
- (synopsis "Command-line interface for Python modules")
- (description
- "@code{entrypoint2} is an easy to use command-line interface for Python
- modules based on @code{argparse}. It translates function signature and
- documentation to argparse configuration.")
- (license license:bsd-3)))
- (define-public python-pyvirtualdisplay
- (package
- (name "python-pyvirtualdisplay")
- (version "2.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "PyVirtualDisplay" version))
- (sha256
- (base32 "1z2fzgiw3xv3m1d9ppn53g07zhnpj05addiz56sm6ircxibnjk4x"))))
- (build-system python-build-system)
- (arguments
- ;; Tests fail with:
- ;; FileNotFoundError: [Errno 2] No such file or directory: 'Xvnc'.
- `(#:tests? #f))
- (native-inputs
- (list python-entrypoint2 python-psutil python-pytest
- python-pytest-runner))
- (propagated-inputs
- (list python-easyprocess python-pillow))
- (home-page "https://github.com/ponty/pyvirtualdisplay")
- (synopsis "Python wrapper for Xvfb, Xephyr and Xvnc")
- (description
- "@code{pyvirtualdisplay} is a Python wrapper for Xvfb, Xephyr and Xvnc.")
- (license license:bsd-3)))
- (define-public python-stem
- (package
- (name "python-stem")
- (version "1.8.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "stem" version))
- (sha256
- (base32
- "1hk8alc0r4m669ggngdfvryndd0fbx0w62sclcmg55af4ak8xd50"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'fix-tests
- ;; See https://github.com/torproject/stem/issues/56
- (lambda _
- (substitute* "run_tests.py"
- (("test\\.task\\.MOCK_VERSION,")
- ""))))
- (replace 'check
- (lambda _
- (invoke "./run_tests.py" "--unit")
- #t)))))
- (native-inputs
- (list python-mock python-pycodestyle python-pyflakes))
- (home-page "https://stem.torproject.org/")
- (synopsis
- "Python controller library that allows applications to interact with Tor")
- (description
- "Stem is a Python controller library for Tor. With it you can use Tor's
- control protocol to script against the Tor process and read descriptor data
- relays publish about themselves.")
- (license license:lgpl3)))
- (define-public python-pyserial
- (package
- (name "python-pyserial")
- (version "3.5")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pyserial" version))
- (sha256
- (base32
- "1nyd4m4mnrz8scbfqn4zpq8gnbl4x42w5zz62vcgpzqd2waf0xrw"))))
- (build-system python-build-system)
- (arguments
- '(#:tests? #f)) ; FIXME: 3/49 tests are failing.
- ;; #:phases
- ;; (modify-phases %standard-phases
- ;; (replace 'check
- ;; (lambda _
- ;; (zero? (system* "python" "test/run_all_tests.py" "loop://")))))))
- (home-page
- "https://github.com/pyserial/pyserial")
- (synopsis "Python Serial Port Bindings")
- (description "@code{pyserial} provide serial port bindings for Python. It
- supports different byte sizes, stop bits, parity and flow control with RTS/CTS
- and/or Xon/Xoff. The port is accessed in RAW mode.")
- (license license:bsd-3)))
- (define-public python2-pyserial
- (package-with-python2 python-pyserial))
- (define-public python-pyserial-asyncio
- (package
- (name "python-pyserial-asyncio")
- (version "0.5")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pyserial-asyncio" version))
- (sha256
- (base32 "0cwd2cjz859v6jrm3y6hikfqjyhyfj5vhfjb8vvflvl6791yah8n"))))
- (build-system python-build-system)
- (propagated-inputs (list python-pyserial))
- (home-page "https://github.com/pyserial/pyserial-asyncio")
- (synopsis "Pyserial asynchronous I/O extension")
- (description "This package extends Pyserial with asynchronous I/O
- support.")
- (license license:bsd-3)))
- (define-public python-pymodbus
- (package
- (name "python-pymodbus")
- (version "2.5.3")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/riptideio/pymodbus")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0kjjrx7xrlx0pf3y67hhr4xvqrly3xzmvf6ic5as61m6z19m7zd5"))))
- (build-system python-build-system)
- (arguments
- `(#:phases (modify-phases %standard-phases
- (add-after 'unpack 'disable-problematic-tests
- (lambda _
- ;; The following test modules rely on Python's own
- ;; 'test' module, which is not distributed in the Python
- ;; package of Guix.
- (delete-file "test/test_client_async_asyncio.py")
- (delete-file "test/test_client_sync_diag.py")
- ;; The following test module requires the asynctest
- ;; library, abandoned without support for Python 3.9+
- ;; (see:
- ;; https://github.com/riptideio/pymodbus/issues/681).
- (delete-file "test/test_server_asyncio.py")))
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "python" "-m" "pytest")))))))
- (native-inputs
- (list python-mock
- python-pytest
- python-redis
- python-sqlalchemy
- python-tornado
- python-twisted))
- (propagated-inputs
- (list python-pyserial
- python-six
- ;; For the REPL.
- python-aiohttp
- python-click
- python-prompt-toolkit
- python-pygments
- python-pyserial-asyncio))
- (home-page "https://github.com/riptideio/pymodbus/")
- (synopsis "Modbus protocol stack in Python")
- (description "Pymodbus is a full Modbus protocol implementation using
- @code{asyncio}, @code{tornado} or @code{twisted} for its asynchronous
- communications core. It includes the following @emph{client} features:
- @itemize
- @item full read/write protocol on discrete and register
- @item most of the extended protocol (diagnostic/file/pipe/setting/information)
- @item TCP, UDP, Serial ASCII, Serial RTU, and Serial Binary
- @item asynchronous and synchronous versions
- @item payload builder/decoder utilities
- @item pymodbus read eval print loop (REPL).
- @end itemize
- It also includes the following @emph{server} features:
- @itemize
- @item can function as a fully implemented Modbus server
- @item TCP, UDP, Serial ASCII, Serial RTU, and Serial Binary
- @item asynchronous and synchronous versions
- @item full server control context (device information, counters, etc)
- @item a number of backing contexts (database, redis, sqlite, a slave device).
- @end itemize")
- (license license:bsd-3)))
- (define-public python-kivy-garden
- (package
- (name "python-kivy-garden")
- (version "0.1.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "kivy-garden" version))
- (sha256
- (base32 "0wkcpr2zc1q5jb0bi7v2dgc0vs5h1y7j42mviyh764j2i0kz8mn2"))))
- (build-system python-build-system)
- (arguments
- '(#:phases (modify-phases %standard-phases
- (add-after 'install 'remove-bat-file
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- (delete-file
- (string-append out "/bin/garden.bat"))))))))
- (propagated-inputs
- (list python-requests))
- (home-page "https://github.com/kivy-garden/garden")
- (synopsis "Garden tool for Kivy flowers")
- (description
- "This package provides the @command{garden} command to install packages
- for Kivy, the multitouch application platform.")
- (license license:expat)))
- (define-public python-kivy
- (package
- (name "python-kivy")
- (version "1.10.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "Kivy" version))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32
- "1zzxjdp78hfjjiklzr82l4zwibwcq4j6kgicspqs6iyyfn5yisbw"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f ; Tests require many optional packages
- #:phases
- (modify-phases %standard-phases
- (add-after 'patch-generated-file-shebangs 'set-sdl-paths
- (lambda* (#:key inputs #:allow-other-keys)
- (setenv "KIVY_SDL2_PATH"
- (search-input-directory inputs "/include/SDL2"))))
- (add-before 'sanity-check 'set-home
- (lambda _
- ;; 'kivy/__init__.py' wants to create $HOME/.kivy.
- (setenv "HOME" (getcwd)))))))
- (native-inputs
- (list pkg-config python-cython))
- (inputs
- (list gstreamer
- mesa
- (sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf))
- python-docutils
- python-kivy-garden
- python-pygments))
- (home-page "https://kivy.org")
- (synopsis "Multitouch application framework")
- (description
- "Kivy is a software library for rapid development of hardware-accelerated
- multitouch applications.")
- (license license:expat)))
- (define-public python2-kivy
- (package-with-python2 python-kivy))
- (define-public python-binaryornot
- (package
- (name "python-binaryornot")
- (version "0.4.4")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "binaryornot" version))
- (sha256
- (base32
- "0qc006986rb6bcbmiymwgcl1mns2jphr1j7sr7nk41nlr7gh359m"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'patch-tests
- (lambda _
- ;; TypeError: binary() got an unexpected keyword argument
- ;; 'average_size'.
- (substitute* "tests/test_check.py"
- (("average_size=512") ""))
- #t)))))
- (propagated-inputs
- (list python-chardet python-hypothesis))
- (home-page "https://github.com/audreyr/binaryornot")
- (synopsis "Package to check if a file is binary or text")
- (description "Ultra-lightweight pure Python package to check if a file is
- binary or text.")
- (license license:bsd-3)
- (properties `((python2-variant . ,(delay python2-binaryornot))))))
- (define-public python2-binaryornot
- (let ((base (package-with-python2 (strip-python2-variant python-binaryornot))))
- (package/inherit base
- (propagated-inputs
- `(("python2-enum34" ,python2-enum34)
- ,@(package-propagated-inputs base))))))
- (define-public binwalk
- (package
- (name "binwalk")
- (version "2.3.2")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/ReFirmLabs/binwalk")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "01dalxw07c42ka4fqpixcacvy42h04ya909lzpmsblr9s2xdgwcm"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-before 'check 'set-home
- (lambda _
- (setenv "HOME" ""))))))
- (native-inputs
- (list python-coverage python-nose))
- (home-page "https://github.com/ReFirmLabs/binwalk")
- (synopsis "Firmware analysis tool")
- (description "Binwalk is a tool for analyzing, reverse engineering, and
- extracting firmware images")
- (license license:expat)))
- (define-public python-binwalk
- (deprecated-package "python-binwalk" binwalk))
- (define-public python-nltk
- (package
- (name "python-nltk")
- (version "3.6.2")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "nltk" version ".zip"))
- (sha256
- (base32
- "1sq32lwgij9h8rsksymnxxr7bqfw3vgx5ijw4azbj6k2xnmmdmap"))))
- (build-system python-build-system)
- (arguments
- '(;; The tests require some extra resources to be downloaded.
- ;; TODO Try packaging these resources.
- #:tests? #f))
- (propagated-inputs
- (list python-click python-joblib python-regex python-tqdm))
- (native-inputs
- (list unzip))
- (home-page "http://nltk.org/")
- (synopsis "Natural Language Toolkit")
- (description "It provides interfaces to over 50 corpora and lexical
- resources such as WordNet, along with a suite of text processing libraries
- for classification, tokenization, stemming, tagging, parsing, and semantic
- reasoning, wrappers for natural language processing libraries.")
- (license license:asl2.0)))
- ;; Versions >=3.5 breaks backward-compatibility,
- ;; so we keep version 3.4.x around for a while.
- (define-public python-nltk-3.4
- (package
- (inherit python-nltk)
- (version "3.4.5")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "nltk" version ".zip"))
- (sha256
- (base32 "153x2clrnigs74jdgnn3qmljdjj4gprmvpdvh49i18ls4m8mbm5y"))))
- (propagated-inputs (list python-six))))
- (define-public python-pymongo
- (package
- (name "python-pymongo")
- (version "3.7.2")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "pymongo" version))
- (sha256
- (base32
- "0zis4707r9hdg5qgkhp3wss9camr9h56ixyfc8n9dxwlnnly4x4c"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-certifi))
- (home-page "https://github.com/mongodb/mongo-python-driver")
- (synopsis "Python driver for MongoDB")
- (description "Python driver for MongoDB.")
- (license license:asl2.0)))
- (define-public python-consul
- (package
- (name "python-consul")
- (version "0.6.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "python-consul" version))
- (sha256
- (base32
- "0rfyxcy4cr3x848vhx876ifalxd5ghq6l5x813m49h4vq2d4jiq8"))))
- (build-system python-build-system)
- (arguments
- '(#:tests? #f)) ; The tests are not distributed
- (propagated-inputs
- (list python-requests python-six))
- (home-page "https://github.com/cablehead/python-consul")
- (synopsis "Python client for Consul")
- (description
- "Python client for @url{http://www.consul.io/,Consul}, a tool for service
- discovery, monitoring and configuration.")
- (license license:expat)))
- (define-public python2-consul
- (package-with-python2 python-consul))
- (define-public python-schematics
- (package
- (name "python-schematics")
- (version "1.1.1")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/schematics/schematics")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "0xdqskycznqc7mfp60bhw1zq8wx7yx1dvmbq3brnm1dx3xnqa0zd"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-six))
- (arguments
- ;; The tests require a bunch of not very nice packages with fixed
- ;; version requirements (e.g. python-coveralls).
- `(#:tests? #f))
- (home-page "https://github.com/schematics/schematics")
- (synopsis "Python Data Structures for Humans")
- (description "Python Data Structures for Humans.")
- (license license:bsd-3)))
- (define-public python2-schematics
- (package-with-python2 python-schematics))
- (define-public python-odfpy
- (package
- (name "python-odfpy")
- (version "1.4.1")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "odfpy" version))
- (sha256
- (base32
- "1v1qqk9p12qla85yscq2g413l3qasn6yr4ncyc934465b5p6lxnv"))))
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "pytest" "-vv"))))))
- (build-system python-build-system)
- (native-inputs
- (list python-pytest))
- (propagated-inputs
- (list python-defusedxml))
- (home-page "https://github.com/eea/odfpy")
- (synopsis "Python API and tools to manipulate OpenDocument files")
- (description "Collection of libraries and utility programs written in
- Python to manipulate OpenDocument 1.2 files.")
- (license
- ;; The software is mainly dual GPL2+ and ASL2.0, but includes a
- ;; number of files with other licenses.
- (list license:gpl2+ license:asl2.0 license:lgpl2.1+ license:cc-by-sa3.0))))
- (define-public python-natsort
- (package
- (name "python-natsort")
- (version "7.1.1")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "natsort" version))
- (sha256
- (base32
- "00y49bfsi7rrsd1s42gc2w95a6arl9ipdsx2493hr0v54fj07ih0"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "pytest" "-v"))))))
- (native-inputs
- (list python-hypothesis python-pytest-cov python-pytest-mock
- python-pytest))
- (propagated-inputs ; TODO: Add python-fastnumbers.
- (list python-pyicu))
- (home-page "https://github.com/SethMMorton/natsort")
- (synopsis "Natural sorting for python and shell")
- (description
- "Natsort lets you apply natural sorting on lists instead of
- lexicographical. If you use the built-in @code{sorted} method in python
- on a list such as @code{[@code{a20}, @code{a9}, @code{a1}, @code{a4},
- @code{a10}]}, it would be returned as @code{[@code{a1}, @code{a10}, @code{a20},
- @code{a4}, @code{a9}]}. Natsort provides a function @code{natsorted} that
- identifies numbers and sorts them separately from strings. It can also sort
- version numbers, real numbers, mixed types and more, and comes with a shell
- command @command{natsort} that exposes this functionality in the command line.")
- (license license:expat)))
- (define-public glances
- (package
- (name "glances")
- (version "3.1.7")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "Glances" version))
- (sha256
- (base32 "020vb38qrb0m3sdr7xjr43cmcfxpnyg4hmb97wgxsa9zvwsjwa5x"))
- (modules '((guix build utils)))
- (snippet
- '(begin
- ;; Glances phones PyPI for weekly update checks by default.
- ;; Disable these. The user can re-enable them if desired.
- (substitute* "glances/outdated.py"
- (("^(.*)self\\.load_config\\(config\\)\n" line indentation)
- (string-append indentation
- "self.args.disable_check_update = True\n"
- line)))
- #t))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-future python-psutil))
- (home-page "https://github.com/nicolargo/glances")
- (synopsis "Cross-platform curses-based monitoring tool")
- (description
- "Glances is a curses-based monitoring tool for a wide variety of platforms.
- Glances uses the PsUtil library to get information from your system. It
- monitors CPU, load, memory, network bandwidth, disk I/O, disk use, and more.")
- (license license:lgpl3+)))
- (define-public python-graphql-core
- (package
- (name "python-graphql-core")
- (version "3.1.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "graphql-core" version))
- (sha256
- (base32
- "0fjv5w2wvgdr8gb27v241bavliipyir9fdz48rsgc3xapm644mn0"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f ; Tests require the unpackaged pytest-benchmark.
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'patch-hardcoded-version
- (lambda _ (substitute*
- "setup.py"
- (("'gevent==1.1rc1'") "'gevent'"))
- #t)))))
- (native-inputs
- (list python-gevent python-mock python-pytest-mock))
- (propagated-inputs
- (list python-promise python-six))
- (home-page "https://github.com/graphql-python/graphql-core")
- (synopsis "GraphQL implementation for Python")
- (description
- "GraphQL implementation for Python. GraphQL is a data query language and
- runtime designed and used to request and deliver data to mobile and web apps.
- This library is a port of @url{https://github.com/graphql/graphql-js,graphql-js}
- to Python.")
- (license license:expat)))
- (define-public python-graphql-relay
- (package
- (name "python-graphql-relay")
- (version "3.1.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "graphql-relay" version))
- (sha256
- (base32
- "1d70vwam9gjhx7fqzsa03x7lc6ivcqki5r9pk8m7rslmb7pagmbh"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "pytest" "tests")))))))
- (native-inputs
- (list
- python-pytest
- python-pytest-asyncio))
- (propagated-inputs
- (list python-graphql-core))
- (home-page "https://github.com/graphql-python/graphql-relay-py")
- (synopsis "Relay implementation for Python")
- (description
- "This is a library to allow the easy creation of Relay-compliant servers
- using the GraphQL Python reference implementation of a GraphQL server. It
- should be noted that the code is a exact port of the original
- @url{https://github.com/graphql/graphql-relay-js,graphql-relay js implementation}
- from Facebook.")
- (license license:expat)))
- (define-public python-graphene
- (package
- (name "python-graphene")
- (version "3.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "graphene" version))
- (sha256
- (base32
- "08m1n2ydk48c18cvl8474v3pwwacjl1vgq61m9qs00122mp0cj5g"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-graphql-core python-graphql-relay python-aniso8601
- python-promise python-six))
- (arguments
- `(#:tests? #f)) ; no tests/ in the PyPI tarball
- (home-page "https://graphene-python.org/")
- (synopsis "GraphQL Framework for Python")
- (description
- "Graphene is a Python library for building GraphQL schemas/types.
- A GraphQL schema describes your data model, and provides a GraphQL server
- with an associated set of resolve methods that know how to fetch data.")
- (license license:expat)))
- (define-public python-random2
- (package
- (name "python-random2")
- (version "1.0.1")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "random2" version ".zip"))
- (sha256
- (base32
- "01y0s4747plsx8fdnxy0nz83dp69naddz58m81r9h0s1qfm31b9l"))
- (patches
- (search-patches "python-random2-getrandbits-test.patch"))))
- (build-system python-build-system)
- (native-inputs (list unzip))
- (home-page "http://pypi.python.org/pypi/random2")
- (synopsis "Python 3 version of the Python 2 @code{random} module")
- (description
- "This package provides a Python 3 ported version of Python 2.7’s
- @code{random} module. It has also been back-ported to work in Python 2.6.
- In Python 3, the implementation of @code{randrange()} was changed, so that
- even with the same seed you get different sequences in Python 2 and 3.
- This package closes that gap, allowing stable random number generation
- between the different Python versions.")
- (license license:psfl)))
- (define-public python2-random2
- (package-with-python2 python-random2))
- (define-public python-snowballstemmer
- (package
- (name "python-snowballstemmer")
- (version "2.0.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "snowballstemmer" version))
- (sha256
- (base32
- "0ligk61idlz8kkgd5hpip5whm172riwglb6xydii7h62yhysqfyz"))))
- (build-system python-build-system)
- (arguments
- `(;; No tests exist
- #:tests? #f))
- (home-page "https://github.com/shibukawa/snowball_py")
- (synopsis "Snowball stemming library collection for Python")
- (description "This package provides 16 word stemmer algorithms generated
- from Snowball algorithms. It includes the 15 original ones plus the Poerter
- English stemmer.")
- (license license:bsd-3)))
- (define-public python2-snowballstemmer
- (package-with-python2 python-snowballstemmer))
- (define-public python-setproctitle
- (package
- (name "python-setproctitle")
- (version "1.1.10")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "setproctitle" version))
- (sha256
- (base32
- "163kplw9dcrw0lffq1bvli5yws3rngpnvrxrzdw89pbphjjvg0v2"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (add-before 'check 'patch-Makefile
- ;; Stricly this is only required for the python2 variant.
- ;; But adding a phase in an inherited package seems to be
- ;; cumbersum. So we patch even for python3.
- (lambda _
- (let ((nose (assoc-ref %build-inputs "python2-nose")))
- (when nose
- (substitute* "Makefile"
- (("\\$\\(PYTHON\\) [^ ]which nosetests[^ ] ")
- (string-append nose "/bin/nosetests "))))
- #t)))
- (replace 'check
- (lambda _
- (setenv "PYTHON" (or (which "python3") (which "python")))
- (setenv "PYCONFIG" (if (which "python3-config")
- "python3-config --embed"
- "python-config"))
- (setenv "CC" "gcc")
- ;; No need to extend PYTHONPATH to find the built package, since
- ;; the Makefile will build anyway
- (invoke "make" "check"))))))
- (native-inputs
- (list procps)) ; required for tests
- (home-page "https://github.com/dvarrazzo/py-setproctitle")
- (synopsis
- "Setproctitle implementation for Python to customize the process title")
- (description "The library allows a process to change its title (as displayed
- by system tools such as ps and top).
- Changing the title is mostly useful in multi-process systems, for
- example when a master process is forked: changing the children's title
- allows identifying the task each process is busy with. The technique
- is used by PostgreSQL and the OpenSSH Server for example.")
- (license license:bsd-3)
- (properties `((python2-variant . ,(delay python2-setproctitle))))))
- (define-public python2-setproctitle
- (let ((base (package-with-python2
- (strip-python2-variant python-setproctitle))))
- (package/inherit base
- (native-inputs `(("python2-nose" ,python2-nose)
- ,@(package-native-inputs base))))))
- (define-public python-validictory
- (package
- (name "python-validictory")
- (version "1.0.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "validictory" version))
- (sha256
- (base32
- "1zf1g9sw47xzp5f80bd94pb42j9yqv82lcrgcvdwr6nkaphfi37q"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'bootstrap
- ;; Move the tests out of the package directory to avoid
- ;; packaging them.
- (lambda* _
- (rename-file "validictory/tests" "tests")
- (delete-file "tests/__init__.py")))
- (replace 'check
- (lambda _
- (invoke "py.test" "-vv" ))))))
- (native-inputs
- (list python-pytest))
- (home-page
- "https://github.com/jamesturk/validictory")
- (synopsis "General purpose Python data validator")
- (description "It allows validation of arbitrary Python data structures.
- The schema format is based on the JSON Schema
- proposal (http://json-schema.org), so combined with json the library is also
- useful as a validator for JSON data.")
- (license license:expat)))
- (define-public python2-validictory
- (package-with-python2 python-validictory))
- (define-public python-pyelftools
- (package
- (name "python-pyelftools")
- (version "0.28")
- (home-page "https://github.com/eliben/pyelftools")
- (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 "1z4fx39c9rds0bd4d2fjjq7n05b1nfxl36pmy523x8knm38l4gpr"))
- (snippet
- ;; Delete bundled readelf executable.
- '(delete-file "test/external_tools/readelf"))))
- (build-system python-build-system)
- (arguments
- '(#:phases (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- ;; Taken from tox.ini.
- (invoke "python" "test/run_all_unittests.py")
- (invoke "python" "test/run_examples_test.py")
- (invoke "python" "test/run_readelf_tests.py")))))))
- (synopsis
- "Analyze binary and library file information")
- (description "This Python library provides interfaces for parsing and
- analyzing two binary and library file formats ; the Executable and Linking
- Format (ELF), and debugging information in the Debugging With Attributed
- Record Format (DWARF).")
- (license license:public-domain)))
- (define-public python-pyev
- (package
- (name "python-pyev")
- (version "0.9.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pyev" version))
- (sha256
- (base32
- "0rf603lc0s6zpa1nb25vhd8g4y337wg2wyz56i0agsdh7jchl0sx"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f ; no test suite
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'patch
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((libev (search-input-file inputs "/lib/libev.so.4")))
- (substitute* "setup.py"
- (("libev_dll_name = find_library\\(\\\"ev\\\"\\)")
- (string-append "libev_dll_name = \"" libev "\"")))))))))
- (inputs
- (list libev))
- (home-page "https://github.com/gabrielfalcao/pyev")
- (synopsis "Python libev interface")
- (description "Pyev provides a Python interface to libev.")
- (license license:gpl3)))
- (define-public python2-pyev
- (package-with-python2 python-pyev))
- (define-public python-imagesize
- (package
- (name "python-imagesize")
- (version "1.2.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "imagesize" version))
- (sha256
- (base32
- "1cd24x0vqbd6c8ym1n21qc0aj54mfb7rzdqglmwk9xxixajbbxmi"))))
- (build-system python-build-system)
- (home-page "https://github.com/shibukawa/imagesize_py")
- (synopsis "Gets image size of files in various formats in Python")
- (description
- "This package allows determination of image size from
- PNG, JPEG, JPEG2000 and GIF files in pure Python.")
- (license license:expat)))
- (define-public python2-imagesize
- (package-with-python2 python-imagesize))
- (define-public python-termstyle
- (package
- (name "python-termstyle")
- (version "0.1.11")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "termstyle" version))
- (sha256
- (base32
- "17wzkkcqy5zc0g68xlad3kcv66iw14d2pwqc0h9420gak0vbhx7g"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "python" "test3.py"))))))
- (home-page "https://github.com/gfxmonk/termstyle")
- (synopsis "Console text coloring for Python")
- (description "This package provides console text coloring for Python.")
- (license license:bsd-3)))
- (define-public python-argcomplete
- (package
- (name "python-argcomplete")
- (version "1.11.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "argcomplete" version))
- (sha256
- (base32
- "0h1przxffrhqvi46k40pzjsvdrq4zc3sl1pc96kkigqppq0vdrss"))
- (patches (search-patches "python-argcomplete-1.11.1-fish31.patch"))))
- (build-system python-build-system)
- (native-inputs
- (list python-coverage
- python-flake8
- python-pexpect
- python-wheel
- tcsh
- fish
- bash)) ;full Bash for 'test_file_completion'
- (home-page "https://github.com/kislyuk/argcomplete")
- (synopsis "Shell tab completion for Python argparse")
- (description "argcomplete provides extensible command line tab completion
- of arguments and options for Python scripts using @code{argparse}. It's
- particularly useful for programs with many options or sub-parsers that can
- dynamically suggest completions ; for example, when browsing resources over the
- network.")
- (license license:asl2.0)
- (properties `((python2-variant . ,(delay python2-argcomplete))))))
- (define-public python2-argcomplete
- (let ((variant (package-with-python2
- (strip-python2-variant python-argcomplete))))
- (package/inherit variant
- (arguments
- (substitute-keyword-arguments (package-arguments variant)
- ((#:phases phases '%standard-phases)
- `(modify-phases ,phases
- (add-after 'unpack 'set-my-HOME
- (lambda _ (setenv "HOME" "/tmp")))))))
- (native-inputs
- `(("python2-importlib-metadata" ,python2-importlib-metadata)
- ,@(package-native-inputs variant))))))
- (define-public python-csscompressor
- (package
- (name "python-csscompressor")
- (version "0.9.5")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "csscompressor" version))
- (sha256
- (base32
- "018ssffvlpnc1salmnpyl52c11glzzwj4k9f757hl4pkpjnjp8mg"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "py.test"))))))
- (native-inputs
- (list python-pytest))
- (home-page "https://github.com/sprymix/csscompressor")
- (synopsis "Python port of YUI CSS Compressor")
- (description
- "This package provides a python port of YUI CSS Compressor.")
- (license license:bsd-3)))
- (define-public python-rcssmin
- (package
- (name "python-rcssmin")
- (version "1.0.6")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "rcssmin" version))
- (sha256
- (base32
- "0w42l4dhxghcz7pj3q7hkxp015mvb8z2cq9sfxbl31npsfavd1ya"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "python" "run_tests.py" "tests"))))))
- (home-page "http://opensource.perlig.de/rcssmin/")
- (synopsis "CSS Minifier")
- (description "The minifier is based on the semantics of the YUI compressor,
- which itself is based on the rule list by Isaac Schlueter.")
- (license license:asl2.0)))
- (define-public python-rjsmin
- (package
- (name "python-rjsmin")
- (version "1.1.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "rjsmin" version))
- (sha256
- (base32
- "0cmc72rlkvzz8fl89bc83czkx0pcvhzj7yn7m29r8pgnf5fcfpdi"))
- (modules '((guix build utils)))
- (snippet
- '(begin
- (for-each delete-file (find-files "bench" "\\.js$"))
- #t))))
- (build-system python-build-system)
- (arguments
- '(#:tests? #f ; Not all test files included.
- #:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key inputs outputs tests? #:allow-other-keys)
- (add-installed-pythonpath inputs outputs)
- (if tests?
- (invoke "py.test" "-vv" "tests")
- #t))))))
- (native-inputs
- (list python-pytest))
- (home-page "http://opensource.perlig.de/rjsmin/")
- (synopsis "Javascript Minifier")
- (description "@code{rJSmin} is a javascript minifier written in Python. The
- minifier is based on the semantics of jsmin.c by Douglas Crockford. The module
- is a re-implementation aiming for speed, so it can be used at runtime (rather
- than during a preprocessing step).")
- (license license:asl2.0)))
- (define-public python-xopen
- (package
- (name "python-xopen")
- (version "0.8.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "xopen" version))
- (sha256
- (base32
- "1xrlcnd6fri3w97zzzp6vyk4l21yq1lc8r4wksi06hgpkbh4jdq0"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-setuptools-scm))
- (home-page "https://github.com/marcelm/xopen/")
- (synopsis "Open compressed files transparently")
- (description "This module provides an @code{xopen} function that works like
- Python's built-in @code{open} function, but can also deal with compressed files.
- Supported compression formats are gzip, bzip2 and, xz, and are automatically
- recognized by their file extensions. The focus is on being as efficient as
- possible on all supported Python versions.")
- (license license:expat)))
- (define-public python2-xopen
- (let ((base (package-with-python2
- (strip-python2-variant python-xopen))))
- (package/inherit base
- (propagated-inputs `(("python2-bz2file" ,python2-bz2file)
- ,@(package-propagated-inputs base))))))
- (define-public python-cheetah
- (package
- (name "python-cheetah")
- (version "3.2.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "Cheetah3" version))
- (sha256
- (base32
- "0ar5dqjnqaw0c17mymd6xgd81jn9br9fblawr0x438v1571bkaya"))))
- (build-system python-build-system)
- (arguments
- `(#:phases (modify-phases %standard-phases
- (add-after 'unpack 'use-absolute-python
- (lambda _
- (substitute* "Cheetah/CheetahWrapper.py"
- (("#!/usr/bin/env python")
- (string-append "#!" (which "python"))))))
- (add-after 'unpack 'fix-tests
- (lambda _
- (substitute* "Cheetah/Tests/ImportHooks.py"
- (("os.path.dirname\\(__file__\\)")
- (string-append "'" (getcwd) "/Cheetah/Tests'")))))
- (replace 'check
- (lambda _
- (setenv "TMPDIR" "/tmp")
- (substitute* "Cheetah/Tests/Test.py"
- (("unittest.TextTestRunner\\(\\)")
- "unittest.TextTestRunner(verbosity=2)"))
- (invoke "python" "Cheetah/Tests/Test.py"))))))
- (propagated-inputs
- (list python-markdown)) ;optional
- (home-page "https://cheetahtemplate.org/")
- (synopsis "Template engine")
- (description "Cheetah is a text-based template engine and Python code
- generator.
- Cheetah can be used as a standalone templating utility or referenced as
- a library from other Python applications. It has many potential uses,
- but web developers looking for a viable alternative to ASP, JSP, PHP and
- PSP are expected to be its principle user group.
- Features:
- @enumerate
- @item Generates HTML, SGML, XML, SQL, Postscript, form email, LaTeX, or any other
- text-based format.
- @item Cleanly separates content, graphic design, and program code.
- @item Blends the power and flexibility of Python with a simple template language
- that non-programmers can understand.
- @item Gives template writers full access to any Python data structure, module,
- function, object, or method in their templates.
- @item Makes code reuse easy by providing an object-orientated interface to
- templates that is accessible from Python code or other Cheetah templates.
- One template can subclass another and selectively reimplement sections of it.
- @item Provides a simple, yet powerful, caching mechanism that can dramatically
- improve the performance of a dynamic website.
- @item Compiles templates into optimized, yet readable, Python code.
- @end enumerate")
- (license (license:x11-style "file://LICENSE"))))
- (define-public python2-cheetah
- (package-with-python2 python-cheetah))
- (define-public python-dulwich
- (package
- (name "python-dulwich")
- (version "0.20.30")
- (source
- (origin
- (method url-fetch)
- (uri (list (string-append "https://www.dulwich.io/releases/"
- "dulwich-" version ".tar.gz")
- (pypi-uri "dulwich" version)))
- (sha256
- (base32
- "0hafaff30bmkj30b8pwpwsy3fz5h6c1pn98ihqcvl5zndflr1h22"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (add-before 'check 'fix-tests
- (lambda* (#:key inputs #:allow-other-keys)
- (substitute* '("dulwich/tests/test_repository.py"
- "dulwich/tests/test_porcelain.py"
- "dulwich/tests/test_hooks.py")
- (("/bin/sh") (search-input-file inputs "/bin/sh")))
- (setenv "TEST_RUNNER" "unittest")
- (setenv "PYTHONHASHSEED" "random"))))))
- (propagated-inputs
- (list python-fastimport python-urllib3))
- (native-inputs
- (list python-mock python-geventhttpclient python-gpg
- git gnupg))
- (home-page "https://www.dulwich.io/")
- (synopsis "Git implementation in Python")
- (description "Dulwich is an implementation of the Git file formats and
- protocols written in pure Python.")
- ;; Can be used with either license.
- (license (list license:asl2.0 license:gpl2+))))
- (define-public python-pbkdf2
- (package
- (name "python-pbkdf2")
- (version "1.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pbkdf2" version))
- (sha256
- (base32
- "0yb99rl2mbsaamj571s1mf6vgniqh23v98k4632150hjkwv9fqxc"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "python" "test/test_pbkdf2.py"))))))
- (propagated-inputs
- (list python-pycrypto)) ; optional
- (home-page "https://www.dlitz.net/software/python-pbkdf2/")
- (synopsis "Password-based key derivation")
- (description "This module implements the password-based key derivation
- function, PBKDF2, specified in RSA PKCS#5 v2.0.
- PKCS#5 v2.0 Password-Based Key Derivation is a key derivation function which
- is part of the RSA Public Key Cryptography Standards series. The provided
- implementation takes a password or a passphrase and a salt value (and
- optionally a iteration count, a digest module, and a MAC module) and provides
- a file-like object from which an arbitrarily-sized key can be read.")
- (license license:expat)))
- (define-public python2-pbkdf2
- (package-with-python2 python-pbkdf2))
- (define-public python-qrcode
- (package
- (name "python-qrcode")
- (version "6.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "qrcode" version))
- (sha256
- (base32 "0sa3n298b9jpz6zn0birnjii3mg9sihjq28n9nzjlzv09y2m6ljh"))))
- (build-system python-build-system)
- (arguments
- ;; FIXME: Tests require packaging 'pymaging'.
- '(#:tests? #f))
- (propagated-inputs
- (list python-lxml ; for SVG output
- python-pillow ; for PNG output
- python-six))
- (home-page "https://github.com/lincolnloop/python-qrcode")
- (synopsis "QR Code image generator")
- (description "This package provides a pure Python QR Code generator
- module. It uses the Python Imaging Library (PIL) to allow for the generation
- of QR Codes.
- In addition this package provides a command line tool to generate QR codes and
- either write these QR codes to a file or do the output as ascii art at the
- console.")
- (license license:bsd-3)))
- (define-public python2-qrcode
- (package-with-python2 python-qrcode))
- (define-public python-rst2ansi
- (package
- (name "python-rst2ansi")
- (version "0.1.5")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "rst2ansi" version))
- (sha256
- (base32
- "0vzy6gd60l79ff750scl0sz48r1laalkl6md6dwzah4dcadgn5qv"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-docutils))
- (home-page "https://github.com/Snaipe/python-rst-to-ansi")
- (synopsis "Convert RST to ANSI-decorated console output")
- (description
- "Python module dedicated to rendering RST (reStructuredText) documents
- to ansi-escaped strings suitable for display in a terminal.")
- (license license:expat)))
- (define-public python-ansi2html
- (package
- (name "python-ansi2html")
- (version "1.2.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "ansi2html" version))
- (sha256
- (base32
- "1wa00zffprb78w1mqq90dk47czz1knanys2a40zbw2vyapd5lp9y"))))
- (build-system python-build-system)
- (native-inputs
- (list python-mock python-nose))
- (propagated-inputs
- (list python-six))
- (home-page "https://github.com/ralphbean/ansi2html")
- (synopsis "Convert ANSI-decorated console output to HTML")
- (description
- "@command{ansi2html} is a Python library and command line utility for
- converting text with ANSI color codes to HTML or LaTeX.")
- (license license:gpl3+)))
- (define-public python2-ansi2html
- (package-with-python2 python-ansi2html))
- (define-public python-easy-ansi
- (package
- (name "python-easy-ansi")
- (version "0.3")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://gitlab.com/joeysbytes/easy-ansi")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "0albh55ynzs98qy9pln4qaxw5qhhh3lk09jy9bx19gycrp1c3lc3"))))
- (build-system python-build-system)
- (home-page "https://gitlab.com/joeysbytes/easy-ansi")
- (synopsis "Terminal framework API")
- (description
- "Easy ANSI is a terminal framework API to give you an easy way to use
- colors, cursor control movements, and line/box drawing. It is not meant as a
- replacement to more full-featured frameworks (such as curses or urwid), but as
- a tool to quickly create nice-looking screens in your terminal window. You
- can even create animations with the cursor controls.")
- (license license:expat)))
- (define-public python-ddt
- (package
- (name "python-ddt")
- (version "1.4.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "ddt" version))
- (sha256
- (base32
- "0y2k756qjz1rhpivi60hy29b4bf0bh3wck39i1mn6pkil9k779k4"))))
- (build-system python-build-system)
- (native-inputs
- (list python-pytest))
- (propagated-inputs
- (list python-pyyaml))
- (home-page "https://github.com/datadriventests/ddt")
- (synopsis "Data-Driven Tests")
- (description
- "Data-Driven Tests (@dfn{DDT}) allow you to multiply one test case by
- running it with different test data, and make it appear as multiple test
- cases.")
- (license license:expat)))
- (define-public python-pycountry
- (package
- (name "python-pycountry")
- (version "18.5.26")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pycountry" version))
- (sha256
- (base32
- "15q9j047s3yc9cfcxq1ch8b71f81na44cr6dydd5gxk0ki9a4akz"))))
- (build-system python-build-system)
- (home-page "https://bitbucket.org/flyingcircus/pycountry")
- (synopsis "ISO databases for languages, countries, currencies, etc.")
- (description
- "@code{pycountry} provides the ISO databases for the standards:
- @enumerate
- @item 639-3 (Languages)
- @item 3166 (Countries)
- @item 3166-3 (Deleted Countries)
- @item 3166-2 (Subdivisions of countries)
- @item 4217 (Currencies)
- @item 15924 (Scripts)
- @end enumerate
- It includes a copy from Debian’s pkg-isocodes and makes the data accessible
- through a Python API.")
- (license license:lgpl2.1+)))
- (define-public python2-pycountry
- (package-with-python2 python-pycountry))
- (define-public python-pycosat
- (package
- (name "python-pycosat")
- (version "0.6.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pycosat" version ".zip"))
- (sha256
- (base32
- "1vg0f2fwcybpdqv92z0hwdl603n2safh3fqvjjxkksd78r4qg6ac"))))
- ;; TODO: Unundle picosat. http://fmv.jku.at/picosat/
- (build-system python-build-system)
- (native-inputs
- (list unzip))
- (home-page "https://github.com/ContinuumIO/pycosat")
- (synopsis "Bindings to picosat (a SAT solver)")
- (description
- "This package provides efficient Python bindings to @code{picosat} on
- the C level. When importing pycosat, the @code{picosat} solver becomes part
- of the Python process itself. @code{picosat} is a @dfn{Boolean Satisfiability
- Problem} (SAT) solver.")
- (license license:expat)))
- (define-public python2-pycosat
- (package-with-python2 python-pycosat))
- (define-public python2-ruamel.ordereddict
- (package
- (name "python2-ruamel.ordereddict")
- (version "0.4.9")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "ruamel.ordereddict" version))
- (sha256
- (base32
- "1xmkl8v9l9inm2pyxgc1fm5005yxm7fkd5gv74q7lj1iy5qc8n3h"))))
- (build-system python-build-system)
- (arguments
- `(#:python ,python-2
- #:phases
- (modify-phases %standard-phases
- (delete 'check)
- (add-after 'install 'check
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (add-installed-pythonpath inputs outputs)
- (invoke "python" "test/testordereddict.py"))))))
- (home-page "https://bitbucket.org/ruamel/ordereddict")
- (synopsis "Version of dict that keeps keys in insertion order")
- (description
- "This is an implementation of an ordered dictionary with @dfn{Key
- Insertion Order} (KIO: updates of values do not affect the position of the
- key), @dfn{Key Value Insertion Order} (KVIO, an existing key's position is
- removed and put at the back). The standard library module @code{OrderedDict},
- implemented later, implements a subset of @code{ordereddict} functionality.
- Sorted dictionaries are also provided. Currently only with @dfn{Key Sorted
- Order} (KSO, no sorting function can be specified, but a transform can be
- specified to apply on the key before comparison (e.g. @code{string.lower})).")
- (license license:expat)))
- (define-public python-pypeg2
- (package
- (name "python-pypeg2")
- (version "2.15.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pyPEG2" version))
- (sha256
- (base32
- "0v8ziaam2r637v94ra4dbjw6jzxz99gs5x4i585kgag1v204yb9b"))))
- (build-system python-build-system)
- (propagated-inputs (list python-lxml))
- (arguments
- ;;https://bitbucket.org/fdik/pypeg/issues/36/test-failures-on-py35
- '(#:tests? #f))
- (home-page "https://fdik.org/pyPEG/")
- (synopsis "Parsing Expression Grammars in Python")
- (description "PyPEG is an intrinsic parser interpreter framework for
- Python. It is based on Parsing Expression Grammars, PEG. With pyPEG you can
- parse many formal languages.")
- (license license:gpl2)))
- (define-public python-incremental
- (package
- (name "python-incremental")
- (version "17.5.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "incremental" version))
- (sha256
- (base32
- "1cylxdz1cnkm5g3pklna3h2n0i0rks95ir1pnpxfnvpkmab1cxbv"))))
- (build-system python-build-system)
- (home-page "https://github.com/hawkowl/incremental")
- (synopsis "Library for versioning Python projects")
- (description "Incremental is a small library that versions your Python
- projects.")
- (license license:expat)))
- (define-public python2-incremental
- (package-with-python2 python-incremental))
- (define-public python-invoke
- (package
- (name "python-invoke")
- (home-page "https://www.pyinvoke.org/")
- (version "1.6.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "invoke" version))
- (sha256
- (base32
- "1lsql9daabfr31c7syva5myc5bka45k57ygs9fliv63qrwp1wk9p"))))
- (build-system python-build-system)
- (arguments
- ;; XXX: Requires many dependencies that are not yet in Guix.
- `(#:tests? #f
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'delete-python2-code
- (lambda _
- (delete-file-recursively "invoke/vendor/yaml2")))
- (add-after 'unpack 'fix-bash-path
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((bash (assoc-ref inputs "bash")))
- (substitute* "invoke/config.py"
- (("shell = \"/bin/bash\"")
- (string-append "shell = \"" bash "/bin/bash\"")))))))))
- (inputs
- `(("bash" ,bash-minimal)))
- (synopsis "Pythonic task execution")
- (description
- "Invoke is a Python task execution tool and library, drawing inspiration
- from various sources to arrive at a powerful and clean feature set. It is
- evolved from the Fabric project, but focuses on local and abstract concerns
- instead of servers and network commands.")
- (license license:bsd-3)))
- (define-public python2-invoke
- (let ((parent (package-with-python2 python-invoke)))
- (package
- (inherit parent)
- (arguments
- (substitute-keyword-arguments (package-arguments parent)
- ((#:phases phases #t)
- `(modify-phases ,phases
- (delete 'delete-python2-code)
- (add-after 'unpack 'delete-python3-code
- (lambda _
- (delete-file-recursively "invoke/vendor/yaml3"))))))))))
- (define-public python-automat
- (package
- (name "python-automat")
- (version "20.2.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "Automat" version))
- (sha256
- (base32
- "0cyzrcqiibwdsp4y0djkllnzab8m5faa4s0d1kpi23k1fhy80ybr"))))
- (build-system python-build-system)
- ;; We disable the tests because they require python-twisted, while
- ;; python-twisted depends on python-automat. Twisted is optional, but the
- ;; tests fail if it is not available. Also see
- ;; <https://github.com/glyph/automat/issues/71>.
- (arguments
- `(#:tests? #f
- #:phases
- (modify-phases %standard-phases
- ;; Remove script, because it depends on python-twisted.
- (add-after 'unpack 'remove-entrypoint
- (lambda _
- (substitute* "setup.py"
- (("\"automat-visualize = automat._visualize:tool\"") "")))))))
- (native-inputs
- (list python-m2r python-setuptools-scm python-graphviz))
- (propagated-inputs
- (list python-six python-attrs))
- (home-page "https://github.com/glyph/Automat")
- (synopsis "Self-service finite-state machines")
- (description "Automat is a library for concise, idiomatic Python
- expression of finite-state automata (particularly deterministic finite-state
- transducers).")
- (license license:expat)))
- (define-public python2-automat
- (package-with-python2 python-automat))
- (define-public python-m2r
- (package
- (name "python-m2r")
- (version "0.2.1")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "m2r" version))
- (sha256
- (base32
- "16gdm8i06jjmlpvckpfmlkr4693dh0vs192vgsqn84fsdkbbm45z"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-docutils python-mistune))
- (native-inputs
- (list python-pygments python-mock))
- (home-page "https://github.com/miyakogi/m2r")
- (synopsis "Markdown to reStructuredText converter")
- (description "M2R converts a markdown file including reST markups to valid
- reST format.")
- (license license:expat)))
- (define-public python2-m2r
- (package-with-python2 python-m2r))
- (define-public python-constantly
- (package
- (name "python-constantly")
- (version "15.1.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "constantly" version))
- (sha256
- (base32
- "0dgwdla5kfpqz83hfril716inm41hgn9skxskvi77605jbmp4qsq"))))
- (build-system python-build-system)
- (home-page "https://github.com/twisted/constantly")
- (synopsis "Symbolic constants in Python")
- (description "Constantly is a Python library that provides symbolic
- constant support. It includes collections and constants with text, numeric,
- and bit flag values.")
- (license license:expat)))
- (define-public python2-constantly
- (package-with-python2 python-constantly))
- (define-public python-attrs
- (package
- (name "python-attrs")
- (version "21.2.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "attrs" version))
- (sha256
- (base32
- "1yzmwi5d197p0qhl7rl4xi9q1w8mk9i3zn6hrl22knbcrb1slspg"))))
- (build-system python-build-system)
- (arguments
- `(#:phases (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "pytest")))))))
- (native-inputs
- (list python-coverage python-hypothesis python-pympler python-pytest
- python-six))
- (home-page "https://github.com/python-attrs/attrs/")
- (synopsis "Attributes without boilerplate")
- (description "@code{attrs} is a Python package with class decorators that
- ease the chores of implementing the most common attribute-related object
- protocols.")
- (license license:expat)))
- (define-public python2-attrs
- (package-with-python2 python-attrs))
- (define-public python-attrs-bootstrap
- (package
- (inherit python-attrs)
- (name "python-attrs-bootstrap")
- (native-inputs `())
- (arguments `(#:tests? #f))))
- (define-public python2-attrs-bootstrap
- (package-with-python2 python-attrs-bootstrap))
- (define-public python-cliapp
- (package
- (name "python-cliapp")
- (version "1.20180812.1")
- (source
- (origin
- (method url-fetch)
- (uri (string-append
- "http://git.liw.fi/cgi-bin/cgit/cgit.cgi/cliapp/snapshot/cliapp-"
- version ".tar.gz"))
- (sha256
- (base32
- "1c1jlblbns8qhiaqjpg4xi6lip8xwfc5w643p43rg543havaj45x"))))
- (build-system python-build-system)
- (arguments
- `(;; XXX: The tests only do style and coverage checks, which
- ;; fails due to deprecation warnings, etc.
- #:tests? #f))
- (native-inputs
- (list python-coverage-test-runner python-pep8))
- (propagated-inputs
- (list python-pyaml))
- (home-page "https://liw.fi/cliapp/")
- (synopsis "Python framework for command line programs")
- (description "@code{cliapp} is a Python framework for command line
- programs. It contains the typical stuff such programs need to do, such
- as parsing the command line for options, and iterating over input files.")
- (license license:gpl2+)))
- (define-public python2-cliapp
- (package-with-python2 python-cliapp))
- (define-public python-ttystatus
- (package
- (name "python-ttystatus")
- (version "0.38")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "http://git.liw.fi/ttystatus")
- ;; There are no tags after ttystatus-0.36.
- (commit "e9fc573326c5d1348f5fe56263b4f7a8c32f58c9")))
- (sha256
- (base32 "0v49q839nrwdm19c83wfmj6n2kw80xslwq9k0n5509r2h7wzjiqj"))
- (file-name (git-file-name name version))))
- (build-system python-build-system)
- (native-inputs
- (list python-coverage-test-runner python-pep8))
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- ;; check phase needs to be run before the build phase. If not,
- ;; coverage-test-runner looks for tests for the built source files,
- ;; and fails.
- (delete 'check)
- (add-before 'build 'check
- (lambda _ (invoke "make" "check"))))))
- (home-page "https://liw.fi/ttystatus/")
- (synopsis "Python library for showing progress reporting and
- status updates on terminals")
- (description "@code{ttystatus} is a Python library for showing progress
- reporting and status updates on terminals, for command line programs.
- Output is automatically adapted to the width of the terminal: truncated
- if it does not fit, and resized if the terminal size changes.")
- (license license:gpl3+)))
- (define-public python2-ttystatus
- (package-with-python2 python-ttystatus))
- (define-public python2-tracing
- (package
- (name "python2-tracing")
- (version "0.10")
- (source
- (origin
- (method url-fetch)
- (uri (string-append
- "http://git.liw.fi/cgi-bin/cgit/cgit.cgi/python-tracing/snapshot/tracing-"
- version ".tar.gz"))
- (sha256
- (base32
- "06cw4zg42fsvqy372vi2whj26w56vzg5axhzwdjc2bgwf03garbw"))))
- (build-system python-build-system)
- (arguments
- `(#:python ,python-2))
- (home-page "https://liw.fi/tracing/")
- (synopsis "Python debug logging helper")
- (description "@code{python2-tracing} is a python library for
- logging debug messages. It provides a way to turn debugging messages
- on and off, based on the filename they occur in. It is much faster
- than using @code{logging.Filter} to accomplish the same thing, which
- matters when code is run in production mode. The actual logging still
- happens using the @code{logging} library.")
- (license license:gpl3+)))
- (define-public python-astroid
- (package
- (name "python-astroid")
- (version "2.9.0")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/PyCQA/astroid")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "19iiys4233cicpm48fd7lrkm31kk47qiv44wvk952rqbcn4rd2dh"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-lazy-object-proxy python-wrapt))
- (native-inputs
- (list python-pytest python-pytest-runner python-typing-extensions))
- (home-page "https://github.com/PyCQA/astroid")
- (synopsis "Common base representation of python source code for pylint and
- other projects")
- (description "@code{python-astroid} provides a common base representation
- of python source code for projects such as pychecker, pyreverse, pylint, etc.
- It provides a compatible representation which comes from the _ast module. It
- rebuilds the tree generated by the builtin _ast module by recursively walking
- down the AST and building an extended ast. The new node classes have
- additional methods and attributes for different usages. They include some
- support for static inference and local name scopes. Furthermore, astroid
- builds partial trees by inspecting living objects.")
- (license license:lgpl2.1+)))
- (define-public python-isbnlib
- (package
- (name "python-isbnlib")
- (version "3.10.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "isbnlib" version))
- (sha256
- (base32
- "0iin0x2xqwyphyyzd0mzrq5v5xm7b6dlbb294k4dywra5qvbrgzm"))))
- (build-system python-build-system)
- (arguments '(#:tests? #f)) ; No test
- (home-page "https://github.com/xlcnd/isbnlib")
- (synopsis "Python library to work with ISBN strings")
- (description "@code{python-isbnlib} is a (pure) python library that provides
- several useful methods and functions to validate, clean, transform, hyphenate and
- get metadata for ISBN strings. Its origin was as the core of isbntools. This short
- version, is suitable to be include as a dependency in other projects.")
- (license license:lgpl3+)))
- (define-public python-isort
- (package
- (name "python-isort")
- (version "5.10.1")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- ;; Tests pass only from the Github sources
- (url "https://github.com/timothycrosley/isort")
- (commit version)))
- (file-name (git-file-name name version))
- (modules '((guix build utils)))
- (snippet '(for-each delete-file (find-files "." "\\.whl$")))
- (sha256
- (base32
- "09spgl2k9xrprr5gbpfc91a8p7mx7a0c64ydgc91b3jhrmnd9jg1"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'loosen-requirements
- (lambda _
- ;; Permit newer versions of black.
- (substitute* "example_isort_formatting_plugin/pyproject.toml"
- (("\\^20\\.08b1")
- ">= 20.08b1"))))
- ;; A foretaste of what our future python-build-system will need to
- ;; do.
- (replace 'build
- (lambda _
- (invoke "python" "-m" "build" "--wheel" "--no-isolation" ".")))
- (replace 'install
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out"))
- (whl (car (find-files "dist" "\\.whl$"))))
- (invoke "pip" "--no-cache-dir" "--no-input"
- "install" "--no-deps" "--prefix" out whl))))
- (add-after 'install 'install-example-plugins
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- ;; Patch to use the core poetry API.
- (substitute* '("example_isort_formatting_plugin/pyproject.toml"
- "example_isort_sorting_plugin/pyproject.toml"
- "example_shared_isort_profile/pyproject.toml")
- (("poetry>=0.12")
- "poetry-core>=1.0.0")
- (("poetry.masonry.api")
- "poetry.core.masonry.api"))
- ;; Build the example plugins.
- (for-each (lambda (source-directory)
- (invoke "python" "-m" "build" "--wheel"
- "--no-isolation" "--outdir=dist"
- source-directory))
- '("example_isort_formatting_plugin"
- "example_isort_sorting_plugin"
- "example_shared_isort_profile"))
- ;; Install them to temporary storage, for the test.
- (setenv "HOME" (getcwd))
- (let ((example-whls (find-files "dist" "^example.*\\.whl$")))
- (apply invoke "pip" "--no-cache-dir" "--no-input"
- "install" "--user" "--no-deps" example-whls)))))
- (replace 'check
- (lambda* (#:key tests? inputs outputs #:allow-other-keys)
- (when tests?
- (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
- (setenv "PATH" (string-append (getenv "PATH") ":" bin)))
- (add-installed-pythonpath inputs outputs)
- (invoke "pytest" "-vv" "tests/unit/"
- "-k" "not test_gitignore" ;requires git
- "--ignore=tests/unit/test_deprecated_finders.py")))))))
- (native-inputs
- (list python-black
- python-colorama
- python-hypothesmith
- python-libcst-minimal
- python-natsort
- python-poetry-core
- python-pylama
- python-pypa-build
- python-pytest-mock
- python-pytest))
- (home-page "https://github.com/PyCQA/isort")
- (synopsis "Python utility/library to sort python imports")
- (description "@code{python-isort} is a python utility/library to sort
- imports alphabetically, and automatically separated into sections. It
- provides a command line utility, a python library and plugins for various
- editors.")
- (license license:expat)
- (properties `((python2-variant . ,(delay python2-isort))))))
- (define-public python2-isort
- (let ((base (package-with-python2
- (strip-python2-variant python-isort))))
- (package/inherit base
- (native-inputs
- `(("python2-futures" ,python2-futures)
- ,@(package-native-inputs base))))))
- (define-public python2-backports-functools-lru-cache
- (package
- (name "python2-backports-functools-lru-cache")
- (version "1.6.1")
- (source
- (origin
- (method url-fetch)
- ;; only the pypi tarballs contain the necessary metadata
- (uri (pypi-uri "backports.functools_lru_cache" version))
- (sha256
- (base32
- "0jidrkk2w6bhjm197plxiaxrav64mgcrign0bfyr7md2ilc5zplg"))))
- (build-system python-build-system)
- (native-inputs
- (list python2-setuptools-scm))
- (arguments
- `(#:python ,python-2))
- (home-page "https://github.com/jaraco/backports.functools_lru_cache")
- (synopsis "Backport of functools.lru_cache from Python 3.3")
- (description "@code{python2-backports-functools-lru-cache} is a backport
- of @code{functools.lru_cache} from python 3.3.")
- (license license:expat)))
- (define-public python-configparser
- (package
- (name "python-configparser")
- (version "4.0.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "configparser" version))
- (sha256
- (base32
- "1priacxym85yjcf68hh38w55nqswaxp71ryjyfdk222kg9l85ln7"))))
- (native-inputs
- (list python-setuptools-scm))
- (build-system python-build-system)
- (home-page "https://github.com/jaraco/configparser/")
- (synopsis "Backport of configparser from python 3.5")
- (description "@code{python-configparser} is a backport of
- @code{configparser} from Python 3.5 so that it can be used directly
- in other versions.")
- (license license:expat)))
- (define-public python2-configparser
- (package-with-python2 python-configparser))
- (define-public python-iniconfig
- (package
- (name "python-iniconfig")
- (version "1.1.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "iniconfig" version))
- (sha256
- (base32
- "0ckzngs3scaa1mcfmsi1w40a1l8cxxnncscrxzjjwjyisx8z0fmw"))))
- (build-system python-build-system)
- (home-page "https://github.com/RonnyPfannschmidt/iniconfig")
- (synopsis "Simple INI-file parser")
- (description "The @code{iniconfig} package provides a small and simple
- INI-file parser module having a unique set of features ; @code{iniconfig}
- @itemize
- @item maintains the order of sections and entries ;
- @item supports multi-line values with or without line-continuations ;
- @item supports \"#\" comments everywhere ;
- @item raises errors with proper line-numbers ;
- @item raises an error when two sections have the same name.
- @end itemize")
- (license license:expat)))
- (define-public python-mamba
- (package
- (name "python-mamba")
- (version "0.11.2")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "mamba" version))
- (sha256
- (base32
- "15m4dpnpv9m60pdaygvwgi43fwqaivs3qxfxhspwrp47sbgwdkvm"))))
- (build-system python-build-system)
- (arguments `(#:tests? #f)) ; No test
- (propagated-inputs
- (list python-clint python-coverage))
- (home-page "https://nestorsalceda.com/mamba/")
- (synopsis "Test runner for Python")
- (description
- "Mamba is a Behaviour-Driven Development tool for Python developers.
- Is heavily influenced from RSpec, Mocha, Jasmine or Ginkgo.")
- (license license:expat)))
- (define-public python-mando
- (package
- (name "python-mando")
- (version "0.6.4")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "mando" version))
- (sha256
- (base32
- "0q6rl085q1hw1wic52pqfndr0x3nirbxnhqj9akdm5zhq2fv3zkr"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-rst2ansi python-six))
- (native-inputs
- (list python-pytest))
- (home-page "https://mando.readthedocs.org/")
- (synopsis
- "Wrapper around argparse, allowing creation of complete CLI applications")
- (description
- "This package is a wrapper around argparse, allowing you to write complete CLI
- applications in seconds while maintaining all the flexibility.")
- (license license:expat)))
- (define-public python2-mando
- (package-with-python2 python-mando))
- (define-public python2-argparse
- (package
- (name "python2-argparse")
- (version "1.4.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "argparse" version))
- (sha256
- (base32
- "1r6nznp64j68ih1k537wms7h57nvppq0szmwsaf99n71bfjqkc32"))))
- (build-system python-build-system)
- (arguments
- `(#:python ,python-2))
- (home-page "https://github.com/ThomasWaldmann/argparse/")
- (synopsis "Python command-line parsing library")
- (description
- "This package is mostly for people who want to have @code{argparse} on
- older Pythons because it was not part of the standard library back then.")
- (license license:psfl)))
- (define-public python-mwclient
- (package
- (name "python-mwclient")
- (version "0.10.1")
- (source
- (origin
- (method git-fetch)
- ;; The PyPI version wouldn't contain tests.
- (uri (git-reference
- (url "https://github.com/mwclient/mwclient")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "120snnsh9n5svfwkyj1w9jrxf99jnqm0jk282yypd3lpyca1l9hj"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-requests-oauthlib python-six))
- (native-inputs
- (list python-mock python-pytest python-pytest-cov
- python-pytest-runner python-responses))
- (home-page "https://github.com/btongminh/mwclient")
- (synopsis "MediaWiki API client")
- (description "This package provides a MediaWiki API client.")
- (license license:expat)))
- (define-public python-utils
- (package
- (name "python-utils")
- (version "2.4.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "python-utils" version))
- (sha256
- (base32
- "12c0glzkm81ljgf6pwh0d4rmdm1r7vvgg3ifzp8yp9cfyngw07zj"))))
- (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)
- (delete-file "pytest.ini")
- (invoke "pytest" "-vv"))))))
- (native-inputs
- `(("pytest-runner" ,python-pytest-runner)
- ("pytest" ,python-pytest)
- ("six" ,python-six)))
- (home-page "https://github.com/WoLpH/python-utils")
- (synopsis "Convenient utilities not included with the standard Python install")
- (description
- "Python Utils is a collection of small Python functions and classes which
- make common patterns shorter and easier.")
- (license license:bsd-2)))
- (define-public python-diff-match-patch
- (package
- (name "python-diff-match-patch")
- (version "20121119")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "diff-match-patch" version))
- (sha256
- (base32
- "0k1f3v8nbidcmmrk65m7h8v41jqi37653za9fcs96y7jzc8mdflx"))))
- (build-system python-build-system)
- (home-page "https://code.google.com/p/google-diff-match-patch")
- (synopsis "Synchronize plain text")
- (description "Diff Match and Patch libraries offer robust algorithms to
- perform the operations required for synchronizing plain text.")
- (license license:asl2.0)))
- (define-public python2-diff-match-patch
- (package-with-python2 python-diff-match-patch))
- (define-public python-dirsync
- (package
- (name "python-dirsync")
- (version "2.2.5")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "dirsync" version))
- (sha256
- (base32
- "1gm82jddm1lkazdi8lfsl1b3vi1z0252ng60mzjym8irnv94qfhy"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-six))
- (home-page "https://github.com/tkhyn/dirsync")
- (synopsis "Advanced directory tree synchronisation tool")
- (description "Advanced directory tree synchronisation tool.")
- (license license:expat)))
- (define-public python2-dirsync
- (package-with-python2 python-dirsync))
- (define-public python-levenshtein
- (package
- (name "python-levenshtein")
- (version "0.12.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "python-Levenshtein" version))
- (sha256
- (base32
- "1xj60gymwx1jl2ra9razx2wk8nb9cv1i7l8d14qsp8a8s7xra8yw"))))
- (build-system python-build-system)
- (home-page "https://github.com/ztane/python-Levenshtein")
- (synopsis "Fast computation of Levenshtein distance and string similarity")
- (description
- "The Levenshtein Python C extension module contains functions for fast computation of
- @enumerate
- @item Levenshtein (edit) distance, and edit operations
- @item string similarity
- @item approximate median strings, and generally string averaging
- @item string sequence and set similarity
- @end enumerate
- It supports both normal and Unicode strings.")
- (license license:gpl2+)))
- (define-public python2-levenshtein
- (package-with-python2 python-levenshtein))
- (define-public python-scandir
- (package
- (name "python-scandir")
- (version "1.10.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "scandir" version))
- (sha256
- (base32 "1bkqwmf056pkchf05ywbnf659wqlp6lljcdb0y88wr9f0vv32ijd"))))
- (build-system python-build-system)
- (arguments
- `(#:phases (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "python" "test/run_tests.py"))))))
- (home-page "https://github.com/benhoyt/scandir")
- (synopsis "Directory iteration function")
- (description
- "Directory iteration function like os.listdir(), except that instead of
- returning a list of bare filenames, it yields DirEntry objects that include
- file type and stat information along with the name. Using scandir() increases
- the speed of os.walk() by 2-20 times (depending on the platform and file
- system) by avoiding unnecessary calls to os.stat() in most cases.
- This package is part of the Python standard library since version 3.5.")
- (license license:bsd-3)))
- (define-public python2-scandir
- (package-with-python2 python-scandir))
- (define-public python2-stemming
- (package
- (name "python2-stemming")
- (version "1.0.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "stemming" version))
- (sha256
- (base32 "0ldwa24gnnxhniv0fhygkpc2mwgd93q10ag8rvzayv6hw418frsr"))))
- (build-system python-build-system)
- (arguments
- `(#:python ,python-2))
- (home-page "https://bitbucket.org/mchaput/stemming/overview")
- (synopsis "Python implementations of various stemming algorithms")
- (description
- "Python implementations of the Porter, Porter2, Paice-Husk, and Lovins
- stemming algorithms for English. These implementations are straightforward and
- efficient, unlike some Python versions of the same algorithms available on the
- Web. This package is an extraction of the stemming code included in the Whoosh
- search engine.")
- (license license:public-domain)))
- (define-public python-factory-boy
- (package
- (name "python-factory-boy")
- (version "2.8.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "factory_boy" version))
- (sha256
- (base32 "1fvin6san5xsjh2c4y18caj2lnmwxlylyqm8mh1yc6rp38wlwr56"))))
- (build-system python-build-system)
- (arguments
- ;; Tests are not included in the tarball.
- `(#:tests? #f))
- (propagated-inputs
- `(("faker" ,python-faker)))
- (home-page "https://github.com/benhoyt/scandir")
- (synopsis "Versatile test fixtures replacement")
- (description
- "Factory_boy is a fixtures replacement based on thoughtbot’s factory_girl.
- As a fixtures replacement tool, it aims to replace static, hard to maintain
- fixtures with easy-to-use factories for complex object.
- Instead of building an exhaustive test setup with every possible combination
- of corner cases, factory_boy allows you to use objects customized for the
- current test, while only declaring the test-specific fields")
- (license license:expat)))
- (define-public python-translate-toolkit
- (package
- (name "python-translate-toolkit")
- (version "3.5.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "translate-toolkit" version ".tar.gz"))
- (sha256
- (base32 "020pp7pbpnavxd41z90vyzzx06ci57mx9drkgbsb89wxxx4gal9v"))))
- (build-system python-build-system)
- (native-inputs
- (list python-pytest python-sphinx))
- (propagated-inputs
- (list python-babel
- python-beautifulsoup4
- python-chardet
- python-diff-match-patch
- python-levenshtein
- python-lxml
- python-six
- python-vobject
- python-pyyaml))
- (arguments
- ;; TODO: tests are not run, because they end with
- ;; TypeError: parse() missing 2 required positional arguments: 'tree' and
- ;; 'parse_funcs'
- ;; during test setup.
- (list #:tests? #f
- #:phases
- #~(modify-phases %standard-phases
- ;; translate-toolkit has many optional dependencies (see
- ;; optional.txt), which the sanity check does not understand.
- (delete 'sanity-check))))
- (home-page "https://toolkit.translatehouse.org")
- (synopsis "Tools and API for translation and localization engineering")
- (description
- "Tools and API for translation and localization engineering. It contains
- several utilities, as well as an API for building localization tools.")
- (license license:gpl2+)))
- ;; Required for virtaal, newer versions do not build with python2
- (define-public python2-translate-toolkit
- (package-with-python2
- (package
- (inherit python-translate-toolkit)
- (version "2.1.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "translate-toolkit" version ".tar.bz2"))
- (sha256
- (base32 "1vlkwrg83vb17jc36pmwh2b7jphwf390lz0jw8hakcg16qhwypvq")))))))
- (define-public python-packaging
- (package/inherit python-packaging-bootstrap
- (name "python-packaging")
- (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~%")))))))
- (native-inputs
- `(("python-pretend" ,python-pretend)
- ("python-pytest" ,python-pytest)))
- (propagated-inputs
- `(("python-pyparsing" ,python-pyparsing)
- ("python-six" ,python-six)))
- (home-page "https://github.com/pypa/packaging")
- (synopsis "Core utilities for Python packages")
- (description "Packaging is a Python module for dealing with Python packages.
- It offers an interface for working with package versions, names, and dependency
- information.")
- ;; From 'LICENSE': This software is made available under the terms of
- ;; *either* of the licenses found in LICENSE.APACHE or LICENSE.BSD.
- ;; Contributions to this software is made under the terms of *both* these
- ;; licenses.
- (license (list license:asl2.0 license:bsd-2))))
- (define-public python2-packaging
- (package-with-python2 python-packaging))
- ;; TODO(staging): merge with python-packaging-bootstrap.
- (define-public python-packaging-next
- (package
- (inherit python-packaging)
- (version "21.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "packaging" version))
- (sha256
- (base32
- "1sygirdrqgv4f1ckh9nhpcw1yfidrh3qjl86wq8vk6nq4wlw8iyx"))))))
- (define-public python-relatorio
- (package
- (name "python-relatorio")
- (version "0.10.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "relatorio" version))
- (sha256
- (base32
- "09nhrz80dfm60nssbvjgz4czzy4yzfa8gxczcdlzbgcnnvm914vb"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-lxml python-genshi))
- (native-inputs
- (list python-magic))
- (home-page "https://relatorio.tryton.org/")
- (synopsis "Templating library able to output ODT and PDF files")
- (description "Relatorio is a templating library which provides a way to
- easily output ODT, ODS, PNG, SVG and several other kinds of files. Support
- for more filetypes can be easily added by creating plugins for them.")
- (license license:gpl3+)))
- (define-public python-radon
- (package
- (name "python-radon")
- (version "4.1.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "radon" version))
- (sha256
- (base32
- "0vfxxzbnz5lxfvp0yxp35g6c8qqnnbhi4dm7shkm1d3d4192q22n"))))
- (build-system python-build-system)
- (arguments
- `(#:phases (modify-phases %standard-phases
- (add-after 'unpack 'relax-requirements
- (lambda _
- (substitute* "setup.py"
- ((".*'future'.*")
- "")
- (("colorama==0.4.1")
- "colorama>=0.4.1"))))
- (replace 'check
- (lambda _
- (invoke "python" "radon/tests/run.py"))))))
- (propagated-inputs
- (list python-colorama python-flake8-polyfill python-mando))
- (native-inputs
- (list python-pytest python-pytest-mock))
- (home-page "https://radon.readthedocs.org/")
- (synopsis "Code Metrics in Python")
- (description "Radon is a Python tool which computes various code metrics.
- Supported metrics are:
- @itemize @bullet
- @item raw metrics: SLOC, comment lines, blank lines, &c.
- @item Cyclomatic Complexity (i.e. McCabe’s Complexity)
- @item Halstead metrics (all of them)
- @item the Maintainability Index (a Visual Studio metric)
- @end itemize")
- (properties `((python2-variant . ,(delay python2-radon))))
- (license license:expat)))
- (define-public python2-radon
- (let ((base (package-with-python2 (strip-python2-variant python-radon))))
- (package/inherit base
- (propagated-inputs
- `(("python-configparser" ,python2-configparser)
- ("python-future" ,python2-future)
- ,@(package-propagated-inputs base))))))
- (define-public python-sure
- (package
- (name "python-sure")
- (version "1.4.11")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "sure" version))
- (sha256
- (base32
- "1and0drq8w9iplsic22n2h7hkpyq03a1mbqk4sgcdqhqzdqm539w"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-mock python-six))
- (native-inputs
- (list python-nose))
- (home-page "https://github.com/gabrielfalcao/sure")
- (synopsis "Automated testing library in python for python")
- (description
- "Sure is a python library that leverages a DSL for writing assertions.
- Sure is heavily inspired by @code{RSpec Expectations} and @code{should.js}.")
- (license license:gpl3+)))
- (define-public python2-sure
- (package-with-python2 python-sure))
- (define-public python2-couleur
- ;; This package does not seem to support python3 at all, hence,
- ;; only the python2 variant definition is provided.
- (package
- (name "python2-couleur")
- (version "0.6.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "couleur" version))
- (sha256
- (base32
- "1qqaxyqz74wvid0cr119dhcwz0h0if5b5by44zl49pd5z65v58k1"))))
- (build-system python-build-system)
- (arguments
- `(#:python ,python-2))
- (home-page "https://github.com/gabrielfalcao/couleur")
- (synopsis
- "ANSI terminal tool for python, colored shell and other handy fancy features")
- (description
- "@code{Couleur} provides python programs a way to use the ANSI features in a unix
- terminal such as coloured output in the shell, overwriting output, indentation, etc.")
- ;; README.md says ASL2.0, but all source code headers are LGPL3+.
- ;; https://github.com/gabrielfalcao/couleur/issues/11
- (license license:lgpl3+)))
- (define-public python-misaka
- (package
- (name "python-misaka")
- (version "2.1.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "misaka" version))
- (sha256
- (base32
- "1mzc29wwyhyardclj1vg2xsfdibg2lzb7f1azjcxi580ama55wv2"))))
- (build-system python-build-system)
- (arguments
- `(;; Line 37 of setup.py calls self.run_command('develop')
- ;; in the 'check' phase. This command seems to be trying
- ;; to write to
- ;; /gnu/store/...-python-<version>/lib/python<version>/site-packages/
- ;; for which it does not have the permission to write.
- #:tests? #f))
- (propagated-inputs
- (list python-cffi))
- (home-page "https://github.com/FSX/misaka")
- (synopsis "Python binding for Hoedown")
- (description
- "@code{Misaka} is a CFFI-based binding for @code{Hoedown}, a fast markdown processing
- library written in C. It features a fast HTML renderer and functionality to make custom
- renderers (e.g. man pages or LaTeX).")
- (license license:expat)))
- (define-public python2-misaka
- (package-with-python2 python-misaka))
- (define-public python2-steadymark
- ;; This is forced into being a python2 only variant
- ;; due to its dependence on couleur that has no support
- ;; for python3
- (package
- (name "python2-steadymark")
- (version "0.7.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "steadymark" version))
- (sha256
- (base32
- "1640i9g8dycql3cc8j0bky0jkzj0q39blfbp4lsgpkprkfgcdk8v"))))
- (build-system python-build-system)
- (native-inputs
- (list python2-couleur python2-sure python2-misaka))
- (arguments
- `(#:python ,python-2
- #:phases
- (modify-phases %standard-phases
- (add-before 'build 'patch-setup-py
- (lambda _
- ;; Update requirements from dependency==version
- ;; to dependency>=version
- (substitute* "setup.py"
- (("==") ">="))
- #t)))))
- (home-page "https://github.com/gabrielfalcao/steadymark")
- (synopsis "Markdown-based test runner for python")
- (description
- "@code{Steadymark} allows documentation to be written in github-flavoured
- markdown. The documentation may contain snippets of code surrounded by python
- code blocks and @code{Steadymark} will find these snippets and run them, making
- sure that there are no old malfunctional examples in the documentation examples.")
- (license license:expat)))
- (define-public python-jsonpointer
- (package
- (name "python-jsonpointer")
- (version "1.10")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "jsonpointer" version))
- (sha256
- (base32
- "1cg0gvgqjysydv6p45v4jywg1jb3v48c7m3cbpi57zgf6nndr9cz"))))
- (build-system python-build-system)
- (home-page "https://github.com/stefankoegl/python-json-pointer")
- (synopsis "Identify specific nodes in a JSON document")
- (description "@code{jsonpointer} allows you to access specific nodes
- by path in a JSON document (see RFC 6901).")
- (license license:bsd-3)))
- (define-public python2-jsonpointer
- (package-with-python2 python-jsonpointer))
- (define-public python-jsonpatch
- (package
- (name "python-jsonpatch")
- (version "1.16")
- (source
- (origin
- (method git-fetch)
- ;; pypi version lacks tests.js
- (uri (git-reference
- (url "https://github.com/stefankoegl/python-json-patch")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0k9pff06lxama3nhsc7cdxbp83422bdy8ifs52i6xkas8hpyzfzr"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-jsonpointer))
- (home-page "https://github.com/stefankoegl/python-json-patch")
- (synopsis "Applying JSON Patches in Python 2.6+ and 3.x")
- (description "@code{jsonpatch} is a library and program that allows
- applying JSON Patches according to RFC 6902.")
- (license license:bsd-3)))
- (define-public python2-jsonpatch
- (package-with-python2 python-jsonpatch))
- (define-public python-jsonpatch-0.4
- (package (inherit python-jsonpatch)
- (name "python-jsonpatch")
- (version "0.4")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/stefankoegl/python-json-patch")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "1fq02y57kinyknxjcav0slcb0k9mwdffqw2hnlhdkpj7palh2mwk"))))))
- (define-public python2-jsonpatch-0.4
- (package-with-python2 python-jsonpatch-0.4))
- (define-public python-rfc3986
- (package
- (name "python-rfc3986")
- (version "1.4.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "rfc3986" version))
- (sha256
- (base32
- "17dvx15m3r49bmif5zlli8kzjd6bys6psixzbp14sd5367d9h8qi"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "pytest" "-v"))))))
- (native-inputs
- (list python-pytest))
- (home-page "https://rfc3986.readthedocs.io/")
- (synopsis "Parse and validate URI references")
- (description
- "@code{rfc3986} is a Python implementation of RFC@tie{}3986 including
- validation and authority parsing. This module also supports RFC@tie{}6874
- which adds support for zone identifiers to IPv6 addresses.")
- (license license:asl2.0)))
- (define-public python2-rfc3986
- (package-with-python2 python-rfc3986))
- (define-public python-rfc3987
- (package
- (name "python-rfc3987")
- (version "1.3.7")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "rfc3987" version))
- (sha256
- (base32
- "192pclzs2y0yaywqkrlvd0x73740q310kvqvm6jldhi619mq59wi"))))
- (build-system python-build-system)
- (home-page "https://pypi.org/project/rfc3987/")
- (synopsis "Parsing and validation of URIs (RFC 3986) and IRIs (RFC 3987)")
- (description "@code{rfc3987} provides routines for parsing and
- validation of URIs (see RFC 3986) and IRIs (see RFC 3987).")
- (license license:gpl3+)))
- (define-public python2-rfc3987
- (package-with-python2 python-rfc3987))
- ;; The latest commit contains fixes for building with both python3 and python2.
- (define-public python-rfc6555
- (let ((commit "1a181b432312731f6742a5eb558dae4761d32361")
- (revision "1"))
- (package
- (name "python-rfc6555")
- (version (git-version "0.0.0" revision commit))
- (source (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/sethmlarson/rfc6555")
- (commit commit)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "1bxl17j9vs69cshcqnlwamr03hnykxqnwz3mdgi6x3s2k4q18npp"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (if tests?
- ;; Other tests require network access.
- (invoke "pytest" "tests/test_ipv6.py")
- #t))))))
- (native-inputs
- (list python-pytest))
- (home-page "https://pypi.org/project/rfc6555/")
- (synopsis "Python implementation of RFC 6555")
- (description
- "Python implementation of the Happy Eyeballs Algorithm described in RFC
- 6555. Provided with a single file and dead-simple API to allow easy vendoring
- and integration into other projects.")
- (license license:asl2.0))))
- (define-public python-bagit
- (package
- (name "python-bagit")
- (version "1.7.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "bagit" version))
- (sha256
- (base32
- "1m6y04qmig0b5hzb35lnaw3d2yfydb7alyr1579yblvgs3da6j7j"))))
- (build-system python-build-system)
- (native-inputs
- (list python-setuptools-scm python-coverage python-mock))
- (home-page "https://libraryofcongress.github.io/bagit-python/")
- (synopsis "Create and validate BagIt packages")
- (description "Bagit is a Python library and command line utility for working
- with BagIt style packages. BagIt is a minimalist packaging format for digital
- preservation.")
- (license license:cc0)))
- (define-public python-prov
- (package
- (name "python-prov")
- (version "2.0.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "prov" version))
- (sha256
- (base32
- "1vi2fj31vygfcqrkimdmk52q2ldw08g9fn4v4zlgdfgcjlhqyhxn"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-dateutil python-lxml python-networkx python-rdflib-5))
- (native-inputs
- (list graphviz python-pydot))
- (home-page "https://github.com/trungdong/prov")
- (synopsis
- "W3C Provenance Data Model supporting PROV-JSON, PROV-XML and PROV-O (RDF)")
- (description
- "This package provides a library for W3C Provenance Data Model supporting
- PROV-O (RDF), PROV-XML, PROV-JSON import/export.")
- (license license:expat)))
- (define-public python-arcp
- (package
- (name "python-arcp")
- (version "0.2.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "arcp" version))
- (sha256
- (base32
- "1p8mfyjssa6pbn5dp6pyzv9yy6kwm2rz5jn2kjbq5vy9f9wsq5sw"))))
- (build-system python-build-system)
- (native-inputs
- (list python-pytest))
- (home-page "http://arcp.readthedocs.io/")
- (synopsis
- "Archive and Package URI parser and generator")
- (description
- "@acronym{arcp, Archive and Package} provides functions for creating
- @code{arcp_} URIs, which can be used for identifying or parsing hypermedia files
- packaged in an archive or package, like a ZIP file. arcp URIs can be used to
- consume or reference hypermedia resources bundled inside a file archive or an
- application package, as well as to resolve URIs for archive resources within a
- programmatic framework. This URI scheme provides mechanisms to generate a
- unique base URI to represent the root of the archive, so that relative URI
- references in a bundled resource can be resolved within the archive without
- having to extract the archive content on the local file system. An arcp URI can
- be used for purposes of isolation (e.g. when consuming multiple archives),
- security constraints (avoiding \"climb out\" from the archive), or for
- externally identiyfing sub-resources referenced by hypermedia formats.")
- (license license:asl2.0)))
- (define-public python-shellescape
- (package
- (name "python-shellescape")
- (version "3.8.1")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/chrissimpkins/shellescape")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0wzccxk139qx1lb2g70f5b2yh9zq15nr2mgvqdbfabg5zm0vf1qw"))))
- (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" "tests/test_shellescape.py"))
- #t)))))
- (native-inputs
- (list python-pytest))
- (home-page "https://github.com/chrissimpkins/shellescape")
- (synopsis
- "Shell escape a string to safely use it as a token in a shell command")
- (description
- "The shellescape Python module defines the @code{shellescape.quote()}
- function that returns a shell-escaped version of a Python string. This is a
- backport of the @code{shlex.quote()} function from Python 3.8 that makes it
- accessible to users of Python 3 versions < 3.3 and all Python 2.x versions.")
- (license license:expat)))
- (define-public python-validators
- (package
- (name "python-validators")
- (version "0.18.2")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "validators" version))
- (sha256
- (base32
- "19lypf7hm7p203ay3v8zmckc5rv6889zkfdm16nki1972f99mk9p"))))
- (build-system python-build-system)
- (arguments
- '(#:phases (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "pytest" "-vv"))))))
- (propagated-inputs
- (list python-decorator python-six))
- (native-inputs
- (list python-flake8 python-isort python-pytest))
- (home-page "https://github.com/kvesteri/validators")
- (synopsis "Data validation library")
- (description
- "This package contains validators for different things such as email
- addresses, IP addresses, URLs, hashes and more. It has been designed to
- be easy to use and not require defining a schema or form just to validate
- some input.")
- (license license:expat)))
- (define-public python-validate-email
- (package
- (name "python-validate-email")
- (version "1.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "validate_email" version))
- (sha256
- (base32
- "1bxffaf5yz2cph8ki55vdvdypbwkvn2xr1firlcy62vqbzf1jivq"))))
- (build-system python-build-system)
- (home-page "https://github.com/syrusakbary/validate_email")
- (synopsis "Verifies if an email address is valid and really exists")
- (description "@code{validate_email} can be used to verify if an email
- address is valid and really exists.")
- (license license:lgpl3+)))
- (define-public python2-validate-email
- (package-with-python2 python-validate-email))
- (define-public python-flex
- (package
- (name "python-flex")
- (version "6.10.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "flex" version))
- (sha256
- (base32
- "00pamnwla3khk8nyla7y28dq9jnh69swd7f4jfsl7sn1izs8n8zk"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-click
- python-iso8601
- python-jsonpointer
- python-pyyaml
- python-requests
- python-rfc3987
- python-six
- python-validate-email))
- (home-page "https://github.com/pipermerriam/flex")
- (synopsis "Validates Swagger schemata")
- (description "@code{flex} can be used to validate Swagger schemata.")
- (license license:bsd-3)))
- (define-public python2-flex
- (package-with-python2 python-flex))
- (define-public python-marshmallow
- (package
- (name "python-marshmallow")
- (version "3.9.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "marshmallow" version))
- (sha256
- (base32
- "0kizhh3mnhpa08wfnsv1gagy22bpxzxszgbiylkhpz1d8qvwrykk"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-dateutil python-simplejson))
- (native-inputs
- (list python-pytest python-pytz))
- (home-page "https://github.com/marshmallow-code/marshmallow")
- (synopsis "Convert complex datatypes to and from native
- Python datatypes")
- (description "@code{marshmallow} provides a library for converting
- complex datatypes to and from native Python datatypes.")
- (license license:expat)))
- (define-public python-marshmallow-jsonapi
- (package
- (name "python-marshmallow-jsonapi")
- (version "0.24.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "marshmallow-jsonapi" version))
- (sha256
- (base32 "1d9pxcgmln4gls99vwj1h24qv0lz7fb2jqmqrsiv1pid1snc125x"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-marshmallow))
- (native-inputs
- (list python-faker
- python-flake8
- python-flake8-bugbear
- python-flask
- python-mock
- python-pre-commit
- python-pytest
- python-tox))
- (home-page "https://github.com/marshmallow-code/marshmallow-jsonapi")
- (synopsis "JSON:API 1.0 formatting with Marshmallow")
- (description
- "The marshmallow-jsonapi package provides a simple way to produce
- @uref{https://jsonapi.org, JSON:API}-compliant data in any Python Web framework.
- It includes optional utilities to integrate with Flask.")
- (license license:expat)))
- (define-public python-apispec
- (package
- (name "python-apispec")
- (version "4.0.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "apispec" version))
- (sha256
- (base32
- "12n4w5zkn4drcn8izq68vmixmqvz6abviqkdn4ip0kaax3jjh3in"))))
- (build-system python-build-system)
- (arguments
- '(#:phases (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "pytest" "-vv"
- ;; Disable validation tests since they require
- ;; the optional 'prance' library which is not
- ;; yet in Guix.
- "-k" "not openapi_tools_validate"))))))
- (propagated-inputs
- (list python-pyyaml))
- (native-inputs
- (list python-pytest python-marshmallow))
- (home-page "https://github.com/marshmallow-code/apispec")
- (synopsis "Swagger/OpenAPI specification generator")
- (description "@code{python-apispec} is a pluggable API specification
- generator. It currently supports the OpenAPI specification, formerly known
- as Swagger.")
- (license license:expat)))
- (define-public python-flasgger
- (package
- (name "python-flasgger")
- (version "0.6.3")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/rochacbruno/flasgger")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32 "0yydxsyjnc0clbrjqb1n7587l6cdqvwdagwxk5hkx01qwdfbkvpn"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (substitute* "Makefile"
- (("flake8 flasgger --ignore=F403")
- "flake8 flasgger --ignore=E731,F403"))
- (invoke "py.test"))))))
- (propagated-inputs
- (list python-flask python-pyyaml python-jsonschema python-mistune
- python-six))
- (native-inputs
- (list python-decorator
- python-flake8
- python-flask-restful
- python-flex
- python-pytest
- python-pytest-cov
- python-marshmallow
- python-apispec))
- (home-page "https://github.com/rochacbruno/flasgger/")
- (synopsis "Extract Swagger specs from your Flask project")
- (description "@code{python-flasgger} allows extracting Swagger specs
- from your Flask project. It is a fork of Flask-Swagger.")
- (license license:expat)))
- (define-public python-swagger-spec-validator
- (package
- (name "python-swagger-spec-validator")
- (version "2.4.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "swagger-spec-validator" version))
- (sha256
- (base32
- "11g627icrsqwazsncwi0sdvprcj6hwaayw5xk3xsj8d97bmrzqjp"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-jsonschema python-pyyaml python-six))
- (home-page
- "https://github.com/Yelp/swagger_spec_validator")
- (synopsis "Validation of Swagger specifications")
- (description "@code{swagger_spec_validator} provides a library for
- validating Swagger API specifications.")
- (license license:asl2.0)))
- (define-public python-apache-libcloud
- (package
- (name "python-apache-libcloud")
- (version "3.1.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "apache-libcloud" version))
- (sha256
- (base32
- "1b28j265kvibgxrgxx0gwfm6cmv252c8ph1j2vb0cpms8ph5if5v"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'patch-ssh
- (lambda* (#:key inputs #:allow-other-keys)
- (substitute* "libcloud/compute/ssh.py"
- (("'ssh'")
- (string-append "'" (search-input-file inputs "/bin/ssh")
- "'")))))
- (add-after 'unpack 'patch-tests
- (lambda _
- (substitute* "libcloud/test/compute/test_ssh_client.py"
- (("^class ShellOutSSHClientTests")
- "@unittest.skip(\"Guix container doesn't have ssh service\")
- class ShellOutSSHClientTests"))))
- (add-before 'check 'copy-secret
- (lambda _
- (copy-file "libcloud/test/secrets.py-dist"
- "libcloud/test/secrets.py"))))))
- (inputs
- (list openssh))
- (propagated-inputs
- (list python-paramiko python-requests))
- (native-inputs
- (list python-lockfile python-mock python-pytest python-pytest-runner
- python-requests-mock))
- (home-page "https://libcloud.apache.org/")
- (synopsis "Unified Cloud API")
- (description "@code{libcloud} is a Python library for interacting with
- many of the popular cloud service providers using a unified API.")
- (license license:asl2.0)))
- (define-public python-smmap
- (package
- (name "python-smmap")
- (version "3.0.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "smmap" version))
- (sha256
- (base32 "0ijlnv60y8f41py1wnn5n1a1i81cxd9dfpdhr0k3cgkrcbz8850p"))))
- (build-system python-build-system)
- (native-inputs
- (list python-nosexcover))
- (home-page "https://github.com/Byron/smmap")
- (synopsis "Python sliding window memory map manager")
- (description "@code{smmap} is a pure Python implementation of a sliding
- window memory map manager.")
- (license license:bsd-3)))
- (define-public python2-smmap
- (package-with-python2 python-smmap))
- (define-public python-regex
- (package
- (name "python-regex")
- (version "2022.1.18")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "regex" version))
- (sha256
- (base32
- "05ir92d0cmv8wkafn3r05j5q47l6shg7cpdblp2a8m407b02vwwp"))))
- (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" "-c"
- "from regex.test_regex import test_main ; test_main()"))))))
- (home-page "https://bitbucket.org/mrabarnett/mrab-regex")
- (synopsis "Alternative regular expression module")
- (description "This regular expression implementation is backwards-
- compatible with the standard @code{re} module, but offers additional
- functionality like full case-folding for case-insensitive matches in Unicode.")
- (license license:psfl)))
- (define-public python2-regex
- (package-with-python2 python-regex))
- (define-public python-pyopengl
- (package
- (name "python-pyopengl")
- (version "3.1.5")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "PyOpenGL" version))
- (sha256
- (base32
- "091lp9bpqi8yf1nmyg19xmvw611lrzq2q94cl1k5gnlh0c6vl1s1"))))
- (build-system python-build-system)
- (inputs
- (list mesa freeglut glu))
- (arguments
- `(#:tests? #f ; Tests fail: AttributeError: 'GLXPlatform' object has no
- ;attribute 'OSMesa'
- #:phases
- (modify-phases %standard-phases
- (add-before 'build 'fix-paths
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (substitute* '("OpenGL/platform/ctypesloader.py")
- (("filenames_to_try = \\[\\]") "filenames_to_try = [name]"))
- (substitute* '("OpenGL/platform/glx.py" "tests/check_glut_load.py")
- (("'GL'")
- (string-append "'" (assoc-ref inputs "mesa") "/lib/libGL.so'"))
- (("'GLU'")
- (string-append "'" (assoc-ref inputs "glu") "/lib/libGLU.so'"))
- (("'glut',")
- (string-append "'" (assoc-ref inputs "freeglut") "/lib/libglut.so',"))
- (("'GLESv1_CM'")
- (string-append "'" (assoc-ref inputs "mesa") "/lib/libGLESv1_CM.so'"))
- (("'GLESv2'")
- (string-append "'" (assoc-ref inputs "mesa") "/lib/libGLESv2.so'")))
- ;; Not providing libgle. It seems to be very old.
- #t)))))
- (home-page "http://pyopengl.sourceforge.net")
- (synopsis "Standard OpenGL bindings for Python")
- (description
- "PyOpenGL is the most common cross platform Python binding to OpenGL and
- related APIs. The binding is created using the standard @code{ctypes}
- library.")
- (license license:bsd-3)))
- (define-public python-pyopengl-accelerate
- (package
- (inherit python-pyopengl)
- (name "python-pyopengl-accelerate")
- (version "3.1.5")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "PyOpenGL-accelerate" version))
- (sha256
- (base32
- "01iggy5jwxv7lxnj51zbmlbhag9wcb7dvrbwgi97i90n0a5m3r8j"))))
- (inputs
- (list mesa python-numpy)) ; for cython module
- ; numpy_formathandler, thus not propagated
- (arguments
- `(#:tests? #f
- #:phases
- (modify-phases %standard-phases
- (delete 'fix-paths))))
- (synopsis "Acceleration code for PyOpenGL")
- (description
- "This is the Cython-coded accelerator module for PyOpenGL.")))
- (define-public python-rencode
- (package
- (name "python-rencode")
- (version "1.0.5")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "rencode" version))
- (sha256
- (base32
- "0mzwdq1is7kyyr32i5k4iz6g5xxdvmiyc132jnc60p9m6lnwjrpv"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-before 'check 'delete-bogus-test
- ;; This test requires /home/aresch/Downloads, which is not provided by
- ;; the build environment.
- (lambda _
- (delete-file "rencode/t.py")
- #t)))))
- (native-inputs (list pkg-config python-cython))
- (home-page "https://github.com/aresch/rencode")
- (synopsis "Serialization of heterogeneous data structures")
- (description
- "The @code{rencode} module is a data structure serialization library,
- similar to @code{bencode} from the BitTorrent project. For complex,
- heterogeneous data structures with many small elements, r-encoding stake up
- significantly less space than b-encodings. This version of rencode is a
- complete rewrite in Cython to attempt to increase the performance over the
- pure Python module.")
- (license license:bsd-3)))
- (define-public python2-rencode
- (package-with-python2 python-rencode))
- (define-public python-xenon
- (package
- (name "python-xenon")
- (version "0.7.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "xenon" version))
- (sha256
- (base32
- "0nv207ql2wmh9q62503np056c4vf1c1hlsi5cvv5p5kx574k6r2y"))))
- (build-system python-build-system)
- (native-inputs
- (list python-pyyaml python-radon python-requests python-flake8
- python-tox))
- (arguments
- `(#:tests? #f ;test suite not shipped with the PyPI archive
- #:phases
- (modify-phases %standard-phases
- (add-before 'build 'patch-test-requirements
- (lambda _
- ;; Remove httpretty dependency for tests.
- (substitute* "setup.py"
- (("httpretty") ""))
- #t)))))
- (home-page "https://xenon.readthedocs.org/")
- (synopsis "Monitor code metrics for Python on your CI server")
- (description
- "Xenon is a monitoring tool based on Radon. It monitors code complexity.
- Ideally, @code{xenon} is run every time code is committed. Through command
- line options, various thresholds can be set for the complexity of code. It
- will fail (i.e. it will exit with a non-zero exit code) when any of these
- requirements is not met.")
- (license license:expat)))
- (define-public python-pysocks
- (package
- (name "python-pysocks")
- (version "1.7.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "PySocks" version))
- (sha256
- (base32
- "184sg65mbmih6ljblfsxcmq5js5l7dj3gpn618w9q5dy3rbh921z"))))
- (build-system python-build-system)
- (arguments `(#:tests? #f))
- (home-page "https://github.com/Anorov/PySocks")
- (synopsis "SOCKS client module")
- (description "@code{pysocks} is an updated and semi-actively maintained
- version of @code{SocksiPy} with bug fixes and extra features.")
- (license license:bsd-3)))
- (define-public python2-pysocks
- (package-with-python2 python-pysocks))
- (define-public python-pydiff
- (package
- (name "python-pydiff")
- (version "0.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pydiff" version))
- (sha256
- (base32
- "1als83h9w0gab24ipyna6khm390qmpnpkc5jksmdbs2xc8hp2z44"))))
- (build-system python-build-system)
- (home-page "https://github.com/myint/pydiff")
- (synopsis "Library to diff two Python files at the bytecode level")
- (description
- "@code{pydiff} makes it easy to look for actual code changes while
- ignoring formatting changes.")
- (license license:expat)))
- (define-public python2-pydiff
- (package-with-python2 python-pydiff))
- (define-public python-pydub
- (package
- (name "python-pydub")
- (version "0.25.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pydub" version))
- (sha256
- (base32
- "03ykn2kp6qglsrzqi5h79z5cp3kl9mknasv0d6jv5jj9k77362lq"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'fix-ffmpeg-path
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((ffmpeg (assoc-ref inputs "ffmpeg")))
- (substitute* '("pydub/utils.py")
- (("return \"ffmpeg\"")
- (string-append "return \"" ffmpeg "/bin/ffmpeg\""))
- (("return \"ffplay\"")
- (string-append "return \"" ffmpeg "/bin/ffplay\""))
- (("return \"ffprobe\"")
- (string-append "return \"" ffmpeg "/bin/ffprobe\""))
- (("warn\\(\"Couldn't find ff") "# warn\\(\"Couldn't find ff"))
- #t))))))
- (home-page "https://pydub.com")
- (inputs
- (list ffmpeg))
- (propagated-inputs
- (list python-scipy))
- (synopsis "Manipulate audio with a high level interface in Python")
- (description
- "@code{pydub} makes it easy to manipulate audio in Python. It relies on
- @code{ffmpeg} to open various audio formats.")
- (license license:expat))) ; MIT license
- (define-public python-tqdm
- (package
- (name "python-tqdm")
- (version "4.62.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "tqdm" version))
- (sha256
- (base32
- "03cjj8jl8iybvfjbpvdql5qfslzfv043g7w6nx8rhv2h2xrdwnfk"))))
- (build-system python-build-system)
- (arguments
- '(#:phases (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "pytest" "-vv"
- "-o" "asyncio_mode=auto"
- "-k" "not perf"))))))
- (native-inputs
- (list python-pytest python-pytest-asyncio python-pytest-timeout
- python-setuptools-scm python-toml))
- (home-page "https://github.com/tqdm/tqdm")
- (synopsis "Fast, extensible progress meter")
- (description
- "Make loops show a progress bar on the console by just wrapping any
- iterable with @code{|tqdm(iterable)|}. Offers many options to define
- design and layout.")
- (license (list license:mpl2.0 license:expat))))
- (define-public python-pkginfo
- (package
- (name "python-pkginfo")
- (version "1.8.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pkginfo" version))
- (sha256
- (base32 "1zrbn2gblb1q1rx0jlbd0vc9h1dm1bj0760p40ff5qjhcw5hsbjl"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-before 'check 'patch-tests
- (lambda _
- (substitute* "pkginfo/tests/test_installed.py"
- (("test_ctor_w_package_no_PKG_INFO")
- "_test_ctor_w_package_no_PKG_INFO")))))))
- (native-inputs
- (list python-wheel))
- (home-page "https://code.launchpad.net/~tseaver/pkginfo/trunk")
- (synopsis "Query metadatdata from sdists, bdists, and installed packages")
- (description
- "API to query the distutils metadata written in @file{PKG-INFO} inside a
- source distriubtion (an sdist) or a binary distribution (e.g., created by
- running bdist_egg). It can also query the EGG-INFO directory of an installed
- distribution, and the *.egg-info stored in a \"development checkout\" (e.g,
- created by running @code{python setup.py develop}).")
- (license license:expat)))
- (define-public python2-pkginfo
- (package-with-python2 python-pkginfo))
- (define-public python-twine
- (package
- (name "python-twine")
- (version "1.15.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "twine" version))
- (sha256
- (base32 "11rpd653zcgzkq3sgwkzs3mpxl3r5rij59745ni84ikv8smjmlm3"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-tqdm
- python-packaging
- python-pkginfo
- python-readme-renderer
- python-requests
- python-requests-toolbelt))
- (home-page "https://github.com/pypa/twine")
- (synopsis "Collection of utilities for interacting with PyPI")
- (description
- "@code{twine} currently supports registering projects and uploading
- distributions. It authenticates the user over HTTPS, allows them to pre-sign
- their files and supports any packaging format (including wheels).")
- (license license:asl2.0)))
- (define-public python-linecache2
- (package
- (name "python-linecache2")
- (version "1.0.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "linecache2" version))
- (sha256
- (base32
- "0z79g3ds5wk2lvnqw0y2jpakjf32h95bd9zmnvp7dnqhf57gy9jb"))))
- (build-system python-build-system)
- (arguments
- `(;; The tests depend on unittest2, and our version is a bit too old.
- #:tests? #f))
- (native-inputs
- `(("python-pbr" ,python-pbr-minimal)))
- (home-page
- "https://github.com/testing-cabal/linecache2")
- (synopsis "Backports of the linecache module")
- (description
- "The linecache module allows one to get any line from any file, while
- attempting to optimize internally, using a cache, the common case where many
- lines are read from a single file.")
- (license license:psfl)))
- (define-public python2-linecache2
- (package-with-python2 python-linecache2))
- (define-public python-traceback2
- (package
- (name "python-traceback2")
- (version "1.4.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "traceback2" version))
- (sha256
- (base32
- "0c1h3jas1jp1fdbn9z2mrgn3jj0hw1x3yhnkxp7jw34q15xcdb05"))))
- (build-system python-build-system)
- (arguments
- `(;; python-traceback2 and python-unittest2 depend on one another.
- #:tests? #f))
- (native-inputs
- `(("python-pbr" ,python-pbr-minimal)))
- (propagated-inputs
- (list python-linecache2 python-six))
- (home-page
- "https://github.com/testing-cabal/traceback2")
- (synopsis "Backports of the traceback module")
- (description
- "This module provides a standard interface to extract, format and print
- stack traces of Python programs. It exactly mimics the behavior of the Python
- interpreter when it prints a stack trace.")
- (license license:psfl)))
- (define-public python2-traceback2
- (package-with-python2 python-traceback2))
- (define-public python-ratelimiter
- (package
- (name "python-ratelimiter")
- (version "1.2.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "ratelimiter" version))
- (sha256
- (base32
- "1dhz85mj5bqd2mij84ncs6pz32hgidr79hay4aqfmzaa4rbb497p"))))
- (build-system python-build-system)
- (arguments
- '(#:tests? #f)) ; There are no tests in the pypi archive.
- (home-page "https://github.com/RazerM/ratelimiter")
- (synopsis "Simple rate limiting object")
- (description
- "The @code{ratelimiter} module ensures that an operation will not be
- executed more than a given number of times during a given period.")
- (license license:asl2.0)))
- (define-public python2-ratelimiter
- (package-with-python2 python-ratelimiter))
- (define-public python-jsonrpclib-pelix
- (package
- (name "python-jsonrpclib-pelix")
- (version "0.3.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "jsonrpclib-pelix" version))
- (sha256
- (base32
- "0f83z5zi7w32vprhk1dyc94ir1bh4hdd57bjdbwkq9ykng8qilhl"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f)) ; no tests in PyPI tarball
- (home-page "https://github.com/tcalmant/jsonrpclib/")
- (synopsis "JSON-RPC 2.0 client library for Python")
- (description
- "This library implements the JSON-RPC v2.0
- specification (backwards-compatible) as a client library for Python. This
- version is a fork of jsonrpclib by Josh Marshall, usable with Pelix remote
- services.")
- (license license:asl2.0)))
- (define-public python2-jsonrpclib-pelix
- (package-with-python2 python-jsonrpclib-pelix))
- (define-public python-setuptools-scm-git-archive
- (package
- (name "python-setuptools-scm-git-archive")
- (version "1.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "setuptools_scm_git_archive" version))
- (sha256
- (base32
- "1nii1sz5jq75ilf18bjnr11l9rz1lvdmyk66bxl7q90qan85yhjj"))))
- (build-system python-build-system)
- (arguments
- '(#:phases (modify-phases %standard-phases
- (add-after 'unpack 'dont-install-defunct-egginfo
- (lambda _
- ;; When a ".git" directory is missing, the setup.py
- ;; script invokes setuptools.setup twice, once with
- ;; "0" as the version. Prevent that.
- (substitute* "setup.py"
- (("if not isdir\\('\\.git'\\):")
- "if False:")))))))
- (native-inputs
- (list python-pytest))
- (propagated-inputs
- (list python-setuptools-scm))
- (home-page "https://github.com/Changaco/setuptools_scm_git_archive/")
- (synopsis "Setuptools_scm plugin for git archives")
- (description
- "The setuptools_scm_git_archive package is a plugin to
- setuptools_scm, which supports obtaining versions from git archives that
- belong to tagged versions.")
- (license license:expat)))
- (define-public python2-setuptools-scm-git-archive
- (package-with-python2 python-setuptools-scm-git-archive))
- (define-public python-setuptools-git
- (package
- (name "python-setuptools-git")
- (version "1.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "setuptools-git" version))
- (sha256
- (base32
- "0i84qjwp5m0l9qagdjww2frdh63r37km1c48mrvbmaqsl1ni6r7z"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- ;; This is needed for tests.
- (add-after 'unpack 'configure-git
- (lambda _
- (setenv "HOME" "/tmp")
- (invoke "git" "config" "--global" "user.email" "guix")
- (invoke "git" "config" "--global" "user.name" "guix")
- #t)))))
- (native-inputs
- `(("git" ,git-minimal)))
- (home-page "https://github.com/msabramo/setuptools-git")
- (synopsis "Setuptools revision control system plugin for Git")
- (description
- "This package provides a plugin for Setuptools for revision control with
- Git.")
- (license license:bsd-3)))
- (define-public python-setuptools-rust
- (package
- (name "python-setuptools-rust")
- (version "1.1.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "setuptools-rust" version))
- (sha256
- (base32 "1lb57qx1azklgzmalflq960agvwci4bwddw0zvlc9zy00fsvkbd0"))))
- (build-system python-build-system)
- (arguments '(#:tests? #f)) ;no tests
- (native-inputs
- (list python-setuptools-scm))
- (propagated-inputs
- (list python-semantic-version python-typing-extensions))
- (home-page "https://github.com/PyO3/setuptools-rust")
- (synopsis "Setuptools plugin for Rust extensions")
- (description
- "@code{setuptools-rust} is a plugin for @code{setuptools} to build
- Rust Python extensions implemented with @code{PyO3} or @code{rust-cpython}.")
- (license license:expat)))
- (define-public python-pyclipper
- (package
- (name "python-pyclipper")
- (version "1.1.0.post3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pyclipper" version ".zip"))
- (sha256
- (base32 "164yksvqwqvwzh8f8lq92asg87hd8rvcy2xb5vm4y4ccvd5xgb7i"))
- (modules '((guix build utils)))
- (snippet
- '(begin
- ;; This file is generated by Cython.
- (delete-file "pyclipper/pyclipper.cpp") #t))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-before 'build 'cythonize-sources
- (lambda _
- (with-directory-excursion "pyclipper"
- (invoke "cython" "--cplus" "pyclipper.pyx")))))))
- (propagated-inputs
- (list python-setuptools-scm-git-archive))
- (native-inputs
- (list python-cython python-pytest python-pytest-runner
- python-unittest2 unzip))
- (home-page "https://github.com/greginvm/pyclipper")
- (synopsis "Wrapper for Angus Johnson's Clipper library")
- (description
- "Pyclipper is a Cython wrapper for the C++ translation of the
- Angus Johnson's polygon clipping Clipper library (ver. 6.4.2).")
- (license license:expat)))
- (define-public python2-pyclipper
- (package-with-python2 python-pyclipper))
- (define-public python2-booleanoperations
- (package
- (name "python2-booleanoperations")
- (version "0.7.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "booleanOperations" version ".zip"))
- (sha256
- (base32
- "1hw42fazdpvsn77glx96hwsj9l17mvx37sc5707s08y5w6fx16mn"))))
- (build-system python-build-system)
- (arguments
- `(#:python ,python-2))
- (native-inputs
- (list unzip python2-pytest python2-pytest-runner))
- (propagated-inputs
- (list python2-fonttools python2-pyclipper python2-ufolib))
- (home-page "https://github.com/typemytype/booleanOperations")
- (synopsis "Boolean operations on paths")
- (description
- "BooleanOperations provides a Python library that enables
- boolean operations on paths.")
- (license license:expat)))
- (define-public python-tempdir
- (package
- (name "python-tempdir")
- (version "0.7.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "tempdir" version))
- (sha256
- (base32
- "13msyyxqbicr111a294x7fsqbkl6a31fyrqflx3q7k547gnq15k8"))))
- (build-system python-build-system)
- (home-page "https://pypi.org/project/tempdir/")
- (arguments
- ;; the package has no tests
- '(#:tests? #f))
- (synopsis "Python library for managing temporary directories")
- (description
- "This library manages temporary directories that are automatically
- deleted with all their contents when they are no longer needed. It is
- particularly convenient for use in tests.")
- (license license:expat)))
- (define-public python2-tempdir
- (package-with-python2 python-tempdir))
- (define-public python-activepapers
- (package
- (name "python-activepapers")
- (version "0.2.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "ActivePapers.Py" version))
- (sha256
- (base32
- "12wkhjh90ffipjzv10swndp2xv9hd7xrxvg6v0n4n3i411pj4xb8"))))
- (build-system python-build-system)
- (arguments
- `(#:modules ((ice-9 ftw)
- (srfi srfi-1)
- (guix build utils)
- (guix build python-build-system))
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'delete-python2-code
- (lambda _
- (for-each delete-file
- '("lib/activepapers/builtins2.py"
- "lib/activepapers/standardlib2.py"
- "lib/activepapers/utility2.py"))))
- (replace 'check
- (lambda _
- ;; Deactivate the test cases that download files
- (setenv "NO_NETWORK_ACCESS" "1")
- ;; For some strange reason, some tests fail if nosetests runs all
- ;; test modules in a single execution. They pass if each test
- ;; module is run individually.
- (for-each (lambda (filename)
- (invoke "nosetests"
- (string-append "tests/" filename)))
- (scandir "tests"
- (lambda (filename)
- (string-suffix? ".py" filename)))))))))
- (native-inputs
- (list python-tempdir python-nose))
- (propagated-inputs
- (list python-h5py))
- (home-page "https://www.activepapers.org/")
- (synopsis "Executable papers for scientific computing")
- (description
- "ActivePapers is a tool for working with executable papers, which
- combine data, code, and documentation in single-file packages,
- suitable for publication as supplementary material or on repositories
- such as figshare or Zenodo.")
- (properties `((python2-variant . ,(delay python2-activepapers))))
- (license license:bsd-3)))
- (define-public python2-activepapers
- (let ((base (package-with-python2
- (strip-python2-variant python-activepapers))))
- (package/inherit base
- (arguments
- (substitute-keyword-arguments (package-arguments base)
- ((#:phases phases)
- `(modify-phases ,phases
- (delete 'delete-python2-code)
- (add-after 'unpack 'delete-python3-code
- (lambda _
- (for-each delete-file
- '("lib/activepapers/builtins3.py"
- "lib/activepapers/standardlib3.py"
- "lib/activepapers/utility3.py")))))))))))
- (define-public python-semver
- (package
- (name "python-semver")
- (version "2.9.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "semver" version))
- (sha256
- (base32
- "183kg1rhzz3hqizvphkd8hlbf1zxfx8737zhfkmqzxi71jmdw7pd"))))
- (build-system python-build-system)
- (arguments
- `(#:phases (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (delete-file "setup.cfg")
- (invoke "py.test"))))))
- (native-inputs
- (list python-pytest))
- (home-page "https://github.com/k-bx/python-semver")
- (synopsis "Python helper for Semantic Versioning")
- (description "This package provides a Python library for
- @url{Semantic Versioning, http://semver.org/}.")
- (license license:bsd-3)))
- (define-public python2-semver
- (package-with-python2 python-semver))
- (define-public python-pyro4
- (package
- (name "python-pyro4")
- (version "4.77")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "Pyro4" version))
- (sha256
- (base32 "0gsjg869y4gpy265s1gj1f2qy6jn5iz8r2bwwnq78r1r5yi15zib"))))
- (build-system python-build-system)
- (arguments
- '(#:tests? #f)) ;FIXME: Some tests require network access.
- (native-inputs
- (list python-cloudpickle python-dill python-msgpack))
- (propagated-inputs
- (list python-serpent))
- (home-page "https://pyro4.readthedocs.io")
- (synopsis "Distributed object middleware for Python")
- (description
- "Pyro enables you to build applications in which objects can talk to each
- other over the network. You can just use normal Python method calls to call
- objects on other machines, also known as remote procedure calls (RPC).")
- (license license:expat)))
- (define-public python2-pyro
- (package
- (name "python2-pyro")
- (version "3.16")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "Pyro" version))
- (file-name (string-append "Pyro-" version ".tar.gz"))
- (sha256
- (base32
- "0y75wzdqbjy565rpxaxscav4j8xg060sa90lnmb7aypgaf251v8v"))))
- (build-system python-build-system)
- (arguments
- ;; Pyro is not compatible with Python 3
- `(#:python ,python-2
- ;; Pyro has no test cases for automatic execution
- #:tests? #f))
- (home-page "https://pythonhosted.org/Pyro/")
- (synopsis "Distributed object manager for Python")
- (description "Pyro is a Distributed Object Technology system
- written in Python that is designed to be easy to use. It resembles
- Java's Remote Method Invocation (RMI). It has less similarity to CORBA,
- which is a system and language independent Distributed Object Technology
- and has much more to offer than Pyro or RMI. Pyro 3.x is no
- longer maintained. New projects should use Pyro4 instead, which
- is the new Pyro version that is actively developed.")
- (license license:expat)))
- (define-public python2-scientific
- (package
- (name "python2-scientific")
- (version "2.9.4")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/khinsen/ScientificPython")
- (commit (string-append "rel" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "16l48aj9fps9r7jyk8gpxppwrv0fqvlc13sayxskz28r5s6sjwbl"))))
- (build-system python-build-system)
- (inputs
- (list netcdf))
- (propagated-inputs
- (list python2-numpy-1.8 python2-pyro))
- (arguments
- ;; ScientificPython is not compatible with Python 3
- `(#:python ,python-2
- #:tests? #f ; No test suite
- #:phases
- (modify-phases %standard-phases
- (replace 'build
- (lambda* (#:key inputs #:allow-other-keys)
- (invoke "python" "setup.py" "build"
- (string-append "--netcdf_prefix="
- (assoc-ref inputs "netcdf"))))))))
- (home-page "http://dirac.cnrs-orleans.fr/ScientificPython")
- (synopsis "Python modules for scientific computing")
- (description "ScientificPython is a collection of Python modules that are
- useful for scientific computing. Most modules are rather general (Geometry,
- physical units, automatic derivatives, ...) whereas others are more
- domain-specific (e.g. netCDF and PDB support). The library is currently
- not actively maintained and works only with Python 2 and NumPy < 1.9.")
- (license license:cecill-c)))
- (define-public python2-mmtk
- (package
- (name "python2-mmtk")
- (version "2.7.12")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/khinsen/MMTK")
- (commit (string-append "rel" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "1fqwh3ba9jd42nigvn5shndgwb1zy7kh9520ncvqci7n8ffjr6p1"))))
- (build-system python-build-system)
- (native-inputs
- (list netcdf))
- (propagated-inputs
- `(("python-scientific" ,python2-scientific)
- ("python-tkinter" ,python-2 "tk")))
- (arguments
- `(#:python ,python-2
- #:tests? #f
- #:phases
- (modify-phases %standard-phases
- (add-before 'build 'includes-from-scientific
- (lambda* (#:key inputs #:allow-other-keys)
- (mkdir-p "Include/Scientific")
- (copy-recursively
- (string-append
- (assoc-ref inputs "python-scientific")
- "/include/python2.7/Scientific")
- "Include/Scientific"))))))
- (home-page "http://dirac.cnrs-orleans.fr/MMTK")
- (synopsis "Python library for molecular simulation")
- (description "MMTK is a library for molecular simulations with an emphasis
- on biomolecules. It provides widely used methods such as Molecular Dynamics
- and normal mode analysis, but also basic routines for implementing new methods
- for simulation and analysis. The library is currently not actively maintained
- and works only with Python 2 and NumPy < 1.9.")
- (license license:cecill-c)))
- (define-public python-phonenumbers
- (package
- (name "python-phonenumbers")
- (version "8.9.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "phonenumbers" version))
- (sha256
- (base32
- "03fmrgb4r8x3ykmddjs9i3zhs703in8smikj3a6447blqpimwyh1"))))
- (build-system python-build-system)
- (home-page
- "https://github.com/daviddrysdale/python-phonenumbers")
- (synopsis
- "Python library for dealing with international phone numbers")
- (description
- "This package provides a Python port of Google's libphonenumber library.")
- (license license:asl2.0)))
- (define-public python2-phonenumbers
- (package-with-python2 python-phonenumbers))
- (define-public python-heapdict
- (package
- (name "python-heapdict")
- (version "1.0.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "HeapDict" version))
- (sha256
- (base32
- "1dnd7v9adqd21bf4ih2wzn9a7b41m0nccb0vbxny9n037rxzb5c4"))))
- (build-system python-build-system)
- (home-page "http://stutzbachenterprises.com/")
- (synopsis "Heap with decrease-key and increase-key operations")
- (description
- "heapdict implements the MutableMapping ABC, meaning it works pretty much
- like a regular Python @code{dict}. It’s designed to be used as a priority
- queue.")
- (license license:bsd-3)))
- (define-public python-zict
- (package
- (name "python-zict")
- (version "2.0.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "zict" version))
- (sha256
- (base32
- "05pd1hyhqvpw87rnbvl3vdyf619snpyccbswaxisdj17frwnjacf"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-heapdict))
- (native-inputs
- (list python-pytest))
- (home-page "https://zict.readthedocs.io/en/latest/")
- (synopsis "Composable mutable mapping tools")
- (description "This package provides abstract @code{MutableMapping} classes
- that consume and build on other @code{MutableMappings}. Several of these can
- be composed with one another to form intuitive interfaces over complex storage
- systems policies.")
- (license license:bsd-3)))
- (define-public python-send2trash
- (package
- (name "python-send2trash")
- (version "1.5.0")
- (source
- (origin (method git-fetch)
- ;; Source tarball on PyPI doesn't include tests.
- (uri (git-reference
- (url "https://github.com/hsoft/send2trash")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "1c76zldhw2ay7q7r00nnzcampjz9lkqfcbzqpm0iqp5i6bmmv30v"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (add-before 'check 'pre-check
- (lambda _
- (mkdir-p "/tmp/foo")
- (setenv "HOME" "/tmp/foo")
- #t)))))
- (home-page "https://github.com/hsoft/send2trash")
- (synopsis "Send files to the user's @file{~/Trash} directory")
- (description "This package provides a Python library to send files to the
- user's @file{~/Trash} directory.")
- (properties `((python2-variant . ,(delay python2-send2trash))))
- (license license:bsd-3)))
- (define-public python2-send2trash
- (let ((base (package-with-python2
- (strip-python2-variant python-send2trash))))
- (package/inherit base
- (arguments
- (substitute-keyword-arguments (package-arguments python-send2trash)
- ((#:phases phases)
- `(modify-phases ,phases
- (add-before 'check 'setenv
- (lambda _
- (setenv "GUIX_PYTHONPATH"
- (string-append (getcwd) ":" (getenv "GUIX_PYTHONPATH"))))))))))))
- (define-public python-pyfavicon
- (package
- (name "python-pyfavicon")
- (version "0.1.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pyfavicon" version))
- (sha256
- (base32 "15wfpa99hvcfsv8j0m8iprmydi2p4qkhm86qfx485244y0ia5mgx"))))
- (build-system python-build-system)
- (arguments
- ;; There are no tests in the PyPI tarball and the tests from the
- ;; repository require online data.
- '(#:tests? #f))
- (propagated-inputs
- (list python-aiohttp python-beautifulsoup4 python-pillow))
- (home-page "https://github.com/bilelmoussaoui/pyfavicon")
- (synopsis "Async favicon fetcher")
- (description
- "@code{pyfavicon} is an async favicon fetcher.")
- (license license:expat)))
- (define-public python-yamllint
- (package
- (name "python-yamllint")
- (version "1.26.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "yamllint" version))
- (sha256
- (base32 "090krlxj7az0d9yl8i20vjrqi66dfxx7y5xakjhxzsfp7qmldnc7"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-pathspec python-pyyaml python-setuptools))
- (home-page "https://github.com/adrienverge/yamllint")
- (synopsis "Linter for YAML files")
- (description
- "Yamllint is a linter for YAML files. yamllint does not only check for
- syntax validity, but for weirdnesses like key repetition and cosmetic problems
- such as lines length, trailing spaces, indentation, etc.")
- (license license:gpl3+)))
- (define-public python-yapf
- (package
- (name "python-yapf")
- (version "0.29.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "yapf" version))
- (sha256
- (base32
- "1pj3xzblmbssshi889b6n9hwqbjpabw6j0fimlng2sshd3226bki"))))
- (build-system python-build-system)
- (home-page "https://github.com/google/yapf")
- (synopsis "Formatter for Python code")
- (description "YAPF is a formatter for Python code. It's based off of
- @dfn{clang-format}, developed by Daniel Jasper. In essence, the algorithm
- takes the code and reformats it to the best formatting that conforms to the
- style guide, even if the original code didn't violate the style guide.")
- (license license:asl2.0)))
- (define-public python2-yapf
- (package-with-python2 python-yapf))
- (define-public python-yq
- (package
- (name "python-yq")
- (version "2.11.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "yq" version))
- (sha256
- (base32
- "1q4rky0a6n4izmq7slb91a54g8swry1xrbfqxwc8lkd3hhvlxxkl"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'patch
- (lambda* (#:key inputs #:allow-other-keys)
- (substitute* "yq/__init__.py"
- (("Popen\\(\\[\"jq")
- (string-append
- "Popen([\""
- (assoc-ref inputs "jq")
- "/bin/jq")))
- #t)))))
- (inputs
- (list python-argcomplete python-pyyaml python-xmltodict jq))
- (native-inputs
- (list python-coverage python-flake8 python-wheel))
- (home-page "https://github.com/kislyuk/yq")
- (synopsis "Command-line YAML/XML processor")
- (description
- "This package provides @command{yq} and @command{xq} for processing YAML
- and XML respectively. The processing is done through @command{jq}, @command{jq}
- filters can be used to process the data as it passes through.")
- (license license:asl2.0)))
- (define-public python-gyp
- (let ((commit "5e2b3ddde7cda5eb6bc09a5546a76b00e49d888f")
- (revision "0"))
- (package
- (name "python-gyp")
- ;; Google does not release versions,
- ;; based on second most recent commit date.
- (version (git-version "0.0.0" revision commit))
- (source
- (origin
- ;; Google does not release tarballs,
- ;; git checkout is needed.
- (method git-fetch)
- (uri (git-reference
- (url "https://chromium.googlesource.com/external/gyp")
- (commit commit)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0fr7nxcrk292djmxzpcjaphnsd123k31gp8jnd91vwknhq6snmv9"))))
- (build-system python-build-system)
- (home-page "https://gyp.gsrc.io/")
- (synopsis "GYP is a Meta-Build system")
- (description
- "GYP builds build systems for large, cross platform applications.
- It can be used to generate XCode projects, Visual Studio projects, Ninja build
- files, and Makefiles.")
- (license license:bsd-3))))
- (define-public python2-gyp
- (package-with-python2 python-gyp))
- (define-public python-whatever
- (package
- (name "python-whatever")
- (version "0.6")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/Suor/whatever")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32 "1q7ajgqjfivxqsqgnhp4lc4p6jxyh4zprcsdbpd6dw54inaf0av5"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "py.test"))))))
- (native-inputs
- (list python-pytest))
- (home-page "https://github.com/Suor/whatever")
- (synopsis "Make anonymous functions by partial application of operators")
- (description "@code{whatever} provides an easy way to make anonymous
- functions by partial application of operators.")
- (license license:bsd-3)))
- (define-public python2-whatever
- (package-with-python2 python-whatever))
- (define-public python-funcy
- (package
- (name "python-funcy")
- (version "1.11")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/Suor/funcy")
- (commit version)))
- (sha256
- (base32 "1s98vkjnq3zq71737hn8xa15kssvmy1sfzsll3vrlv53902418mw"))
- (file-name (git-file-name name version))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "py.test"))))))
- (native-inputs
- (list python-pytest python-whatever))
- (home-page "https://github.com/Suor/funcy")
- (synopsis "Functional tools")
- (description "@code{funcy} is a library that provides functional tools.
- Examples are:
- @enumerate
- @item merge - Merges collections of the same type
- @item walk - Type-preserving map
- @item select - Selects a part of a collection
- @item take - Takes the first n items of a collection
- @item first - Takes the first item of a collection
- @item remove - Predicated-removes items of a collection
- @item concat - Concatenates two collections
- @item flatten - Flattens a collection with subcollections
- @item distinct - Returns only distinct items
- @item split - Predicated-splits a collection
- @item split_at - Splits a collection at a given item
- @item group_by - Groups items by group
- @item pairwise - Pairs off adjacent items
- @item partial - Partially-applies a function
- @item curry - Curries a function
- @item compose - Composes functions
- @item complement - Complements a predicate
- @item all_fn - \"all\" with predicate
- @end enumerate")
- (license license:bsd-3)))
- (define-public python2-funcy
- (package-with-python2 python-funcy))
- (define-public python-isoweek
- (package
- (name "python-isoweek")
- (version "1.3.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "isoweek" version))
- (sha256
- (base32
- "1s7zsf0pab0l9gn6456qadnz5i5h90hafcjwnhx5mq23qjxggwvk"))))
- (build-system python-build-system)
- (home-page "https://github.com/gisle/isoweek")
- (synopsis "Objects representing a week")
- (description "The @code{isoweek} module provide the class Week that
- implements the week definition of ISO 8601. This standard also defines
- a notation for identifying weeks; yyyyWww (where the W is a literal).
- Week instances stringify to this form.")
- (license license:bsd-3)))
- (define-public python2-isoweek
- (package-with-python2 python-isoweek))
- (define-public python-pyzbar
- (package
- (name "python-pyzbar")
- (version "0.1.8")
- (source
- (origin
- ;; There's no source tarball on PyPI.
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/NaturalHistoryMuseum/pyzbar")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "1fqlfg5p2v9lzzzi0si2sz54lblprk6jjjhjw54b64lp58c1yhsl"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'remove-failing-test
- (lambda _
- ;; This tests if find_library was called once, but we remove
- ;; the call in the stage below to make the library find libzbar.
- (delete-file "pyzbar/tests/test_zbar_library.py")
- #t))
- (add-before 'build 'set-library-file-name
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((libzbar (assoc-ref inputs "zbar")))
- (substitute* "pyzbar/zbar_library.py"
- (("find_library\\('zbar'\\)")
- (string-append "'" libzbar "/lib/libzbar.so.0'")))
- #t))))))
- (native-inputs
- (list pkg-config python-numpy python-pillow))
- (inputs
- (list zbar))
- (home-page "https://github.com/NaturalHistoryMuseum/pyzbar/")
- (synopsis "Read one-dimensional barcodes and QR codes")
- (description
- "Read one-dimensional barcodes and QR codes using the zbar library.
- Features:
- @itemize
- @item Pure python
- @item Works with PIL / Pillow images, OpenCV / numpy ndarrays, and raw bytes
- @item Decodes locations of barcodes
- @item No dependencies, other than the zbar library itself
- @end itemize")
- (license license:expat)))
- (define-public python-tokenize-rt
- (package
- (name "python-tokenize-rt")
- (version "2.0.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "tokenize-rt" version))
- (sha256
- (base32
- "1yjvbz7rvrz31zjyax1cgy3xhf4wb3j18jwnj4bnl77ca4gliyiw"))))
- (build-system python-build-system)
- (home-page "https://github.com/asottile/tokenize-rt")
- (synopsis "Wrapper around the stdlib tokenize which roundtrips")
- (description
- "This Python library is a wrapper around @code{tokenize} from the Python
- standard library. It provides two additional tokens @code{ESCAPED_NL} and
- @code{UNIMPORTANT_WS}, and a @code{Token} data type. Use @code{src_to_tokens}
- and @code{tokens_to_src} to roundtrip.")
- (license license:expat)))
- (define-public python-future-fstrings
- (package
- (name "python-future-fstrings")
- (version "0.4.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "future_fstrings" version))
- (sha256
- (base32
- "0ydxqz2dvns44g55p8ix2x18qkfk3aaz0m0dc70f3g6n8js35h47"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-tokenize-rt))
- (home-page "https://github.com/asottile/future-fstrings")
- (synopsis "Backport of fstrings to Python < 3.6")
- (description
- "This package provides a UTF-8 compatible encoding
- @code{future_fstrings}, which performs source manipulation. It decodes the
- source bytes using the UTF-8 encoding and then rewrites Python 3.6 style
- @code{f} strings.")
- (license license:expat)))
- (define-public python-typed-ast
- (package
- (name "python-typed-ast")
- (version "1.5.1")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/python/typed_ast")
- (commit version)))
- (sha256
- (base32 "1xfcs5246c8v5600aaa8zs7ii4sxb62q6r3sb2fgazyjx97wrxd9"))
- (file-name (git-file-name name version))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "pytest"))))))
- (native-inputs (list python-pytest))
- (home-page "https://github.com/python/typed_ast")
- (synopsis "Fork of Python @code{ast} modules with type comment support")
- (description "This package provides a parser similar to the standard
- @code{ast} library. Unlike @code{ast}, the parsers in @code{typed_ast}
- include PEP 484 type comments and are independent of the version of Python
- under which they are run. The @code{typed_ast} parsers produce the standard
- Python AST (plus type comments), and are both fast and correct, as they are
- based on the CPython 2.7 and 3.7 parsers.")
- ;; See the file "LICENSE" for the details.
- (license (list license:psfl
- license:asl2.0
- license:expat)))) ;ast27/Parser/spark.py
- (define-public python-typer
- (package
- (name "python-typer")
- (version "0.3.2")
- (source
- (origin
- ;; Building `python-typer` from the git repository requires the `flit-core`
- ;; Python package that is not installed by `python-flit`.
- (method url-fetch)
- (uri (pypi-uri "typer" version))
- (sha256
- (base32 "00v3h63dq8yxahp9vg3yb9r27l2niwv8gv0dbds9dzrc298dfmal"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- ;; Unfortunately, this doesn't seem to be enough to fix these two
- ;; tests, but we'll patch this anyway.
- (add-after 'unpack 'patch-shell-reference
- (lambda _
- (substitute* "tests/test_completion/test_completion.py"
- (("\"bash\"") (string-append "\"" (which "bash") "\""))
- (("\"/bin/bash\"") (string-append "\"" (which "bash") "\"")))))
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (setenv "HOME" "/tmp") ; some tests need it
- ;; This is for completion tests
- (with-output-to-file "/tmp/.bashrc" (lambda _ (display "# dummy")))
- (setenv "GUIX_PYTHONPATH"
- (string-append (getcwd) ":"
- (getenv "GUIX_PYTHONPATH")))
- (let ((disabled-tests (list "test_show_completion"
- "test_install_completion")))
- (invoke "python" "-m" "pytest" "tests/"
- "-k"
- (string-append "not "
- (string-join disabled-tests
- " and not "))))))))))
- (propagated-inputs
- (list python-click))
- (native-inputs
- (list python-coverage python-pytest python-shellingham))
- (home-page "https://github.com/tiangolo/typer")
- (synopsis
- "Typer builds CLI based on Python type hints")
- (description
- "Typer is a library for building CLI applications. It's based on
- Python 3.6+ type hints.")
- ;; MIT license
- (license license:expat)))
- (define-public python-typeguard
- (package
- (name "python-typeguard")
- (version "2.13.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "typeguard" version))
- (sha256
- (base32 "1i5qzcyw2715h1g1hvj7fxykck2bkxyshpngjr3nfcx1lf6smv80"))))
- (build-system python-build-system)
- (arguments
- (list
- #:phases
- #~(modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "pytest" "-vv" "-k"
- ;; XXX: These fail when installed as a library:
- ;; https://github.com/agronholm/typeguard/issues/176
- "not usefixtures and not test_cached_module")))))))
- (native-inputs
- (list python-mypy python-pytest python-typing-extensions))
- (home-page "https://github.com/agronholm/typeguard")
- (synopsis "Run-time type checker for Python")
- (description
- "@code{typeguard} provides run-time type checking for functions defined
- with PEP 484 argument (and return) type annotations.")
- (license license:expat)))
- (define-public python2-typing
- (package
- (name "python2-typing")
- (version "3.10.0.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "typing" version))
- (sha256
- (base32 "0c5il4d68fd4qrm5k3dps70j0xz0n5krj6lhwn9vzpal3whsvd0k"))))
- (build-system python-build-system)
- (arguments (list #:python python-2))
- (home-page "https://docs.python.org/3/library/typing.html")
- (synopsis "Type hints for Python")
- (description "This is a backport of the standard library @code{typing}
- module to Python versions older than 3.5. Typing defines a standard notation
- for Python function and variable type annotations. The notation can be used
- for documenting code in a concise, standard format, and it has been designed
- to also be used by static and runtime type checkers, static analyzers, IDEs
- and other tools.")
- (license license:psfl)))
- (define-public python-typing-extensions
- (package
- (name "python-typing-extensions")
- (version "4.0.1")
- (source (origin
- ;; The test script is missing from the PyPI archive.
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/python/typing")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0a35fh5wk9s538x0w3dz95y0avnhd2srzyv9s1a372711n8hdl4p"))))
- (build-system python-build-system)
- (arguments
- (list
- #:tests? #f ;requires Python's test module, not available in Guix
- #:phases
- #~(modify-phases %standard-phases
- (add-after 'unpack 'enter-source-directory
- (lambda _
- (chdir "typing_extensions")))
- ;; XXX: PEP 517 manual build copied from python-isort.
- (replace 'build
- (lambda _
- (invoke "python" "-m" "build" "--wheel" "--no-isolation" ".")))
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "python" "src/test_typing_extensions.py"))))
- (replace 'install
- (lambda _
- (let ((whl (car (find-files "dist" "\\.whl$"))))
- (invoke "pip" "--no-cache-dir" "--no-input"
- "install" "--no-deps" "--prefix" #$output whl)))))))
- (native-inputs (list python-pypa-build python-flit-core))
- (home-page "https://github.com/python/typing/typing_extensions")
- (synopsis "Experimental type hints for Python")
- (description
- "The typing_extensions module contains additional @code{typing} hints not
- yet present in the of the @code{typing} standard library.
- Included are implementations of:
- @enumerate
- @item ClassVar
- @item ContextManager
- @item Counter
- @item DefaultDict
- @item Deque
- @item NewType
- @item NoReturn
- @item overload
- @item Protocol
- @item runtime
- @item Text
- @item Type
- @item TYPE_CHECKING
- @item AsyncGenerator
- @end enumerate\n")
- (license license:psfl)))
- (define-public bpython
- (package
- (name "bpython")
- (version "0.21")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "bpython" version))
- (sha256
- (base32 "11wlf12nm6ggn9512y4yqs26s8gdgpx0h9ls94k7fsjgjy4rpal8"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'remove-failing-test
- (lambda _
- ;; Remove failing test. FIXME: make it pass
- (delete-file "bpython/test/test_args.py")
- #t))
- (add-after 'wrap 'add-aliases
- ;; for symmetry to bpython2, add symlinks bypthon3, bpdb3, etc.
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- (for-each
- (lambda (old new)
- (symlink old (string-append out "/bin/" new)))
- '("bpython" "bpython-curses" "bpython-urwid" "bpdb")
- '("bpython3" "bpython3-curses" "bpython3-urwid" "bpdb3")))
- #t)))))
- (propagated-inputs
- (list python-pygments
- python-requests
- python-curtsies
- python-greenlet
- python-six
- python-cwcwidth
- python-pyxdg
- ;; optional dependencies
- python-urwid ; for bpython-urwid only
- python-watchdog
- python-jedi))
- (native-inputs
- (list python-sphinx python-mock python-tox python-wheel))
- (home-page "https://bpython-interpreter.org/")
- (synopsis "Fancy interface to the Python interpreter")
- (description "Bpython is a fancy interface to the Python
- interpreter. bpython's main features are
- @enumerate
- @item in-line syntax highlighting,
- @item readline-like autocomplete with suggestions displayed as you type,
- @item expected parameter list for any Python function,
- @item \"rewind\" function to pop the last line of code from memory and
- re-evaluate,
- @item send the code you've entered off to a pastebin,
- @item save the code you've entered to a file, and
- @item auto-indentation.
- @end enumerate")
- (license license:expat)))
- (define-public python-pyinotify
- (package
- (name "python-pyinotify")
- (version "0.9.6")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "pyinotify" version))
- (sha256
- (base32
- "1x3i9wmzw33fpkis203alygfnrkcmq9w1aydcm887jh6frfqm6cw"))))
- (build-system python-build-system)
- (arguments `(#:tests? #f)) ;no tests
- (home-page "https://github.com/seb-m/pyinotify")
- (synopsis "Python library for monitoring inotify events")
- (description
- "@code{pyinotify} provides a Python interface for monitoring
- file system events on Linux.")
- (license license:expat)))
- (define-public python2-pyinotify
- (package-with-python2 python-pyinotify))
- ;; Ada parser uses this version.
- (define-public python2-quex-0.67.3
- (package
- (name "python2-quex")
- (version "0.67.3")
- (source
- (origin
- (method url-fetch)
- (uri (string-append "mirror://sourceforge/quex/HISTORY/"
- (version-major+minor version)
- "/quex-" version ".zip"))
- (sha256
- (base32
- "14gv8ll3ipqv4kyc2xiy891nrmjl4ic823zfyx8hassagyclyppw"))))
- (build-system python-build-system)
- (native-inputs
- (list unzip))
- (arguments
- `(#:python ,python-2
- #:tests? #f
- #:phases
- (modify-phases %standard-phases
- (delete 'configure)
- (delete 'build)
- (replace 'install
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (share/quex (string-append out "/share/quex"))
- (bin (string-append out "/bin")))
- (copy-recursively "." share/quex)
- (mkdir-p bin)
- (symlink (string-append share/quex "/quex-exe.py")
- (string-append bin "/quex"))
- #t))))))
- (native-search-paths
- (list (search-path-specification
- (variable "QUEX_PATH")
- (files '("share/quex")))))
- (home-page "http://quex.sourceforge.net/")
- (synopsis "Lexical analyzer generator in Python")
- (description "@code{quex} is a lexical analyzer generator in Python.")
- (license license:lgpl2.1+))) ; Non-military
- (define-public python2-quex
- (package (inherit python2-quex-0.67.3)
- (name "python2-quex")
- (version "0.68.1")
- (source
- (origin
- (method url-fetch)
- (uri (string-append "mirror://sourceforge/quex/DOWNLOAD/quex-" version ".tar.gz"))
- (sha256
- (base32
- "0svc9nla3b9145d6b7fb9dizx412l3difzqw0ilh9lz52nsixw8j"))
- (file-name (string-append name "-" version ".tar.gz"))))))
- (define-public python-more-itertools
- (package
- (name "python-more-itertools")
- (version "8.2.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "more-itertools" version))
- (sha256
- (base32
- "01x5nwm1zxmnd06cllbdd095xxc2nd25ing1a726m2kd30rbkpdi"))))
- (build-system python-build-system)
- (home-page "https://github.com/erikrose/more-itertools")
- (synopsis "More routines for operating on iterables, beyond itertools")
- (description "Python's built-in @code{itertools} module implements a
- number of iterator building blocks inspired by constructs from APL, Haskell,
- and SML. @code{more-itertools} includes additional building blocks for
- working with iterables.")
- (properties `((python2-variant . ,(delay python2-more-itertools))))
- (license license:expat)))
- ;; The 5.x series are the last versions supporting Python 2.7.
- (define-public python2-more-itertools
- (package
- (inherit python-more-itertools)
- (name "python2-more-itertools")
- (version "5.0.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "more-itertools" version))
- (sha256
- (base32
- "1r12cm6mcdwdzz7d47a6g4l437xsvapdlgyhqay3i2nrlv03da9q"))))
- (arguments
- `(#:python ,python-2))
- (propagated-inputs
- `(("python2-six" ,python2-six-bootstrap)))))
- (define-public python-latexcodec
- (package
- (name "python-latexcodec")
- (version "1.0.7")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "latexcodec" version))
- (sha256
- (base32 "0wnp3yqcgx0rpy8dz51vh75lbp2qif67da19zi7m3ca98n887hgb"))))
- (build-system python-build-system)
- (inputs
- (list python-six))
- (home-page "https://readthedocs.org/projects/latexcodec/")
- (synopsis "Work with LaTeX code in Python")
- (description "Lexer and codec to work with LaTeX code in Python.")
- (license license:expat)))
- (define-public python-pybtex
- (package
- (name "python-pybtex")
- (version "0.22.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pybtex" version))
- (sha256
- (base32 "070wfcmxrd7xg1si421mi9150gmx2qwx431nwf69sq3hhmgnx080"))))
- (build-system python-build-system)
- (native-inputs
- (list python-nose))
- (inputs
- (list python-latexcodec python-pyyaml python-six))
- (arguments
- (list
- #:phases #~(modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "nosetests")))))))
- (home-page "https://pybtex.org/")
- (synopsis "BibTeX-compatible bibliography processor")
- (description "Pybtex is a BibTeX-compatible bibliography processor written
- in Python. You can simply type pybtex instead of bibtex.")
- (license license:expat)))
- (define-public python-onetimepass
- (package
- (name "python-onetimepass")
- (version "1.0.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "onetimepass" version))
- (sha256
- (base32 "09vagxgbq78wvq4xbikmn2hpqqsa2i96kqsmphf7dqynfv0dlsd5"))))
- (build-system python-build-system)
- (propagated-inputs (list python-six))
- (home-page "https://github.com/tadeck/onetimepass/")
- (synopsis "One-time password library")
- (description "Python one-time password library for HMAC-based (HOTP) and
- time-based (TOTP) passwords.")
- (license license:expat)))
- (define-public python-parso
- (package
- (name "python-parso")
- (version "0.8.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "parso" version))
- (sha256
- (base32 "161k8771m7w60qakyvrwf9q62lvakmix7mpfylpy7713qs939f0j"))))
- (native-inputs
- (list python-pytest))
- (build-system python-build-system)
- (arguments
- `(#:phases (modify-phases %standard-phases
- (replace 'check
- (lambda _ (invoke "pytest" "-vv"))))))
- (home-page "https://github.com/davidhalter/parso")
- (synopsis "Python Parser")
- (description "Parso is a Python parser that supports error recovery and
- round-trip parsing for different Python versions (in multiple Python versions).
- Parso is also able to list multiple syntax errors in your Python file.")
- (license license:expat)))
- (define-public python2-parso
- (package-with-python2 python-parso))
- (define-public python-async-generator
- (package
- (name "python-async-generator")
- (version "1.10")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "async_generator" version))
- (sha256
- (base32
- "0i11f6z6lix8ixi3vsk6s76zvvpmgrw6zjrcwjm0m4hjdh83vfvf"))))
- (build-system python-build-system)
- (native-inputs
- (list python-pytest))
- (home-page "https://github.com/python-trio/async_generator")
- (synopsis "Async generators and context managers for Python 3.5+")
- (description "@code{async_generator} back-ports Python 3.6's native async
- generators and Python 3.7's context managers into Python 3.5.")
- ;; Dual licensed.
- (license (list license:expat license:asl2.0))))
- (define-public python-async-timeout
- (package
- (name "python-async-timeout")
- (version "4.0.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "async-timeout" version))
- (sha256
- (base32
- "05bbjz16n1a7m1s3lmcwri2x5rc7hnh6f2hdr2lbflnv1mjf2qr1"))))
- (build-system python-build-system)
- (home-page "https://github.com/aio-libs/async-timeout")
- (synopsis "Timeout context manager for asyncio programs")
- (description "@code{async-timeout} provides a timeout timeout context
- manager compatible with @code{asyncio}.")
- (license license:asl2.0)))
- (define-public python-glob2
- (package
- (name "python-glob2")
- (version "0.7")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/miracle2k/python-glob2")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "160nh2ay9lw2hi0rixpzb2k87r6ql56k0j2cm87lqz8xc8zbw919"))))
- (build-system python-build-system)
- (home-page "https://github.com/miracle2k/python-glob2/")
- (synopsis "Extended Version of the python buildin glob module")
- (description "This is an extended version of the Python
- @url{http://docs.python.org/library/glob.html, built-in glob module} which
- adds:
- @itemize
- @item The ability to capture the text matched by glob patterns, and return
- those matches alongside the file names.
- @item A recursive @code{**} globbing syntax, akin for example to the
- @code{globstar} option of Bash.
- @item The ability to replace the file system functions used, in order to glob
- on virtual file systems.
- @item Compatible with Python 2 and Python 3 (tested with 3.3).
- @end itemize
- Glob2 currently based on the glob code from Python 3.3.1.")
- (license license:bsd-2)))
- (define-public python2-glob2
- (package-with-python2 python-glob2))
- (define-public python-gipc
- (package
- (name "python-gipc")
- (version "0.6.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "gipc" version ".zip"))
- (sha256
- (base32
- "0pd9by719qh882hqs6xpby61sn1x5h98hms5p2p8yqnycrf1s0h2"))))
- (build-system python-build-system)
- (native-inputs
- (list unzip))
- (propagated-inputs
- (list python-gevent))
- (home-page "https://gehrcke.de/gipc/")
- (synopsis "Child process management in the context of gevent")
- (description "Usage of Python's multiprocessing package in a
- gevent-powered application may raise problems. With @code{gipc},
- process-based child processes can safely be created anywhere within a
- gevent-powered application.")
- (license license:expat)))
- (define-public python-beautifultable
- (package
- (name "python-beautifultable")
- (version "1.0.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "beautifultable" version))
- (sha256
- (base32
- "0wwlbifcbpzy3wfv6yzsxncarsngzizmmxbn6cy5gazlcq7h4k5x"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-wcwidth))
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'patch-setup.py
- (lambda _
- (substitute* "setup.py"
- (("setup\\(")
- "setup(\n test_suite=\"test\",")))))))
- (home-page "https://github.com/pri22296/beautifultable")
- (synopsis "Print ASCII tables for terminals")
- (description "@code{python-beautifultable} provides a class for easily
- printing tabular data in a visually appealing ASCII format to a terminal.
- Features include, but are not limited to:
- @itemize
- @item Full customization of the look and feel of the table
- @item Row and column accessors.
- @item Full support for colors using ANSI sequences or any library.
- @item Plenty of predefined styles and option to create custom ones.
- @item Support for Unicode characters.
- @item Supports streaming table when data is slow to retrieve.
- @end itemize")
- (license license:expat)))
- (define-public python-globber
- (package
- (name "python-globber")
- (version "0.2.1")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/asharov/globber")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "055xf7ja7zjhxis0ab5fnfsx16fsvr5fvc6mixqybanwxh8sgfjk"))))
- (build-system python-build-system)
- (home-page "https://github.com/asharov/globber")
- (synopsis "Library for string matching with glob patterns")
- (description
- "Globber is a Python library for matching file names against glob patterns.
- In contrast to other glob-matching libraries, it matches arbitrary strings and
- doesn't require the matched names to be existing files. In addition, it
- supports the globstar @code{**} operator to match an arbitrary number of
- path components.")
- (license license:asl2.0)))
- (define-public python-git-hammer
- (package
- (name "python-git-hammer")
- (version "0.3.1")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/asharov/git-hammer")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0f9xlk86ijzpdj25hr1q4wcy8k72v3w470ngwm9mpdkfj8ng84wr"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'patch-setup.py
- (lambda _
- (substitute* "setup.py"
- (("setup\\(")
- "setup(\n test_suite=\"test\",")))))))
- (propagated-inputs
- (list python-beautifultable
- python-dateutil
- python-gitpython
- python-globber
- python-matplotlib
- python-sqlalchemy
- python-sqlalchemy-utils))
- (home-page "https://github.com/asharov/git-hammer")
- (synopsis "Provide statistics for git repositories")
- (description
- "Git Hammer is a statistics tool for projects in git repositories.
- Its major feature is tracking the number of lines authored by each person for every
- commit, but it also includes some other useful statistics.")
- (license license:asl2.0)))
- (define-public python-fusepy
- (package
- (name "python-fusepy")
- (version "2.0.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "fusepy" version))
- (sha256
- (base32
- "0v5grm4zyf58hsplwsxfbihddw95lz9w8cy3rpzbyha287swgx8h"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-before 'build 'set-library-file-name
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((fuse (assoc-ref inputs "fuse")))
- (substitute* "fuse.py"
- (("find_library\\('fuse'\\)")
- (string-append "'" fuse "/lib/libfuse.so'")))
- #t))))))
- (propagated-inputs
- (list fuse))
- (home-page "https://github.com/fusepy/fusepy")
- (synopsis "Simple ctypes bindings for FUSE")
- (description "Python module that provides a simple interface to FUSE and
- MacFUSE. The binding is created using the standard @code{ctypes} library.")
- (license license:isc)))
- (define-public python2-fusepy
- (package-with-python2 python-fusepy))
- (define-public python-fusepyng
- (package
- (name "python-fusepyng")
- (version "1.0.7")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "fusepyng" version))
- (sha256
- (base32
- "17w9iw6m6zjbmnhs4ikd27pq4mb1nan6k4ahlwyz40463vw6wkwb"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'set-libfuse-path
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((fuse (assoc-ref inputs "fuse")))
- (substitute* "fusepyng.py"
- (("os.environ.get\\('FUSE_LIBRARY_PATH'\\)")
- (string-append "\"" fuse "/lib/libfuse.so\""))))
- #t)))))
- (inputs
- (list fuse))
- (propagated-inputs
- (list python-paramiko))
- (home-page "https://github.com/rianhunter/fusepyng")
- (synopsis "Simple ctypes bindings for FUSE")
- (description "@code{fusepyng} is a Python module that provides a simple
- interface to FUSE on various operating systems. It's just one file and is
- implemented using @code{ctypes}.")
- (license license:isc)))
- (define-public python-update-checker
- (package
- (name "python-update-checker")
- (version "0.18.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "update-checker" version))
- (sha256
- (base32 "04yb5a9mi45ax50m2m0ih6gdvkk1j7gfmy83dd58i1f59axlabba"))))
- (build-system python-build-system)
- (propagated-inputs (list python-requests))
- (native-inputs (list python-black python-flake8 python-pytest))
- (home-page "https://github.com/bboe/update_checker")
- (synopsis "Python module that will check for package updates")
- (description "This package provides a Python module that will check for
- package updates.")
- (license license:bsd-2)))
- (define-public python-userspacefs
- (package
- (name "python-userspacefs")
- (version "2.0.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "userspacefs" version))
- (sha256
- (base32
- "06f2gsiypas270nqfjir4wwjlpkjp097pm6zchc7k20ggg32gv1k"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-fusepyng))
- (home-page "https://github.com/rianhunter/userspacefs")
- (synopsis "User-space file systems for Python")
- (description
- "@code{userspacefs} is a library that allows you to easily write
- user-space file systems in Python.")
- (license license:gpl3+)))
- (define-public python-stone
- (package
- (name "python-stone")
- (version "3.2.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "stone" version))
- (sha256
- (base32
- "0xby5mpsms7b2rv8j6mvxzmzz5i9ii01brb9ylxz6kiv2i08piwv"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'change-version-requirements
- (lambda _
- ;; Match the requirement in test/requirements.txt
- (substitute* "setup.py"
- (("pytest < 5") "pytest < 7"))
- ;; We don't care about a coverage report.
- (substitute* "test/requirements.txt"
- (("coverage.*") "coverage\n"))))
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- ;; These tests don't import currectly.
- (delete-file "test/test_js_client.py")
- (delete-file "test/test_tsd_types.py")
- (delete-file "test/test_python_gen.py")
- (invoke "pytest")))))))
- (propagated-inputs
- (list python-ply python-six))
- (native-inputs
- (list python-coverage python-mock python-pytest python-pytest-runner))
- (home-page "https://github.com/dropbox/stone")
- (synopsis "Official Api Spec Language for Dropbox")
- (description
- "Stone is an interface description language (IDL) for APIs.")
- (license license:expat)))
- (define-public pybind11
- (package
- (name "pybind11")
- (version "2.8.1")
- (source (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/pybind/pybind11")
- (commit (string-append "v" version))))
- (sha256
- (base32
- "10hrkrh78sk7k0ydw1ghmp7gvpwmkby0l2s0kf2iaj9sz0vijkhs"))
- (file-name (git-file-name name version))))
- (build-system cmake-build-system)
- (native-inputs
- `(("python" ,python-wrapper)
- ;; The following dependencies are used for tests.
- ("python-pytest" ,python-pytest)
- ("catch" ,catch-framework2-1)
- ("eigen" ,eigen)))
- (arguments
- `(#:configure-flags
- (list (string-append "-DCATCH_INCLUDE_DIR="
- (assoc-ref %build-inputs "catch")
- "/include/catch"))
- #:phases (modify-phases %standard-phases
- (add-after 'install 'install-python
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- (with-directory-excursion "../source"
- (setenv "PYBIND11_USE_CMAKE" "yes")
- (invoke "python" "setup.py" "install"
- "--single-version-externally-managed"
- "--root=/"
- (string-append "--prefix=" out)))))))
- #:test-target "check"))
- (home-page "https://github.com/pybind/pybind11/")
- (synopsis "Seamless operability between C++11 and Python")
- (description
- "@code{pybind11} is a lightweight header-only library that exposes C++
- types in Python and vice versa, mainly to create Python bindings of existing
- C++ code. Its goals and syntax are similar to the @code{Boost.Python}
- library: to minimize boilerplate code in traditional extension modules by
- inferring type information using compile-time introspection.")
- (license license:bsd-3)))
- (define-public python-pooch
- (package
- (name "python-pooch")
- (version "1.3.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pooch" version))
- (sha256
- (base32 "1618adsg9r8fsv422sv35z1i723q3a1iir5v7dv2sklh4pl4im1h"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f)) ;requires online data
- (propagated-inputs
- (list python-appdirs python-packaging python-requests))
- (home-page "https://github.com/fatiando/pooch")
- (synopsis "Manage your Python library's sample data files")
- (description
- "Pooch manages your Python library's sample data files: it automatically
- downloads and stores them in a local directory, with support for versioning
- and corruption checks.")
- (license license:bsd-3)))
- (define-public python-fasteners
- (package
- (name "python-fasteners")
- (version "0.15")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "fasteners" version))
- (sha256
- (base32
- "1vzmz1xh38b84dv0f4hlp7arwmx8wjlih6lf964bpy8dnyk6s5rs"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-monotonic python-six))
- (native-inputs
- (list python-testtools))
- (home-page "https://github.com/harlowja/fasteners")
- (synopsis "Python package that provides useful locks")
- (description
- "This package provides a Python program that provides following locks:
- @itemize
- @item Locking decorator
- @item Reader-writer locks
- @item Inter-process locks
- @item Generic helpers
- @end itemize\n")
- (license license:asl2.0)))
- (define-public python-requests-file
- (package
- (name "python-requests-file")
- (version "1.4.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "requests-file" version))
- (sha256
- (base32
- "1yp2jaxg3v86pia0q512dg3hz6s9y5vzdivsgrba1kds05ial14g"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-requests python-six))
- (home-page
- "https://github.com/dashea/requests-file")
- (synopsis "File transport adapter for Requests")
- (description
- "Requests-File is a transport adapter for use with the Requests Python
- library to allow local file system access via @code{file://} URLs.")
- (license license:asl2.0)))
- (define-public python2-requests-file
- (package-with-python2 python-requests-file))
- (define-public python-identify
- (package
- (name "python-identify")
- (version "1.4.25")
- (source
- (origin
- ;; There are no tests in the PyPI tarball.
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/chriskuehl/identify")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "1fqgci6skckcq0x5pnxh6k2qjzn1ndsrgha1j6wwv1ld4g9bd3hz"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- ;; system-error "utime" "~A" ("No such file or directory")
- (delete 'ensure-no-mtimes-pre-1980)
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "pytest" "-vv")))))))
- (native-inputs
- (list python-coverage python-pytest))
- (propagated-inputs
- (list python-editdistance))
- (home-page "https://github.com/chriskuehl/identify")
- (synopsis "File identification library for Python")
- (description
- "@code{identify} is a file identification library for Python. Given
- a file (or some information about a file), return a set of standardized tags
- identifying what the file is.")
- (license license:expat)))
- (define-public python-tldextract
- (package
- (name "python-tldextract")
- (version "2.2.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "tldextract" version))
- (sha256
- (base32
- "1d5s8v6kpsgazyahflhji1cfdcf89rv7l7z55v774bhzvcjp2y99"))))
- (build-system python-build-system)
- (native-inputs
- (list python-pytest python-responses))
- (propagated-inputs
- (list python-idna python-requests python-requests-file))
- (home-page
- "https://github.com/john-kurkowski/tldextract")
- (synopsis
- "Separate the TLD from the registered domain and subdomains of a URL")
- (description
- "TLDExtract accurately separates the TLD from the registered domain and
- subdomains of a URL, using the Public Suffix List. By default, this includes
- the public ICANN TLDs and their exceptions. It can optionally support the
- Public Suffix List's private domains as well.")
- (license license:bsd-3)))
- (define-public python2-tldextract
- (package-with-python2 python-tldextract))
- (define-public python-tldr
- (package
- (name "python-tldr")
- (version "1.2.1")
- (source
- (origin
- ;; There's no test in PyPI.
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/tldr-pages/tldr-python-client")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32 "0n9wqvjxspm18vlxf9j9slrcydshk4rkv5nwkrqhfq606n6zvks4"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- ;; This test fails. It tries to open a network socket.
- (invoke "pytest" "-vv" "-k" "not test_error_message")))))))
- (native-inputs
- (list python-pytest python-pytest-runner))
- (inputs
- (list python-argcomplete python-colorama python-termcolor))
- (home-page "https://github.com/tldr-pages/tldr-python-client")
- (synopsis "Python command-line client for tldr pages")
- (description "This package provides the @code{tldr} command allowing users
- to view @code{tldr} pages from a shell. The @code{tldr} pages are a community
- effort to simplify the man pages with practical examples.")
- (license license:expat))) ; MIT license
- (define-public python-nodeenv
- (package
- (name "python-nodeenv")
- (version "1.4.0")
- (source
- (origin
- ;; There's no tarball in PyPI.
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/ekalinin/nodeenv")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32 "0y443icx0w7jlzmxmmcm4q8dqfiwgafbb9cp8jpm68mbqxbz40a7"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- ;; This test fails. It tries to open a network socket.
- (invoke "pytest" "-vv" "-k" "not test_smoke"))))))
- (native-inputs
- (list python-coverage python-mock python-pytest))
- (home-page "https://ekalinin.github.io/nodeenv/")
- (synopsis "Create isolated node.js environments")
- (description
- "Nodeenv (node.js virtual environment) is a tool to create isolated
- node.js environments. It creates an environment that has its own installation
- directories, that doesn't share libraries with other node.js virtual
- environments.")
- (license license:bsd-3)))
- (define-public python-pynamecheap
- (package
- (name "python-pynamecheap")
- (version "0.0.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "PyNamecheap" version))
- (sha256
- (base32
- "0wkbwz208j8nfrsmzmclvxg22ymknn0mlz76wbdza9k2bx2zja6l"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-requests))
- (home-page
- "https://github.com/Bemmu/PyNamecheap")
- (synopsis
- "Namecheap API client in Python")
- (description
- "PyNamecheap is a Namecheap API client in Python.")
- (license license:expat)))
- (define-public python2-pynamecheap
- (package-with-python2 python-pynamecheap))
- (define-public python-dns-lexicon
- (package
- (name "python-dns-lexicon")
- (version "2.4.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "dns-lexicon" version))
- (sha256
- (base32
- "0jdn3ns71bsybr7njgsqr9xlxsqh7zh6phn4ld0liazqdn2l5f6m"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f)) ;requires internet access
- (propagated-inputs
- (list python-future python-pynamecheap python-requests
- python-tldextract python-urllib3))
- (home-page "https://github.com/AnalogJ/lexicon")
- (synopsis
- "Manipulate DNS records on various DNS providers")
- (description
- "Lexicon provides a way to manipulate DNS records on multiple DNS
- providers in a standardized way. It has a CLI but it can also be used as a
- Python library. It was designed to be used in automation, specifically with
- Let's Encrypt.")
- (license license:expat)))
- (define-public python2-dns-lexicon
- (package-with-python2 python-dns-lexicon))
- (define-public python-cfgv
- (package
- (name "python-cfgv")
- (version "3.1.0")
- (source
- (origin
- ;; There are no tests in the PyPI tarball.
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/asottile/cfgv")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "1vvkkqw92sak4b28bpscpppq483amy52ch2yqy1i2m23q7xjkabx"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "pytest" "-vv"))))))
- (native-inputs
- (list python-covdefaults python-coverage python-pytest))
- (home-page "https://github.com/asottile/cfgv")
- (synopsis "Configuration validation library")
- (description
- "This library helps to validate configuration files and produce human
- readable error messages.")
- (license license:expat)))
- (define-public python-commandlines
- (package
- (name "python-commandlines")
- (version "0.4.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "commandlines" version))
- (sha256
- (base32
- "0r7xcr0knv02p4mswa2bng61nn8nbhhrs6kvdnb9bb3hhjvm1dl6"))))
- (build-system python-build-system)
- (home-page "https://github.com/chrissimpkins/commandlines")
- (synopsis "Command line argument to object parsing library")
- (description
- "@code{Commandlines} is a Python library for command line application
- development that supports command line argument parsing, command string
- validation testing and application logic.")
- (license license:expat)))
- ;; Make sure to upgrade python-llvmlite in (gnu packages llvm) together with
- ;; python-numba. They have a very unflexible relationship.
- (define-public python-numba
- (package
- (name "python-numba")
- (version "0.54.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "numba" version))
- (sha256
- (base32
- "0gzl2hz9azav9mny4mga19096rrnpw5816r1h4iwrvb4r01wipzr"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'disable-proprietary-features
- (lambda _
- (setenv "NUMBA_DISABLE_HSA" "1")
- (setenv "NUMBA_DISABLE_CUDA" "1")))
- (add-after 'unpack 'disable-failing-tests
- (lambda _
- ;; This one test fails because a deprecation warning is printed.
- (substitute* "numba/tests/test_import.py"
- (("def test_no_accidental_warnings")
- "def disabled_test_no_accidental_warnings"))))
- (replace 'check
- (lambda* (#:key tests? inputs outputs #:allow-other-keys)
- (when tests?
- (add-installed-pythonpath inputs outputs)
- ;; Something is wrong with the PYTHONPATH when running the
- ;; tests from the build directory, as it complains about not being
- ;; able to import certain modules.
- (with-directory-excursion "/tmp"
- (setenv "HOME" (getcwd))
- (invoke "python3" "-m" "numba.runtests" "-v" "-m"))))))))
- (propagated-inputs
- (list python-llvmlite python-numpy python-singledispatch))
- (native-inputs ;for tests
- (list python-jinja2 python-pygments))
- (home-page "https://numba.pydata.org")
- (synopsis "Compile Python code using LLVM")
- (description "Numba gives you the power to speed up your applications with
- high performance functions written directly in Python. With a few
- annotations, array-oriented and math-heavy Python code can be just-in-time
- compiled to native machine instructions, similar in performance to C, C++ and
- Fortran, without having to switch languages or Python interpreters.
- Numba works by generating optimized machine code using the LLVM compiler
- infrastructure at import time, runtime, or statically (using the included pycc
- tool).")
- (license license:bsd-3)))
- (define-public python-numcodecs
- (package
- (name "python-numcodecs")
- (version "0.6.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "numcodecs" version))
- (sha256
- (base32
- "0kbfr8pl3x9glsypbq8hzim003f16ml1b1cvgrh4w1sdvgal6j7g"))
- (modules '((guix build utils)))
- (snippet
- '(begin
- (delete-file-recursively "c-blosc")
- (for-each delete-file '("numcodecs/blosc.c"
- "numcodecs/compat_ext.c"
- "numcodecs/lz4.c"
- "numcodecs/vlen.c"
- "numcodecs/zstd.c"))))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #false ; TODO: unclear why numcodecs.* are not found
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'disable-avx2
- (lambda _
- (setenv "DISABLE_NUMCODECS_AVX2" "1")))
- (add-after 'unpack 'unbundle
- (lambda _
- (substitute* "setup.py"
- (("sources=sources \\+ blosc_sources,")
- "sources=sources,")
- (("extra_compile_args=extra_compile_args")
- "extra_compile_args=list(base_compile_args)")
- (("'numcodecs.zstd',")
- "'numcodecs.zstd', libraries=['zstd'], ")
- (("'numcodecs.lz4',")
- "'numcodecs.lz4', libraries=['lz4'], ")
- (("'numcodecs.blosc',")
- "'numcodecs.blosc', libraries=['blosc'], "))))
- (replace 'check
- (lambda* (#:key tests? inputs outputs #:allow-other-keys)
- (when tests?
- (add-installed-pythonpath inputs outputs)
- (invoke "pytest" "-vv")))))))
- (inputs
- (list c-blosc lz4 zlib
- `(,zstd "lib")))
- (propagated-inputs
- (list python-numpy python-msgpack))
- (native-inputs
- (list python-cython python-pytest python-setuptools-scm))
- (home-page "https://github.com/zarr-developers/numcodecs")
- (synopsis "Buffer compression and transformation codecs")
- (description
- "This Python package provides buffer compression and transformation
- codecs for use in data storage and communication applications.")
- (license license:expat)))
- (define-public python-asciitree
- (package
- (name "python-asciitree")
- (version "0.3.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "asciitree" version))
- (sha256
- (base32
- "0vhgri2m2xlnibhz4xwn4hpbc7xacisxjqrk6k5kyppq96vbk92a"))))
- (build-system python-build-system)
- (home-page "https://github.com/mbr/asciitree")
- (synopsis "Draws ASCII trees")
- (description "This package draws tree structures using characters.")
- (license license:expat)))
- (define-public python-zarr
- (package
- (name "python-zarr")
- (version "2.4.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "zarr" version))
- (sha256
- (base32
- "026n3sjzjv2gmwx6y72b8ij0hk42bc8zdbvfj5gdqzd4i6wj3ajk"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'disable-service-tests
- (lambda _
- (setenv "ZARR_TEST_ABS" "0")
- (setenv "ZARR_TEST_MONGO" "0")
- (setenv "ZARR_TEST_REDIS" "0")
- #t))
- (replace 'check
- (lambda _
- (invoke "pytest" "-vv" "-k" "not lmdb")
- #t)))))
- (propagated-inputs
- (list python-asciitree python-fasteners python-numcodecs
- python-numpy))
- (native-inputs
- (list python-pytest python-setuptools-scm))
- (home-page "https://github.com/zarr-developers/zarr-python")
- (synopsis "Chunked, compressed, N-dimensional arrays for Python")
- (description
- "This package provides an implementation of chunked, compressed,
- N-dimensional arrays for Python.")
- (license license:expat)))
- (define-public python-anndata
- (package
- (name "python-anndata")
- (version "0.8.0")
- (source
- (origin
- ;; The tarball from PyPi doesn't include tests.
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/theislab/anndata")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0v7npqrg1rdm8jzw22a45c0mqrmsv05r3k88i3lhzi0pzzxca1i1"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (delete 'check)
- (replace 'build
- (lambda _
- (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" ,version)
- (substitute* "anndata/_metadata.py"
- (("__version__ =.*")
- (string-append "__version__ = \"" ,version "\"\n")))
- ;; ZIP does not support timestamps before 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$"))))))))
- (propagated-inputs
- (list python-h5py
- python-importlib-metadata
- python-natsort
- python-numcodecs
- python-packaging
- python-pandas
- python-scipy
- python-xlrd-1
- python-zarr))
- (native-inputs
- (list python-joblib python-pytest python-toml python-flit
- python-setuptools-scm))
- (home-page "https://github.com/theislab/anndata")
- (synopsis "Annotated data for data analysis pipelines")
- (description "Anndata is a package for simple (functional) high-level APIs
- for data analysis pipelines. In this context, it provides an efficient,
- scalable way of keeping track of data together with learned annotations and
- reduces the code overhead typically encountered when using a mostly
- object-oriented library such as @code{scikit-learn}.")
- (license license:bsd-3)))
- (define-public python-dill
- (package
- (name "python-dill")
- (version "0.3.1.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "dill" version))
- (sha256
- (base32 "1704g8z70d210ksgbccs2v545v9w0wc6lx15m296alb7jf0yzn22"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (with-directory-excursion "/tmp"
- (invoke "nosetests" "-v"))
- #t)))))
- (native-inputs
- (list python-nose))
- (home-page "https://pypi.org/project/dill/")
- (synopsis "Serialize all of Python")
- (description "Dill extends Python's @code{pickle} module for serializing
- and de-serializing Python objects to the majority of the built-in Python
- types. Dill provides the user the same interface as the @code{pickle} module,
- and also includes some additional features. In addition to pickling Python
- objects, @code{dill} provides the ability to save the state of an interpreter
- session in a single command. Hence, it would be feasible to save a
- interpreter session, close the interpreter, ship the pickled file to another
- computer, open a new interpreter, unpickle the session and thus continue from
- the saved state of the original interpreter session.")
- (license license:bsd-3)))
- (define-public python-multiprocess
- (package
- (name "python-multiprocess")
- (version "0.70.9")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "multiprocess" version))
- (sha256
- (base32
- "1r882nvd44xqwbrclwqx5rhs80l6809rcvpc7pkpgnij06cvvmcz"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'disable-broken-tests
- (lambda _
- ;; This test is broken as there is no keyboard interrupt.
- (substitute* "py3.7/multiprocess/tests/__init__.py"
- (("^(.*)def test_wait_result"
- line indent)
- (string-append indent
- "@unittest.skip(\"Disabled by Guix\")\n"
- line)))
- #t))
- ;; Tests must be run after installation.
- (delete 'check)
- (add-after 'install 'check
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (add-installed-pythonpath inputs outputs)
- (invoke "python" "-m" "multiprocess.tests")
- #t)))))
- (propagated-inputs
- (list python-dill))
- (home-page "https://pypi.org/project/multiprocess/")
- (synopsis "Multiprocessing and multithreading in Python")
- (description
- "This package is a fork of the multiprocessing Python package, a package
- which supports the spawning of processes using the API of the standard
- library's @code{threading} module.")
- (license license:bsd-3)))
- (define-public python-toolz
- (package
- (name "python-toolz")
- (version "0.11.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "toolz" version))
- (sha256
- (base32
- "0cxwlh8dz8gq0l0bzchjnqqwhdp261nfd958ppqm518k2mg2scbb"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key inputs outputs tests? #:allow-other-keys)
- (when tests?
- (add-installed-pythonpath inputs outputs)
- (invoke "python" "-m" "pytest" "--doctest-modules"
- "--pyargs" "toolz")))))))
- (native-inputs
- (list python-pytest))
- (home-page "https://github.com/pytoolz/toolz/")
- (synopsis "List processing tools and functional utilities")
- (description
- "This package provides a set of utility functions for iterators,
- functions, and dictionaries.")
- (license license:bsd-3)))
- (define-public python-cytoolz
- (package
- (name "python-cytoolz")
- (version "0.11.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "cytoolz" version))
- (sha256
- (base32
- "1d12mgaippxxhn24w2hj0my3aqkx80fks5g4wzfdsvl0acqnc8za"))
- (modules '((guix build utils)))
- (snippet
- '(for-each delete-file (find-files "cytoolz" "\\.c$")))))
- (build-system python-build-system)
- ;; FIXME: tests fail with "module 'cytoolz.curried' has no attribute
- ;; 'exceptions'"
- (arguments '(#:tests? #f))
- (propagated-inputs
- (list python-toolz))
- (native-inputs
- (list python-cython))
- (home-page "https://github.com/pytoolz/cytoolz")
- (synopsis "High performance functional utilities")
- (description
- "The cytoolz package implements the same API as provided by toolz. The
- main differences are that @code{cytoolz} is faster and cytoolz offers a C API
- that is accessible to other projects developed in Cython.")
- (license license:bsd-3)))
- ;; python-cooler doesn't work with 0.11 yet
- (define-public python-cytoolz-for-cooler
- (package
- (inherit python-cytoolz)
- (version "0.10.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "cytoolz" version))
- (sha256
- (base32
- "0p4a9nadsy1337gy2cnb5yanbn03j3zm6d9adyqad9bk3nlbpxc2"))
- (modules '((guix build utils)))
- (snippet
- '(for-each delete-file (find-files "cytoolz" "\\.c$")))))))
- (define-public python-sortedcollections
- (package
- (name "python-sortedcollections")
- (version "2.1.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "sortedcollections" version))
- (sha256
- (base32
- "1kfabpnjyjm5ml2zspry9jy3xq49aybchgaa4ahic2jqdjfn1sfq"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-sortedcontainers))
- (arguments '(#:tests? #f)) ; Tests not included in release tarball.
- (home-page "http://www.grantjenks.com/docs/sortedcollections/")
- (synopsis "Python Sorted Collections")
- (description "Sorted Collections is a Python sorted collections library.")
- (license license:asl2.0)))
- (define-public python-sortedcontainers
- (package
- (name "python-sortedcontainers")
- (version "2.1.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "sortedcontainers" version))
- (sha256
- (base32
- "0fm0w5id2yhqld95hg2m636vjgkz377rvgdfqaxc25vbylr9lklp"))))
- (build-system python-build-system)
- (arguments
- ;; FIXME: Tests require many extra dependencies, and would introduce
- ;; a circular dependency on hypothesis, which uses this package.
- '(#:tests? #f))
- (propagated-inputs
- `(("python-appdirs" ,python-appdirs)
- ("python-distlib" ,python-distlib)
- ("python-filelock" ,python-filelock)
- ("python-six" ,python-six-bootstrap)))
- (home-page "http://www.grantjenks.com/docs/sortedcontainers/")
- (synopsis "Sorted List, Sorted Dict, Sorted Set")
- (description
- "This package provides a sorted collections library, written in
- pure-Python.")
- (license license:asl2.0)))
- (define-public python2-sortedcontainers
- (package-with-python2 python-sortedcontainers))
- (define python-cloudpickle-testpkg
- (package
- (name "python-cloudpickle-testpkg")
- (version "1.6.0")
- (source
- (origin
- ;; Archive on pypi does not include test infrastructure.
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/cloudpipe/cloudpickle")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "1584d21d4rcpryn8yfz0pjnjprk4zm367m0razdcz8cjbsh0dxp6"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'chdir
- (lambda _ (chdir "tests/cloudpickle_testpkg"))))))
- (home-page "https://github.com/cloudpipe/cloudpickle")
- (synopsis "Extended pickling support for Python objects")
- (description
- "Cloudpickle makes it possible to serialize Python constructs not
- supported by the default pickle module from the Python standard library. It
- is especially useful for cluster computing where Python expressions are
- shipped over the network to execute on remote hosts, possibly close to the
- data.")
- (license license:bsd-3)))
- (define-public python-cloudpickle
- (package
- (inherit python-cloudpickle-testpkg)
- (name "python-cloudpickle")
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (if tests?
- (invoke "pytest" "-s" "-vv")
- (format #t "test suite not run~%")))))))
- (native-inputs
- (list ;; For tests.
- python-cloudpickle-testpkg python-psutil python-pytest
- python-tornado-6))
- (home-page "https://github.com/cloudpipe/cloudpickle")
- (synopsis "Extended pickling support for Python objects")
- (description
- "Cloudpickle makes it possible to serialize Python constructs not
- supported by the default pickle module from the Python standard library. It
- is especially useful for cluster computing where Python expressions are
- shipped over the network to execute on remote hosts, possibly close to the
- data.")
- (properties `((python2-variant . ,(delay python2-cloudpickle))))
- (license license:bsd-3)))
- (define-public python2-cloudpickle
- (let ((base (package-with-python2 (strip-python2-variant python-cloudpickle))))
- (package/inherit base
- (version "1.3.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "cloudpickle" version))
- (sha256
- (base32
- "0lx7gy9clp427qwcm7b23zdsldpr03gy3vxxhyi8fpbhwz859brq"))))
- (native-inputs
- `(;; For tests.
- ("python-mock" ,python2-mock)
- ("python-psutil" ,python2-psutil)
- ("python-pytest" ,python2-pytest)
- ("python-tornado" ,python2-tornado)))
- (propagated-inputs
- `(("python-futures" ,python2-futures)
- ,@(package-propagated-inputs base))))))
- (define-public python-locket
- (package
- (name "python-locket")
- (version "0.2.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "locket" version))
- (sha256
- (base32
- "1d4z2zngrpqkrfhnd4yhysh66kjn4mblys2l06sh5dix2p0n7vhz"))))
- (build-system python-build-system)
- (home-page "https://github.com/mwilliamson/locket.py")
- (synopsis "File-based locks for Python")
- (description
- "Locket implements a lock that can be used by multiple processes provided
- they use the same path.")
- (license license:bsd-2)))
- (define-public python2-locket
- (package-with-python2 python-locket))
- (define-public python-blosc
- (package
- (name "python-blosc")
- (version "1.5.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "blosc" version))
- (sha256
- (base32
- "1cm91c6r431yla2mbs4895bgiianjf30dfz14vvv99dslygd65jw"))))
- (build-system python-build-system)
- ;; FIXME: all tests pass, but then this error is printed:
- ;; TypeError: calling <function run at 0x7ffff2568d90> returned None, not a test
- (arguments '(#:tests? #f))
- (propagated-inputs
- (list python-numpy))
- (home-page "https://github.com/blosc/python-blosc")
- (synopsis "Python wrapper for the Blosc data compressor library")
- (description "Blosc is a high performance compressor optimized for binary
- data. It has been designed to transmit data to the processor cache faster
- than the traditional, non-compressed, direct memory fetch approach via a
- @code{memcpy()} system call.
- Blosc works well for compressing numerical arrays that contains data with
- relatively low entropy, like sparse data, time series, grids with
- regular-spaced values, etc.
- This Python package wraps the Blosc library.")
- (license license:bsd-3)))
- (define-public python2-blosc
- (package-with-python2 python-blosc))
- (define-public python-partd
- (package
- (name "python-partd")
- (version "1.2.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "partd" version))
- (sha256
- (base32
- "1sy3vdfyyx3bc5590zb7gwpsmimqz8m992x9hsydq8nmhixqjrxa"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-blosc
- python-locket
- python-numpy
- python-pandas
- python-pyzmq
- python-toolz))
- (home-page "https://github.com/dask/partd/")
- (synopsis "Appendable key-value storage")
- (description "Partd stores key-value pairs. Values are raw bytes. We
- append on old values. Partd excels at shuffling operations.")
- (license license:bsd-3)))
- (define-public python-fsspec
- (package
- (name "python-fsspec")
- (version "0.6.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "fsspec" version))
- (sha256
- (base32
- "1g9ba8v04s1nrh7pvzfm2md7ivl2mrz3hcq3y9d1a44gd62h17zj"))))
- (build-system python-build-system)
- (arguments '(#:tests? #f)) ; there are none
- (home-page "https://github.com/intake/filesystem_spec")
- (synopsis "File-system specification")
- (description "The purpose of this package is to produce a template or
- specification for a file-system interface, that specific implementations
- should follow, so that applications making use of them can rely on a common
- behavior and not have to worry about the specific internal implementation
- decisions with any given backend.")
- (license license:bsd-3)))
- ;; Note: Remember to update python-distributed when updating dask.
- (define-public python-dask
- (package
- (name "python-dask")
- (version "2021.11.2")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/dask/dask/")
- (commit "5a8275dd53193b47457cdfadc0e2356ea3eb6ccd")))
- (file-name (git-file-name name version))
- (sha256
- (base32 "0h8w7c03mn6s2mmwbqd2sqay3k4vaqiwlsbvliziggw28042zfw2"))
- (snippet
- ;; Delete generated copy of python-versioneer. We recreate it below.
- '(delete-file "versioneer.py"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'versioneer
- (lambda _
- (invoke "versioneer" "install")))
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests? (invoke "pytest" "-vv")))))))
- (propagated-inputs
- (list python-cloudpickle
- python-fsspec
- python-numpy
- python-packaging
- python-pandas
- python-partd
- python-toolz
- python-pyyaml))
- (native-inputs
- (list python-pytest python-pytest-runner python-pytest-rerunfailures
- python-versioneer))
- (home-page "https://github.com/dask/dask/")
- (synopsis "Parallel computing with task scheduling")
- (description
- "Dask is a flexible parallel computing library for analytics. It
- consists of two components: dynamic task scheduling optimized for computation,
- and large data collections like parallel arrays, dataframes, and lists that
- extend common interfaces like NumPy, Pandas, or Python iterators to
- larger-than-memory or distributed environments. These parallel collections
- run on top of the dynamic task schedulers.")
- (license license:bsd-3)))
- (define-public python-ilinkedlist
- (package
- (name "python-ilinkedlist")
- (version "0.4.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "ilinkedlist" version))
- (sha256
- (base32
- "0nrw4sr3afldrp7073hvc0rgdz282s0l819jdmj1i6nn05v33h0l"))))
- (build-system python-build-system)
- (native-inputs (list python-pytest))
- (inputs (list python))
- (home-page "https://github.com/luther9/ilinkedlist-py")
- (synopsis "Immutable linked list library")
- (description
- "This is a implementation of immutable linked lists for Python. It
- contains @code{nil} (the empty linked list) and a @code{Pair} class for nodes.
- Since a linked list is treated as immutable, it is hashable, and its length
- can be retrieved in constant time. Some of the terminology is inspired by
- LISP. It is possible to create an improper list by creating a @code{Pair}
- with a non-list @code{cdr}.")
- (license license:gpl3+)))
- (define-public python-readlike
- (package
- (name "python-readlike")
- (version "0.1.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "readlike" version))
- (sha256
- (base32 "027w8fvi50ksl57q0a7kb5zvmq8jxaawnviib1jdqw0p3igvm1j4"))))
- (build-system python-build-system)
- (home-page "https://github.com/jangler/readlike")
- (synopsis "GNU Readline-like line editing module")
- (description
- "This Python module provides line editing functions similar to the default
- Emacs-style ones of GNU Readline. Unlike the Python standard library's
- @code{readline} package, this one allows access to those capabilities in settings
- outside of a standard command-line interface. It is especially well-suited to
- interfacing with Urwid, due to a shared syntax for describing key inputs.
- Currently, all stateless Readline commands are implemented. Yanking and history
- are not supported.")
- (license license:expat)))
- (define-public python2-readlike
- (package-with-python2 python-readlike))
- (define-public python-reparser
- (package
- (name "python-reparser")
- (version "1.4.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "ReParser" version))
- (sha256
- (base32 "0nniqb69xr0fv7ydlmrr877wyyjb61nlayka7xr08vlxl9caz776"))))
- (build-system python-build-system)
- (home-page "https://github.com/xmikos/reparser")
- (synopsis "Simple lexer/parser for inline markup based on regular expressions")
- (description
- "This Python library provides a simple lexer/parser for inline markup based
- on regular expressions.")
- (license license:expat)))
- (define-public python2-reparser
- (let ((reparser (package-with-python2
- (strip-python2-variant python-reparser))))
- (package/inherit reparser
- (propagated-inputs
- `(("python2-enum34" ,python2-enum34)
- ,@(package-propagated-inputs reparser))))))
- (define-public python-retrying
- (package
- (name "python-retrying")
- (version "1.3.3")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/rholder/retrying")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "1kqipkbdaw5s1xg0gi29awm03vp1x8dz24pjidgxagvkvrjpzhi7"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-six))
- (home-page "https://github.com/rholder/retrying")
- (synopsis "Library for adding retry behavior")
- (description "Retrying is a general-purpose retrying library to simplify
- the task of adding retry behavior to just about anything.
- Features:
- @itemize
- @item Generic Decorator API.
- @item Specify stop condition (i.e. limit by number of attempts).
- @item Specify wait condition (i.e. exponential backoff sleeping between attempts).
- @item Customize retrying on Exceptions.
- @item Customize retrying on expected returned result.
- @end itemize")
- (license license:asl2.0)))
- (define-public python-pre-commit
- (package
- (name "python-pre-commit")
- (version "2.10.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pre_commit" version))
- (sha256
- (base32 "1ycf6wpxrhxhdzz0vpryhbdxlwik5khgcvp3hxwvfr447a6k84zl"))))
- (build-system python-build-system)
- (arguments
- ;; Tests fail with "AttributeError: module 'pre_commit.resources' has no
- ;; attribute 'empty_template_setup'".
- `(#:tests? #false))
- (propagated-inputs
- (list python-cfgv
- python-identify
- python-importlib-metadata
- python-importlib-resources
- python-nodeenv
- python-pyyaml
- python-toml
- python-virtualenv))
- (home-page "https://github.com/pre-commit/pre-commit")
- (synopsis "Framework for managing multi-language pre-commit hooks")
- (description
- "This package provides a framework for managing and maintaining
- multi-language pre-commit hooks.")
- (license license:expat)))
- (define-public python-precis-i18n
- (package
- (name "python-precis-i18n")
- (version "1.0.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "precis_i18n" version))
- (sha256
- (base32
- "1qfb78zpx565vqkg0xhx75pna9sc35m370vpcz82982c8ix3ypyz"))))
- (build-system python-build-system)
- (home-page "https://github.com/byllyfish/precis_i18n")
- (synopsis "Implementation of the PRECIS framework")
- (description
- "This module implements the PRECIS Framework as described in RFC 8264,
- RFC 8265 and RFC 8266.")
- (license license:expat)))
- (define-public python-absl-py
- (package
- (name "python-absl-py")
- (version "0.6.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "absl-py" version))
- (sha256
- (base32
- "1mp9lk0b2qa37b7y6ak4lvf6ifw2ylyy6bkf9ik77md3j4xrwlc7"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-six))
- (home-page "https://github.com/abseil/abseil-py")
- (synopsis "Abseil Python common libraries")
- (description
- "This package provides the Abseil Python Common Libraries, a collection
- of Python libraries for building Python applications.")
- (license license:asl2.0)))
- (define-public python-astor
- (package
- (name "python-astor")
- (version "0.8.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "astor" version))
- (sha256
- (base32
- "0ppscdzzvxpznclkmhhj53iz314x3pfv4yc7c6gwxqgljgdgyvka"))))
- (build-system python-build-system)
- ;; FIXME: There are two errors and two test failures.
- (arguments `(#:tests? #f))
- (home-page "https://github.com/berkerpeksag/astor")
- (synopsis "Read and write Python ASTs")
- (description "Astor is designed to allow easy manipulation of Python
- source via the Abstract Syntax Tree.")
- (license license:bsd-3)))
- (define-public python2-astor
- (package-with-python2 python-astor))
- (define-public python-astunparse
- (package
- (name "python-astunparse")
- (version "1.6.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "astunparse" version))
- (sha256
- (base32 "0rzbc44xcvzjhhiy7wac96mgal5mcjz1mfq8rmvgswskf4kf9cys"))))
- (build-system python-build-system)
- (arguments '(#:tests? #f)) ; there are none
- (propagated-inputs
- (list python-six python-wheel))
- (home-page "https://github.com/simonpercivall/astunparse")
- (synopsis "AST unparser for Python")
- (description "This package provides an AST unparser for Python. It is a
- factored out version of @code{unparse} found in the Python source
- distribution.")
- (license license:bsd-3)))
- (define-public python-gast
- (package
- (name "python-gast")
- (version "0.5.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "gast" version))
- (sha256
- (base32 "1xv77kzghiqfm4fnvlv0p878ma152dvcfkly3jij89lqigxcw7zq"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-astunparse))
- (home-page "https://pypi.org/project/gast/")
- (synopsis "Generic Python AST that abstracts the underlying Python version")
- (description
- "GAST provides a compatibility layer between the AST of various Python
- versions, as produced by @code{ast.parse} from the standard @code{ast}
- module.")
- (license license:bsd-3)))
- (define-public python-wikidata
- (package
- (name "python-wikidata")
- (version "0.6.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "Wikidata" version))
- (sha256
- (base32
- "08nlnydddfp1jj0cdmshvld1irzngbp3dij928wqsg9ziklm6mw9"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-babel))
- (home-page "https://github.com/dahlia/wikidata")
- (synopsis "Wikidata client library")
- (description
- "This package provides a Python interface to
- @url{https://www.wikidata.org/, Wikidata}.")
- (properties '((upstream-name . "Wikidata")))
- (license license:gpl3+)))
- (define-public python-doctest-ignore-unicode
- (package
- (name "python-doctest-ignore-unicode")
- (version "0.1.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "doctest-ignore-unicode" version))
- (sha256
- (base32
- "1m9aa4qnyj21lbq4sbvmv1vcz7zksss4rz37ddf2hxv4hk8b547w"))))
- (build-system python-build-system)
- (native-inputs
- (list python-nose))
- (home-page "https://github.com/gnublade/doctest-ignore-unicode")
- (synopsis "Ignore Unicode literal prefixes in doctests")
- (description
- "This package adds support for a flag to ignore Unicode literal prefixes
- in doctests.")
- (license license:asl2.0)))
- (define-public python-attr
- (package
- (name "python-attr")
- (version "0.3.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "attr" version))
- (sha256
- (base32
- "0pbpskvxp5hzdvcaf766ljwpckshir8sf7z6jqji6zyib20594ch"))))
- (build-system python-build-system)
- (home-page "https://github.com/denis-ryzhkov/attr")
- (synopsis "Decorator for attributes of target function or class")
- (description "Simple decorator to set attributes of target function or
- class in a @acronym{DRY, Don't Repeat Yourself} way.")
- (license license:expat)))
- (define-public python-construct
- (package
- (name "python-construct")
- (version "2.10.56")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "construct" version))
- (sha256
- (base32
- "0q86jjzsvy835h3c8pjj4619vbp7ihfg8njmyw86ym4qrpni7flp"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f)) ; No tests exist.
- (propagated-inputs
- (list python-extras python-arrow python-numpy python-ruamel.yaml))
- (home-page "https://construct.readthedocs.io")
- (synopsis "Declarative and symmetrical parser and builder for binary data")
- (description
- "This package provides both simple, atomic constructs (such as
- integers of various sizes), as well as composite ones which allow you
- form hierarchical and sequential structures of increasing complexity.
- It features bit and byte granularity, easy debugging and testing, an
- easy-to-extend subclass system, and lots of primitive constructs to
- make your work easier.")
- (license license:expat)))
- (define-public python-outcome
- (package
- (name "python-outcome")
- (version "1.0.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "outcome" version))
- (sha256
- (base32 "0vxn04vspmlkkyijjkjnsc46f93ki8g62hr7ag10zpd7ic324y7w"))))
- (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"))))))
- (native-inputs
- (list python-pytest python-pytest-cov python-pytest-asyncio))
- (propagated-inputs
- (list python-async-generator python-attrs))
- (home-page "https://github.com/python-trio/outcome")
- (synopsis "Capture the outcome of Python function calls")
- (description
- "Capture the outcome of Python function calls. Extracted from the Trio
- project.")
- ;; Either license applies.
- (license (list license:expat license:asl2.0))))
- (define-public python-trio
- (package
- (name "python-trio")
- (version "0.19.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "trio" version))
- (sha256
- (base32 "1qgg4zhca81dxc1nlmcr5pl1bclmvdp3niqbyslwxs65bs732pl9"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-before 'check 'change-home
- (lambda _
- ;; Tests require a writable home.
- (setenv "HOME" "/tmp")
- #t))
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "pytest" "-vv" "-k"
- (string-append
- ;; This test times out.
- "not test_ki_protection_works"
- ;; Assertion errors.
- " and not test_guest_mode_ki"
- " and not test_run_in_trio_thread_ki"
- " and not test_simple_cancel_scope_usage_doesnt_create_cyclic_garbage"
- " and not test_nursery_cancel_doesnt_create_cyclic_garbage"
- " and not test_locals_destroyed_promptly_on_cancel"
- ;; These try to raise KeyboardInterrupt which does not work
- ;; in the build environment.
- " and not test_ki_self"
- " and not test_ki_wakes_us_up"
- ;; Failure in name resolution.
- " and not test_getnameinfo"
- " and not test_SocketType_resolve"
- ;; OSError: protocol not found.
- " and not test_getprotobyname"))))))))
- (native-inputs
- (list python-astor
- python-ipython
- python-jedi
- python-pylint
- python-pyopenssl
- python-pytest
- python-pytest-cov
- python-trustme))
- (propagated-inputs
- (list python-async-generator
- python-attrs
- python-idna
- python-outcome
- python-sniffio
- python-sortedcontainers))
- (home-page "https://github.com/python-trio/trio")
- (synopsis "Friendly Python library for async concurrency and I/O")
- (description
- "Trio strives to be a production-quality, async/await-native I/O library
- for Python. Like all async libraries, its main purpose is to help you write
- programs that do multiple things at the same time with parallelized I/O.")
- ;; Either license applies.
- (license (list license:expat license:asl2.0))))
- (define-public python-trio-typing
- (package
- (name "python-trio-typing")
- (version "0.5.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "trio-typing" version))
- (sha256
- (base32 "1yvlj4vf3wyvp16dw6vyfm4i2idm8lvdc3fvjhi6mhm62zv7s07j"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "pytest" "-vv"))))))
- (native-inputs
- (list python-attrs python-pytest))
- (propagated-inputs
- (list python-mypy python-mypy-extensions python-trio
- python-typing-extensions))
- (home-page "https://github.com/python-trio/trio-typing")
- (synopsis "Static type checking support for Trio and related projects")
- (description
- "This package provides:
- @itemize
- @item PEP 561 typing stubs packages for the Trio project packages:
- @itemize
- @item trio (@code{trio-stubs})
- @item outcome (@code{outcome-stubs})
- @item async_generator (@code{async_generator-stubs})
- @end itemize
- @item A package @code{trio_typing} containing types that Trio programs often
- want to refer to (@code{AsyncGenerator[Y, S]} and @code{TaskStatus[T])} and
- a mypy plugin that smooths over some limitations in the basic type hints.
- @end itemize")
- ;; Either license applies.
- (license (list license:expat license:asl2.0))))
- (define-public python-trio-websocket
- (package
- (name "python-trio-websocket")
- (version "0.9.2")
- (source
- (origin
- (method git-fetch) ;no tests in pypi archive
- (uri (git-reference
- (url "https://github.com/HyperionGray/trio-websocket")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32 "1yk2ak991kbl30xg8ldpggack1lwkizd7s5cpr28ir34z8iyjnpi"))))
- (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 (list python-pytest python-pytest-trio python-trustme))
- (propagated-inputs (list python-async-generator python-trio python-wsproto))
- (home-page "https://github.com/HyperionGray/trio-websocket")
- (synopsis "WebSocket library for Trio")
- (description "This library implements both server and client aspects of
- the @url{https://tools.ietf.org/html/rfc6455, the WebSocket protocol},
- striving for safety, correctness, and ergonomics. It is based on the
- @url{https://wsproto.readthedocs.io/en/latest/, wsproto project}, which is a
- @url{https://sans-io.readthedocs.io/, Sans-IO} state machine that implements
- the majority of the WebSocket protocol, including framing, codecs, and events.
- This library handles I/O using @url{https://trio.readthedocs.io/en/latest/,
- the Trio framework}.")
- (license license:expat)))
- (define-public python-humanize
- (package
- (name "python-humanize")
- (version "0.5.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "humanize" version))
- (sha256
- (base32
- "06dvhm3k8lf2rayn1gxbd46y0fy1db26m3h9vrq7rb1ib08mfgx4"))))
- (arguments
- '(#:tests? #f)) ; tests not in pypi archive
- (build-system python-build-system)
- (home-page "https://github.com/jmoiron/humanize")
- (synopsis "Print numerical information in a human-readable form")
- (description "This package provides a Python module that displays numbers
- and dates in \"human readable\" forms. For example, it would display
- \"12345591313\" as \"12.3 billion\".")
- (license license:expat)))
- (define-public python-txaio
- (package
- (name "python-txaio")
- (version "18.8.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "txaio" version))
- (sha256
- (base32
- "1zmpdph6zddgrnkkcykh6qk5s46l7s5mzfqrh82m4b5iffn61qv7"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-twisted python-six))
- (home-page "https://github.com/crossbario/txaio")
- (synopsis "Compatibility layer between Python asyncio and Twisted")
- (description "Txaio provides a compatibility layer between the Python
- @code{asyncio} module and @code{Twisted}.")
- (license license:expat)))
- (define-public python-toolshed
- (package
- (name "python-toolshed")
- (version "0.4.6")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "toolshed" version))
- (sha256
- (base32
- "14zvz51gzf9i1i3d1sj363ba4rksl6lcf4lz1arl8hpqgcbir8r3"))))
- (build-system python-build-system)
- (native-inputs
- (list python-nose))
- (home-page "https://github.com/brentp/toolshed/")
- (synopsis "Collection of modules and functions for working with data")
- (description "This is a collection of well-tested, simple modules and
- functions that aim to reduce boilerplate when working with data.")
- (license license:bsd-2)))
- (define-public python-annoy
- (package
- (name "python-annoy")
- (version "1.15.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "annoy" version))
- (sha256
- (base32
- "1rxn6snn0r32r07g45hdjhh8aa1xzx6fjrm8g62d8vzp46z7rzrp"))))
- (build-system python-build-system)
- (native-inputs
- (list python-nose))
- (home-page "https://github.com/spotify/annoy/")
- (synopsis "Approximate nearest neighbors library")
- (description
- "Annoy is a C++ library with Python bindings to search for points in
- space that are close to a given query point. It also creates large read-only
- file-based data structures that are @code{mmap}ped into memory so that many
- processes may share the same data.")
- (license license:asl2.0)))
- (define-public python-croniter
- (package
- (name "python-croniter")
- (version "0.3.34")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "croniter" version))
- (sha256
- (base32
- "0r79cx4v2dw4hzr0annkkxxis46c8hivq61sr39z6p7lcjsbk1ki"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-dateutil python-natsort))
- (home-page "https://github.com/kiorky/croniter")
- (synopsis "Iterate datetime objects with cron-like syntax")
- (description
- "@code{croniter} provides iteration for datetime object with cron-like
- format.")
- (license license:expat)))
- (define-public python-crontab
- (package
- (name "python-crontab")
- (version "2.5.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri name version))
- (sha256
- (base32 "0cccrqc10r8781ba81x8r2frs3pl2m4hkm599k5358ak0xr7xgjb"))))
- (build-system python-build-system)
- (arguments
- ;; Comptability tests fail so they are disabled.
- `(#:tests? #f))
- (inputs
- (list python-dateutil))
- (home-page "https://gitlab.com/doctormo/python-crontab/")
- (synopsis "Module for reading and writing crontab files")
- (description "This Python module can read, write crontab files, and
- access the system cron automatically and simply using a direct API.")
- (license license:lgpl3+)))
- (define-public python-pylzma
- (package
- (name "python-pylzma")
- (version "0.5.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pylzma" version))
- (sha256
- (base32
- "074anvhyjgsv2iby2ql1ixfvjgmhnvcwjbdz8gk70xzkzcm1fx5q"))))
- (build-system python-build-system)
- (home-page "https://www.joachim-bauch.de/projects/pylzma/")
- (synopsis "Python bindings for the LZMA library by Igor Pavlov")
- (description "This package provides Python bindings for the LZMA library
- by Igor Pavlov.")
- (license license:lgpl2.1+)))
- (define-public python2-pylzma
- (package-with-python2 python-pylzma))
- (define-public python-ifaddr
- (package
- (name "python-ifaddr")
- (version "0.1.7")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "ifaddr" version))
- (sha256
- (base32
- "150sxdlicwrphmhnv03ykxplyd2jdrxz0mikgnivavgilrn8m7hz"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _ (invoke "nosetests"))))))
- (native-inputs
- (list python-nose))
- (home-page "https://github.com/pydron/ifaddr")
- (synopsis "Network interface and IP address enumeration library")
- (description "This package provides a network interface and IP address
- enumeration library in Python.")
- (license license:expat)))
- (define-public python-zeroconf
- (package
- (name "python-zeroconf")
- (version "0.38.1")
- (source
- (origin
- (method git-fetch) ; no tests in PyPI release
- (uri (git-reference
- (url "https://github.com/jstasiak/python-zeroconf")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32 "1p1a0ywlg5sq0ilcphmz9h4kayscz0q1lyfk57j7mwxyx4gl9cpi"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key inputs outputs tests? #:allow-other-keys)
- (when tests?
- (add-installed-pythonpath inputs outputs)
- (invoke "python" "-m" "pytest" "-k"
- (string-append
- ;; Networking isn't available for these tests.
- "not test_integration_with_listener_ipv6"
- " and not test_launch_and_close_v4_v6"
- " and not test_launch_and_close_context_manager"
- " and not test_launch_and_close"
- " and not test_close_multiple_times"))))))))
- (native-inputs
- (list python-pytest))
- (propagated-inputs
- (list python-ifaddr))
- (home-page "https://github.com/jstasiak/python-zeroconf")
- (synopsis "Pure Python mDNS service discovery")
- (description "Pure Python multicast DNS (mDNS) service discovery library
- (Bonjour/Avahi compatible).")
- (license license:lgpl2.1+)))
- (define-public python2-zeroconf
- (package
- (name "python2-zeroconf")
- ;; This is the last version that supports Python 2.x.
- (version "0.19.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "zeroconf" version))
- (sha256
- (base32
- "0ykzg730n915qbrq9bn5pn06bv6rb5zawal4sqjyfnjjm66snkj3"))))
- (build-system python-build-system)
- (arguments
- `(#:python ,python-2
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'patch-requires
- (lambda* (#:key inputs #:allow-other-keys)
- (substitute* "setup.py"
- (("enum-compat")
- "enum34"))
- #t)))))
- (native-inputs
- `(("python2-six" ,python2-six)
- ("python2-enum32" ,python2-enum34)
- ("python2-netifaces" ,python2-netifaces)
- ("python2-typing" ,python2-typing)))
- (home-page "https://github.com/jstasiak/python-zeroconf")
- (synopsis "Pure Python mDNS service discovery")
- (description
- "Pure Python multicast DNS (mDNS) service discovery library (Bonjour/Avahi
- compatible).")
- (license license:lgpl2.1+)))
- (define-public python-bsddb3
- (package
- (name "python-bsddb3")
- (version "6.2.9")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "bsddb3" version))
- (sha256
- (base32 "00bqdsfx8jgmfz5bgkx10nlw5bfsw11a86f91zkl53snvk45xl3h"))))
- (build-system python-build-system)
- (inputs
- (list bdb))
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'configure-locations
- (lambda* (#:key inputs #:allow-other-keys)
- (setenv "BERKELEYDB_DIR" (assoc-ref inputs "bdb"))
- (setenv "YES_I_HAVE_THE_RIGHT_TO_USE_THIS_BERKELEY_DB_VERSION" "1")
- #t))
- (replace 'check
- (lambda _
- (invoke "python3" "test3.py" "-v"))))))
- (home-page "https://www.jcea.es/programacion/pybsddb.htm")
- (synopsis "Python bindings for Oracle Berkeley DB")
- (description
- "This module provides a nearly complete wrapping of the Oracle/Sleepycat
- C API for the Database Environment, Database, Cursor, Log Cursor, Sequence and
- Transaction objects, and each of these is exposed as a Python type in the
- bsddb3.db module. The database objects can use various access methods: btree,
- hash, recno, and queue. Complete support of Berkeley DB distributed
- transactions. Complete support for Berkeley DB Replication Manager.
- Complete support for Berkeley DB Base Replication. Support for RPC.")
- (license license:bsd-3)))
- (define-public python-dbfread
- (package
- (name "python-dbfread")
- (version "2.0.7")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "dbfread" version))
- (sha256
- (base32
- "0gdpwdzf1fngsi6jrdyj4qdf6cr7gnnr3zp80dpkzbgz0spskj07"))))
- (build-system python-build-system)
- (native-inputs
- (list python-pytest))
- (home-page "https://dbfread.readthedocs.io")
- (synopsis "Read DBF Files with Python")
- (description
- "This library reads DBF files and returns the data as native Python data
- types for further processing. It is primarily intended for batch jobs and
- one-off scripts.")
- (license license:expat)))
- (define-public python-cached-property
- (package
- (name "python-cached-property")
- (version "1.5.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "cached-property" version))
- (sha256
- (base32
- "0c51i6yzg6dlq6zhk4c6nv33mg8gv05kkan36k9b5jzf71c7b9cz"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- ;; https://github.com/pydanny/cached-property/issues/131
- ;; recent versions of freezegun break one test
- (add-after 'unpack 'disable-broken-test
- (lambda _
- (substitute* "tests/test_cached_property.py"
- (("def test_threads_ttl_expiry\\(self\\)" m)
- (string-append "@unittest.skip(\"Disabled by Guix\")\n"
- " " m)))
- #t)))))
- (native-inputs
- (list python-freezegun))
- (home-page
- "https://github.com/pydanny/cached-property")
- (synopsis
- "Decorator for caching properties in classes")
- (description
- "This package provides a decorator which makes caching
- time-or-computationally-expensive properties quick and easy and works in Python
- 2 or 3.")
- (license license:bsd-3)))
- (define-public python-folium
- (package
- (name "python-folium")
- (version "0.12.1")
- (source
- (origin
- ;; PyPI has a ".whl" file but not a proper source release.
- ;; Thus, fetch code from Git.
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/python-visualization/folium")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "1q05pzca3wfwgnbg03l3bagnhh348yx68w4aa91rg3g8zlviwjz1"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-branca python-jinja2 python-numpy python-requests))
- (native-inputs
- (list python-pytest))
- (home-page "https://github.com/python-visualization/folium")
- (synopsis "Make beautiful maps with Leaflet.js & Python")
- (description "@code{folium} makes it easy to visualize data that’s been
- manipulated in Python on an interactive leaflet map. It enables both the
- binding of data to a map for @code{choropleth} visualizations as well as
- passing rich vector/raster/HTML visualizations as markers on the map.
- The library has a number of built-in tilesets from OpenStreetMap, Mapbox, and
- Stamen, and supports custom tilesets with Mapbox or Cloudmade API keys. It
- supports Image, Video, GeoJSON and TopoJSON overlays.")
- (license license:expat)))
- (define-public jube
- (package
- ;; This is a command-line tool, so no "python-" prefix.
- (name "jube")
- (version "2.2.2")
- (source (origin
- (method url-fetch)
- (uri (string-append
- "http://apps.fz-juelich.de/jsc/jube/jube2/download.php?version="
- version))
- (sha256
- (base32
- "0xq4k1q63s1p6swgyp61vahlrd1fqmgbm0gm5kpj8ikwy0yc0nqk"))
- (file-name (string-append "jube-" version ".tar.gz"))))
- (build-system python-build-system)
- (home-page "https://apps.fz-juelich.de/jsc/jube/jube2/docu/index.html")
- (synopsis "Benchmarking environment")
- (description
- "JUBE helps perform and analyze benchmarks in a systematic way. For each
- benchmarked application, benchmark data is stored in a format that allows JUBE
- to deduct the desired information. This data can be parsed by automatic pre-
- and post-processing scripts that draw information and store it more densely
- for manual interpretation.")
- (license license:gpl3+)))
- (define-public python-pyroutelib3
- (package
- (name "python-pyroutelib3")
- (version "1.3.post1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pyroutelib3" version))
- (sha256
- (base32
- "1hpbydpn2alyswiajfbvhzq4c7f36vdmvxy91hgv8l1lb2g2vfrj"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-dateutil))
- (home-page "https://github.com/MKuranowski/pyroutelib3")
- (synopsis "Library for simple routing on OSM data")
- (description "Library for simple routing on OSM data")
- (license license:gpl3+)))
- (define-public python-bibtexparser
- (package
- (name "python-bibtexparser")
- (version "1.1.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "bibtexparser" version))
- (sha256
- (base32
- "0zwhfkrzf3n5847dbnfng92k7ak199l9v6x6ax3dgdidfpm6d2fz"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-pyparsing))
- (native-inputs
- (list python-future))
- (home-page "https://github.com/sciunto-org/python-bibtexparser")
- (synopsis "Python library to parse BibTeX files")
- (description "BibtexParser is a Python library to parse BibTeX files.")
- (license (list license:bsd-3 license:lgpl3))))
- (define-public python-distro
- (package
- (name "python-distro")
- (version "1.6.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "distro" version))
- (sha256
- (base32
- "09441261dd3c8b2gv15vhw1cryzg60lmgpkk07v6hpwwkyhfbxc3"))))
- (build-system python-build-system)
- (native-inputs
- (list python-pytest))
- (home-page "https://github.com/nir0s/distro")
- (synopsis
- "OS platform information API")
- (description
- "@code{distro} provides information about the OS distribution it runs on,
- such as a reliable machine-readable ID, or version information.
- It is the recommended replacement for Python's original
- `platform.linux_distribution` function (which will be removed in Python 3.8).
- @code{distro} also provides a command-line interface to output the platform
- information in various formats.")
- (license license:asl2.0)))
- (define-public python-cairosvg
- (package
- (name "python-cairosvg")
- (version "2.5.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "CairoSVG" version))
- (sha256
- (base32 "1ylsisha2cc4w0yydxwhy7idkfw1inl9fsipxsrm7vyby080vi9z"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _ (invoke "pytest"))))))
- (propagated-inputs
- (list python-cairocffi python-cssselect2 python-defusedxml
- python-pillow python-tinycss2))
- (native-inputs
- (list python-pytest-flake8 python-pytest-isort python-pytest-runner))
- (home-page "https://cairosvg.org/")
- (synopsis "SVG to PDF/PS/PNG converter based on Cairo")
- (description "CairoSVG is a SVG converter based on Cairo. It can export
- SVG files to PDF, PostScript and PNG files. The main part of CairoSVG is a
- SVG parser, trying to follow the SVG 1.1 recommendation from the W3C. Once
- parsed, the result is drawn to a Cairo surface that can be exported to
- qvarious formats: PDF, PostScript, PNG and even SVG.")
- (license license:lgpl3+)))
- (define-public python-pyphen
- (package
- (name "python-pyphen")
- (version "0.10.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "Pyphen" version))
- (sha256
- (base32 "0a1iwrgs4hzwzz60q4i1813kbzimhm0i4q8grh8vqkxhnkgj36vi"))))
- (build-system python-build-system)
- ;; TODO: Use the Guix system hyphenation packages hyphen-* rather than the
- ;; embedded set provided by upstream - like Debian does.
- (home-page "https://github.com/Kozea/Pyphen")
- (synopsis "Pure Python module to hyphenate text")
- (description "Pyphen is a pure Python module to hyphenate text using
- existing Hunspell hyphenation dictionaries.")
- (license (list license:gpl2 license:lgpl2.1 license:mpl1.1))))
- (define-public python-intelhex
- (package
- (name "python-intelhex")
- (version "2.3.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "intelhex" version))
- (sha256
- (base32
- "14q04p6qs47ab9w55232ylrdn4wm9rswz36s6x999x0rlxhp6aw9"))))
- (build-system python-build-system)
- (home-page "https://pypi.org/project/IntelHex/")
- (synopsis "Python library for Intel HEX files manipulations")
- (description "The Intel HEX file format is widely used in microprocessors
- and microcontrollers area (embedded systems etc.) as the de facto standard for
- representation of code to be programmed into microelectronic devices. This
- package provides an intelhex Python library to read, write, create from
- scratch and manipulate data from Intel HEX file format. It also includes
- several convenience Python scripts, including \"classic\" hex2bin and bin2hex
- converters and more, those based on the library itself.")
- (license license:bsd-3)))
- (define-public python-pykwalify
- (package
- (name "python-pykwalify")
- (version "1.7.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pykwalify" version))
- (sha256
- (base32
- "1cnfzkg1b01f825ikpw2fhjclf9c8akxjfrbd1vc22x1lg2kk2vy"))))
- (build-system python-build-system)
- (arguments '(#:tests? #f)) ;missing dependencies
- (propagated-inputs
- (list python-dateutil python-docopt python-pyyaml))
- (home-page "https://github.com/grokzen/pykwalify")
- (synopsis
- "Python lib/cli for JSON/YAML schema validation")
- (description
- "This package provides a parser, schema validator, and data binding tool
- for YAML and JSON.")
- (license license:expat)))
- (define-public python-dbusmock
- (package
- (name "python-dbusmock")
- (version "0.25.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "python-dbusmock" version))
- (sha256
- (base32
- "1nwl0gzzds2g1w1gfxfzlgrkb5hr1rrdyn619ml25c6b1rjyfk3g"))))
- (build-system python-build-system)
- (arguments
- `(#:imported-modules (,@%python-build-system-modules
- (guix build syscalls))
- #:modules ((guix build python-build-system)
- (guix build syscalls)
- (guix build utils)
- (ice-9 match))
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'patch-paths
- (lambda* (#:key inputs #:allow-other-keys)
- (substitute* "tests/test_code.py"
- (("/bin/bash") (which "bash")))
- (substitute* "dbusmock/testcase.py"
- (("'dbus-daemon'")
- (string-append "'" (assoc-ref inputs "dbus")
- "/bin/dbus-daemon'")))))
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (match (primitive-fork)
- (0 ;child process
- (set-child-subreaper!)
- ;; Use tini so that signals are properly handled and
- ;; doubly-forked processes get reaped; otherwise,
- ;; python-dbusmock would waste time polling for the dbus
- ;; processes it spawns to be reaped, in vain.
- (execlp "tini" "--" "pytest" "-vv"))
- (pid
- (match (waitpid pid)
- ((_ . status)
- (unless (zero? status)
- (error "`pytest' exited with status"
- status))))))))))))
- (native-inputs
- (list dbus python-pytest tini which))
- (inputs
- (list dbus))
- (propagated-inputs
- (list python-dbus python-pygobject))
- (home-page "https://github.com/martinpitt/python-dbusmock")
- (synopsis "Python library for mock D-Bus objects")
- (description "python-dbusmock allows for the easy creation of mock objects on
- D-Bus. This is useful for writing tests for software which talks to D-Bus
- services such as upower, systemd, logind, gnome-session or others, and it is
- hard (or impossible without root privileges) to set the state of the real
- services to what you expect in your tests.")
- (license license:lgpl3+)))
- (define-public python-jsonplus
- (package
- (name "python-jsonplus")
- (version "0.8.0")
- (home-page "https://github.com/randomir/jsonplus")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "jsonplus" version))
- (sha256
- (base32
- "05yv3dw813zwas9snz124k2hki49y268b3mx0gj9w7v1nrjmglq1"))))
- (build-system python-build-system)
- ;; XXX: No tests on PyPI, and the repository has no tags.
- (arguments '(#:tests? #f))
- (propagated-inputs
- (list python-dateutil python-simplejson python-sortedcontainers))
- (synopsis "Serialize Python types to/from JSON")
- (description
- "This package provides functionality to serialize arbitrary data types
- to and from JSON. Common data types are implemented and it is easy to
- register custom encoders and decoders.")
- (license license:expat)))
- (define-public python-ujson
- (package
- (name "python-ujson")
- (version "4.0.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "ujson" version))
- (sha256
- (base32
- "0k9w0kypy7vlskzzp2vsjswaw8lbqdrplzkbflxki9vqwglsj5f6"))
- (modules '((guix build utils)))
- (snippet
- '(begin (delete-file-recursively "deps") #t))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'link-to-system-double-conversion
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((d-c (assoc-ref inputs "double-conversion")))
- (substitute* "setup.py"
- (("./deps/double-conversion/double-conversion\"")
- (string-append d-c "/include/double-conversion\""))
- (("-lstdc++" stdc)
- (string-append "-L" d-c "/lib\","
- " \"-ldouble-conversion\","
- " \"" stdc)))
- #t)))
- (replace 'check
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (add-installed-pythonpath inputs outputs)
- (invoke "pytest"))))))
- (native-inputs
- (list double-conversion python-setuptools-scm python-pytest))
- (home-page "https://github.com/ultrajson/ultrajson")
- (synopsis "Ultra fast JSON encoder and decoder for Python")
- (description
- "UltraJSON is an ultra fast JSON encoder and decoder written in pure C with
- bindings for Python 3.")
- (license license:bsd-3)))
- (define-public python-iocapture
- ;; The latest release is more than a year older than this commit.
- (let ((commit "fdc021c431d0840303908dfc3ca8769db383595c")
- (revision "1"))
- (package
- (name "python-iocapture")
- (version "0.1.2")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/oinume/iocapture")
- (commit commit)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "1mkbhqibxvgwg0p7slr8dfraa3g2s6bsayladhax2jccwj4kcndz"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (delete 'check)
- (add-after 'install 'check
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (add-installed-pythonpath inputs outputs)
- (invoke "py.test" "-v" "tests")
- #t)))))
- (propagated-inputs
- (list python-flexmock python-pytest python-pytest-cov python-six))
- (home-page "https://github.com/oinume/iocapture")
- (synopsis "Python capturing tool for stdout and stderr")
- (description
- "This package helps you to capture the standard out (stdout) and the
- standard error channel (stderr) in your program.")
- (license license:expat))))
- (define-public python-anyio
- (package
- (name "python-anyio")
- (version "3.3.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "anyio" version))
- (sha256
- (base32
- "0x03hsprdrs86wjjkj96zm2jswy3a5bgyrknyi58pzz5hdsscmxf"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'fix-compatibility
- (lambda _
- (substitute* "tests/test_taskgroups.py"
- (("import pytest")
- "import pytest\nimport _pytest\nfrom _pytest import logging")
- (("pytest.LogCaptureFixture")
- "_pytest.logging.LogCaptureFixture"))))
- (replace 'check
- (lambda* (#:key inputs outputs tests? #:allow-other-keys)
- (when tests?
- (add-installed-pythonpath inputs outputs)
- (invoke "pytest" "-vv" "-p" "no:asyncio"
- "-m" "not network"
- "-k"
- (string-append
- "not test_is_block_device"
- ;; These fail because of network (or specifically
- ;; IPv6 network) access.
- " and not test_accept"
- " and not test_accept_after_close"
- " and not test_close_during_receive"
- " and not test_close_from_other_task"
- " and not test_concurrent_receive"
- " and not test_concurrent_send"
- " and not test_connect_tcp_with_tls"
- " and not test_connect_tcp_with_tls_cert_check_fail"
- " and not test_connection_refused"
- " and not test_extra_attributes"
- " and not test_getaddrinfo"
- " and not test_getnameinfo"
- " and not test_happy_eyeballs"
- " and not test_iterate"
- " and not test_receive_after_close"
- " and not test_receive_timeout"
- " and not test_reuse_port"
- " and not test_run_process"
- " and not test_send_after_close"
- " and not test_send_after_eof"
- " and not test_send_after_peer_closed"
- " and not test_send_eof"
- " and not test_send_large_buffer"
- " and not test_send_receive"
- " and not test_socket_options"))))))))
- (propagated-inputs
- (list python-idna python-sniffio python-typing-extensions))
- (native-inputs
- (list python-coverage
- python-hypothesis
- python-iniconfig
- python-mock
- python-pytest-6
- python-pytest-mock
- python-pytest-trio
- python-setuptools-scm
- python-trustme
- python-uvloop))
- (home-page "https://github.com/agronholm/anyio")
- (synopsis "Compatibility layer for multiple asynchronous event loops")
- (description
- "AnyIO is an asynchronous networking and concurrency library that works
- on top of either asyncio or trio. It implements trio-like structured
- concurrency on top of asyncio, and works in harmony with the native SC of trio
- itself.")
- (license license:expat)))
- (define-public python-argh
- ;; There are 21 commits since the latest release containing important
- ;; improvements.
- (let ((commit "dcd3253f2994400a6a58a700c118c53765bc50a4")
- (revision "1"))
- (package
- (name "python-argh")
- (version (git-version "0.26.2" revision commit))
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/neithere/argh")
- (commit commit)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "1p5h3dnpbsjmqrvil96s71asc6i3gpinmbrabqmwnrsxprz7r3ns"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'patch-tests
- (lambda _
- ;; Fix test failures on Python 3.9.9+.
- ;; Taken via <https://github.com/neithere/argh/issues/148>.
- (substitute* "test/test_integration.py"
- (("assert run\\(p, '(bar|orig-name|nest bar)', exit=True\\)\
- \\.startswith\\('invalid choice'\\)" _ name)
- (string-append "assert 'invalid choice' in \
- run(p, '" name "', exit=True)")))))
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "pytest" "-vv")))))))
- (propagated-inputs
- (list python-iocapture python-mock python-pytest python-pytest-cov
- python-pytest-xdist))
- (home-page "https://github.com/neithere/argh/")
- (synopsis "Argparse wrapper with natural syntax")
- (description
- "python-argh is a small library that provides several layers of
- abstraction on top of @code{python-argparse}. The layers can be mixed. It is
- always possible to declare a command with the highest possible (and least
- flexible) layer and then tune the behaviour with any of the lower layers
- including the native API of @code{python-argparse}.")
- (license license:lgpl3+))))
- (define-public python-ppft
- (package
- (name "python-ppft")
- (version "1.6.6.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "ppft" version))
- (sha256
- (base32
- "1z1invkhszc5d2mvgr221v7cszzifcc77mz0pv3wjp6x5q2768cy"))))
- (build-system python-build-system)
- (arguments '(#:tests? #f)) ; there are none
- (propagated-inputs
- (list python-six))
- (home-page "https://pypi.org/project/ppft/")
- (synopsis "Fork of Parallel Python")
- (description
- "This package is a fork of Parallel Python. The Parallel Python
- module (@code{pp}) provides an easy and efficient way to create
- parallel-enabled applications for @dfn{symmetric multiprocessing} (SMP)
- computers and clusters. It features cross-platform portability and dynamic
- load balancing.")
- (license license:bsd-3)))
- (define-public python-pox
- (package
- (name "python-pox")
- (version "0.2.7")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pox" version))
- (sha256
- (base32
- "0y17ckc2p6i6709s279sjdj4q459mpcc38ymg9zv9y6vl6jf3bq6"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (mkdir-p "/tmp/guix")
- (setenv "SHELL" "bash")
- (setenv "USERNAME" "guix")
- (setenv "HOME" "/tmp/guix") ; must end on USERNAME...
- (invoke "py.test" "-vv")
- #t)))))
- (native-inputs
- (list python-pytest which))
- (home-page "https://pypi.org/project/pox/")
- (synopsis "Python utilities for file system exploration and automated builds")
- (description
- "Pox provides a collection of utilities for navigating and manipulating
- file systems. This module is designed to facilitate some of the low-level
- operating system interactions that are useful when exploring a file system on a
- remote host. Pox provides Python equivalents of several shell commands such
- as @command{which} and @command{find}. These commands allow automated
- discovery of what has been installed on an operating system, and where the
- essential tools are located.")
- (license license:bsd-3)))
- (define-public python-pathos
- (package
- (name "python-pathos")
- (version "0.2.5")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pathos" version))
- (sha256
- (base32
- "0in8hxdz7k081ijn6q94gr39ycy7363sx4zysmbwyvd7snqjrbi1"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "python" "./tests/__main__.py"))))))
- (propagated-inputs
- (list python-dill python-multiprocess python-pox python-ppft))
- (native-inputs
- (list python-pytest))
- (home-page "https://pypi.org/project/pathos/")
- (synopsis
- "Parallel graph management and execution in heterogeneous computing")
- (description
- "Python-pathos is a framework for heterogeneous computing. It provides a
- consistent high-level interface for configuring and launching parallel
- computations across heterogeneous resources. Python-pathos provides configurable
- launchers for parallel and distributed computing, where each launcher contains
- the syntactic logic to configure and launch jobs in an execution environment.")
- (license license:bsd-3)))
- (define-public python-flit
- (package
- (name "python-flit")
- (version "3.5.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "flit" version))
- (sha256
- (base32 "04152qj46sqbnlrj7ch9p7svjrrlpzbk0qr39g2yr0s4f5vp6frf"))))
- (build-system python-build-system)
- (arguments
- (list
- #:phases
- #~(modify-phases %standard-phases
- ;; XXX: PEP 517 manual build copied from python-isort.
- (replace 'build
- (lambda _
- (invoke "python" "-m" "build" "--wheel" "--no-isolation" ".")))
- (replace 'check
- (lambda* (#:key tests? inputs outputs #:allow-other-keys)
- (when tests?
- (setenv "HOME" "/tmp")
- (setenv "FLIT_NO_NETWORK" "1"))))
- (replace 'install
- (lambda _
- (let ((whl (car (find-files "dist" "\\.whl$"))))
- (invoke "pip" "--no-cache-dir" "--no-input"
- "install" "--no-deps" "--prefix" #$output whl)))))))
- (propagated-inputs
- (list python-pypa-build
- python-tomli-w
- python-flit-core
- python-docutils
- python-requests))
- (native-inputs
- (list python-responses
- python-pygments-github-lexers
- python-pytest
- python-pytest-cov
- python-sphinx
- python-sphinxcontrib-github-alt
- python-testpath))
- (home-page "https://flit.readthedocs.io/")
- (synopsis "Simple packaging tool for simple packages")
- (description "Flit is a simple way to put Python packages and modules on
- PyPI. Flit packages a single importable module or package at a time, using
- the import name as the name on PyPI. All subpackages and data files within a
- package are included automatically.")
- (license license:bsd-3)))
- (define-public python-pathtools
- (package
- (name "python-pathtools")
- (version "0.1.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pathtools" version))
- (sha256
- (base32
- "1h7iam33vwxk8bvslfj4qlsdprdnwf8bvzhqh3jq5frr391cadbw"))))
- (build-system python-build-system)
- (home-page
- "https://github.com/gorakhargosh/pathtools")
- (synopsis "Path utilities for Python")
- (description "Pattern matching and various utilities for file systems
- paths.")
- (license license:expat)))
- (define-public python-fastentrypoints
- (package
- (name "python-fastentrypoints")
- (version "0.12")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "fastentrypoints" version))
- (sha256
- (base32
- "02s1j8i2dzbpbwgq2a3fiqwm3cnmhii2qzc0k42l0rdxd4a4ya7z"))))
- (build-system python-build-system)
- (home-page
- "https://github.com/ninjaaron/fast-entry_points")
- (synopsis
- "Makes entry_points specified in setup.py load more quickly")
- (description
- "Using entry_points in your setup.py makes scripts that start really
- slowly because it imports pkg_resources. This package allows such setup
- scripts to load entry points more quickly.")
- (license license:bsd-3)))
- (define-public python-funcparserlib
- (package
- (name "python-funcparserlib")
- (version "1.0.0a0") ; last stable release was in 2013
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "funcparserlib" version))
- (sha256
- (base32 "0ama5w5lswxlp3l4qfqq3zlg7i6qkw45jfl1f7p8w1vnj8m47yz6"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f)) ; no tests in PyPI and no setup.py in GitHub
- (home-page "https://github.com/vlasovskikh/funcparserlib")
- (synopsis
- "Recursive descent parsing library based on functional combinators")
- (description
- "This package is a recursive descent parsing library for Python based on
- functional combinators. Parser combinators are just higher-order functions
- that take parsers as their arguments and return them as result values.")
- (license license:expat)))
- (define-public python-speg
- (package
- (name "python-speg")
- (version "0.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "speg" version ".zip"))
- (sha256
- (base32 "0w9y4jf4787dzhy6rvhwi0mpl0r8qkqmqmyv2hpwdpv8w53yzjqh"))))
- (arguments
- `(#:tests? #f)) ;FIXME: tests fail, not sure why
- (native-inputs
- (list unzip))
- (build-system python-build-system)
- (home-page "https://github.com/avakar/speg")
- (synopsis "PEG-based parser interpreter with memoization")
- (description "This package is a PEG-based parser and interpreter with
- memoization.")
- (license license:expat)))
- (define-public python-cson
- (package
- (name "python-cson")
- (version "0.8")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "cson" version))
- (sha256
- (base32 "00cyvigg4npbph39ghkg77xbxisa6plf75vii24igxfizik0337f"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-speg))
- (home-page "https://github.com/avakar/pycson")
- (synopsis "Parser for Coffeescript Object Notation (CSON)")
- (description "This package is a parser for Coffeescript Object
- Notation (CSON).")
- (license license:expat)))
- (define-public python-aionotify
- (package
- (name "python-aionotify")
- (version "0.2.0")
- (source
- (origin
- ;; Source tarball on PyPi lacks tests
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/rbarrois/aionotify")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "1sk9i8czxgsbrswsf1nlb4c82vgnlzi8zrvrxdip92w2z8hqh43y"))
- (patches (search-patches "python-aionotify-0.2.0-py3.8.patch"))))
- (build-system python-build-system)
- (home-page "https://github.com/rbarrois/aionotify")
- (synopsis "Asyncio-powered inotify library")
- (description
- "@code{aionotify} is a simple, asyncio-based inotify library.")
- (license license:bsd-3)))
- (define-public python-forbiddenfruit
- (package
- (name "python-forbiddenfruit")
- (version "0.1.3")
- (source
- (origin
- ;; Source tarball on PyPi lacks Makefile that builds and runs tests
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/clarete/forbiddenfruit")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32 "1fp2xvdqpi910j9r3q68x38phpxbm700gjdi2m2j5gs91xdnyyh2"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "make" "SKIP_DEPS=1"))))))
- (native-inputs
- (list python-nose python-coverage))
- (home-page "https://github.com/clarete/forbiddenfruit")
- (synopsis "Patch python built-in objects")
- (description "This project allows Python code to extend built-in types.")
- (license (list license:gpl3+ license:expat))))
- (define-public python-k5test
- (package
- (name "python-k5test")
- (version "0.9.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "k5test" version))
- (sha256
- (base32
- "1lqp3jgfngyhaxjgj3n230hn90wsylwilh120yjf62h7b1s02mh8"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-six
- ;; `which`, `kadmin.local` binaries called inside library
- which mit-krb5))
- (native-inputs (list mit-krb5))
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'apply-upstream-fixes
- (lambda* _
- (substitute* "k5test/realm.py"
- ;; Upstream commit f6b302d94dbdce37a1b81cc3faeeac4dc637b0e9.
- (("'kadmin_local'") "'kadmin.local'")
- ;; Upstream commit 3aef84515cf3d1a171c66856c898d0a5cbbd03ea.
- (("\\.stop_daemon") "._stop_daemon")))))))
- (home-page "https://github.com/pythongssapi/k5test")
- (synopsis "Library for setting up self-contained Kerberos 5 environments")
- (description
- "@code{k5test} is a library for setting up self-contained Kerberos 5
- environments, and running Python unit tests inside those environments. It is
- based on the file of the same name found alongside the MIT Kerberos 5 unit
- tests.")
- (license license:isc)))
- (define-public python-gssapi
- (package
- (name "python-gssapi")
- (version "1.6.12")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "gssapi" version))
- (sha256
- (base32
- "1j2idrbrbczykzlb56q1bn0ivc9c0rjjljpk4yz86xn3gxfkpv8n"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-decorator python-six))
- (inputs
- (list mit-krb5))
- ;; for tests
- (native-inputs
- (list python-parameterized python-k5test python-nose))
- (home-page "https://github.com/pythongssapi/python-gssapi")
- (synopsis "Python GSSAPI Wrapper")
- (description
- "Python-GSSAPI provides both low-level and high level wrappers around the
- GSSAPI C libraries. While it focuses on the Kerberos mechanism, it should
- also be usable with other GSSAPI mechanisms.")
- (license license:isc)))
- (define-public python-check-manifest
- (package
- (name "python-check-manifest")
- (version "0.37")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "check-manifest" version))
- (sha256
- (base32
- "0lk45ifdv2cpkl6ayfyix7jwmnxa1rha7xvb0ih5999k115wzqs4"))))
- (build-system python-build-system)
- (native-inputs
- (list python-mock git))
- (home-page "https://github.com/mgedmin/check-manifest")
- (synopsis "Check MANIFEST.in in a Python source package for completeness")
- (description "Python package can include a MANIFEST.in file to help with
- sending package files to the Python Package Index. This package checks that
- file to ensure it completely and accurately describes your project.")
- (license license:expat)))
- (define-public python-android-stringslib
- (package
- (name "python-android-stringslib")
- (version "0.1.2")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://framagit.org/tyreunom/python-android-strings-lib")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0gij55qzzq1h83kfpvhai1vf78kkhyvxa6l17m2nl24454lhfin4"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f))
- (home-page "https://framagit.org/tyreunom/python-android-strings-lib")
- (synopsis "Android strings.xml support")
- (description "Android Strings Lib provides support for android's strings.xml
- files. These files are used to translate strings in android apps.")
- (license license:expat)))
- (define-public python-watchdog
- (package
- (name "python-watchdog")
- (version "2.1.6")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "watchdog" version))
- (sha256
- (base32 "1rx2nyl0cyj0v4ja795cl3gi26577c5wg48syr3byz3ndkgpavm3"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key inputs outputs tests? #:allow-other-keys)
- (when tests?
- (add-installed-pythonpath inputs outputs)
- (invoke "python" "-m" "pytest" "-k"
- ;; This test failed.
- "not test_kill_auto_restart")))))))
- (propagated-inputs
- (list python-pathtools python-pyyaml))
- (native-inputs
- (list python-pytest-cov python-pytest-timeout))
- (home-page "https://github.com/gorakhargosh/watchdog")
- (synopsis "File system events monitoring")
- (description "This package provides a way to monitor file system events
- such as a file modification and trigger an action. This is similar to inotify,
- but portable.")
- (license license:asl2.0)))
- (define-public python-watchgod
- (package
- (name "python-watchgod")
- (version "0.7")
- (source
- (origin
- ;; There are no tests in the PyPI tarball.
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/samuelcolvin/watchgod")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "1w2xsidwp9n4giqhja0bzw7rwrh01db0kdxf2n54mv3dkx545jpq"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "pytest" "-vv"
- "-o" "asyncio_mode=auto")))))))
- (native-inputs
- (list python-coverage
- python-pygments
- python-pytest
- python-pytest-asyncio
- python-pytest-cov
- python-pytest-mock
- python-pytest-sugar
- python-pytest-toolbox))
- (home-page "https://github.com/samuelcolvin/watchgod")
- (synopsis "Simple, modern file watching and code reload in Python")
- (description
- "Simple, modern file watching and code reload in Python inspired by
- @code{watchdog}. Among the differences are a unified approach for each
- operating systems and an elegant approach to concurrency using threading.")
- (license license:expat)))
- (define-public python-wget
- (package
- (name "python-wget")
- (version "3.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "wget" version ".zip"))
- (sha256
- (base32
- "0qb0y7ipby42m4m7h0ipazpdyc3bn9xi46lvifcwwl5albn31rim"))))
- (build-system python-build-system)
- (native-inputs (list unzip))
- (home-page "https://bitbucket.org/techtonik/python-wget/")
- (synopsis "Pure Python download utility")
- (description "The python-wget library provides an API to download files
- with features similar to the @command{wget} utility.")
- (license license:unlicense)))
- (define-public offlate
- (package
- (name "offlate")
- (version "0.5")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://framagit.org/tyreunom/offlate")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "13pqnbl05wcyldfvl75fp89vjgwsvxyc69vhnb17kkha2rc2k1h7"))))
- (build-system python-build-system)
- (arguments
- ;; No tests
- `(#:tests? #f))
- (propagated-inputs
- (list python-android-stringslib
- python-dateutil
- python-gitlab
- python-lxml
- python-polib
- python-pyenchant
- python-pygit2
- python-pygithub
- python-pyqt
- python-requests
- python-ruamel.yaml
- python-translation-finder
- python-watchdog))
- (native-inputs
- (list qttools))
- (home-page "https://framagit.org/tyreunom/offlate")
- (synopsis "Offline translation interface for online translation tools")
- (description "Offlate offers a unified interface for different translation
- file formats, as well as many different online translation platforms. You can
- use it to get work from online platforms, specialized such as the Translation
- Project, or not such a gitlab instance when your upstream doesn't use any
- dedicated platform. The tool proposes a unified interface for any format and
- an upload option to send your work back to the platform.")
- (license license:gpl3+)))
- (define-public python-titlecase
- (package
- (name "python-titlecase")
- (version "0.12.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "titlecase" version))
- (sha256
- (base32
- "0486i99wf8ssa7sgn81fn6fv6i4rhhq6n751bc740b3hzfbpmpl4"))))
- (build-system python-build-system)
- (native-inputs
- (list python-nose))
- (home-page "https://github.com/ppannuto/python-titlecase")
- (synopsis "Capitalize strings similar to book titles")
- (description
- "Python-Titlecase is a Python port of John Gruber's titlecase.pl.
- It capitalizes (predominantly English) strings in a way that is similar to
- book titles, using the New York Times Manual of Style to leave certain words
- lowercase.")
- (license license:expat)))
- (define-public python-pypng
- (package
- (name "python-pypng")
- (version "0.0.20")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pypng" version))
- (sha256
- (base32 "02qpa22ls41vwsrzw9r9qhj1nhq05p03hb5473pay6y980s86chh"))))
- (build-system python-build-system)
- (home-page "https://github.com/drj11/pypng")
- (synopsis "Pure Python PNG image encoder/decoder")
- (description
- "The PyPNG module implements support for PNG images. It reads and writes
- PNG files with all allowable bit depths (1/2/4/8/16/24/32/48/64 bits per
- pixel) and colour combinations: greyscale (1/2/4/8/16 bit); RGB, RGBA,
- LA (greyscale with alpha) with 8/16 bits per channel; colour mapped
- images (1/2/4/8 bit). Adam7 interlacing is supported for reading and writing.
- A number of optional chunks can be specified (when writing) and
- understood (when reading): tRNS, bKGD, gAMA.
- PyPNG is not a high level toolkit for image processing (like PIL) and does not
- aim at being a replacement or competitor. Its strength lies in fine-grained
- extensive support of PNG features. It can also read and write Netpbm PAM
- files, with a focus on its use as an intermediate format for implementing
- custom PNG processing.")
- (license license:expat)))
- (define-public python-fuzzywuzzy
- (package
- (name "python-fuzzywuzzy")
- (version "0.18.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "fuzzywuzzy" version))
- (sha256
- (base32
- "1s00zn75y2dkxgnbw8kl8dw4p1mc77cv78fwfa4yb0274s96w0a5"))))
- (build-system python-build-system)
- (native-inputs
- (list python-hypothesis python-pycodestyle python-pytest))
- (propagated-inputs
- (list python-levenshtein))
- (home-page "https://github.com/seatgeek/fuzzywuzzy")
- (synopsis "Fuzzy string matching in Python")
- (description "Approximate string matching using
- @emph{Levenshtein Distance} to calculate the differences between
- sequences.")
- (license license:gpl2)))
- (define-public python2-fuzzywuzzy
- (package-with-python2 python-fuzzywuzzy))
- (define-public python-block-tracing
- (package
- (name "python-block-tracing")
- (version "1.0.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "block_tracing" version))
- (sha256
- (base32
- "0s2y729qr5rs7n506qfh8cssk8m2bi6k2y5vbrh2z3raf2d01alz"))))
- (build-system python-build-system)
- (arguments '(#:tests? #f)) ; no tests
- (home-page "https://github.com/rianhunter/block_tracing")
- (synopsis "Protect process memory")
- (description
- "@code{block_tracing} is a tiny Python library that can be used to
- prevent debuggers and other applications from inspecting the memory within
- your process.")
- (license license:expat)))
- (define-public python-gcovr
- (package
- (name "python-gcovr")
- (version "4.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "gcovr" version))
- (sha256
- (base32
- "0gyady7x3v3l9fm1zan0idaggqqcm31y7g5vxk7h05p5h7f39bjs"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-lxml python-jinja2))
- (home-page "https://gcovr.com/")
- (synopsis "Utility for generating code coverage results")
- (description
- "Gcovr provides a utility for managing the use of the GNU gcov
- utility and generating summarized code coverage results. It is inspired
- by the Python coverage.py package, which provides a similar utility for
- Python.")
- (license license:bsd-3)))
- (define-public python-owslib
- (package
- (name "python-owslib")
- (version "0.19.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "OWSLib" version))
- (sha256
- (base32 "0v8vg0naa9rywvd31cpq65ljbdclpsrx09788v4xj7lg10np8nk0"))))
- (build-system python-build-system)
- (arguments
- ;; TODO: package dependencies required for tests.
- '(#:tests? #f
- #:phases (modify-phases %standard-phases
- (delete 'sanity-check))))
- (synopsis "Interface for Open Geospatial Consortium web service")
- (description
- "OWSLib is a Python package for client programming with Open Geospatial
- Consortium (OGC) web service (hence OWS) interface standards, and their related
- content models.")
- (home-page "https://geopython.github.io/OWSLib/")
- (license license:bsd-3)))
- (define-public python-docusign-esign
- (package
- (name "python-docusign-esign")
- (version "3.1.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "docusign_esign" version))
- (sha256
- (base32
- "01f3h03vc97syjlmqyl7xa5j90pzgmwpspc5a0gra9saynnbkx37"))))
- (build-system python-build-system)
- ;; Testing requires undocumented setup changes, and so testing is disabled here.
- (arguments `(#:tests? #f))
- (propagated-inputs
- (list python-certifi
- python-six
- python-dateutil
- python-urllib3
- python-pyjwt
- python-cryptography
- python-nose))
- (synopsis "DocuSign Python Client")
- (description "The Official DocuSign Python Client Library used to interact
- with the eSign REST API. Send, sign, and approve documents using this client.")
- (home-page "https://www.docusign.com/devcenter")
- (license license:expat)))
- (define-public python-xattr
- (package
- (name "python-xattr")
- (version "0.9.9")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "xattr" version))
- (sha256
- (base32
- "0ipkfblyvp5hylahjkw9zss1ii9xnwjypr3b3ncv989szcg7xjq9"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-cffi))
- (home-page "https://github.com/xattr/xattr")
- (synopsis
- "Python wrapper for extended file system attributes")
- (description "This package provides a Python wrapper for using extended
- file system attributes. Extended attributes extend the basic attributes of files
- and directories in the file system. They are stored as name:data pairs
- associated with file system objects (files, directories, symlinks, etc).")
- (license license:expat)))
- (define-public python-json-logger
- (package
- (name "python-json-logger")
- (version "0.1.11")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "python-json-logger" version))
- (sha256
- (base32
- "10g2ya6nsvn5vxzvq2wb8q4d43i3d7756i5rxyjna6d0y9i138xp"))))
- (build-system python-build-system)
- (home-page
- "https://github.com/madzak/python-json-logger")
- (synopsis "JSON log formatter in Python")
- (description "This library allows standard Python logging to output log data
- as JSON objects. With JSON we can make our logs more readable by machines and
- we can stop writing custom parsers for syslog-type records.")
- (license license:bsd-3)))
- (define-public python-daiquiri
- (package
- (name "python-daiquiri")
- (version "2.1.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "daiquiri" version))
- (sha256
- (base32
- "1qmank3c217ddiig3xr8ps0mqaydcp0q5a62in9a9g4zf72zjnqd"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-json-logger))
- (native-inputs
- (list python-mock python-pytest python-setuptools-scm python-six))
- (home-page "https://github.com/jd/daiquiri")
- (synopsis
- "Library to configure Python logging easily")
- (description "The daiquiri library provides an easy way to configure
- logging in Python. It also provides some custom formatters and handlers.")
- (license license:asl2.0)))
- (define-public python-pifpaf
- (package
- (name "python-pifpaf")
- (version "3.1.5")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pifpaf" version))
- (sha256
- (base32
- "19bdmxldc2m570isl7hbqgbb20si4sin7pi5fw8sv9py8dyv2s4n"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "python" "setup.py" "testr" "--slowest"
- "--testr-args=until-failure"))))))
- (propagated-inputs
- (list python-click
- python-daiquiri
- python-fixtures
- python-jinja2
- python-pbr
- python-psutil
- python-xattr))
- (native-inputs
- (list python-mock python-os-testr python-requests
- python-testrepository python-testtools))
- (home-page "https://github.com/jd/pifpaf")
- (synopsis "Tools and fixtures to manage daemons for testing in Python")
- (description "Pifpaf is a suite of fixtures and a command-line tool that
- starts and stops daemons for a quick throw-away usage. This is typically
- useful when needing these daemons to run integration testing. It originally
- evolved from its precursor @code{overtest}.")
- (license license:asl2.0)))
- (define-public python-pytest-check-links
- (package
- (name "python-pytest-check-links")
- (version "0.3.0")
- (source
- (origin
- (method url-fetch)
- ;; URI uses underscores
- (uri (pypi-uri "pytest_check_links" version))
- (sha256
- (base32
- "12x3wmrdzm6wgk0vz02hb769h68nr49q47w5q1pj95pc89hsa34v"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-docutils
- python-html5lib
- python-nbconvert
- python-nbformat
- python-pytest
- python-six))
- (native-inputs
- (list python-pbr-minimal))
- (home-page "https://github.com/minrk/pytest-check-links")
- (synopsis "Check links in files")
- (description "This package provides a pytest plugin that checks URLs for
- HTML-containing files.")
- (license license:bsd-3)))
- (define-public python-json5
- (package
- (name "python-json5")
- (version "0.8.5")
- (source
- (origin
- ;; sample.json5 is missing from PyPi source tarball
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/dpranke/pyjson5")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "0nyngj18jlkgvm1177lc3cj47wm4yh3dqigygvcvw7xkyryafsqn"))))
- (build-system python-build-system)
- (home-page "https://github.com/dpranke/pyjson5")
- (synopsis
- "Python implementation of the JSON5 data format")
- (description
- "JSON5 extends the JSON data interchange format to make it slightly more
- usable as a configuration language. This Python package implements parsing and
- dumping of JSON5 data structures.")
- (license license:asl2.0)))
- (define-public python-frozendict
- (package
- (name "python-frozendict")
- (version "1.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "frozendict" version))
- (sha256
- (base32 "0ibf1wipidz57giy53dh7mh68f2hz38x8f4wdq88mvxj5pr7jhbp"))))
- (build-system python-build-system)
- (home-page "https://github.com/slezica/python-frozendict")
- (synopsis "Simple immutable mapping for Python")
- (description
- "@dfn{frozendict} is an immutable wrapper around dictionaries that
- implements the complete mapping interface. It can be used as a drop-in
- replacement for dictionaries where immutability is desired.")
- (license license:expat)))
- (define-public python-unpaddedbase64
- (package
- (name "python-unpaddedbase64")
- (version "2.1.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "unpaddedbase64" version))
- (sha256
- (base32 "01ghlmw63fgslwj8j74vkpf1kqvr7a4agm6nyn89vqwx106ccwvj"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key inputs tests? #:allow-other-keys)
- (when tests?
- (copy-recursively (string-append
- (assoc-ref inputs "tests") "/tests")
- "tests")
- (invoke "python" "-m" "pytest" "-vv")))))))
- (native-inputs
- `(("python-pytest" ,python-pytest)
- ("tests"
- ;; The release on pypi comes without tests. We can't build from this
- ;; checkout, though, because installation requires an invocation of
- ;; poetry.
- ,(origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/matrix-org/python-unpaddedbase64")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "1n6har8pxv0mqb96lanzihp1xf76aa17jw3977drb1fgz947pnmz"))))))
- (home-page "https://github.com/matrix-org/python-unpaddedbase64")
- (synopsis "Encode and decode Base64 without “=” padding")
- (description
- "RFC 4648 specifies that Base64 should be padded to a multiple of 4 bytes
- using “=” characters. However this conveys no benefit so many protocols
- choose to use Base64 without the “=” padding.")
- (license license:asl2.0)))
- (define-public python-py-cpuinfo
- (package
- (name "python-py-cpuinfo")
- (version "5.0.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "py-cpuinfo" version))
- (sha256
- (base32
- "0045y6832gqjg63jmw0qj2jwyypgjwr7sfdq3lfv49b6fxpl5xic"))))
- (build-system python-build-system)
- (home-page "https://github.com/workhorsy/py-cpuinfo")
- (synopsis "Get CPU info with Python")
- (description
- "This Python module returns the CPU info by using the best sources of
- information for your operating system.")
- (license license:expat)))
- (define-public python-canonicaljson
- (package
- (name "python-canonicaljson")
- (version "1.4.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "canonicaljson" version))
- (sha256
- (base32 "0c86g0vvzdcg3nrcsqnbzlfhpprc2i894p8i14hska56yl27d6w9"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-six python-frozendict python-simplejson))
- (home-page "https://github.com/matrix-org/python-canonicaljson")
- (synopsis "Canonical JSON")
- (description
- "Deterministically encode JSON.
- @itemize
- @item Encodes objects and arrays as RFC 7159 JSON.
- @item Sorts object keys so that you get the same result each time.
- @item Has no insignificant whitespace to make the output as small as possible.
- @item Escapes only the characters that must be escaped, U+0000 to
- U+0019 / U+0022 / U+0056, to keep the output as small as possible.
- @item Uses the shortest escape sequence for each escaped character.
- @item Encodes the JSON as UTF-8.
- @item Can encode frozendict immutable dictionaries.
- @end itemize")
- (license license:asl2.0)))
- (define-public python-signedjson
- (package
- (name "python-signedjson")
- (version "1.1.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "signedjson" version))
- (sha256
- (base32 "0280f8zyycsmd7iy65bs438flm7m8ffs1kcxfbvhi8hbazkqc19m"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-canonicaljson python-importlib-metadata python-pynacl
- python-typing-extensions python-unpaddedbase64))
- (native-inputs
- (list python-setuptools-scm))
- (home-page "https://github.com/matrix-org/python-signedjson")
- (synopsis "Sign JSON objects with ED25519 signatures")
- (description
- "Sign JSON objects with ED25519 signatures.
- @itemize
- @item More than one entity can sign the same object.
- @item Each entity can sign the object with more than one key making it easier to
- rotate keys
- @item ED25519 can be replaced with a different algorithm.
- @item Unprotected data can be added to the object under the @dfn{\"unsigned\"}
- key.
- @end itemize")
- (license license:asl2.0)))
- (define-public python-daemonize
- (package
- (name "python-daemonize")
- (version "2.5.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "daemonize" version))
- (sha256
- (base32 "1hwbl3gf9fdds9sc14zgjyjisjvxidrvqc11xlbb0b6jz17nw0nx"))))
- (build-system python-build-system)
- (home-page "https://github.com/thesharp/daemonize")
- (synopsis "Library for writing system daemons in Python")
- (description "Daemonize is a library for writing system daemons in Python.")
- (license license:expat)))
- (define-public python-pymacaroons
- (package
- (name "python-pymacaroons")
- (version "0.13.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pymacaroons" version))
- (sha256
- (base32 "1f0357a6g1h96sk6wy030xmc1p4rd80a999qvxd28v7nlm1blsqy"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-six python-pynacl))
- (home-page "https://github.com/ecordell/pymacaroons")
- (synopsis "Python Macaroon Library")
- (description
- "Macaroons, like cookies, are a form of bearer credential. Unlike opaque
- tokens, macaroons embed caveats that define specific authorization
- requirements for the target service, the service that issued the root macaroon
- and which is capable of verifying the integrity of macaroons it receives.
- Macaroons allow for delegation and attenuation of authorization. They are
- simple and fast to verify, and decouple authorization policy from the
- enforcement of that policy.")
- (license license:expat)))
- (define-public python-ldap3
- (package
- (name "python-ldap3")
- (version "2.7")
- (home-page "https://github.com/cannatag/ldap3")
- (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 "0xw9fkqld21xsvdpaqir8ccc2l805xnn9gxahsnl70xzp3mwl0xv"))))
- (build-system python-build-system)
- (arguments
- '(#:tests? #f ;TODO: Tests need a real LDAP server to run
- #:phases (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "nosetests" "-s" "test"))
- #t)))))
- (native-inputs
- (list python-nose))
- (propagated-inputs
- (list python-gssapi python-pyasn1))
- (synopsis "Python LDAP client")
- (description
- "LDAP3 is a strictly RFC 4510 conforming LDAP V3 pure Python client
- library.")
- (license license:lgpl3+)))
- (define-public python-boltons
- (package
- (name "python-boltons")
- (version "20.0.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "boltons" version))
- (sha256
- (base32
- "0lrr40qqj3ch8xarvyzbnbjs79pz5aywklllq53l347h1b8xnkg4"))))
- (build-system python-build-system)
- (home-page "https://github.com/mahmoud/boltons")
- (synopsis "Extensions to the Python standard library")
- (description
- "Boltons is a set of over 230 pure-Python utilities in the same spirit
- as — and yet conspicuously missing from — the standard library, including:
- @itemize
- @item Atomic file saving, bolted on with fileutils
- @item A highly-optimized OrderedMultiDict, in dictutils
- @item Two types of PriorityQueue, in queueutils
- @item Chunked and windowed iteration, in iterutils
- @item Recursive data structure iteration and merging, with iterutils.remap
- @item Exponential backoff functionality, including jitter, through
- iterutils.backoff
- @item A full-featured TracebackInfo type, for representing stack traces, in
- tbutils
- @end itemize")
- (license license:bsd-3)))
- (define-public python-eliot
- (package
- (name "python-eliot")
- (version "1.13.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "eliot" version))
- (sha256
- (base32 "1xzzhsjrrw430dc84vamf683bwp9i0nr86xf2iav6yla615ijq2p"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'remove-journald-support
- (lambda _
- (for-each delete-file
- '("eliot/tests/test_journald.py"
- "eliot/journald.py"))
- #t))
- (add-after 'remove-journald-support 'remove-eliot-prettyprint-tests
- ;; remove command-line tool's tests. TODO eliot-prettyprint should
- ;; be installed and these tests should pass.
- (lambda _
- (delete-file "eliot/tests/test_prettyprint.py")
- #t))
- (add-after 'remove-eliot-prettyprint-tests 'remove-failing-tests
- (lambda _
- ;; These tests started to fail after updating python-pandas to
- ;; 1.3.3 and python-dask to 2021.9.1.
- (substitute* "eliot/tests/test_validation.py"
- (("test_omitLoggerFromActionType")
- "_test_omitLoggerFromActionType")
- (("test_logCallsDefaultLoggerWrite")
- "_test_logCallsDefaultLoggerWrite"))
- #t)))))
- (propagated-inputs
- (list python-boltons python-pyrsistent python-six
- python-zope-interface))
- (native-inputs
- (list python-black
- python-coverage
- python-dask
- python-flake8
- python-hypothesis
- python-pytest
- python-setuptools
- python-sphinx
- python-sphinx-rtd-theme
- python-testtools
- python-twine
- python-twisted))
- (home-page "https://github.com/itamarst/eliot/")
- (synopsis "Eliot: the logging system that tells you why it happened")
- (description
- "@dfn{eliot} is a Python logging system that outputs causal chains of
- actions: actions can spawn other actions, and eventually they either succeed
- or fail. The resulting logs tell you the story of what your software did: what
- happened, and what caused it.")
- (license license:asl2.0)))
- (define-public python-pem
- (package
- (name "python-pem")
- (version "20.1.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pem" version))
- (sha256
- (base32
- "1xh88ss279fprxnzd10dczmqwjhppbyvljm33zrg2mgybwd66qr7"))))
- (build-system python-build-system)
- (native-inputs
- (list python-certifi
- python-coverage
- python-pretend
- python-pyopenssl
- python-pytest
- python-sphinx
- python-twisted))
- (home-page "https://pem.readthedocs.io/")
- (synopsis "Easy PEM file parsing in Python")
- (description
- "This package provides a Python module for parsing and splitting PEM files.")
- (license license:expat)))
- (define-public python-txsni
- ;; We need a few commits on top of 0.1.9 for compatibility with newer
- ;; Python and OpenSSL.
- (let ((commit "5014c141a7acef63e20fcf6c36fa07f0cd754ce1")
- (revision "0"))
- (package
- (name "python-txsni")
- (version (git-version "0.1.9" revision commit))
- (home-page "https://github.com/glyph/txsni")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference (url home-page) (commit commit)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0imfxx4yjj1lbq0n5ad45al3wvv4qv96sivnc1r51i66mxi658z8"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-pyopenssl python-service-identity python-twisted))
- (synopsis "Run TLS servers with Twisted")
- (description
- "This package provides an easy-to-use SNI endpoint for use
- with the Twisted web framework.")
- (license license:expat))))
- (define-public python-txacme
- (package
- (name "python-txacme")
- (version "0.9.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "txacme" version))
- (sha256
- (base32 "1cplx4llq7i508w6fgwjdv9di7rsz9k9irfmzdfbiz6q6a0ykf1d"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-acme
- python-attrs
- python-eliot
- python-josepy
- python-pem
- python-treq
- python-twisted
- python-txsni))
- (native-inputs
- (list python-fixtures
- python-hypothesis
- python-mock
- python-service-identity
- python-testrepository
- python-testscenarios
- python-testtools))
- (home-page "https://github.com/twisted/txacme")
- (synopsis "Twisted implexmentation of the ACME protocol")
- (description
- "ACME is Automatic Certificate Management Environment, a protocol that
- allows clients and certificate authorities to automate verification and
- certificate issuance. The ACME protocol is used by the free Let's Encrypt
- Certificate Authority.
- txacme is an implementation of the protocol for Twisted, the event-driven
- networking engine for Python.")
- (license license:expat)))
- (define-public python-pysaml2
- (package
- (name "python-pysaml2")
- (version "6.5.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pysaml2" version))
- (sha256
- (base32
- "1xk2x0slz1f8cqv7vn77qx99xfd1mshhswiwrljk9m72w2m9iivd"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-cryptography
- python-dateutil
- python-defusedxml
- python-importlib-resources
- python-pyopenssl
- python-pytz
- python-requests
- python-six
- python-xmlschema))
- (home-page "https://idpy.org")
- (synopsis "Python implementation of SAML Version 2 Standard")
- (description
- "PySAML2 is a pure python implementation of SAML Version 2 Standard.
- It contains all necessary pieces for building a SAML2 service provider or
- an identity provider. The distribution contains examples of both.
- This package was originally written to work in a WSGI environment, but
- there are extensions that allow you to use it with other frameworks.")
- (license license:asl2.0)))
- (define-public python-click-plugins
- (package
- (name "python-click-plugins")
- (version "1.1.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "click-plugins" version))
- (sha256
- (base32 "0jr6bxj67vg988vkm6nz8jj98v9lg46bn49lkhak3n598jbrkas6"))))
- (build-system python-build-system)
- (native-inputs
- (list python-pytest))
- (propagated-inputs
- (list python-click))
- (synopsis "Extension for Click to register external CLI commands")
- (description "This package provides n extension module for Click to
- register external CLI commands via setuptools entry-points.")
- (home-page "https://github.com/click-contrib/click-plugins")
- (license license:bsd-3)))
- (define-public python-diceware
- (package
- (name "python-diceware")
- (version "0.9.6")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "diceware" version))
- (sha256
- (base32
- "0klb0ysybzlh2wihvir82hgq62v0jjmlcqklwajyms7c0p529yby"))))
- (build-system python-build-system)
- (native-inputs
- (list python-coverage python-pytest python-pytest-runner))
- (home-page "https://github.com/ulif/diceware/")
- (synopsis "Generates memorable passphrases")
- (description "This package generates passphrases by concatenating words
- randomly picked from wordlists. It supports several sources of
- randomness (including real life dice) and different wordlists (including
- cryptographically signed ones).")
- (license license:gpl3+)))
- (define-public python-dictdiffer
- (package
- (name "python-dictdiffer")
- (version "0.9.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "dictdiffer" version))
- (sha256
- (base32
- "0y3mk74qm2q9hsm37892i1wzn8bbdrvbs4nmnvqwq4z6pxgwzfhp"))))
- (build-system python-build-system)
- (arguments
- ;; XXX: The PyPI tarball lacks tests and the git repository
- ;; fails to determine version.
- '(#:tests? #f))
- (native-inputs
- (list python-pytest-runner python-setuptools-scm))
- (home-page "https://github.com/inveniosoftware/dictdiffer")
- (synopsis "Diff and patch Python dictionary objects")
- (description
- "Dictdiffer is a Python module that helps you to diff and patch
- dictionaries.")
- (license license:expat)))
- (define-public pyzo
- (package
- (name "pyzo")
- (version "4.12.3")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/pyzo/pyzo.git")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0v6rgp52bf9za2spxx9c1yc6wmskvlsj81iw0gipjy7y8vpypgn2"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-before 'check 'fix-home-directory
- (lambda _
- ;; Tests fail with "Permission denied: '/homeless-shelter'".
- (setenv "HOME" "/tmp"))))
- ;; Tests fail with "Uncaught Python exception: python: undefined
- ;; symbol: objc_getClass".
- #:tests? #f))
- (propagated-inputs
- (list python-pyqt))
- (home-page "https://pyzo.org")
- (synopsis
- "Python IDE for scientific computing")
- (description
- "Pyzo is a Python IDE focused on interactivity and introspection,
- which makes it very suitable for scientific computing. Its practical
- design is aimed at simplicity and efficiency.
- It consists of two main components, the editor and the shell, and uses
- a set of pluggable tools to help the programmer in various ways. Some
- example tools are source structure, project manager, interactive help,
- workspace...")
- (license license:bsd-2)))
- (define-public python-osc
- (package
- (name "python-osc")
- (version "1.7.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "python-osc" version))
- (sha256
- (base32
- "0cnh0z5lnng7fh48nmfaqqn8j25k13gkd4rhxd3m6sjqiix9s3vn"))))
- (build-system python-build-system)
- (home-page "https://github.com/attwad/python-osc")
- (synopsis "Open Sound Control server and client implementations")
- (description
- "@code{python-osc} is a pure Python library with no external
- dependencies. It implements the @uref{http://opensoundcontrol.org/spec-1_0,
- Open Sound Control 1.0} specification.")
- (license license:unlicense)))
- (define-public python-voluptuous
- (package
- (name "python-voluptuous")
- (version "0.11.7")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "voluptuous" version))
- (sha256
- (base32
- "0mplkcpb5d8wjf8vk195fys4y6a3wbibiyf708imw33lphfk9g1a"))))
- (build-system python-build-system)
- (native-inputs
- (list python-nose))
- (home-page "https://github.com/alecthomas/voluptuous")
- (synopsis "Python data validation library")
- (description
- "Voluptuous is a Python data validation library. It is primarily
- intended for validating data coming into Python as JSON, YAML, etc.")
- (license license:bsd-3)))
- (define-public python-cmd2
- (package
- (name "python-cmd2")
- (version "2.3.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "cmd2" version))
- (sha256
- (base32
- "0h1naik558qh48gx2iyy0a0khvw5fz0in69y84mbrhsm9nq7w3bm"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (if tests?
- (invoke "pytest" "-vv" "-k"
- ;; These tests fail because no EDITOR is in PATH.
- "not test_find_editor_not_specified \
- and not test_transcript")
- (format #t "test suite not run~%")))))))
- (propagated-inputs
- (list python-attrs python-colorama python-pyperclip python-wcwidth))
- (native-inputs
- (list python-invoke
- python-mock
- python-pytest
- python-pytest-cov
- python-pytest-mock
- python-setuptools-scm))
- (home-page "https://github.com/python-cmd2/cmd2")
- (synopsis "Tool for building interactive command line applications")
- (description
- "Cmd2 is a tool for building interactive command line applications in
- Python. Its goal is to make it quick and easy for developers to build
- feature-rich and user-friendly interactive command line applications. It
- provides a simple API which is an extension of Python's built-in @code{cmd}
- module. @code{cmd2} provides a wealth of features on top of @code{cmd} to
- make your life easier and eliminates much of the boilerplate code which would
- be necessary when using @code{cmd}.")
- (license license:expat)))
- (define-public python-pytidylib
- (package
- (name "python-pytidylib")
- (version "0.3.2")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "pytidylib" version))
- (sha256
- (base32
- "1wqa9dv5d7swka14rnky862hc7dgk2g3dhlrz57hdn3hb7bwic92"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (add-before 'build 'qualify-libtidy
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((libtidy (search-input-file inputs "/lib/libtidy.so")))
- (substitute* "tidylib/tidy.py"
- (("ctypes\\.util\\.find_library\\('tidy'\\)")
- (format #f "'~a'" libtidy)))
- #t))))))
- (inputs (list tidy))
- (home-page "https://github.com/countergram/pytidylib")
- (synopsis "Python wrapper for HTML Tidy library")
- (description
- "PyTidyLib is a Python package that wraps the HTML Tidy library. This
- allows you, from Python code, to “fix” invalid (X)HTML markup.")
- (license license:expat)))
- (define-public python2-pytidylib
- (package-with-python2 python-pytidylib))
- (define-public python-mujson
- (package
- (name "python-mujson")
- (version "1.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "mujson" version))
- (sha256
- (base32
- "0wbj6r8yzsdx2b0kbldlkznr1a9nn33za2q9x3g0hbg420dwzn97"))))
- (build-system python-build-system)
- (home-page "https://github.com/mattgiles/mujson")
- (synopsis "Use the fastest JSON functions available at import time")
- (description "This package selects the fastest JSON functions available
- at import time.")
- (license license:expat)))
- (define-public python-bashlex
- (package
- (name "python-bashlex")
- (version "0.14")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "bashlex" version))
- (sha256
- (base32
- "1z9g96fgsfpdwawp4sb5x6hbdhmda7kgmcrqlf9xx4bs1f8f14js"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-before 'build 'pregenerate-yacc-tables
- (lambda _
- ;; parser.py caches tables, which attempts to write to site lib
- ;; see https://github.com/idank/bashlex/issues/51
- (invoke "python" "-c" "import bashlex"))))))
- (home-page
- "https://github.com/idank/bashlex")
- (synopsis "Python parser for bash")
- (description "@code{bashlex} is a Python port of the parser used
- internally by GNU bash.
- For the most part it's transliterated from C, the major differences are:
- @itemize
- @item it does not execute anything
- @item it is reentrant
- @item it generates a complete AST
- @end itemize
- ")
- (license license:gpl3+)))
- (define-public python-jinxed
- (package
- (name "python-jinxed")
- (version "1.0.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "jinxed" version))
- (sha256
- (base32
- "1n7vl03rhjd0xhjgbjlh8x9f8yfbhamcwkgvs4jg7g5qj8f0wk89"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (add-before 'check 'set-environment-variables
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((ncurses (assoc-ref inputs "ncurses")))
- (setenv "TERM" "LINUX")
- (setenv "TERMINFO" (string-append ncurses "/share/terminfo"))
- #t))))
- #:tests? #f)) ; _curses.error: setupterm: could not find terminal
- (native-inputs
- (list ncurses))
- (home-page "https://github.com/Rockhopper-Technologies/jinxed")
- (synopsis "Jinxed Terminal Library")
- (description
- "Jinxed is an implementation of a subset of the Python curses library.")
- (license license:mpl2.0)))
- (define-public python-svgutils
- (package
- (name "python-svgutils")
- (version "0.3.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "svgutils" version))
- (sha256
- (base32
- "0lz0w2ajdvwd269a7ppnzawmx8px0116j0nx8xvhlihxrd28zx4y"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-lxml))
- (home-page "https://svgutils.readthedocs.io")
- (synopsis "Python SVG editor")
- (description "This is an utility package that helps with editing and
- concatenating SVG files. It is especially directed at scientists preparing
- final figures for submission to journals. So far it supports arbitrary
- placement and scaling of SVG figures and adding markers, such as labels.")
- (license license:expat)))
- (define-public python-blessed
- (package
- (name "python-blessed")
- (version "1.17.8")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "blessed" version))
- (sha256
- (base32
- "1wdj342sk22hfrg0n91x2qnqsbzbiyq9y009v3pxnvfzn9bx0wbn"))
- (modules '((guix build utils)))
- (snippet
- '(begin
- ;; Don't get hung up on Windows test failures.
- (delete-file "blessed/win_terminal.py") #t))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-jinxed python-six python-wcwidth))
- (native-inputs
- (list python-mock python-pytest))
- (home-page "https://github.com/jquast/blessed")
- (synopsis "Wrapper around terminal capabilities")
- (description
- "Blessed is a thin, practical wrapper around terminal styling, screen
- positioning, and keyboard input.")
- (license license:expat)))
- (define-public python-readme-renderer
- (package
- (name "python-readme-renderer")
- (version "32.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "readme_renderer" version))
- (sha256
- (base32
- "11av194kgq6mvp2afpapkb6vyn3y14gingmgsp3n10krlspvw4mm"))))
- (build-system python-build-system)
- (arguments
- '(#:phases (modify-phases %standard-phases
- (add-after 'unpack 'loosen-cmarkgfm-dependency
- (lambda _
- ;; Permit newer versions of cmarkgfm.
- (substitute* "setup.py"
- (("cmarkgfm>=0\\.5\\.0,<0\\.7\\.0")
- "cmarkgfm>=0.5.0"))))
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests? (invoke "pytest" "-vv")))))))
- (propagated-inputs
- (list python-bleach python-docutils python-pygments
- ;; Optional dependencies.
- python-cmarkgfm)) ;required by postorius
- (native-inputs
- (list python-mock python-pytest))
- (home-page "https://github.com/pypa/readme_renderer")
- (synopsis "Render README files in Warehouse")
- (description
- "Readme Renderer is a library that will safely render arbitrary README
- files into HTML. It is designed to be used in Warehouse to render the
- @code{long_description} for packages. It can handle Markdown, reStructuredText,
- and plain text.")
- (license license:asl2.0)))
- (define-public python-lazr-delegates
- (package
- (name "python-lazr-delegates")
- (version "2.0.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "lazr.delegates" version))
- (sha256
- (base32
- "1rdnl85j9ayp8n85l0ciip621j9dcziz5qnmv2m7krgwgcn31vfx"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests? (invoke "nosetests")))))))
- (native-inputs
- (list python-nose))
- (propagated-inputs
- (list python-zope-interface))
- (home-page "https://launchpad.net/lazr.delegates")
- (synopsis "Easily write objects that delegate behavior")
- (description
- "The @code{lazr.delegates} package makes it easy to write objects that
- delegate behavior to another object. The new object adds some property or
- behavior on to the other object, while still providing the underlying interface,
- and delegating behavior.")
- (license license:lgpl3)))
- (define-public python-lazr-config
- (package
- (name "python-lazr-config")
- (version "2.2.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "lazr.config" version))
- (sha256
- (base32
- "1qdbrzl61q7cjhbnxvw9y3frcr935y7diwy15xrwcv9ynvw76jmp"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "python" "-s" "-m" "nose" "-P" "lazr"))))))
- (native-inputs
- (list python-nose))
- (propagated-inputs
- (list python-lazr-delegates python-zope-interface))
- (home-page "https://launchpad.net/lazr.config")
- (synopsis "Create configuration schemas and process and validate configurations")
- (description
- "The LAZR config system is typically used to manage process configuration.
- Process configuration is for saying how things change when we run systems on
- different machines, or under different circumstances. This system uses ini-like
- file format of section, keys, and values. The config file supports inheritance
- to minimize duplication of information across files. The format supports schema
- validation.")
- (license license:lgpl3)))
- (define-public python-flufl-bounce
- (package
- (name "python-flufl-bounce")
- (version "4.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "flufl.bounce" version))
- (sha256
- (base32
- "0c9qc2l47lyqnpwskp6vvi7m3jqh6hx42v6d35dgxh3fjzmlll15"))))
- (build-system python-build-system)
- (arguments
- (list #:phases
- #~(modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? inputs outputs #:allow-other-keys)
- (when tests?
- (with-directory-excursion
- (string-append (site-packages inputs outputs) "/flufl")
- (invoke "python" "-m" "nose2" "-v"))))))))
- (propagated-inputs
- (list python-atpublic python-zope-interface))
- (native-inputs
- (list python-flufl-testing python-nose2))
- (home-page "https://fluflbounce.readthedocs.io/en/latest/")
- (synopsis "Email bounce detectors")
- (description "The @code{flufl.bounce} library provides a set of heuristics
- and an API for detecting the original bouncing email addresses from a bounce
- message. Many formats found in the wild are supported, as are VERP and
- RFC 3464.")
- (license (list license:asl2.0
- license:lgpl3)))) ; only for setup_headers.py
- (define-public python-flufl-i18n
- (package
- (name "python-flufl-i18n")
- (version "3.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "flufl.i18n" version))
- (sha256
- (base32
- "1flwpn1xhgc957zj3zxw92dhdjh0lsy0hdvzq32dzqpsajfsvq1r"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-atpublic))
- (home-page "https://flufli18n.readthedocs.io")
- (synopsis "API for Python internationalization")
- (description
- "This package provides a high-level, convenient API for managing
- internationalization/translation contexts in Python applications. There is a
- simple API for single-context applications, such as command line scripts which
- only need to translate into one language during the entire course of their
- execution. There is a more flexible, but still convenient API for multi-context
- applications, such as servers, which may need to switch language contexts for
- different tasks.")
- (license license:asl2.0)))
- (define-public python-flufl-lock
- (package
- (name "python-flufl-lock")
- (version "4.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "flufl.lock" version))
- (sha256
- (base32
- "055941zyma3wfx25jhm8wcsghpv3jc3iwi1gdrdjhzcnfhn62lxq"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-atpublic python-psutil))
- (home-page "https://flufllock.readthedocs.io")
- (synopsis "NFS-safe file locking with timeouts for POSIX systems")
- (description
- "The @dfn{flufl.lock} package provides NFS-safe file locking with
- timeouts for POSIX systems. It is similar to the @code{O_EXCL} option of the
- @code{open} system call but uses a lockfile. Lock objects support lock-breaking
- and have a maximum lifetime built-in.")
- (license (list license:asl2.0
- license:lgpl3)))) ; only for setup_helpers.py
- (define-public python-flufl-testing
- (package
- (name "python-flufl-testing")
- (version "0.8")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "flufl.testing" version))
- (sha256
- (base32
- "1nkm95mhcfhl4x5jgs6y97ikszaxsfh07nyawsih6cxxm6l62641"))))
- (build-system python-build-system)
- (arguments '(#:tests? #f)) ;no tests
- (home-page "https://gitlab.com/warsaw/flufl.testing")
- (synopsis "Collection of test tool plugins")
- (description
- "This package contains a small collection of test tool plugins for
- @code{nose2} and @code{flake8}.")
- (license license:asl2.0)))
- (define-public python-devtools
- (package
- (name "python-devtools")
- (version "0.6")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/samuelcolvin/python-devtools")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "15zczdcm90wl54c68f1qjb05nkd5bjsc9xjl3lk4frs7k7wkmrvp"))))
- (build-system python-build-system)
- (native-inputs
- (list python-pytest python-pytest-mock))
- (propagated-inputs
- (list python-pygments))
- (arguments
- `(#:phases (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "pytest")
- #t)))))
- (home-page "https://github.com/samuelcolvin/python-devtools")
- (synopsis "Debug command and development tools")
- (description
- "This package provides a debug print command and other development tools.
- It adds a simple and readable way to print stuff during development.")
- (license license:expat)))
- (define-public python-dateparser
- (package
- (name "python-dateparser")
- (version "0.7.6")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "dateparser" version))
- (sha256
- (base32
- "1ypbyqxlk7n6zibk90js3ybz37xmin3kk0i35g8c51bwqpcfyxg8"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-dateutil python-pytz python-regex python-ruamel.yaml
- python-tzlocal))
- (native-inputs
- (list python-mock python-parameterized tzdata-for-tests))
- (arguments
- `(;; TODO: Of 23320 tests, 6 fail and 53 error.
- #:tests? #f
- #:phases
- (modify-phases %standard-phases
- (add-before 'check 'set-check-environment
- (lambda* (#:key inputs #:allow-other-keys)
- (setenv "TZ" "UTC")
- (setenv "TZDIR"
- (search-input-directory inputs
- "share/zoneinfo")))))))
- (home-page "https://github.com/scrapinghub/dateparser")
- (synopsis
- "Date parsing library designed to parse dates from HTML pages")
- (description
- "@code{python-dateparser} provides modules to easily parse localized
- dates in almost any string formats commonly found on web pages.")
- (license license:bsd-3)))
- (define-public python-dparse
- (package
- (name "python-dparse")
- (version "0.5.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "dparse" version))
- (sha256
- (base32
- "0rzkg3nymsbwdjc0ms2bsajkda02jipwyp3xk97qj71f21lz3dd1"))))
- (build-system python-build-system)
- (native-inputs
- (list python-pytest))
- (propagated-inputs
- (list python-packaging python-pyyaml python-toml))
- (home-page "https://github.com/pyupio/dparse")
- (synopsis "Parser for Python dependency files")
- (description "This package provides a parser for Python dependency files.")
- (license license:expat)))
- (define-public python-dpath
- (package
- (name "python-dpath")
- (version "2.0.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "dpath" version))
- (sha256
- (base32
- "1ymi9ssk7i0mx3mviplf4csfvzibdd6wyj4qzj6s487n9xgnp85y"))))
- (build-system python-build-system)
- (native-inputs
- (list python-hypothesis python-mock python-nose))
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (add-installed-pythonpath inputs outputs)
- ;; This invokation is taken from tox.ini.
- (invoke "nosetests" "-d" "-v" "tests/"))))))
- (home-page "https://github.com/akesterson/dpath-python")
- (synopsis "File-system-like pathing and searching for dictionaries")
- (description
- "@code{python-dpath} is a library for accessing and searching
- dictionaries via /slashed/paths ala xpath.
- Basically it lets you glob over a dictionary as if it were a file system. It
- allows you to specify globs (ala the bash eglob syntax, through some advanced
- fnmatch.fnmatch magic) to access dictionary elements, and provides some
- facility for filtering those results.")
- (license license:expat)))
- (define-public python-safety
- (package
- (name "python-safety")
- (version "1.9.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "safety" version))
- (sha256
- (base32
- "1j801xsxfzavjbzhhc934awvnk1b7jc0qsw3jp3ys0241mlj1gr3"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'disable-tests
- (lambda _
- (substitute* "tests/test_safety.py"
- ;; requires network
- (("def test_check_live") "def _test_check_live"))
- #t)))))
- (propagated-inputs
- (list python-click python-dparse python-packaging python-requests))
- (home-page "https://github.com/pyupio/safety")
- (synopsis "Check installed dependencies for known vulnerabilities")
- (description "Safety checks installed dependencies for known vulnerabilities.
- By default it uses the open Python vulnerability database Safety DB.")
- (license license:expat)))
- (define-public python-pypandoc
- (package
- (name "python-pypandoc")
- (version "1.6.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pypandoc" version))
- (sha256
- (base32
- "149basv4pvzg9zm74cjz68x8s2n5fykyj7prgysb0qfmja73r83f"))))
- (build-system python-build-system)
- (inputs
- (list pandoc))
- (propagated-inputs
- `(("wheel" ,python-wheel)))
- (native-inputs
- `(("texlive" ,(texlive-updmap.cfg (list texlive-amsfonts
- texlive-fonts-ec
- texlive-generic-iftex
- texlive-hyperref
- texlive-oberdiek
- texlive-lm
- texlive-xcolor)))))
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-before 'check 'disable-tests
- (lambda _
- ;; Disable test requiring network access
- (substitute* "tests.py"
- (("test_basic_conversion_from_http_url")
- "skip_test_basic_conversion_from_http_url"))
- #t)))))
- (home-page "https://github.com/bebraw/pypandoc")
- (synopsis "Python wrapper for pandoc")
- (description "pypandoc is a thin Python wrapper around pandoc
- and pandoc-citeproc.")
- (license license:expat)))
- (define-public python-rnc2rng
- (package
- (name "python-rnc2rng")
- (version "2.6.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "rnc2rng" version))
- (sha256
- (base32
- "1kmp3iwxxyzjsd47j2sprd47ihhkwhb3yydih3af5bbfq0ibh1w8"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-rply))
- (arguments
- `(#:phases (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "python" "test.py"))))))
- (home-page "https://github.com/djc/rnc2rng")
- (synopsis "Convert RELAX NG Compact to regular syntax")
- (description
- "This package provides the @command{rnc2rng} command-line tool as well as
- a Python library to convert RELAX NG schemata in Compact syntax (rnc) to
- equivalent schemata in the XML-based default RELAX NG syntax.")
- (license license:expat)))
- (define-public python-telethon
- (package
- (name "python-telethon")
- (version "1.17.5")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/LonamiWebs/Telethon")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "0l9fhdrq576vllgi9aam45xzw5xi6jhgdv5zz8i4ygssdp7cm8jl"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "py.test" "-v"))
- #t)))))
- (propagated-inputs
- (list python-rsa python-pyaes))
- (native-inputs
- (list python-pytest python-pytest-asyncio python-pytest-trio))
- (home-page "https://docs.telethon.dev")
- (synopsis "Full-featured Telegram client library for Python 3")
- (description "This library is designed to make it easy to write Python
- programs that can interact with Telegram.")
- (license license:expat)))
- (define-public python-citeproc-py
- (package
- (name "python-citeproc-py")
- (version "0.5.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "citeproc-py" version))
- (sha256
- (base32
- "00aaff50jy4j0nakdzq9258z1gzrac9baarli2ymgspj88jg5968"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-lxml python-rnc2rng))
- (home-page
- "https://github.com/brechtm/citeproc-py")
- (synopsis "Citations and bibliography formatter")
- (description
- "Citeproc-py is a CSL processor for Python. It aims to implement the
- CSL 1.0.1 specification. citeproc-py can output styled citations and
- bibliographies in a number of different output formats. Currently supported
- are plain text, reStructuredText and HTML.")
- (license license:bsd-2)))
- (define-public python-inform
- (package
- (name "python-inform")
- (version "1.23.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "inform" version))
- (sha256
- (base32
- "0dvc5klbnbryrvspp45nmlg02g40j7xspcz7lqsm0c0dj0z29zdz"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f)) ; PyPI tarball lacks tests
- (native-inputs
- (list python-hypothesis python-pytest-cov python-pytest-runner))
- (propagated-inputs
- (list python-arrow python-six))
- (home-page "https://inform.readthedocs.io")
- (synopsis "Print & logging utilities for communicating with user")
- (description
- "Inform is designed to display messages from programs that are typically run from
- a console. It provides a collection of ‘print’ functions that allow you to simply and
- cleanly print different types of messages.")
- (license license:gpl3+)))
- (define-public python-nestedtext
- (package
- (name "python-nestedtext")
- (version "1.0.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "nestedtext" version))
- (sha256
- (base32
- "0xjx863n7yd1xmkwhy48lhmqrmlzgbx3civhk386hvrzyq4sx148"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f)) ; PyPI tarball lacks tests
- (propagated-inputs
- (list python-inform))
- (home-page "https://nestedtext.org")
- (synopsis "Human readable and writable data interchange format")
- (description
- "NestedText is a file format for holding data that is to be entered, edited, or
- viewed by people. It allows data to be organized into a nested collection of
- dictionaries, lists, and strings. In this way it is similar to JSON and YAML, but
- without the complexity and risk of YAML and without the syntactic clutter of JSON.
- NestedText is both simple and natural. Only a small number of concepts and rules must
- be kept in mind when creating it. It is easily created, modified, or viewed with
- a text editor and easily understood and used by both programmers and non-programmers.")
- (license license:expat))) ; MIT license
- (define-public python-nest-asyncio
- (package
- (name "python-nest-asyncio")
- (version "1.5.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "nest_asyncio" version))
- (sha256
- (base32
- "1anha29fcijminn5bh2icnx8x7nk39lna9wkc72262i12p2s3idg"))))
- (build-system python-build-system)
- (home-page "https://github.com/erdewit/nest_asyncio")
- (synopsis "Patch asyncio to allow nested event loops")
- (description
- "By design @code{asyncio} does not allow its event loop to be nested.
- This presents a practical problem: when in an environment where the event loop
- is already running it's impossible to run tasks and wait for the result. This
- module patches @code{asyncio} to allow nested use of @code{asyncio.run} and
- @code{loop.run_until_complete}.")
- (license license:bsd-3)))
- (define-public python-simpervisor
- (package
- (name "python-simpervisor")
- (version "0.4")
- (source
- (origin
- ;; Tests not included in release.
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/yuvipanda/simpervisor")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "1brsisx7saf4ic0dih1n5y7rbdbwn1ywv9pl32bch3061r46prvv"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f ; Test suite can't find aiohttp.
- #:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key inputs outputs tests? #:allow-other-keys)
- (when tests?
- (add-installed-pythonpath inputs outputs)
- (invoke "pytest" "--maxfail" "3" "--verbose"))
- #t)))))
- (native-inputs
- (list python-aiohttp python-pytest python-pytest-asyncio))
- (home-page "https://github.com/yuvipanda/simpervisor")
- (synopsis "Simple async process supervisor")
- (description
- "This package provides a simple async process supervisor in Python.")
- (license license:bsd-3)))
- (define-public python-parallel
- (package
- (name "python-parallel")
- (version "1.6.4.4")
- (source
- (origin
- (method url-fetch)
- (uri (string-append
- "https://www.parallelpython.com/downloads/pp/pp-"
- version ".zip"))
- (sha256
- (base32
- "1mzk4yabxj6r149fswhis18hd8dnag5sj8i4wb06450zq3pi8dh7"))))
- (native-inputs
- (list unzip))
- (build-system python-build-system)
- (arguments '(#:tests? #f)) ; No test suite.
- (home-page "https://www.parallelpython.com")
- (synopsis "Parallel and distributed programming for Python")
- (description "Parallel Python module (PP) provides an easy and efficient
- way to create parallel-enabled applications for SMP computers and clusters.
- PP module features cross-platform portability and dynamic load balancing.
- Thus applications written with PP will parallelize efficiently even on
- heterogeneous and multi-platform clusters (including clusters running other
- applications with variable CPU loads).")
- (license license:bsd-3)))
- (define-public python2-parallel
- (package-with-python2 python-parallel))
- (define-public python-djvulibre
- (package
- (name "python-djvulibre")
- (version "0.8.6")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "python-djvulibre" version))
- (sha256
- (base32 "089smpq29ll0z37lnq26r2f72d31i33xm9fw9pc6hlcsm6nbjbiv"))))
- (build-system python-build-system)
- (native-inputs
- (list ghostscript pkg-config python-nose))
- (inputs
- (list djvulibre python-cython))
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'fix-tests
- (lambda _
- ;; Unit tests try to load the 'dllpath.py' and fail, because it
- ;; doesn't make sense on GNU/Linux.
- (delete-file "djvu/dllpath.py")
- #t)))))
- (synopsis "Python bindings for DjVuLibre")
- (description "This is a set of Python bindings for the DjVuLibre library.")
- (home-page "https://jwilk.net/software/python-djvulibre")
- (license license:gpl2)))
- (define-public python2-djvulibre
- (package-with-python2 python-djvulibre))
- (define-public python-versioneer
- (package
- (name "python-versioneer")
- (version "0.21")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "versioneer" version))
- (sha256
- (base32
- "084fglxafbzvf1vbkzfajvs9qwnvjwwn8pxql9nrlpyipv5xpwk4"))
- (patches (search-patches "python-versioneer-guix-support.patch"))))
- (build-system python-build-system)
- (home-page
- "https://github.com/python-versioneer/python-versioneer")
- (synopsis
- "Version-string management for VCS-controlled trees")
- (description
- "@code{versioneer} is a tool for managing a recorded version number in
- distutils-based python projects. The goal is to remove the tedious and
- error-prone \"update the embedded version string\" step from your release
- process.")
- (license license:public-domain)))
- (define-public python2-gamera
- (package
- (name "python2-gamera")
- (version "3.4.4")
- (source
- (origin
- (method url-fetch)
- (uri (string-append "https://gamera.informatik.hsnr.de/download/"
- "gamera-" version ".tar.gz"))
- (sha256
- (base32 "1g4y1kxk1hmxfsiz682hbxvwryqilnb21ci509m559yp7hcliiyy"))
- (modules '((guix build utils)))
- (snippet
- '(begin
- ;; Remove bundled libraries.
- (for-each delete-file-recursively
- '("src/libpng-1.2.5"
- "src/libtiff"
- "src/zlib-1.2.8"))))))
- (build-system python-build-system)
- (inputs
- (list libpng libtiff zlib))
- (arguments
- `(#:python ,python-2
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'disable-wx-support
- (lambda _
- (substitute* "setup.py"
- (("no_wx = False")
- "no_wx = True")))))))
- (synopsis "Framework for building document analysis applications")
- (description
- "Gamera is a toolkit for building document image recognition systems.")
- (home-page "https://gamera.informatik.hsnr.de/")
- (license license:gpl2+)))
- (define-public python-contextvars
- (package
- (name "python-contextvars")
- (version "2.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "contextvars" version))
- (sha256
- (base32
- "17n3w8c20kgkgc6khaafdhhlcdj4bzman4paxqsl7harma59137k"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-immutables))
- (home-page
- "https://github.com/MagicStack/contextvars")
- (synopsis "PEP 567 Backport")
- (description "This package implements a backport of Python 3.7
- @code{contextvars} module (see PEP 567) for Python 3.6.")
- (license license:asl2.0)))
- (define-public python-aiofiles
- (package
- (name "python-aiofiles")
- (version "0.6.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "aiofiles" version))
- (sha256
- (base32
- "14m01kjxm2j7zyljjj6xlhlgygcsriymbx730gc5jp9xglaina70"))))
- (build-system python-build-system)
- (home-page "https://github.com/Tinche/aiofiles")
- (synopsis "File support for @code{asyncio}")
- (description "@code{python-aiofiles} is a library for handling local
- disk files in asyncio applications.")
- (license license:asl2.0)))
- (define-public python-pyre-extensions
- (package
- (name "python-pyre-extensions")
- (version "0.0.18")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pyre-extensions" version))
- (sha256
- (base32
- "0c5cbbqrfyjwakdh3kbwxis6mbrbwky1z1fqslgszgpcj4g43q30"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-typing-extensions python-typing-inspect))
- (home-page "https://pyre-check.org")
- (synopsis
- "Type system extensions for use with @code{python-pyre}")
- (description
- "@code{python-pyre-extensions} defines extensions to the standard
- @code{typing} module that are supported by the Pyre typechecker.")
- (license license:expat)))
- (define-public python-dataclasses
- (package
- (name "python-dataclasses")
- (version "0.8")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "dataclasses" version))
- (sha256
- (base32
- "15sc12nrc7gxwb30vfa6frzdnpmbap9ibi1fr1yrbkra6izhcyc4"))))
- (build-system python-build-system)
- (home-page
- "https://github.com/ericvsmith/dataclasses")
- (synopsis
- "Backport of the @code{dataclasses} module for Python 3.6")
- (description
- "This is an implementation of PEP 557, Data Classes. It is a
- backport of the @code{dataclasses} module for Python 3.6.")
- (license license:asl2.0)))
- (define-public python-pywatchman
- (package
- (name "python-pywatchman")
- (version "1.4.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pywatchman" version))
- (sha256
- (base32
- "1yf2gm20wc3djpb5larxii3l55xxby0il2ns3q0v1byyfnr7w16h"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f)) ;there are none
- (home-page
- "https://facebook.github.io/watchman/")
- (synopsis "Watchman client for python")
- (description "@code{python-pywatchman} is a library to connect and
- query Watchman to discover file changes.")
- (license license:bsd-3)))
- (define-public python-roundrobin
- (package
- (name "python-roundrobin")
- (version "0.0.2")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "roundrobin" version))
- (sha256
- (base32 "1akwhvfyi0120zg2xkhfc6jwfkirz5x90yyvw06bndhaaxwcnc5c"))))
- (build-system python-build-system)
- (arguments '(#:tests? #f)) ;no tests on PyPI and no tags in repo
- (home-page "https://github.com/linnik/roundrobin")
- (synopsis "Collection of roundrobin utilities")
- (description
- "This package provides a collection of utilities for round-robin
- distribution in Python.")
- (license license:expat)))
- (define-public python-helpdev
- (package
- (name "python-helpdev")
- (version "0.7.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "helpdev" version))
- (sha256
- (base32
- "0gfvj28i82va7c264jl2p4cdsl3lpf9fpb9cyjnis55crfdafqmv"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key inputs outputs tests? #:allow-other-keys)
- (when tests?
- (add-installed-pythonpath inputs outputs)
- (invoke "pytest" "tests"))
- #t)))))
- (propagated-inputs
- (list python-importlib-metadata))
- (native-inputs
- (list python-pytest))
- (home-page "https://gitlab.com/dpizetta/helpdev")
- (synopsis
- "Extract information about the Python environment easily")
- (description
- "Helpdev is a library to easily extract information about the Python
- environment.")
- (license license:expat)))
- (define-public python-logutils
- (package
- (name "python-logutils")
- (version "0.3.5")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "logutils" version))
- (sha256
- (base32
- "10lsi5wv5ysnvf9ya4ncbix6mmipnv5067sf2cglc2f2sljql1dw"))))
- (build-system python-build-system)
- (home-page "https://bitbucket.org/vinay.sajip/logutils/")
- (synopsis "Logging utilities")
- (description "This package provides a set of handlers for the Python
- standard library logging package. Some of these handlers are out-of-scope
- for the standard library, and so they are packaged here. Others are updated
- versions which have appeared in recent Python releases, but are usable with
- older versions of Python and so are packaged here.")
- (license license:bsd-3)))
- (define-public python-helper
- (package
- (name "python-helper")
- (version "2.5.0")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "helper" version))
- (sha256
- (base32
- "1d2j64wgbggzv5rhvil10zndp2w78wa5np5w0psj122ws9qr9wsa"))))
- (build-system python-build-system)
- (native-inputs
- (list python-mock))
- (propagated-inputs
- (list python-logutils python-pyyaml))
- (home-page "https://github.com/gmr/helper")
- (synopsis "Library for writing configurable applications and daemons")
- (description
- "This package provides procedures for quickly writing configurable
- applications and daemons.")
- (license license:bsd-3)))
- (define-public python-qtsass
- (package
- (name "python-qtsass")
- (version "0.3.0")
- (source
- (origin
- ;; There are no tests in the PyPI tarball.
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/spyder-ide/qtsass/")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "09s04aa14d8jqbh71clrb5y7vcmkxlp94mwmvzrkxahry3bk03cb"))))
- (build-system python-build-system)
- (arguments
- `(#:test-target "pytest"
- #:phases
- (modify-phases %standard-phases
- ;; Tests need to read and write files.
- (add-before 'check 'make-git-checkout-writable
- (lambda _
- (for-each make-file-writable (find-files "."))
- #t)))))
- (native-inputs
- (list python-pytest python-pytest-cov python-pytest-runner))
- (propagated-inputs
- (list python-libsass))
- (home-page "https://github.com/spyder-ide/qtsass")
- (synopsis "Compile SCSS files to valid Qt stylesheets")
- (description
- "Besides being used in web development, CSS is also the way to stylize
- Qt-based desktop applications. However, Qt's CSS has a few variations that
- prevent the direct use of SASS compiler.
- The purpose of this tool is to fill the gap between SASS and Qt-CSS by
- handling those variations.")
- (license license:expat)))
- (define-public python-qdarkstyle
- (package
- (name "python-qdarkstyle")
- (version "2.8.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "QDarkStyle" version))
- (sha256
- (base32
- "0883vzg35fzpyl1aiijzpfcdfvpq5vi325w0m7xkx7nxplh02fym"))))
- (build-system python-build-system)
- (arguments
- `(;; Fails unable to detect valid Qt bindings even when
- ;; added as native-inputs.
- #:tests? #f))
- (propagated-inputs
- (list python-helpdev python-qtpy))
- (home-page
- "https://github.com/ColinDuquesnoy/QDarkStyleSheet")
- (synopsis
- "Complete dark stylesheet for Python and Qt applications")
- (description "QDarkStyle is the most complete dark stylesheet for Python and
- Qt applications.")
- (license license:expat)))
- (define-public python-bitstring
- (package
- (name "python-bitstring")
- (version "3.1.7")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "bitstring" version))
- (sha256
- (base32
- "0jl6192dwrlm5ybkbh7ywmyaymrc3cmz9y07nm7qdli9n9rfpwzx"))))
- (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)
- (with-directory-excursion "test"
- (invoke "pytest")))
- #t)))))
- (native-inputs
- (list python-pytest))
- (home-page "https://github.com/scott-griffiths/bitstring")
- (synopsis
- "Simple construction, analysis and modification of binary data")
- (description
- "Bitstring is a library for simple construction, analysis and modification
- of binary data.")
- (license license:expat)))
- (define-public python-confuse
- (package
- (name "python-confuse")
- (version "1.5.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "confuse" version))
- (sha256
- (base32
- "0bh2kyj8wd7h9gg4nsvrbykl5ly0f70f0wi3fbm204b1f0fcmywj"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-pyyaml))
- (home-page "https://github.com/beetbox/confuse")
- (synopsis "Painless YAML configuration")
- (description "Confuse is a configuration library for Python that uses
- YAML. It takes care of defaults, overrides, type checking, command-line
- integration, human-readable errors, and standard OS-specific locations.")
- (license license:expat)))
- (define-public python-reflink
- (package
- (name "python-reflink")
- (version "0.2.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "reflink" version))
- (sha256
- (base32
- "0fkf3sd958g9hvr3jwlhnhqqzrwxljrc3grsf3yknh94vf13a9f9"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #false)) ; almost all tests want to run mkfs.btrfs
- (propagated-inputs
- (list python-cffi))
- (native-inputs
- (list python-pytest python-pytest-runner))
- (home-page "https://gitlab.com/rubdos/pyreflink")
- (synopsis "Python wrapper around reflink system call")
- (description
- "Python reflink wraps around platform specific @code{reflink}
- implementations.")
- (license license:expat)))
- (define-public python-retry
- (package
- (name "python-retry")
- (version "0.9.2")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "retry" version))
- (sha256
- (base32 "197v6qrh6858bhzzrjgk2zdqrybppymb1lsvdxnm1i39kfwsigzq"))))
- (build-system python-build-system)
- (arguments
- (list #:phases
- #~(modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests? (invoke "pytest" "-vv")))))))
- (native-inputs (list python-pbr python-pytest))
- (propagated-inputs (list python-decorator python-py))
- (home-page "https://github.com/invl/retry")
- (synopsis "Retry decorator")
- (description
- "@code{retry} is an easy to use retry decorator for Python. It can be
- used to retry a function a given number of times.")
- (license license:asl2.0)))
- (define-public python-pivy
- (package
- (name "python-pivy")
- (version "0.6.5")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/coin3d/pivy")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32 "0vids7sxk8w5vr73xdnf8xdci71a7syl6cd35aiisppbqyyfmykx"))))
- (build-system python-build-system)
- (arguments
- `(;; The test suite fails due to an import cycle between 'pivy' and '_coin'
- #:tests? #f
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'patch-cmake-include-dirs
- (lambda _
- ;; Patch buildsystem to respect Coin3D include directory
- (substitute* "CMakeLists.txt"
- (("\\$\\{SoQt_INCLUDE_DIRS}")
- "${Coin_INCLUDE_DIR};${SoQt_INCLUDE_DIRS}"))
- #t)))))
- (native-inputs
- (list cmake swig))
- (inputs
- (list python-wrapper
- qtbase-5
- libxi
- libice
- soqt
- glew
- coin3D-4))
- (home-page "https://github.com/coin3d/pivy")
- (synopsis "Python bindings to Coin3D")
- (description
- "Pivy provides python bindings for Coin, a 3D graphics library with an
- Application Programming Interface based on the Open Inventor 2.1 API.")
- (license license:isc)))
- (define-public python-crayons
- (package
- (name "python-crayons")
- (version "0.4.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "crayons" version))
- (sha256
- (base32
- "0gw106k4b6y8mw7pp52awxyplj2bwvwk315k4sywzwh0g1abfcxx"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-colorama))
- (home-page "https://github.com/MasterOdin/crayons")
- (synopsis "TextUI colors for Python")
- (description "This package gives you colored strings for the terminal.
- Crayons automatically wraps a given string in the foreground color and
- restores the original state after the string is printed.")
- (license license:expat)))
- (define-public python-sane
- (package
- (name "python-sane")
- (version "2.9.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri name version))
- (sha256
- (base32
- "1pi597z94n2mkd821ln52fq0g727n2jxfskf280ip3kf7jw8w294"))))
- (build-system python-build-system)
- (native-inputs
- (list python-pytest))
- (inputs
- (list sane-backends))
- (home-page "https://github.com/python-pillow/Sane")
- (synopsis "Python interface to the SANE scanner")
- (description "This package provides Python interface to the SANE scanner
- and frame grabber interface.")
- (license (license:non-copyleft
- ;; Yet another variant of the X/MIT license.
- "https://github.com/python-pillow/Sane/blob/master/COPYING"))))
- (define-public python-screenkey
- (package
- (name "python-screenkey")
- (version "1.4")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://gitlab.com/screenkey/screenkey")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "1rfngmkh01g5192pi04r1fm7vsz6hg9k3qd313sn9rl9xkjgp11l"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'fix-dlopen-paths
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let* ((x11 (assoc-ref inputs "libx11"))
- (xtst (assoc-ref inputs "libxtst")))
- (substitute* "Screenkey/xlib.py"
- (("libX11.so.6")
- (string-append x11 "/lib/libX11.so.6")))
- (substitute* "Screenkey/xlib.py"
- (("libXtst.so.6")
- (string-append xtst "/lib/libXtst.so.6")))
- #t)))
- (add-after 'install 'wrap-screenkey
- (lambda* (#:key outputs #:allow-other-keys)
- (wrap-program
- (string-append (assoc-ref outputs "out") "/bin/screenkey")
- `("GUIX_PYTHONPATH" ":" prefix (,(getenv "GUIX_PYTHONPATH")))
- `("GI_TYPELIB_PATH"
- ":" prefix (,(getenv "GI_TYPELIB_PATH")))))))))
- (inputs
- (list python-distutils-extra
- python-tokenize-rt
- libx11
- libxtst
- gtk+
- python-pygobject
- python-pycairo
- python-setuptools-git
- python-babel))
- (home-page "https://www.thregr.org/~wavexx/software/screenkey/")
- (synopsis
- "Screencast tool to display pressed keys")
- (description
- "Screenkey is a screencast tool to display your keys inspired by
- Screenflick.")
- (license license:gpl3+)))
- (define-public python-jinja2-cli
- (package
- (name "python-jinja2-cli")
- (version "0.7.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "jinja2-cli" version))
- (sha256
- (base32
- "0vikx7v6fbvww6kfrv0k5a24jyv3ak7nindg60906pdd1m9qvkcw"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-jinja2))
- (native-inputs
- (list python-flake8 python-jinja2 python-pytest))
- (home-page "https://github.com/mattrobenolt/jinja2-cli")
- (synopsis "Command-line interface to Jinja2")
- (description
- "This package provides a command-line interface (CLI) to the Jinja2
- template engine.")
- (license license:bsd-3)))
- (define-public python-readability
- (package
- (name "python-readability")
- (version "0.3.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "readability" version))
- (sha256
- (base32
- "1b8gq3g2zwvx0aivvdg56cc0bn7xw6f2v6psmxdx9aiipkw0s0zr"))))
- (build-system python-build-system)
- (home-page
- "https://github.com/andreasvc/readability/")
- (synopsis
- "Measure the readability of a given text using surface
- characteristics")
- (description
- "This package provides a Python library that is an implementation of
- traditional readability measures based on simple surface
- characteristics. These measures are basically linear regressions based on the
- number of words, syllables, and sentences.")
- (license license:asl2.0)))
- (define-public python-listparser
- (package
- (name "python-listparser")
- (version "0.18")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "listparser" version))
- (sha256
- (base32
- "0hdqs1mmayw1r8yla43hgb4d9y3zqs5483vgf8j9ygczkd2wrq2b"))))
- (build-system python-build-system)
- (home-page
- "https://github.com/kurtmckee/listparser")
- (synopsis
- "Parse subscription lists in Python")
- (description
- "This package provides a Python library that can parse OPML, FOAF, and
- iGoogle subscription lists.")
- (license license:expat)))
- (define-public python-smartypants
- (package
- (name "python-smartypants")
- (version "2.0.1")
- (source
- (origin
- ;; There's no source tarball for 2.0.1 on PyPI.
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/leohemsted/smartypants.py")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "00p1gnb9pzb3svdq3c5b9b332gsp50wrqqa39gj00m133zadanjp"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- ;; Its `setup.py test` doesn't report failure with exit status, so
- ;; we use `nose` instead.
- (lambda _
- (invoke "nosetests" "-v" "--exclude=^load_tests$"))))))
- (native-inputs
- ;; For tests.
- (list python-docutils python-nose python-pygments))
- (home-page "https://github.com/leohemsted/smartypants.py")
- (synopsis "Translate punctuation characters into smart quotes")
- (description
- "@command{smartpants} can perform the following transformations:
- @enumerate
- @item Straight quotes ( \" and ' ) into \"curly\" quote HTML entities
- @item Backticks-style quotes (``like this'') into \"curly\" quote HTML
- entities
- @item Dashes (-- and ---) into en- and em-dash entities
- @item Three consecutive dots (... or . . .) into an ellipsis entity
- @end enumerate")
- (license license:bsd-3)))
- (define-public python-typogrify
- (package
- (name "python-typogrify")
- (version "2.0.7")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "typogrify" version))
- (sha256
- (base32
- "0f6b2gnnxjbx1fbmkcscc6qjr4hi78kwm1wx4b766ha3va66dr4b"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- (invoke "nosetests" "-v"))))))
- (propagated-inputs
- (list python-smartypants))
- (native-inputs
- ;; For tests.
- (list python-nose))
- (home-page "https://github.com/mintchaos/typogrify")
- (synopsis "Filters to transform text into typographically-improved HTML")
- (description
- "@code{typogrify} provides a set of custom filters that automatically
- apply various transformations to plain text in order to yield
- typographically-improved HTML. While often used in conjunction with Jinja and
- Django template systems, the filters can be used in any environment.")
- (license license:bsd-3)))
- (define-public python-ld
- (package
- (name "python-ld")
- (version "0.5.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "ld" version))
- (sha256
- (base32
- "1k4ydp5rgkv4985v459kcl06i1igjm1ywvh2vkbi9ck1zyyri1z5"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-six))
- (home-page "https://github.com/nir0s/ld")
- (synopsis "OS platform information API")
- (description
- "The ld package provides information about the GNU/Linux distribution it
- runs on, such as a reliable machine-readable ID, or version information.")
- (license license:asl2.0)))
- (define-public python-quicktions
- (package
- (name "python-quicktions")
- (version "1.11")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "quicktions" version))
- (sha256
- (base32
- "1px21a6x527i1bsr2p6bbf3jziqpvd1vjkvvzh13gsy4iip0yvzn"))
- (modules '((guix build utils)))
- (snippet
- '(begin
- ;; This file is generated by Cython.
- (delete-file "src/quicktions.c") #t))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-before 'build 'cythonize-sources
- (lambda _
- (with-directory-excursion "src"
- (invoke "cython" "quicktions.pyx"))))
- (replace 'check
- (lambda* (#:key tests? inputs outputs #:allow-other-keys)
- (when tests?
- (add-installed-pythonpath inputs outputs)
- (invoke "pytest"))
- #t)))))
- (native-inputs
- (list python-cython python-pytest))
- (home-page "https://github.com/scoder/quicktions")
- (synopsis "Fast fractions data type for rational numbers")
- (description
- "This package provides fast fractions data type for rational numbers. It
- is the cythonized version of @code{fractions.Fraction}.")
- (license license:psfl)))
- (define-public python-pathvalidate
- (package
- (name "python-pathvalidate")
- (version "2.4.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pathvalidate" version))
- (sha256
- (base32 "0s14ycjgb44lxr2wg8lrq3b7kybmmrbf7yqz47xrqgn2gr6dk6rw"))))
- (build-system python-build-system)
- (arguments
- '(#:tests? #f))
- ;; Tests disabled because of circular dependencies.
- ;; pathvalidate tests depend on pytest-md-report, which
- ;; depends on pathvalidate.
- (native-inputs
- (list python-allpairspy python-click python-faker python-pytest))
- (home-page "https://github.com/thombashi/pathvalidate")
- (synopsis "Sanitize strings representing paths")
- (description
- "@code{pathvalidate} is a Python library to sanitize/validate strings
- representing paths or filenames.")
- (license license:expat)))
- (define-public python-escapism
- (package
- (name "python-escapism")
- (version "1.0.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "escapism" version))
- (sha256
- (base32
- "1v74243wifcwhj5zkdiispxc9kb1xvnfzilg8bq308pjnkgnn9bk"))))
- (build-system python-build-system)
- (home-page "https://github.com/minrk/escapism")
- (synopsis "Simple, generic library for escaping strings")
- (description
- "This Python library provides a programming interface to, given a set of
- safe characters and an escape character, escape safe strings and unescape the
- result.")
- (license license:expat)))
- (define-public python-recommonmark
- (package
- (name "python-recommonmark")
- (version "0.7.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "recommonmark" version))
- (sha256
- (base32
- "0rvdd2ikdr0yg6cx6594fdzn53cmdc0g0i6qsbcdq8i2kxjdpd5x"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-commonmark python-docutils python-sphinx))
- (arguments
- '(#:phases (modify-phases %standard-phases
- (add-after 'unpack 'delete-test-sphinx
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out")))
- (delete-file "tests/test_sphinx.py")))))))
- (home-page "https://github.com/readthedocs/recommonmark")
- (synopsis "Docutils-compatibility bridge to CommonMark")
- (description
- "This package provides a docutils-compatibility bridge to CommonMark that
- lets you write CommonMark inside of Docutils & Sphinx projects.")
- (license license:expat)))
- (define-public python-pyhull
- (package
- (name "python-pyhull")
- (version "2015.2.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pyhull" version))
- (sha256
- (base32
- "091sph52c4yk1jlm5w8xidxpzbia9r7s42bnb23q4m4b56ihmzyj"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-numpy))
- (home-page "https://github.com/materialsvirtuallab/pyhull")
- (synopsis "Python wrapper to Qhull")
- (description
- "This package provides a Python wrapper to @uref{http://www.qhull.org/,
- Qhull} for the computation of the convex hull, Delaunay triangulation, and
- Voronoi diagram.")
- (license license:expat)))
- (define-public python-opcodes
- ;; There are no tags in this repo, but 'opcodes/__init__.py' specifies a
- ;; version number, which is what we use here.
- (let ((commit "0f7c7d63f5e13ce5a89d9acc3934f1b6e247ec1f"))
- (package
- (name "python-opcodes")
- (version "0.3.14") ;from 'opcodes/__init__.py'
- (home-page "https://github.com/Maratyszcza/Opcodes")
- (source (origin
- (method git-fetch)
- (uri (git-reference (url home-page) (commit commit)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "1fvxkr83gfl9f0ikd2wl2lzazzya2qz1hk4yn2a0pq742brbwpys"))))
- (build-system python-build-system)
- (synopsis "Database of processor instructions and opcodes")
- (description
- "This project documents instruction sets in a format convenient for
- tools development. An instruction set is represented by three files:
- @itemize
- @item an XML file that describes instructions;
- @item an XSD file that describes the structure of the XML file;
- @item a Python module that reads the XML file and represents it as a set of
- Python objects;
- @end itemize
- It currently provides descriptions for most user-mode x86, x86_64, and k1om
- instructions up to AVX-512 and SHA (including 3dnow!+, XOP, FMA3, FMA4, TBM
- and BMI2).")
- (license license:bsd-2))))
- (define-public python-peachpy
- ;; There is no tag in this repo.
- (let ((commit "906d578266dc7188bf61e4cdbc9f8ea7d69edec0")
- (version "0.2.0") ;from 'peachpy/__init__.py'
- (revision "1"))
- (package
- (name "python-peachpy")
- (version (git-version version revision commit))
- (home-page "https://github.com/Maratyszcza/PeachPy")
- (source (origin
- (method git-fetch)
- (uri (git-reference (url home-page) (commit commit)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "1yy62k3cjr6556nbp651w6v4hzl7kz4y75wy2dfqgndgbnixskx2"))
- (patches (search-patches "python-peachpy-determinism.patch"))))
- (build-system python-build-system)
- (arguments
- '(#:phases (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "nosetests")))))))
- (native-inputs
- (list python-nose python-rednose python-setuptools))
- (propagated-inputs
- (list python-six python-opcodes))
- (synopsis "Efficient assembly code generation in Python")
- (description
- "PeachPy is a Python framework for writing high-performance assembly kernels.
- PeachPy aims to simplify writing optimized assembly kernels while preserving
- all optimization opportunities of traditional assembly.
- PeachPy can generate ELF, MS-COFF, Mach-O object files, and assembly listings
- for the Go language tool chain; it adapts to different calling conventions and
- application binary interfaces (ABIs); it takes care of register allocation; it
- supports x86_64 instructions up to AVX-512 and SHA.")
- (license license:bsd-2))))
- (define-public python-sgmllib3k
- (let ((commit "799964676f35349ca2dd04503e34c2b3ad522c0d")
- (revision "1"))
- (package
- (name "python-sgmllib3k")
- (version
- (git-version "1.0.0" revision commit))
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/hsoft/sgmllib")
- (commit commit)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0bzf6pv85dzfxfysm6zbj8m40hp0xzr9h8qlk4hp3nmy88rznqvr"))))
- (build-system python-build-system)
- (home-page "https://github.com/hsoft/sgmllib")
- (synopsis "Python 3 port of sgmllib")
- (description "This package provides an unmaintained port of sgmllib to
- Python 3. It is used to parse text files formatted in @acronym{SGML,Standard
- Generalized Mark-up Language}.")
- (license license:bsd-3))))
- (define-public python-cwcwidth
- (package
- (name "python-cwcwidth")
- (version "0.1.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "cwcwidth" version))
- (sha256
- (base32
- "1azrphpkcyggg38xvkfb9dpc4xmmm90p02kf8dkqd4d6j5w96aj8"))))
- (build-system python-build-system)
- (native-inputs
- (list python-cython python-pytest python-setuptools-scm python-toml
- python-wheel))
- (home-page
- "https://github.com/sebastinas/cwcwidth")
- (synopsis "Python bindings for wc(s)width")
- (description "This package provides bindings for wcwidth and wcswidth
- functions defined in POSIX.1-2001 and POSIX.1-2008.")
- (license license:expat)))
- (define-public python-pyan3
- (package
- (name "python-pyan3")
- (version "1.2.0")
- (source
- (origin
- ;; Source tarball on PyPI lacks tests.
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/Technologicat/pyan")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "1367x25rcy2y8f0x9c2dbxl2qgdln3arr7ddyzybz2c28g6jrv5z"))
- (patches (search-patches "python-pyan3-fix-positional-arguments.patch"
- "python-pyan3-fix-absolute-path-bug.patch"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- ;; Extend PYTHONPATH so the built package will be found.
- (setenv "GUIX_PYTHONPATH"
- (string-append (getcwd) ":" (getenv "GUIX_PYTHONPATH")))
- (invoke "pytest")))))))
- (native-inputs
- (list python-pytest python-pytest-cov python-wheel))
- (propagated-inputs
- (list python-jinja2))
- (home-page "https://github.com/Technologicat/pyan")
- (synopsis "Offline call graph generator for Python 3")
- (description "Pyan takes one or more Python source files, performs
- a (rather superficial) static analysis, and constructs a directed graph of the
- objects in the combined source, and how they define or use each other. The
- graph can be output for rendering by GraphViz or yEd.")
- (license license:gpl2)))
- (define-public python-multipledispatch
- (package
- (name "python-multipledispatch")
- (version "0.6.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "multipledispatch" version))
- (sha256
- (base32
- "1slblghfjg9fdi9zpd7gmrkvfbv20nrdgnrymcnbky8bzm8i9ax7"))))
- (build-system python-build-system)
- (propagated-inputs (list python-six))
- (home-page "https://github.com/mrocklin/multipledispatch/")
- (synopsis "Multiple dispatch for Python based on pattern matching")
- (description "This library provides an efficient mechanism for overloading
- function implementations based on the types of the arguments.")
- (license license:bsd-3)))
- (define-public python-logical-unification
- (package
- (name "python-logical-unification")
- (version "0.4.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "logical-unification" version))
- (sha256
- (base32
- "0j57953hi7kg2rl0163vzjzsvzdyjimnklhx6idf5vaqqf1d3p1j"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-multipledispatch python-toolz))
- (home-page "https://github.com/pythological/unification/")
- (synopsis "Logical unification in Python for solving symbolic expressions")
- (description "This library provides algorithms and data types for solving
- symbolic expressions in pure Python using the technique of logical unification.")
- (license license:bsd-3)))
- (define-public python-cons
- (package
- (name "python-cons")
- (version "0.4.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "cons" version))
- (sha256
- (base32
- "0w9giq196wps7mbm47c4shdzs5yvwvqajqzkim2p92i51sm5qgvm"))))
- (build-system python-build-system)
- (native-inputs
- (list python-pytest-6 python-toml))
- (propagated-inputs
- (list python-logical-unification))
- (home-page "https://github.com/pythological/python-cons")
- (synopsis "Cons cell data structures and related algorithms for Python")
- (description
- "This library implements algorithms and data structures for Lisp-style
- cons cells in Python.")
- (license license:lgpl3+)))
- (define-public python-etuples
- (package
- (name "python-etuples")
- (version "0.3.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "etuples" version))
- (sha256
- (base32
- "0jhfyp177v37rl0i7wqfx7q6s5qkz027hl283d1x8d0vm3w0zqc8"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-cons python-multipledispatch))
- (home-page "https://github.com/pythological/etuples")
- (synopsis "S-expressions in Python")
- (description
- "This library implements eval'able S-expression in Python using tuple-like objects.")
- (license license:asl2.0)))
- (define-public python-minikanren
- (package
- (name "python-minikanren")
- (version "1.0.1")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/pythological/kanren")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "0g7wfj5hxalwz7k1301nsjqhjpzsif1bj6wjm2x2kavlm2ypv9jc"))))
- (build-system python-build-system)
- (arguments
- '(#:phases (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "python" "-m" "pytest" "-v" "tests/" "kanren/"))
- #t)))))
- (native-inputs
- (list python-coveralls
- python-pydocstyle
- python-pytest
- python-pytest-cov
- python-pylint
- python-black
- python-sympy
- python-versioneer
- python-coverage
- python-pre-commit))
- (propagated-inputs
- (list python-toolz python-cons python-multipledispatch
- python-etuples python-logical-unification))
- (home-page "https://github.com/pythological/kanren")
- (synopsis "Relational logic programming in pure Python")
- (description
- "The minikanren library provides an algorithmic core for computer algebra
- systems in Python.")
- (license license:bsd-3)))
- (define-public python-dotenv
- (package
- (name "python-dotenv")
- (version "0.19.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "python-dotenv" version))
- (sha256
- (base32 "0pv5ygpr6syc6zkw21in4ysqs3k7qaxk9m1g5pzlafwm3silkpm5"))))
- (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)
- (setenv "PATH" (string-append (getenv "PATH") ":"
- (assoc-ref outputs "out") "/bin"))
- ;; Skip the ipython tests.
- (delete-file "tests/test_ipython.py")
- (invoke "python" "-m" "pytest")))))))
- (propagated-inputs
- (list python-click))
- (native-inputs
- (list python-mock python-pytest python-sh))
- (home-page "https://github.com/theskumar/python-dotenv")
- (synopsis "Setup environment variables according to .env files")
- (description
- "This package provides the @code{python-dotenv} Python module to read
- key-value pairs from a @code{.env} file and set them as environment variables.")
- (license license:bsd-3)))
- (define-public python-dotenv-0.13.0
- (package (inherit python-dotenv)
- (name "python-dotenv")
- (version "0.13.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "python-dotenv" version))
- (sha256
- (base32
- "0x5dagmfn31phrbxlwacw3s4w5vibv8fxqc62nqcdvdhjsy0k69v"))))))
- (define-public date2name
- (let ((commit "6c8f37277e8ec82aa50f90b8921422be30c4e798")
- (revision "1"))
- (package
- (name "date2name")
- (version (git-version "0.0" revision commit))
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/novoid/date2name")
- (commit commit)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "1vq96b7n16d932nyfhnzwdwxff0zrqanidmwr4cxj2p67ad9y3w7"))))
- (build-system python-build-system)
- (arguments
- `(#:tests? #f ; no tests
- #:phases
- (modify-phases %standard-phases
- (delete 'build)
- (replace 'install
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((bindir (string-append (assoc-ref outputs "out") "/bin"))
- (binary (string-append bindir "/date2name")))
- (mkdir-p bindir)
- (copy-file "date2name/__init__.py" binary)
- (chmod binary #o555)))))))
- (synopsis "Handling time-stamps and date-stamps in file names")
- (description "By default, date2name gets the modification time of matching
- files and directories and adds a datestamp in standard ISO 8601+ format
- YYYY-MM-DD at the beginning of the file or directory name.")
- (home-page "https://github.com/novoid/date2name")
- (license license:gpl3+))))
- (define-public python-braintree
- (package
- (name "python-braintree")
- (version "4.12.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "braintree" version))
- (sha256
- (base32 "19kli85q18p80nsn8fm4ql6axpr7bllfqg5chv2ywhr8zr8bssll"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-requests))
- (home-page
- "https://developers.braintreepayments.com/python/sdk/server/overview")
- (synopsis "Braintree Python Library")
- (description "The Braintree Python SDK provides integration access to the
- Braintree Gateway. Braintree is a US-based payments service provider.")
- (license license:expat)))
- (define-public python-markuppy
- (package
- (name "python-markuppy")
- (version "1.14")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "MarkupPy" version))
- (sha256
- (base32 "0pqdmpxbr8iq22b4css2gz5z6s01ddpzyj25x27kgbs2lp0f5phs"))))
- (build-system python-build-system)
- (home-page "https://github.com/tylerbakke/MarkupPy")
- (synopsis "Pythonic HTML/XML generator")
- (description "This Python module attempts to make it easier to generate
- HTML/XML from a Python program in an intuitive, lightweight, customizable and
- pythonic way.")
- (license license:expat)))
- (define-public python-tablib
- (package
- (name "python-tablib")
- (version "3.0.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "tablib" version))
- (sha256
- (base32 "03f1z6jq6rf67gwhbm9ma4rydm8h447a5nh5lcs5l8jg8l4aqg7q"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (setenv "GUIX_PYTHONPATH"
- (string-append (getcwd) "/build/lib:"
- (getenv "GUIX_PYTHONPATH")))
- (invoke "pytest")))))))
- (native-inputs
- (list python-pandas ;; required for test-suite
- python-pytest python-pytest-cov python-setuptools-scm))
- (propagated-inputs
- (list python-markuppy
- python-odfpy
- python-openpyxl
- python-pyyaml
- python-tabulate
- python-xlrd
- python-xlwt))
- (home-page "https://tablib.readthedocs.io")
- (synopsis "Format agnostic tabular data library")
- (description "@code{tablib} is a format-agnostic tabular dataset library,
- written in Python. Supported output formats are Excel (Sets + Books),
- JSON (Sets + Books), YAML (Sets + Books), HTML (Sets), Jira (Sets),
- TSV (Sets), ODS (Sets), CSV (Sets), and DBF (Sets).
- @code{tablib} also supports Pandas DataFrames (Sets). Anyhow, since pandas is
- quite huge, this Guix package doesn't depend on pandas. In case, just also
- install @code{python-pandas}.")
- (license license:expat)))
- (define-public python-csb43
- (package
- (name "python-csb43")
- (version "0.9.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "csb43" version))
- (sha256
- (base32 "0r0csl9npncnkfafg3rg6xr38d1qr0sxvq7wn7mg9bq41hvvh1si"))))
- (build-system python-build-system)
- (native-inputs
- (list python-lxml))
- (propagated-inputs
- (list python-pycountry python-pyyaml python-tablib))
- (home-page "https://bitbucket.org/wmj/csb43")
- (synopsis "Tools for converting from the Spanish banks' format CSB norm
- 43 (CSB43)")
- (description "This package provides tools to convert files in the format
- used by multiple Spanish banks (standard 43 of the Spanish Banking Council
- [CSB43] / Spanish Banking Association [AEB43]) to other formats.
- Supported output formats are: OFX, HomeBank CSV, HTML, JSON, ODS (OpenDocument
- spreadsheet), CSV, TSV, XLS, XLSX (Microsoft Excel spreadsheet), and YAML.")
- (license license:lgpl3)))
- (define-public python-febelfin-coda
- (package
- (name "python-febelfin-coda")
- (version "0.2.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "febelfin-coda" version))
- (sha256
- (base32 "1isnf87gxlvfbmackv7b2c978vmnj7ij0v4svhyjl8pbb9hwjsvm"))))
- (build-system python-build-system)
- (home-page "https://coda.b2ck.com/")
- (synopsis "Module to parse Belgian CODA files")
- (description "This package provides a module to parse Coded statement of
- account (CODA) files as defined be the Belgian Febelfin bank standard.")
- (license license:bsd-3)))
- (define-public python-ofxparse
- (package
- (name "python-ofxparse")
- (version "0.21")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "ofxparse" version))
- (sha256
- (base32 "19y4sp5l9jqiqzzlbqdfiab42qx7d84n4xm4s7jfq397666vcyh5"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "nosetests" "-v")))))))
- (native-inputs
- (list python-nose))
- (propagated-inputs
- (list python-beautifulsoup4 python-lxml python-six))
- (home-page "http://sites.google.com/site/ofxparse")
- (synopsis "Tools for working with the OFX (Open Financial Exchange) file
- format")
- (description "@code{ofxparse} is a parser for Open Financial
- Exchange (.ofx) format files. OFX files are available from almost any online
- banking site, so they work well if you want to pull together your finances
- from multiple sources. Online trading accounts also often provide account
- statements in OFX files.")
- (license license:expat)))
- (define-public python-stripe
- (package
- (name "python-stripe")
- (version "2.60.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "stripe" version))
- (sha256
- (base32 "0258lzh4qikhinfggnlfh5aklcvg7lrvl8giqrh0yf0l61wvfrl9"))))
- (build-system python-build-system)
- (arguments
- '(#:tests? #f)) ;; tests require network
- (propagated-inputs
- (list python-requests))
- (home-page "https://github.com/stripe/stripe-python")
- (synopsis "Python bindings for the Stripe financial services' API")
- (description "This package provides access to the Stripe financial
- services' API. It includes a pre-defined set of classes for API resources
- that initialize themselves dynamically from API responses which makes it
- compatible with a wide range of versions of the Stripe API.")
- (license license:expat)))
- (define-public python-platformdirs
- (package
- (name "python-platformdirs")
- (version "2.4.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "platformdirs" version))
- (sha256
- (base32 "1njz0h4iky8iglrb85cd07hpa3lp1a2dfr934dj65hxwzvfk61j4"))))
- (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
- (list python-appdirs python-pytest python-pytest-mock
- python-setuptools-scm))
- (home-page "https://github.com/platformdirs/platformdirs")
- (synopsis "Determine the appropriate platform-specific directories")
- (description "When writing applications, finding the right location to
- store user data and configuration varies per platform. Even for
- single-platform apps, there may by plenty of nuances in figuring out the right
- location. This small Python module determines the appropriate
- platform-specific directories, e.g. the ``user data dir''.")
- (license license:expat)))
- (define-public python-json2html
- (package
- (name "python-json2html")
- (version "1.3.0")
- (source
- ;; There are no tests in the PyPI tarball.
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/softvar/json2html")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "1ncypljnl5y8lsxy6ibcqy412kx3mzxl4ajg67568hvq98kv1sb3"))))
- (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" "test/run_tests.py")))))))
- (home-page "https://github.com/softvar/json2html")
- (synopsis "Convert JSON to HTML table")
- (description "@code{python-json2html} is a python module to convert JSON
- into a human readable HTML table representation.")
- (license license:expat)))
- (define-public python-face
- (package
- (name "python-face")
- (version "20.1.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "face" version))
- (sha256
- (base32 "0gpd9f0rmbv3rd2szi2na37l29fabkwazikjrxc6wca1lddwlnbx"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? inputs outputs #:allow-other-keys)
- (when tests?
- ;; Make installed package available for running the tests.
- (add-installed-pythonpath inputs outputs)
- (invoke "pytest" "-v")))))))
- (native-inputs
- (list python-pytest))
- (propagated-inputs
- (list python-boltons))
- (home-page "https://github.com/mahmoud/face")
- (synopsis "CLI parsing and dispatching microframework")
- (description "@code{python-face} is a Pythonic microframework for building
- command-line applications.
- @itemize
- @item First-class subcommand support
- @item Powerful middleware architecture
- @item Separate parser layer
- @item Built-in flagfile support
- @item Handy testing utilities
- @item Themeable help display
- @end itemize")
- (license license:bsd-3)))
- (define-public python-glom
- (package
- (name "python-glom")
- (version "20.11.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "glom" version))
- (sha256
- (base32 "04pba09vdr3qjvqvy14g60fscdsi35chbbyqpczdp76cpir101al"))))
- (build-system python-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? inputs outputs #:allow-other-keys)
- (when tests?
- ;; Make installed executable available for running the tests.
- (setenv "PATH"
- (string-append (assoc-ref outputs "out") "/bin"
- ":" (getenv "PATH")))
- (invoke "pytest" "-v")))))))
- (native-inputs
- (list python-pytest python-pyyaml))
- (propagated-inputs
- (list python-attrs python-boltons python-face))
- (home-page "https://github.com/mahmoud/glom")
- (synopsis "Declaratively restructure data")
- (description "Real applications have real data, and real data
- nests---objects inside of objects inside of lists of objects. glom is a new
- and powerful way to handle real-world data, featuring:
- @itemize
- @item Path-based access to nested data structures
- @item Readable, meaningful error messages
- @item Declarative data transformation, using lightweight, Pythonic specifications
- @item Built-in data exploration and debugging features
- @end itemize")
- (license license:bsd-3)))
- (define-public python-box
- (package
- (name "python-box")
- (version "5.3.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "python-box" version))
- (sha256
- (base32
- "0jhrdif57khx2hsw1q6a9x42knwcvq8ijgqyq1jmll6y6ifyzm2f"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-msgpack python-ruamel.yaml python-toml))
- (home-page "https://github.com/cdgriffith/Box")
- (synopsis "Advanced Python dictionaries with dot notation access")
- (description
- "This package provides the @code{python-box} Python module.
- It implements advanced Python dictionaries with dot notation access.")
- (license license:expat)))
- (define-public python-fields
- (package
- (name "python-fields")
- (version "5.0.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "fields" version))
- (sha256
- (base32 "09sppvhhkhkv9zc9g994m53z15v92csxwcf42ggkaknlv01smm1i"))))
- (build-system python-build-system)
- (home-page "https://python-fields.readthedocs.io/")
- (synopsis "Python container class boilerplate killer")
- (description "Avoid repetetive boilerplate code in Python classes.")
- (license license:bsd-3)))
- (define-public python-aspectlib
- (package
- (name "python-aspectlib")
- (version "1.5.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "aspectlib" version))
- (sha256
- (base32 "1am4ycf292zbmgz791z393v63w7qrynf8q5p9db2wwf2qj1fqxfj"))))
- (build-system python-build-system)
- (propagated-inputs (list python-fields))
- (home-page "https://github.com/ionelmc/python-aspectlib")
- (synopsis
- "Python monkey-patching and decorators")
- (description
- "This package provides an aspect-oriented programming, monkey-patch
- and decorators library. It is useful when changing behavior in existing
- code is desired. It includes tools for debugging and testing:
- simple mock/record and a complete capture/replay framework.")
- (license license:bsd-2)))
- (define-public python-ijson
- (package
- (name "python-ijson")
- (version "3.1.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "ijson" version))
- (sha256
- (base32 "1sp463ywj4jv5cp6hsv2qwiima30d09xsabxb2dyq5b17jp0640x"))))
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- ;; the tests run by the default setup.py require yajl 1.x,
- ;; but we have 2.x. yajl 1.x support is going to be removed
- ;; anyway, so use pytest to avoid running the yajl1-related
- ;; tests. See: https://github.com/ICRAR/ijson/issues/55
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "pytest" "-vv")))))))
- (inputs
- ;; libyajl is optional, but compiling with it makes faster
- ;; backends available to ijson:
- (list libyajl))
- (native-inputs
- (list python-pytest))
- (build-system python-build-system)
- (home-page "https://github.com/ICRAR/ijson")
- (synopsis "Iterative JSON parser with Python iterator interfaces")
- (description
- "Ijson is an iterative JSON parser with standard Python iterator
- interfaces.")
- (license license:bsd-3)))
- (define-public python-orgparse
- (package
- (name "python-orgparse")
- (version "0.3.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "orgparse" version))
- (sha256
- (base32 "14iv4pg3rma9560plg0w943x04mr2cmrssda43y2d1x9acrd2n71"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "pytest" "-vv" "orgparse/tests")))))))
- (native-inputs
- (list python-pytest python-setuptools-scm))
- (home-page "https://github.com/karlicoss/orgparse")
- (synopsis "Emacs Org mode parser in Python")
- (description
- "This package is a Python module for reading Emacs Org mode files.")
- (license license:bsd-3)))
- (define-public dynaconf
- (package
- (name "dynaconf")
- (version "3.1.7")
- (source
- (origin
- (method git-fetch)
- (uri
- (git-reference
- (url "https://github.com/rochacbruno/dynaconf")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0pjyjsdzairpn5vq8nzddhxwxmr18grn272nj31wcy2ipwdl3c3h"))
- (patches (search-patches "dynaconf-unvendor-deps.patch"))
- (modules '((guix build utils)))
- (snippet '(begin
- ;; Remove vendored dependencies
- (let ((unvendor '("click" "dotenv" "ruamel" "toml")))
- (with-directory-excursion "dynaconf/vendor"
- (for-each delete-file-recursively unvendor))
- (with-directory-excursion "dynaconf/vendor_src"
- (for-each delete-file-recursively unvendor)))))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? outputs #:allow-other-keys)
- (when tests?
- (setenv "PATH"
- (string-append (assoc-ref outputs "out") "/bin:"
- (getenv "PATH")))
- ;; These tests depend on hvac and a live Vault process.
- (delete-file "tests/test_vault.py")
- (invoke "make" "test_only")))))))
- (propagated-inputs
- (list python-click python-configobj python-dotenv-0.13.0
- python-ruamel.yaml python-toml))
- (native-inputs
- (list python-django python-flask python-pytest-6 python-pytest-cov
- python-pytest-mock))
- (home-page "https://www.dynaconf.com/")
- (synopsis "The dynamic configurator for your Python project")
- (description
- "This package provides @code{dynaconf} the dynamic configurator manager for
- your Python project. It provides features such as:
- @itemize
- @item Inspired by the @url{https://12factor.net/config, 12-factor application guide};
- @item Settings management (default values, validation, parsing, templating);
- @item Protection of sensitive information (passwords/tokens);
- @item Multiple file formats @code{toml|yaml|json|ini|py} and also customizable
- loaders;
- @item Full support for environment variables to override existing settings
- (dotenv support included);
- @item Optional layered system for multiple environments @code{[default,
- development, testing, production]};
- @item Built-in support for Hashicorp Vault and Redis as settings and secrets storage;
- @item Built-in extensions for Django and Flask web frameworks;
- @item CLI for common operations such as @code{init, list, write, validate, export}.
- @end itemize")
- (license license:expat)))
- (define-public pudb
- (package
- (name "pudb")
- (version "2021.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pudb" version))
- (sha256
- (base32 "0p16pvzfa3w02ybg3n0iy5rs23z4rz4a42lb8wh3mcq62y9ik2w7"))))
- (build-system python-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-before 'check 'fix-read-only-home
- (lambda _
- (setenv "HOME" "/tmp")))
- (replace 'check
- (lambda* (#:key inputs outputs tests? #:allow-other-keys)
- (when tests?
- (add-installed-pythonpath inputs outputs)
- (invoke "pytest")))))))
- (native-inputs
- (list python-numpy python-pytest python-pytest-mock))
- (propagated-inputs
- (list python-jedi python-pygments python-urwid python-urwid-readline))
- (home-page "https://documen.tician.de/pudb/")
- (synopsis "Console-based Python debugger")
- (description
- "@command{pudb} is a full-screen, console-based Python debugger providing
- all the niceties of modern GUI-based debuggers in a more lightweight and
- keyboard-friendly package.")
- (license license:expat)))
- (define-public python-iwlib
- (package
- (name "python-iwlib")
- (version "1.7.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "iwlib" version))
- (sha256
- (base32 "18bd35wn7zclalpqbry42pf7bjrdggxkkw58mc0k1vkhg9czc1d8"))))
- (build-system python-build-system)
- (inputs
- (list wireless-tools))
- (propagated-inputs (list python-cffi))
- (home-page "https://github.com/nhoad/python-iwlib")
- (synopsis "Python module to interface with iwlib")
- (description
- "This package provides a Python interface to iw wireless tools.")
- (license license:gpl2)))
- (define-public python-pdoc3
- (package
- (name "python-pdoc3")
- (version "0.10.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pdoc3" version))
- (sha256
- (base32 "1dz4hw10ngidzg9cjvflc8nlrwrjbb3ijhmaw4w6f039p6yff8jz"))
- (patches
- (search-patches "python-pdoc3-tests.patch"))))
- (build-system python-build-system)
- (native-inputs
- (list python-setuptools-git python-setuptools-scm))
- (propagated-inputs (list python-mako python-markdown))
- (home-page "https://pdoc3.github.io/pdoc/")
- (synopsis "Auto-generate API documentation for Python projects")
- (description
- "This package auto-generates API documentation from Python projects
- already existing modules and objects docstrings.")
- (license license:agpl3+)))
- (define-public python-piexif
- (package
- (name "python-piexif")
- (version "1.1.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "piexif" version ".zip"))
- (sha256
- (base32 "06sz58q4mrw472p8fbnq7wsj8zpi5js5r8phm2hiwfmz0v33bjw3"))
- (patches
- (search-patches "python-piexif-fix-tests-with-pillow-7.2.patch"))))
- (build-system python-build-system)
- (native-inputs
- (list unzip python-pillow))
- (home-page "https://github.com/hMatoba/Piexif")
- (synopsis "Simplify exif manipulations with Python")
- (description "Piexif simplifies interacting with EXIF data in
- Python. It includes the tools necessary for extracting, creating,
- manipulating, converting and writing EXIF data to JPEG, WebP and TIFF files.")
- (license license:expat)))
- (define-public python-pyrss2gen
- (package
- (name "python-pyrss2gen")
- (version "1.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "PyRSS2Gen" version))
- (sha256
- (base32 "1rvf5jw9hknqz02rp1vg8abgb1lpa0bc65l7ylmlillqx7bswq3r"))))
- (build-system python-build-system)
- (home-page "http://dalkescientific.com/Python/PyRSS2Gen.html")
- (synopsis "Generate RSS 2.0 feeds using a Python data structure")
- (description "PyRSS2Gen is the interface to generate RSS 2.0 feeds.
- PyRSS2Gen builds the feed up by using a XML generator.")
- (license license:bsd-3)))
- (define-public python-yapsy
- (package
- (name "python-yapsy")
- (version "1.12.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "Yapsy" version))
- (sha256
- (base32 "12rznbnswfw0w7qfbvmmffr9r317gl1rqg36nijwzsklkjgks4fq"))))
- (build-system python-build-system)
- (home-page "http://yapsy.sourceforge.net")
- (synopsis "Simple plugin system for Python applications")
- (description "Yapsy, or Yet Another Plugin SYstem, is a small library
- implementing the core mechanisms needed to build a plugin system into a wider
- application.
- The main purpose is to depend only on Python's standard libraries and to
- implement only the basic functionalities needed to detect, load and keep track
- of several plugins.")
- (license license:bsd-3)))
- (define-public python-doit
- (package
- (name "python-doit")
- (version "0.34.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "doit" version))
- (sha256
- (base32 "0bf0m9n0hyjvjpv051zd26725j8jr23gyvc37v3kkadwbh8dxwcf"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-cloudpickle python-pyinotify))
- (native-inputs
- (list python-pytest))
- (home-page "https://pydoit.org")
- (synopsis "Automation tool to execute any kind of task in a build-tools
- fashion")
- (description "doit is an automation tool that brings the power of
- build-tools to execute any kind of task.
- A task describes some computation to be done (actions), and contains some
- extra meta-data. The actions can be external programs or Python functions. A
- single task may define more than one action.doit uses the task’s meta-data
- to:
- @itemize
- @item cache task results
- @item correct execution order
- @item parallel execution
- @item powerful dependency system
- @end itemize")
- (license license:expat)))
- (define-public python-phpserialize
- (package
- (name "python-phpserialize")
- (version "1.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "phpserialize" version))
- (sha256
- (base32 "19qgkb9z4zjbjxlpwh2w6pxkz2j3iymnydi69jl0jg905lqjsrxz"))))
- (build-system python-build-system)
- (arguments
- (list
- ;; tests missing in pypi archive, anhow they are quite simple and not worth any hassle
- #:tests? #f))
- (home-page "http://github.com/mitsuhiko/phpserialize")
- (synopsis "Python port of the serialize and unserialize functions of PHP")
- (description
- "This package provides a port of the serialize and unserialize functions of PHP for Python")
- (license license:bsd-3)))
- (define-public nikola
- (package
- (name "nikola")
- (version "8.1.3")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "Nikola" version))
- (sha256
- (base32 "1vspzvi4039zgjc93bspqjb384r6c9ksvmidbp8csws2pdbc7sh5"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-babel
- python-blinker
- python-dateutil
- python-docutils
- python-doit
- python-jinja2 ;; for themes
- python-lxml
- python-mako
- python-markdown
- python-natsort
- python-notebook ;; for ipynb
- python-phpserialize ;; for wordpress import
- python-piexif
- python-pillow
- python-pygments
- python-pyrss2gen
- python-requests
- python-ruamel.yaml ;; for YAML metadata
- python-unidecode
- python-yapsy))
- (native-inputs
- (list python-coverage
- python-flake8
- python-freezegun
- python-pytest
- python-pytest-cov))
- (arguments
- (list
- #:phases
- #~(modify-phases %standard-phases
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- ;;(add-installed-pythonpath inputs outputs)
- (invoke "pytest" "tests" "--no-cov"
- "-k" "not test_compiling_markdown[hilite]")))))))
- (home-page "https://getnikola.com/")
- (synopsis "Modular, fast and simple static website and blog generator")
- (description "Nikola generates static websites and blogs. Out of the box,
- it supports reStructuredText, Markdown, IPython (Jupyter) Notebooks and HTML,
- and has plugins for many other formats.")
- (license license:expat)))
- (define-public nbss-upload
- (package
- (name "nbss-upload")
- (version "0.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "nbss-upload" version))
- (sha256
- (base32 "0jhyfm7w2ssknmh9789fmpnf79xr7sxbdcjwak6hfha6qparvk38"))))
- (build-system python-build-system)
- (propagated-inputs
- (list python-requests))
- (arguments
- `(#:tests? #f)) ;no tests
- (home-page "https://github.com/notebook-sharing-space/nbss-upload")
- (synopsis "Upload notebooks to a notebooksharing.space instance")
- (description
- "Upload notebooks as @code{.ipynb}, @code{.rmd}, and @code{.html} to a
- notebooksharing.space instance.")
- (license license:bsd-3)))
- (define-public python-reedsolo
- (package
- (name "python-reedsolo")
- (version "1.5.4")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "reedsolo" version))
- (sha256
- (base32 "09q15ji9iac3nmmxrcdvz8ynldvvqanqy3hs6q3cp327hgf5rcmq"))))
- (build-system python-build-system)
- (home-page "https://github.com/tomerfiliba/reedsolomon")
- (synopsis "Pure-Python Reed Solomon encoder/decoder")
- (description "A pure-python universal errors-and-erasures Reed-Solomon
- Codec, based on the tutorial at Wikiversity. This is a burst-type
- implementation, so that it supports any Galois field higher than 2^3,
- but not binary streams.")
- (license license:public-domain)))
- (define-public python-esprima
- (package
- (name "python-esprima")
- (version "4.0.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "esprima" version))
- (sha256
- (base32 "1vi32g991lxcxzmncfiszh8m9bwkh4887szskkdi0a9wdn3imnq8"))))
- (build-system python-build-system)
- (home-page "https://github.com/Kronuz/esprima-python")
- (synopsis
- "ECMAScript parsing infrastructure for analysis in Python")
- (description
- "This package provides ECMAScript parsing infrastructure for
- multipurpose analysis in Python.")
- (license license:bsd-3)))
- (define-public python-types-dataclasses
- (package
- (name "python-types-dataclasses")
- (version "0.6.1")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "types-dataclasses" version))
- (sha256
- (base32
- "1mq6qd365m8ml889zl5dxj9kncjv71iq1d1fvgj59y0ixlpm6s35"))))
- (build-system python-build-system)
- (home-page "https://github.com/python/typeshed")
- (synopsis "Typing stubs for dataclasses")
- (description
- "This packages provides a collection of library stubs for Python, with
- static types.")
- (license license:asl2.0)))
- (define-public python-psycopg2-binary
- (package
- (name "python-psycopg2-binary")
- (version "2.9.3")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "psycopg2-binary" version))
- (sha256
- (base32
- "0kpaxg3lg5wg5ww5kxmzi2z2d7arsx13ci915d8a2pf17lqza7bn"))))
- (build-system python-build-system)
- (inputs (list postgresql))
- (arguments
- ;; Tests are disable because they need a live instance of PostgreSQL.
- '(#:tests? #f))
- (home-page "https://psycopg.org/")
- (synopsis "PostgreSQL database adapter for Python")
- (description
- "Psycopg is a PostgreSQL database adapter for the Python programming
- language. Its main features are the complete implementation of the Python DB
- API 2.0 specification and the thread safety (several threads can share the
- same connection). It was designed for heavily multi-threaded applications
- that create and destroy lots of cursors and make a large number of concurrent
- @code{INSERT}s or @code{UPDATE}s.
- Psycopg 2 is mostly implemented in C as a libpq wrapper, resulting in
- being both efficient and secure. It features client-side and
- server-side cursors, asynchronous communication and notifications,
- @code{COPY TO}/@code{COPY FROM} support. Many Python types are supported
- out-of-the-box and adapted to matching PostgreSQL data types;
- adaptation can be extended and customized thanks to a flexible objects
- adaptation system.
- Psycopg 2 is both Unicode and Python 3 friendly.")
- (license license:lgpl3+)))
- (define-public python-pyfuse3
- (package
- (name "python-pyfuse3")
- (version "3.2.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "pyfuse3" version))
- (sha256
- (base32 "0cvybynv9igssfa4l13q09gb6m7afmwk34wsbq8jk14sqpd4dl92"))))
- (build-system python-build-system)
- (native-inputs (list pkg-config))
- (inputs (list fuse-3))
- (propagated-inputs (list python-pytest-trio))
- (home-page "https://github.com/libfuse/pyfuse3")
- (synopsis "Python bindings FUSE 3")
- (description "This package provides Python 3 bindings for libfuse 3 with
- async I/O support.")
- (license license:gpl2+)))
- (define-public python-ansicolors
- (package
- (name "python-ansicolors")
- (version "1.1.8")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "ansicolors" version ".zip"))
- (sha256
- (base32 "1q3jqglkq4z0f6nkkn8bswcwqg012i2grrc27kabr8286dg4zycr"))))
- (build-system python-build-system)
- (native-inputs
- (list python-tox
- python-pytest-cov
- unzip))
- (home-page "https://github.com/jonathaneunice/colors/")
- (synopsis "ANSI colors for Python")
- (description
- "This package adds ANSI colors and decorations to your strings.")
- (license license:isc)))
- (define-public python-types-ujson
- (package
- (name "python-types-ujson")
- (version "4.2.1")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "types-ujson" version))
- (sha256
- (base32
- "0k9n9hsq4k2zaakdwbkcsvi7m8d3mv2y9yl6f171y58ld4qpcxcy"))))
- (build-system python-build-system)
- (home-page "https://github.com/python/typeshed")
- (synopsis "Typing stubs for ujson")
- (description
- "This is a PEP 561 type stub package for the ujson package. It can be
- used by type-checking tools like mypy, PyCharm, pytype etc. to check code that
- uses ujson.")
- (license license:asl2.0)))
- (define-public python-stltools
- (package
- (name "python-stltools")
- (version "2022.01.20")
- (source (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/rsmith-nl/stltools")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "1k6dhszza4lpy46qffaqx5zr70ikfqqysbacy7zabnrvz09fd4rs"))))
- (build-system python-build-system)
- (arguments
- `(#:use-setuptools? #f
- #:phases
- (modify-phases %standard-phases
- (delete 'build)
- (replace 'install
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let ((moddir (string-append (site-packages inputs outputs) "/stltools"))
- (bindir (string-append (assoc-ref outputs "out") "/bin")))
- (copy-recursively "stltools" moddir)
- (mkdir-p bindir)
- (for-each
- (lambda (script)
- (let ((source (string-append script ".py"))
- (target (string-append bindir "/" script)))
- (copy-file source target)
- (chmod target #o555)))
- '("stl2pov" "stl2ps" "stl2pdf" "stlinfo")))))
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "py.test" "-v")))))))
- (propagated-inputs (list python-pycairo))
- (native-inputs (list python-pytest))
- (home-page "https://github.com/rsmith-nl/stltools")
- (synopsis "Python modules and scripts for handling STL files")
- (description "This package consists of Python modules and scripts for
- manipulating stereolithography (STL) files. It can convert STL files into
- POV-ray meshes, PDF and PostScript. The Python modules allow for reading and
- writing STL files. It supports both the text and binary forms of STL.")
- (license license:expat)))
- (define-public python-multipart
- (package
- (name "python-multipart")
- (version "0.0.5")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "python-multipart" version))
- (sha256
- (base32
- "0hzshd665rl1bkwvaj9va4j3gs8nmb478fbvligx20663xhmzfzp"))))
- (build-system python-build-system)
- (propagated-inputs (list python-six))
- (native-inputs (list python-pyyaml python-mock python-pytest-cov))
- (arguments
- `(#:phases (modify-phases %standard-phases
- ;; There is a bug in the test_suit specification.
- (add-after 'unpack 'patch-test-suite
- (lambda _
- (substitute* "setup.py"
- (("test_suite = 'multipart.tests.suite'")
- "test_suite = 'multipart.tests.test_multipart.suite'")))))))
- (home-page "https://github.com/andrew-d/python-multipart")
- (synopsis "Streaming multipart parser for Python")
- (description
- "This package provides a streaming multipart parser for Python.")
- (license license:asl2.0)))
- (define-public python-aiopg
- (package
- (name "python-aiopg")
- (version "1.3.3")
- (source (origin
- (method url-fetch)
- (uri (pypi-uri "aiopg" version))
- (sha256
- (base32
- "1mwmypsfzh8adjbyvf7kqv9h3k1kf5ykhi1g3ahw4wqdxaj6nz2l"))))
- (build-system python-build-system)
- (native-inputs (list python-sqlalchemy))
- (propagated-inputs (list python-async-timeout python-psycopg2-binary))
- (home-page "https://aiopg.readthedocs.io")
- (synopsis "Postgres integration with asyncio")
- (description
- "aiopg is a library for accessing a PostgreSQL
- database from the asyncio (PEP-3156/tulip) framework. It wraps
- asynchronous features of the Psycopg database driver.")
- (license license:bsd-3)))
|